ALSA: pcm: More helper macros for reducing snd_pcm_format_t cast
snd_pcm_format_t is a strong-typed integer and requires the explicit cast with __force if converted or compared with a normal integer value. Since most of use cases do iterate over all formats and test / set the mask, provide a couple of new helper macros that do the explicit cast. Link: https://lore.kernel.org/r/20200206163945.6797-3-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
@@ -1415,6 +1415,15 @@ static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format)
|
|||||||
return 1ULL << (__force int) pcm_format;
|
return 1ULL << (__force int) pcm_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pcm_for_each_format - helper to iterate for each format type
|
||||||
|
* @f: the iterator variable in snd_pcm_format_t type
|
||||||
|
*/
|
||||||
|
#define pcm_for_each_format(f) \
|
||||||
|
for ((f) = SNDRV_PCM_FORMAT_FIRST; \
|
||||||
|
(__force int)(f) <= (__force int)SNDRV_PCM_FORMAT_LAST; \
|
||||||
|
(f) = (__force snd_pcm_format_t)((__force int)(f) + 1))
|
||||||
|
|
||||||
/* printk helpers */
|
/* printk helpers */
|
||||||
#define pcm_err(pcm, fmt, args...) \
|
#define pcm_err(pcm, fmt, args...) \
|
||||||
dev_err((pcm)->card->dev, fmt, ##args)
|
dev_err((pcm)->card->dev, fmt, ##args)
|
||||||
|
@@ -133,6 +133,13 @@ static inline int snd_mask_test(const struct snd_mask *mask, unsigned int val)
|
|||||||
return mask->bits[MASK_OFS(val)] & MASK_BIT(val);
|
return mask->bits[MASK_OFS(val)] & MASK_BIT(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Most of drivers need only this one */
|
||||||
|
static inline int snd_mask_test_format(const struct snd_mask *mask,
|
||||||
|
snd_pcm_format_t format)
|
||||||
|
{
|
||||||
|
return snd_mask_test(mask, (__force unsigned int)format);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int snd_mask_single(const struct snd_mask *mask)
|
static inline int snd_mask_single(const struct snd_mask *mask)
|
||||||
{
|
{
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
|
Reference in New Issue
Block a user