Loading sound/ppc/Kconfig +13 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,17 @@ config SND_POWERMAC To compile this driver as a module, choose M here: the module will be called snd-powermac. endmenu config SND_POWERMAC_AUTO_DRC bool "Toggle DRC automatically at headphone/line plug-in" depends on SND_POWERMAC default y help Say Y here to enable the automatic toggle of DRC (dynamic range compression) on Tumbler/Snapper. If this feature is enabled, DRC is turned off when the headphone/line jack is plugged, and turned on when unplugged. Note that you can turn on/off DRC manually even without this option. endmenu sound/ppc/tumbler.c +17 −6 Original line number Diff line number Diff line Loading @@ -948,7 +948,6 @@ static void device_change_handler(void *self) msleep(10); check_mute(chip, &mix->amp_mute, 1, mix->auto_mute_notify, chip->speaker_sw_ctl); mix->drc_enable = 0; } else { /* unmute speaker, mute others */ check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify, Loading @@ -960,20 +959,21 @@ static void device_change_handler(void *self) if (mix->line_mute.addr != 0) check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify, chip->lineout_sw_ctl); mix->drc_enable = 1; } if (mix->auto_mute_notify) { if (mix->auto_mute_notify) snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hp_detect_ctl->id); #ifdef CONFIG_SND_POWERMAC_AUTO_DRC mix->drc_enable = ! (headphone || lineout); if (mix->auto_mute_notify) snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->drc_sw_ctl->id); } /* first set the DRC so the speaker do not explode -ReneR */ if (chip->model == PMAC_TUMBLER) tumbler_set_drc(mix); else snapper_set_drc(mix); #endif /* reset the master volume so the correct amplification is applied */ tumbler_set_master_volume(mix); Loading Loading @@ -1370,6 +1370,17 @@ int __init snd_pmac_tumbler_init(pmac_t *chip) if ((err = snd_ctl_add(chip->card, chip->drc_sw_ctl)) < 0) return err; /* set initial DRC range to 60% */ if (chip->model == PMAC_TUMBLER) mix->drc_range = (TAS3001_DRC_MAX * 6) / 10; else mix->drc_range = (TAS3004_DRC_MAX * 6) / 10; mix->drc_enable = 1; /* will be changed later if AUTO_DRC is set */ if (chip->model == PMAC_TUMBLER) tumbler_set_drc(mix); else snapper_set_drc(mix); #ifdef CONFIG_PM chip->suspend = tumbler_suspend; chip->resume = tumbler_resume; Loading Loading
sound/ppc/Kconfig +13 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,17 @@ config SND_POWERMAC To compile this driver as a module, choose M here: the module will be called snd-powermac. endmenu config SND_POWERMAC_AUTO_DRC bool "Toggle DRC automatically at headphone/line plug-in" depends on SND_POWERMAC default y help Say Y here to enable the automatic toggle of DRC (dynamic range compression) on Tumbler/Snapper. If this feature is enabled, DRC is turned off when the headphone/line jack is plugged, and turned on when unplugged. Note that you can turn on/off DRC manually even without this option. endmenu
sound/ppc/tumbler.c +17 −6 Original line number Diff line number Diff line Loading @@ -948,7 +948,6 @@ static void device_change_handler(void *self) msleep(10); check_mute(chip, &mix->amp_mute, 1, mix->auto_mute_notify, chip->speaker_sw_ctl); mix->drc_enable = 0; } else { /* unmute speaker, mute others */ check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify, Loading @@ -960,20 +959,21 @@ static void device_change_handler(void *self) if (mix->line_mute.addr != 0) check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify, chip->lineout_sw_ctl); mix->drc_enable = 1; } if (mix->auto_mute_notify) { if (mix->auto_mute_notify) snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hp_detect_ctl->id); #ifdef CONFIG_SND_POWERMAC_AUTO_DRC mix->drc_enable = ! (headphone || lineout); if (mix->auto_mute_notify) snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->drc_sw_ctl->id); } /* first set the DRC so the speaker do not explode -ReneR */ if (chip->model == PMAC_TUMBLER) tumbler_set_drc(mix); else snapper_set_drc(mix); #endif /* reset the master volume so the correct amplification is applied */ tumbler_set_master_volume(mix); Loading Loading @@ -1370,6 +1370,17 @@ int __init snd_pmac_tumbler_init(pmac_t *chip) if ((err = snd_ctl_add(chip->card, chip->drc_sw_ctl)) < 0) return err; /* set initial DRC range to 60% */ if (chip->model == PMAC_TUMBLER) mix->drc_range = (TAS3001_DRC_MAX * 6) / 10; else mix->drc_range = (TAS3004_DRC_MAX * 6) / 10; mix->drc_enable = 1; /* will be changed later if AUTO_DRC is set */ if (chip->model == PMAC_TUMBLER) tumbler_set_drc(mix); else snapper_set_drc(mix); #ifdef CONFIG_PM chip->suspend = tumbler_suspend; chip->resume = tumbler_resume; Loading