diff options
author | Takashi Iwai <tiwai@suse.de> | 2024-07-29 16:15:17 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2024-07-30 07:45:55 +0200 |
commit | 3bb668264db5c68a02b557b3052644181bb4f4be (patch) | |
tree | 91e2a1d1b14bc7b1c06ae97f9ae52a0bdf7362f9 /sound/pci | |
parent | 8abe0423ddd3ca7b9cea09c0a39249f65e646768 (diff) |
ALSA: hda: Enhance pm_blacklist option
We want sometimes to keep the runtime PM disabled persistently just
like we did for the PM deny-list in the previous change, e.g. for
testing some buggy device. This patch enhances the existing
pm_blacklist option for achieving it easily.
The default behavior doesn't change -- the driver looks up the deny
list and disables the runtime PM if matches. However, when
pm_blacklist=1 option is set, now the driver disables the runtime PM
completely, just like the deny-list does.
Update the documentation for this option, too.
Link: https://patch.msgid.link/20240729141519.18398-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 440f1b37e071..ca5953445636 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -175,8 +175,8 @@ module_param(power_save, xint, 0644); MODULE_PARM_DESC(power_save, "Automatic power-saving timeout " "(in second, 0 = disable)."); -static bool pm_blacklist = true; -module_param(pm_blacklist, bool, 0644); +static int pm_blacklist = -1; +module_param(pm_blacklist, bint, 0644); MODULE_PARM_DESC(pm_blacklist, "Enable power-management denylist"); /* reset the HD-audio controller in power save mode. @@ -188,7 +188,7 @@ module_param(power_save_controller, bool, 0644); MODULE_PARM_DESC(power_save_controller, "Reset controller in power save mode."); #else /* CONFIG_PM */ #define power_save 0 -#define pm_blacklist false +#define pm_blacklist 0 #define power_save_controller false #endif /* CONFIG_PM */ @@ -930,6 +930,9 @@ static int __maybe_unused param_set_xint(const char *val, const struct kernel_pa if (ret || prev == power_save) return ret; + if (pm_blacklist > 0) + return 0; + mutex_lock(&card_list_lock); list_for_each_entry(hda, &card_list, list) { chip = &hda->chip; @@ -2247,7 +2250,7 @@ static void set_default_power_save(struct azx *chip) struct hda_intel *hda = container_of(chip, struct hda_intel, chip); int val = power_save; - if (pm_blacklist) { + if (pm_blacklist < 0) { const struct snd_pci_quirk *q; q = snd_pci_quirk_lookup(chip->pci, power_save_denylist); @@ -2257,6 +2260,9 @@ static void set_default_power_save(struct azx *chip) val = 0; hda->runtime_pm_disabled = 1; } + } else if (pm_blacklist > 0) { + dev_info(chip->card->dev, "Forcing power_save to 0 via option\n"); + val = 0; } snd_hda_set_power_save(&chip->bus, val * 1000); } |