diff options
Diffstat (limited to 'sound/ppc/tumbler.c')
-rw-r--r-- | sound/ppc/tumbler.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c index b94437c024b1..65384afcfc3f 100644 --- a/sound/ppc/tumbler.c +++ b/sound/ppc/tumbler.c | |||
@@ -948,7 +948,6 @@ static void device_change_handler(void *self) | |||
948 | msleep(10); | 948 | msleep(10); |
949 | check_mute(chip, &mix->amp_mute, 1, mix->auto_mute_notify, | 949 | check_mute(chip, &mix->amp_mute, 1, mix->auto_mute_notify, |
950 | chip->speaker_sw_ctl); | 950 | chip->speaker_sw_ctl); |
951 | mix->drc_enable = 0; | ||
952 | } else { | 951 | } else { |
953 | /* unmute speaker, mute others */ | 952 | /* unmute speaker, mute others */ |
954 | check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify, | 953 | check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify, |
@@ -960,20 +959,21 @@ static void device_change_handler(void *self) | |||
960 | if (mix->line_mute.addr != 0) | 959 | if (mix->line_mute.addr != 0) |
961 | check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify, | 960 | check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify, |
962 | chip->lineout_sw_ctl); | 961 | chip->lineout_sw_ctl); |
963 | mix->drc_enable = 1; | ||
964 | } | 962 | } |
965 | if (mix->auto_mute_notify) { | 963 | if (mix->auto_mute_notify) |
966 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, | 964 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, |
967 | &chip->hp_detect_ctl->id); | 965 | &chip->hp_detect_ctl->id); |
966 | |||
967 | #ifdef CONFIG_SND_POWERMAC_AUTO_DRC | ||
968 | mix->drc_enable = ! (headphone || lineout); | ||
969 | if (mix->auto_mute_notify) | ||
968 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, | 970 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, |
969 | &chip->drc_sw_ctl->id); | 971 | &chip->drc_sw_ctl->id); |
970 | } | ||
971 | |||
972 | /* first set the DRC so the speaker do not explode -ReneR */ | ||
973 | if (chip->model == PMAC_TUMBLER) | 972 | if (chip->model == PMAC_TUMBLER) |
974 | tumbler_set_drc(mix); | 973 | tumbler_set_drc(mix); |
975 | else | 974 | else |
976 | snapper_set_drc(mix); | 975 | snapper_set_drc(mix); |
976 | #endif | ||
977 | 977 | ||
978 | /* reset the master volume so the correct amplification is applied */ | 978 | /* reset the master volume so the correct amplification is applied */ |
979 | tumbler_set_master_volume(mix); | 979 | tumbler_set_master_volume(mix); |
@@ -1370,6 +1370,17 @@ int __init snd_pmac_tumbler_init(pmac_t *chip) | |||
1370 | if ((err = snd_ctl_add(chip->card, chip->drc_sw_ctl)) < 0) | 1370 | if ((err = snd_ctl_add(chip->card, chip->drc_sw_ctl)) < 0) |
1371 | return err; | 1371 | return err; |
1372 | 1372 | ||
1373 | /* set initial DRC range to 60% */ | ||
1374 | if (chip->model == PMAC_TUMBLER) | ||
1375 | mix->drc_range = (TAS3001_DRC_MAX * 6) / 10; | ||
1376 | else | ||
1377 | mix->drc_range = (TAS3004_DRC_MAX * 6) / 10; | ||
1378 | mix->drc_enable = 1; /* will be changed later if AUTO_DRC is set */ | ||
1379 | if (chip->model == PMAC_TUMBLER) | ||
1380 | tumbler_set_drc(mix); | ||
1381 | else | ||
1382 | snapper_set_drc(mix); | ||
1383 | |||
1373 | #ifdef CONFIG_PM | 1384 | #ifdef CONFIG_PM |
1374 | chip->suspend = tumbler_suspend; | 1385 | chip->suspend = tumbler_suspend; |
1375 | chip->resume = tumbler_resume; | 1386 | chip->resume = tumbler_resume; |