Lines Matching refs:mask

26 static inline void snd_mask_none(struct snd_mask *mask)
28 memset(mask, 0, sizeof(*mask));
31 static inline void snd_mask_any(struct snd_mask *mask)
33 memset(mask, 0xff, SNDRV_MASK_SIZE * sizeof(u_int32_t));
36 static inline int snd_mask_empty(const struct snd_mask *mask)
40 if (mask->bits[i])
45 static inline unsigned int snd_mask_min(const struct snd_mask *mask)
49 if (mask->bits[i])
50 return __ffs(mask->bits[i]) + (i << 5);
55 static inline unsigned int snd_mask_max(const struct snd_mask *mask)
59 if (mask->bits[i])
60 return __fls(mask->bits[i]) + (i << 5);
65 static inline void snd_mask_set(struct snd_mask *mask, unsigned int val)
67 mask->bits[MASK_OFS(val)] |= MASK_BIT(val);
71 static inline void snd_mask_set_format(struct snd_mask *mask,
74 snd_mask_set(mask, (__force unsigned int)format);
77 static inline void snd_mask_reset(struct snd_mask *mask, unsigned int val)
79 mask->bits[MASK_OFS(val)] &= ~MASK_BIT(val);
82 static inline void snd_mask_set_range(struct snd_mask *mask,
87 mask->bits[MASK_OFS(i)] |= MASK_BIT(i);
90 static inline void snd_mask_reset_range(struct snd_mask *mask,
95 mask->bits[MASK_OFS(i)] &= ~MASK_BIT(i);
98 static inline void snd_mask_leave(struct snd_mask *mask, unsigned int val)
101 v = mask->bits[MASK_OFS(val)] & MASK_BIT(val);
102 snd_mask_none(mask);
103 mask->bits[MASK_OFS(val)] = v;
106 static inline void snd_mask_intersect(struct snd_mask *mask,
111 mask->bits[i] &= v->bits[i];
114 static inline int snd_mask_eq(const struct snd_mask *mask,
117 return ! memcmp(mask, v, SNDRV_MASK_SIZE * sizeof(u_int32_t));
120 static inline void snd_mask_copy(struct snd_mask *mask,
123 *mask = *v;
126 static inline int snd_mask_test(const struct snd_mask *mask, unsigned int val)
128 return mask->bits[MASK_OFS(val)] & MASK_BIT(val);
132 static inline int snd_mask_test_format(const struct snd_mask *mask,
135 return snd_mask_test(mask, (__force unsigned int)format);
138 static inline int snd_mask_single(const struct snd_mask *mask)
142 if (! mask->bits[i])
144 if (mask->bits[i] & (mask->bits[i] - 1))
153 static inline int snd_mask_refine(struct snd_mask *mask,
157 snd_mask_copy(&old, mask);
158 snd_mask_intersect(mask, v);
159 if (snd_mask_empty(mask))
161 return !snd_mask_eq(mask, &old);
164 static inline int snd_mask_refine_first(struct snd_mask *mask)
166 if (snd_mask_single(mask))
168 snd_mask_leave(mask, snd_mask_min(mask));
172 static inline int snd_mask_refine_last(struct snd_mask *mask)
174 if (snd_mask_single(mask))
176 snd_mask_leave(mask, snd_mask_max(mask));
180 static inline int snd_mask_refine_min(struct snd_mask *mask, unsigned int val)
182 if (snd_mask_min(mask) >= val)
184 snd_mask_reset_range(mask, 0, val - 1);
185 if (snd_mask_empty(mask))
190 static inline int snd_mask_refine_max(struct snd_mask *mask, unsigned int val)
192 if (snd_mask_max(mask) <= val)
194 snd_mask_reset_range(mask, val + 1, SNDRV_MASK_BITS);
195 if (snd_mask_empty(mask))
200 static inline int snd_mask_refine_set(struct snd_mask *mask, unsigned int val)
203 changed = !snd_mask_single(mask);
204 snd_mask_leave(mask, val);
205 if (snd_mask_empty(mask))
210 static inline int snd_mask_value(const struct snd_mask *mask)
212 return snd_mask_min(mask);