diff options
| -rw-r--r-- | sound/ppc/awacs.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/sound/ppc/awacs.c b/sound/ppc/awacs.c index 566a6d0daf4a..543d4f1784a5 100644 --- a/sound/ppc/awacs.c +++ b/sound/ppc/awacs.c | |||
| @@ -621,6 +621,13 @@ static struct snd_kcontrol_new snd_pmac_screamer_mixers_imac[] __initdata = { | |||
| 621 | AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), | 621 | AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), |
| 622 | }; | 622 | }; |
| 623 | 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 | |||
| 624 | static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { | 631 | static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { |
| 625 | AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), | 632 | AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), |
| 626 | AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), | 633 | AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), |
| @@ -768,6 +775,7 @@ static void snd_pmac_awacs_resume(struct snd_pmac *chip) | |||
| 768 | #define IS_IMAC (machine_is_compatible("PowerMac2,1") \ | 775 | #define IS_IMAC (machine_is_compatible("PowerMac2,1") \ |
| 769 | || machine_is_compatible("PowerMac2,2") \ | 776 | || machine_is_compatible("PowerMac2,2") \ |
| 770 | || machine_is_compatible("PowerMac4,1")) | 777 | || machine_is_compatible("PowerMac4,1")) |
| 778 | #define IS_G4AGP (machine_is_compatible("PowerMac3,1")) | ||
| 771 | 779 | ||
| 772 | static int imac; | 780 | static int imac; |
| 773 | 781 | ||
| @@ -850,6 +858,7 @@ snd_pmac_awacs_init(struct snd_pmac *chip) | |||
| 850 | { | 858 | { |
| 851 | int pm7500 = IS_PM7500; | 859 | int pm7500 = IS_PM7500; |
| 852 | int beige = IS_BEIGE; | 860 | int beige = IS_BEIGE; |
| 861 | int g4agp = IS_G4AGP; | ||
| 853 | int err, vol; | 862 | int err, vol; |
| 854 | 863 | ||
| 855 | imac = IS_IMAC; | 864 | imac = IS_IMAC; |
| @@ -939,7 +948,7 @@ snd_pmac_awacs_init(struct snd_pmac *chip) | |||
| 939 | snd_pmac_awacs_mixers); | 948 | snd_pmac_awacs_mixers); |
| 940 | if (err < 0) | 949 | if (err < 0) |
| 941 | return err; | 950 | return err; |
| 942 | if (beige) | 951 | if (beige || g4agp) |
| 943 | ; | 952 | ; |
| 944 | else if (chip->model == PMAC_SCREAMER) | 953 | else if (chip->model == PMAC_SCREAMER) |
| 945 | err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), | 954 | err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), |
| @@ -961,13 +970,17 @@ snd_pmac_awacs_init(struct snd_pmac *chip) | |||
| 961 | err = build_mixers(chip, | 970 | err = build_mixers(chip, |
| 962 | ARRAY_SIZE(snd_pmac_screamer_mixers_imac), | 971 | ARRAY_SIZE(snd_pmac_screamer_mixers_imac), |
| 963 | snd_pmac_screamer_mixers_imac); | 972 | snd_pmac_screamer_mixers_imac); |
| 973 | else if (g4agp) | ||
| 974 | err = build_mixers(chip, | ||
| 975 | ARRAY_SIZE(snd_pmac_screamer_mixers_g4agp), | ||
| 976 | snd_pmac_screamer_mixers_g4agp); | ||
| 964 | else | 977 | else |
| 965 | err = build_mixers(chip, | 978 | err = build_mixers(chip, |
| 966 | ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), | 979 | ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), |
| 967 | snd_pmac_awacs_mixers_pmac); | 980 | snd_pmac_awacs_mixers_pmac); |
| 968 | if (err < 0) | 981 | if (err < 0) |
| 969 | return err; | 982 | return err; |
| 970 | chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac) | 983 | chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac || g4agp) |
| 971 | ? &snd_pmac_awacs_master_sw_imac | 984 | ? &snd_pmac_awacs_master_sw_imac |
| 972 | : &snd_pmac_awacs_master_sw, chip); | 985 | : &snd_pmac_awacs_master_sw, chip); |
| 973 | err = snd_ctl_add(chip->card, chip->master_sw_ctl); | 986 | err = snd_ctl_add(chip->card, chip->master_sw_ctl); |
| @@ -1012,7 +1025,7 @@ snd_pmac_awacs_init(struct snd_pmac *chip) | |||
| 1012 | return err; | 1025 | return err; |
| 1013 | } | 1026 | } |
| 1014 | 1027 | ||
| 1015 | if (beige) | 1028 | if (beige || g4agp) |
| 1016 | err = build_mixers(chip, | 1029 | err = build_mixers(chip, |
| 1017 | ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), | 1030 | ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), |
| 1018 | snd_pmac_screamer_mic_boost_beige); | 1031 | snd_pmac_screamer_mic_boost_beige); |
