Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: ca0106: Use snd_ctl_enum_info()

... and reduce the open codes. Also correct the array size and add
missing const to text arrays.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

+8 -32
+8 -32
sound/pci/ca0106/ca0106_mixer.c
··· 185 185 static int snd_ca0106_capture_source_info(struct snd_kcontrol *kcontrol, 186 186 struct snd_ctl_elem_info *uinfo) 187 187 { 188 - static char *texts[6] = { 188 + static const char * const texts[6] = { 189 189 "IEC958 out", "i2s mixer out", "IEC958 in", "i2s in", "AC97 in", "SRC out" 190 190 }; 191 191 192 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 193 - uinfo->count = 1; 194 - uinfo->value.enumerated.items = 6; 195 - if (uinfo->value.enumerated.item > 5) 196 - uinfo->value.enumerated.item = 5; 197 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 198 - return 0; 192 + return snd_ctl_enum_info(uinfo, 1, 6, texts); 199 193 } 200 194 201 195 static int snd_ca0106_capture_source_get(struct snd_kcontrol *kcontrol, ··· 222 228 static int snd_ca0106_i2c_capture_source_info(struct snd_kcontrol *kcontrol, 223 229 struct snd_ctl_elem_info *uinfo) 224 230 { 225 - static char *texts[6] = { 231 + static const char * const texts[4] = { 226 232 "Phone", "Mic", "Line in", "Aux" 227 233 }; 228 234 229 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 230 - uinfo->count = 1; 231 - uinfo->value.enumerated.items = 4; 232 - if (uinfo->value.enumerated.item > 3) 233 - uinfo->value.enumerated.item = 3; 234 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 235 - return 0; 235 + return snd_ctl_enum_info(uinfo, 1, 4, texts); 236 236 } 237 237 238 238 static int snd_ca0106_i2c_capture_source_get(struct snd_kcontrol *kcontrol, ··· 261 273 static int snd_ca0106_capture_line_in_side_out_info(struct snd_kcontrol *kcontrol, 262 274 struct snd_ctl_elem_info *uinfo) 263 275 { 264 - static char *texts[2] = { "Side out", "Line in" }; 276 + static const char * const texts[2] = { "Side out", "Line in" }; 265 277 266 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 267 - uinfo->count = 1; 268 - uinfo->value.enumerated.items = 2; 269 - if (uinfo->value.enumerated.item > 1) 270 - uinfo->value.enumerated.item = 1; 271 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 272 - return 0; 278 + return snd_ctl_enum_info(uinfo, 1, 2, texts); 273 279 } 274 280 275 281 static int snd_ca0106_capture_mic_line_in_info(struct snd_kcontrol *kcontrol, 276 282 struct snd_ctl_elem_info *uinfo) 277 283 { 278 - static char *texts[2] = { "Line in", "Mic in" }; 284 + static const char * const texts[2] = { "Line in", "Mic in" }; 279 285 280 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 281 - uinfo->count = 1; 282 - uinfo->value.enumerated.items = 2; 283 - if (uinfo->value.enumerated.item > 1) 284 - uinfo->value.enumerated.item = 1; 285 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 286 - return 0; 286 + return snd_ctl_enum_info(uinfo, 1, 2, texts); 287 287 } 288 288 289 289 static int snd_ca0106_capture_mic_line_in_get(struct snd_kcontrol *kcontrol,