diff options
| author | Takashi Iwai <[email protected]> | 2020-02-06 17:39:45 +0100 | 
|---|---|---|
| committer | Takashi Iwai <[email protected]> | 2020-02-10 08:28:12 +0100 | 
| commit | 49d9e43f36fd4b71a4c1888f86c09cf73be73d0b (patch) | |
| tree | 057a2c241b7dd914fb85ed87689165737e6e1a94 | |
| parent | 89e0b9a060febbf85b985d2f3aa6afea3473276e (diff) | |
ALSA: pcm: Minor refactoring
Make a common helper for validating the format type.
This reduces the number of cast in the code that are needed for
suppressing sparse warnings.
No functional changes, just minor refactoring.
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
| -rw-r--r-- | sound/core/pcm_misc.c | 17 | 
1 files changed, 11 insertions, 6 deletions
| diff --git a/sound/core/pcm_misc.c b/sound/core/pcm_misc.c index a6a541511534..cf3e8c26e00a 100644 --- a/sound/core/pcm_misc.c +++ b/sound/core/pcm_misc.c @@ -42,6 +42,11 @@ struct pcm_format_data {  /* we do lots of calculations on snd_pcm_format_t; shut up sparse */  #define INT	__force int +static bool valid_format(snd_pcm_format_t format) +{ +	return (INT)format >= 0 && (INT)format <= (INT)SNDRV_PCM_FORMAT_LAST; +} +  static const struct pcm_format_data pcm_formats[(INT)SNDRV_PCM_FORMAT_LAST+1] = {  	[SNDRV_PCM_FORMAT_S8] = {  		.width = 8, .phys = 8, .le = -1, .signd = 1, @@ -259,7 +264,7 @@ static const struct pcm_format_data pcm_formats[(INT)SNDRV_PCM_FORMAT_LAST+1] =  int snd_pcm_format_signed(snd_pcm_format_t format)  {  	int val; -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return -EINVAL;  	if ((val = pcm_formats[(INT)format].signd) < 0)  		return -EINVAL; @@ -307,7 +312,7 @@ EXPORT_SYMBOL(snd_pcm_format_linear);  int snd_pcm_format_little_endian(snd_pcm_format_t format)  {  	int val; -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return -EINVAL;  	if ((val = pcm_formats[(INT)format].le) < 0)  		return -EINVAL; @@ -343,7 +348,7 @@ EXPORT_SYMBOL(snd_pcm_format_big_endian);  int snd_pcm_format_width(snd_pcm_format_t format)  {  	int val; -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return -EINVAL;  	if ((val = pcm_formats[(INT)format].width) == 0)  		return -EINVAL; @@ -361,7 +366,7 @@ EXPORT_SYMBOL(snd_pcm_format_width);  int snd_pcm_format_physical_width(snd_pcm_format_t format)  {  	int val; -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return -EINVAL;  	if ((val = pcm_formats[(INT)format].phys) == 0)  		return -EINVAL; @@ -394,7 +399,7 @@ EXPORT_SYMBOL(snd_pcm_format_size);   */  const unsigned char *snd_pcm_format_silence_64(snd_pcm_format_t format)  { -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return NULL;  	if (! pcm_formats[(INT)format].phys)  		return NULL; @@ -418,7 +423,7 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int  	unsigned char *dst;  	const unsigned char *pat; -	if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) +	if (!valid_format(format))  		return -EINVAL;  	if (samples == 0)  		return 0; |