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

ALSA: emu10k1: Use snd_ctl_enum_info()

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

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

+17 -61
+13 -45
sound/pci/emu10k1/emumixer.c
··· 83 83 * Items labels in enum mixer controls assigning source data to 84 84 * each destination 85 85 */ 86 - static char *emu1010_src_texts[] = { 86 + static const char * const emu1010_src_texts[] = { 87 87 "Silence", 88 88 "Dock Mic A", 89 89 "Dock Mic B", ··· 141 141 142 142 /* 1616(m) cardbus */ 143 143 144 - static char *emu1616_src_texts[] = { 144 + static const char * const emu1616_src_texts[] = { 145 145 "Silence", 146 146 "Dock Mic A", 147 147 "Dock Mic B", ··· 393 393 struct snd_ctl_elem_info *uinfo) 394 394 { 395 395 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); 396 - char **items; 397 396 398 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 399 - uinfo->count = 1; 400 - if (emu->card_capabilities->emu_model == EMU_MODEL_EMU1616) { 401 - uinfo->value.enumerated.items = 49; 402 - items = emu1616_src_texts; 403 - } else { 404 - uinfo->value.enumerated.items = 53; 405 - items = emu1010_src_texts; 406 - } 407 - if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items) 408 - uinfo->value.enumerated.item = 409 - uinfo->value.enumerated.items - 1; 410 - strcpy(uinfo->value.enumerated.name, 411 - items[uinfo->value.enumerated.item]); 412 - return 0; 397 + if (emu->card_capabilities->emu_model == EMU_MODEL_EMU1616) 398 + return snd_ctl_enum_info(uinfo, 1, 49, emu1616_src_texts); 399 + else 400 + return snd_ctl_enum_info(uinfo, 1, 53, emu1010_src_texts); 413 401 } 414 402 415 403 static int snd_emu1010_output_source_get(struct snd_kcontrol *kcontrol, ··· 687 699 static int snd_emu1010_internal_clock_info(struct snd_kcontrol *kcontrol, 688 700 struct snd_ctl_elem_info *uinfo) 689 701 { 690 - static char *texts[4] = { 702 + static const char * const texts[4] = { 691 703 "44100", "48000", "SPDIF", "ADAT" 692 704 }; 693 705 694 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 695 - uinfo->count = 1; 696 - uinfo->value.enumerated.items = 4; 697 - if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items) 698 - uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1; 699 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 700 - return 0; 701 - 702 - 706 + return snd_ctl_enum_info(uinfo, 1, 4, texts); 703 707 } 704 708 705 709 static int snd_emu1010_internal_clock_get(struct snd_kcontrol *kcontrol, ··· 810 830 struct snd_ctl_elem_info *uinfo) 811 831 { 812 832 #if 0 813 - static char *texts[4] = { 833 + static const char * const texts[4] = { 814 834 "Unknown1", "Unknown2", "Mic", "Line" 815 835 }; 816 836 #endif 817 - static char *texts[2] = { 837 + static const char * const texts[2] = { 818 838 "Mic", "Line" 819 839 }; 820 840 821 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 822 - uinfo->count = 1; 823 - uinfo->value.enumerated.items = 2; 824 - if (uinfo->value.enumerated.item > 1) 825 - uinfo->value.enumerated.item = 1; 826 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 827 - return 0; 841 + return snd_ctl_enum_info(uinfo, 1, 2, texts); 828 842 } 829 843 830 844 static int snd_audigy_i2c_capture_source_get(struct snd_kcontrol *kcontrol, ··· 971 997 #if 0 972 998 static int snd_audigy_spdif_output_rate_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) 973 999 { 974 - static char *texts[] = {"44100", "48000", "96000"}; 1000 + static const char * const texts[] = {"44100", "48000", "96000"}; 975 1001 976 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 977 - uinfo->count = 1; 978 - uinfo->value.enumerated.items = 3; 979 - if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items) 980 - uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1; 981 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 982 - return 0; 1002 + return snd_ctl_enum_info(uinfo, 1, 3, texts); 983 1003 } 984 1004 985 1005 static int snd_audigy_spdif_output_rate_get(struct snd_kcontrol *kcontrol,
+4 -16
sound/pci/emu10k1/p16v.c
··· 757 757 static int snd_p16v_capture_source_info(struct snd_kcontrol *kcontrol, 758 758 struct snd_ctl_elem_info *uinfo) 759 759 { 760 - static char *texts[8] = { 760 + static const char * const texts[8] = { 761 761 "SPDIF", "I2S", "SRC48", "SRCMulti_SPDIF", "SRCMulti_I2S", 762 762 "CDIF", "FX", "AC97" 763 763 }; 764 764 765 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 766 - uinfo->count = 1; 767 - uinfo->value.enumerated.items = 8; 768 - if (uinfo->value.enumerated.item > 7) 769 - uinfo->value.enumerated.item = 7; 770 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 771 - return 0; 765 + return snd_ctl_enum_info(uinfo, 1, 8, texts); 772 766 } 773 767 774 768 static int snd_p16v_capture_source_get(struct snd_kcontrol *kcontrol, ··· 799 805 static int snd_p16v_capture_channel_info(struct snd_kcontrol *kcontrol, 800 806 struct snd_ctl_elem_info *uinfo) 801 807 { 802 - static char *texts[4] = { "0", "1", "2", "3", }; 808 + static const char * const texts[4] = { "0", "1", "2", "3", }; 803 809 804 - uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 805 - uinfo->count = 1; 806 - uinfo->value.enumerated.items = 4; 807 - if (uinfo->value.enumerated.item > 3) 808 - uinfo->value.enumerated.item = 3; 809 - strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); 810 - return 0; 810 + return snd_ctl_enum_info(uinfo, 1, 4, texts); 811 811 } 812 812 813 813 static int snd_p16v_capture_channel_get(struct snd_kcontrol *kcontrol,