ALSA: snd-powermac: mixers for PowerMac G4 AGP

Add mixer controls for PowerMac G4 AGP (Screamer).

This patch fixes the regression in the recent snd-powermac which
doesn't support some G3/G4 PowerMacs:
http://lkml.org/lkml/2008/10/1/220

Signed-off-by: Risto Suominen <Risto.Suominen@gmail.com>
Tested-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by Risto Suominen and committed by Takashi Iwai 4dbf95ba 24918b61

+16 -3
+16 -3
sound/ppc/awacs.c
··· 621 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 622 }; 623 624 static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { 625 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 626 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), ··· 775 #define IS_IMAC (machine_is_compatible("PowerMac2,1") \ 776 || machine_is_compatible("PowerMac2,2") \ 777 || machine_is_compatible("PowerMac4,1")) 778 779 static int imac; 780 ··· 858 { 859 int pm7500 = IS_PM7500; 860 int beige = IS_BEIGE; 861 int err, vol; 862 863 imac = IS_IMAC; ··· 948 snd_pmac_awacs_mixers); 949 if (err < 0) 950 return err; 951 - if (beige) 952 ; 953 else if (chip->model == PMAC_SCREAMER) 954 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), ··· 970 err = build_mixers(chip, 971 ARRAY_SIZE(snd_pmac_screamer_mixers_imac), 972 snd_pmac_screamer_mixers_imac); 973 else 974 err = build_mixers(chip, 975 ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), 976 snd_pmac_awacs_mixers_pmac); 977 if (err < 0) 978 return err; 979 - chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac) 980 ? &snd_pmac_awacs_master_sw_imac 981 : &snd_pmac_awacs_master_sw, chip); 982 err = snd_ctl_add(chip->card, chip->master_sw_ctl); ··· 1025 return err; 1026 } 1027 1028 - if (beige) 1029 err = build_mixers(chip, 1030 ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), 1031 snd_pmac_screamer_mic_boost_beige);
··· 621 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 622 }; 623 624 + static struct snd_kcontrol_new snd_pmac_screamer_mixers_g4agp[] __initdata = { 625 + AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 626 + AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 627 + AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 628 + AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 629 + }; 630 + 631 static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { 632 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 633 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), ··· 768 #define IS_IMAC (machine_is_compatible("PowerMac2,1") \ 769 || machine_is_compatible("PowerMac2,2") \ 770 || machine_is_compatible("PowerMac4,1")) 771 + #define IS_G4AGP (machine_is_compatible("PowerMac3,1")) 772 773 static int imac; 774 ··· 850 { 851 int pm7500 = IS_PM7500; 852 int beige = IS_BEIGE; 853 + int g4agp = IS_G4AGP; 854 int err, vol; 855 856 imac = IS_IMAC; ··· 939 snd_pmac_awacs_mixers); 940 if (err < 0) 941 return err; 942 + if (beige || g4agp) 943 ; 944 else if (chip->model == PMAC_SCREAMER) 945 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), ··· 961 err = build_mixers(chip, 962 ARRAY_SIZE(snd_pmac_screamer_mixers_imac), 963 snd_pmac_screamer_mixers_imac); 964 + else if (g4agp) 965 + err = build_mixers(chip, 966 + ARRAY_SIZE(snd_pmac_screamer_mixers_g4agp), 967 + snd_pmac_screamer_mixers_g4agp); 968 else 969 err = build_mixers(chip, 970 ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), 971 snd_pmac_awacs_mixers_pmac); 972 if (err < 0) 973 return err; 974 + chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac || g4agp) 975 ? &snd_pmac_awacs_master_sw_imac 976 : &snd_pmac_awacs_master_sw, chip); 977 err = snd_ctl_add(chip->card, chip->master_sw_ctl); ··· 1012 return err; 1013 } 1014 1015 + if (beige || g4agp) 1016 err = build_mixers(chip, 1017 ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), 1018 snd_pmac_screamer_mic_boost_beige);