Lines Matching refs:mask
46 static inline void snd_mask_none(struct snd_mask *mask) in snd_mask_none() argument
48 memset(mask, 0, sizeof(*mask)); in snd_mask_none()
51 static inline void snd_mask_any(struct snd_mask *mask) in snd_mask_any() argument
53 memset(mask, 0xff, SNDRV_MASK_SIZE * sizeof(u_int32_t)); in snd_mask_any()
56 static inline int snd_mask_empty(const struct snd_mask *mask) in snd_mask_empty() argument
60 if (mask->bits[i]) in snd_mask_empty()
65 static inline unsigned int snd_mask_min(const struct snd_mask *mask) in snd_mask_min() argument
69 if (mask->bits[i]) in snd_mask_min()
70 return __ffs(mask->bits[i]) + (i << 5); in snd_mask_min()
75 static inline unsigned int snd_mask_max(const struct snd_mask *mask) in snd_mask_max() argument
79 if (mask->bits[i]) in snd_mask_max()
80 return __fls(mask->bits[i]) + (i << 5); in snd_mask_max()
85 static inline void snd_mask_set(struct snd_mask *mask, unsigned int val) in snd_mask_set() argument
87 mask->bits[MASK_OFS(val)] |= MASK_BIT(val); in snd_mask_set()
90 static inline void snd_mask_reset(struct snd_mask *mask, unsigned int val) in snd_mask_reset() argument
92 mask->bits[MASK_OFS(val)] &= ~MASK_BIT(val); in snd_mask_reset()
95 static inline void snd_mask_set_range(struct snd_mask *mask, in snd_mask_set_range() argument
100 mask->bits[MASK_OFS(i)] |= MASK_BIT(i); in snd_mask_set_range()
103 static inline void snd_mask_reset_range(struct snd_mask *mask, in snd_mask_reset_range() argument
108 mask->bits[MASK_OFS(i)] &= ~MASK_BIT(i); in snd_mask_reset_range()
111 static inline void snd_mask_leave(struct snd_mask *mask, unsigned int val) in snd_mask_leave() argument
114 v = mask->bits[MASK_OFS(val)] & MASK_BIT(val); in snd_mask_leave()
115 snd_mask_none(mask); in snd_mask_leave()
116 mask->bits[MASK_OFS(val)] = v; in snd_mask_leave()
119 static inline void snd_mask_intersect(struct snd_mask *mask, in snd_mask_intersect() argument
124 mask->bits[i] &= v->bits[i]; in snd_mask_intersect()
127 static inline int snd_mask_eq(const struct snd_mask *mask, in snd_mask_eq() argument
130 return ! memcmp(mask, v, SNDRV_MASK_SIZE * sizeof(u_int32_t)); in snd_mask_eq()
133 static inline void snd_mask_copy(struct snd_mask *mask, in snd_mask_copy() argument
136 *mask = *v; in snd_mask_copy()
139 static inline int snd_mask_test(const struct snd_mask *mask, unsigned int val) in snd_mask_test() argument
141 return mask->bits[MASK_OFS(val)] & MASK_BIT(val); in snd_mask_test()
144 static inline int snd_mask_single(const struct snd_mask *mask) in snd_mask_single() argument
148 if (! mask->bits[i]) in snd_mask_single()
150 if (mask->bits[i] & (mask->bits[i] - 1)) in snd_mask_single()
159 static inline int snd_mask_refine(struct snd_mask *mask, in snd_mask_refine() argument
163 snd_mask_copy(&old, mask); in snd_mask_refine()
164 snd_mask_intersect(mask, v); in snd_mask_refine()
165 if (snd_mask_empty(mask)) in snd_mask_refine()
167 return !snd_mask_eq(mask, &old); in snd_mask_refine()
170 static inline int snd_mask_refine_first(struct snd_mask *mask) in snd_mask_refine_first() argument
172 if (snd_mask_single(mask)) in snd_mask_refine_first()
174 snd_mask_leave(mask, snd_mask_min(mask)); in snd_mask_refine_first()
178 static inline int snd_mask_refine_last(struct snd_mask *mask) in snd_mask_refine_last() argument
180 if (snd_mask_single(mask)) in snd_mask_refine_last()
182 snd_mask_leave(mask, snd_mask_max(mask)); in snd_mask_refine_last()
186 static inline int snd_mask_refine_min(struct snd_mask *mask, unsigned int val) in snd_mask_refine_min() argument
188 if (snd_mask_min(mask) >= val) in snd_mask_refine_min()
190 snd_mask_reset_range(mask, 0, val - 1); in snd_mask_refine_min()
191 if (snd_mask_empty(mask)) in snd_mask_refine_min()
196 static inline int snd_mask_refine_max(struct snd_mask *mask, unsigned int val) in snd_mask_refine_max() argument
198 if (snd_mask_max(mask) <= val) in snd_mask_refine_max()
200 snd_mask_reset_range(mask, val + 1, SNDRV_MASK_BITS); in snd_mask_refine_max()
201 if (snd_mask_empty(mask)) in snd_mask_refine_max()
206 static inline int snd_mask_refine_set(struct snd_mask *mask, unsigned int val) in snd_mask_refine_set() argument
209 changed = !snd_mask_single(mask); in snd_mask_refine_set()
210 snd_mask_leave(mask, val); in snd_mask_refine_set()
211 if (snd_mask_empty(mask)) in snd_mask_refine_set()
216 static inline int snd_mask_value(const struct snd_mask *mask) in snd_mask_value() argument
218 return snd_mask_min(mask); in snd_mask_value()