ALSA: hda - Move power_save option to hda_intel.c
Move power_save option into hda_intel.c, and make a field in hda_bus, instead of keeping module parameters in separate files. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
986862bdf1
commit
fee2fba358
|
@ -33,14 +33,6 @@
|
||||||
#include <sound/hda_hwdep.h>
|
#include <sound/hda_hwdep.h>
|
||||||
#include "hda_patch.h" /* codec presets */
|
#include "hda_patch.h" /* codec presets */
|
||||||
|
|
||||||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
|
||||||
/* define this option here to hide as static */
|
|
||||||
static int power_save = CONFIG_SND_HDA_POWER_SAVE_DEFAULT;
|
|
||||||
module_param(power_save, int, 0644);
|
|
||||||
MODULE_PARM_DESC(power_save, "Automatic power-saving timeout "
|
|
||||||
"(in second, 0 = disable).");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* vendor / preset table
|
* vendor / preset table
|
||||||
*/
|
*/
|
||||||
|
@ -519,6 +511,7 @@ int __devinit snd_hda_bus_new(struct snd_card *card,
|
||||||
bus->private_data = temp->private_data;
|
bus->private_data = temp->private_data;
|
||||||
bus->pci = temp->pci;
|
bus->pci = temp->pci;
|
||||||
bus->modelname = temp->modelname;
|
bus->modelname = temp->modelname;
|
||||||
|
bus->power_save = temp->power_save;
|
||||||
bus->ops = temp->ops;
|
bus->ops = temp->ops;
|
||||||
|
|
||||||
mutex_init(&bus->cmd_mutex);
|
mutex_init(&bus->cmd_mutex);
|
||||||
|
@ -2694,15 +2687,18 @@ void snd_hda_power_up(struct hda_codec *codec)
|
||||||
codec->power_transition = 0;
|
codec->power_transition = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define power_save(codec) \
|
||||||
|
((codec)->bus->power_save ? *(codec)->bus->power_save : 0)
|
||||||
|
|
||||||
void snd_hda_power_down(struct hda_codec *codec)
|
void snd_hda_power_down(struct hda_codec *codec)
|
||||||
{
|
{
|
||||||
--codec->power_count;
|
--codec->power_count;
|
||||||
if (!codec->power_on || codec->power_count || codec->power_transition)
|
if (!codec->power_on || codec->power_count || codec->power_transition)
|
||||||
return;
|
return;
|
||||||
if (power_save) {
|
if (power_save(codec)) {
|
||||||
codec->power_transition = 1; /* avoid reentrance */
|
codec->power_transition = 1; /* avoid reentrance */
|
||||||
schedule_delayed_work(&codec->power_work,
|
schedule_delayed_work(&codec->power_work,
|
||||||
msecs_to_jiffies(power_save * 1000));
|
msecs_to_jiffies(power_save(codec) * 1000));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -585,6 +585,7 @@ struct hda_bus_template {
|
||||||
void *private_data;
|
void *private_data;
|
||||||
struct pci_dev *pci;
|
struct pci_dev *pci;
|
||||||
const char *modelname;
|
const char *modelname;
|
||||||
|
int *power_save;
|
||||||
struct hda_bus_ops ops;
|
struct hda_bus_ops ops;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -601,6 +602,7 @@ struct hda_bus {
|
||||||
void *private_data;
|
void *private_data;
|
||||||
struct pci_dev *pci;
|
struct pci_dev *pci;
|
||||||
const char *modelname;
|
const char *modelname;
|
||||||
|
int *power_save;
|
||||||
struct hda_bus_ops ops;
|
struct hda_bus_ops ops;
|
||||||
|
|
||||||
/* codec linked list */
|
/* codec linked list */
|
||||||
|
|
|
@ -83,7 +83,10 @@ module_param(enable_msi, int, 0444);
|
||||||
MODULE_PARM_DESC(enable_msi, "Enable Message Signaled Interrupt (MSI)");
|
MODULE_PARM_DESC(enable_msi, "Enable Message Signaled Interrupt (MSI)");
|
||||||
|
|
||||||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
||||||
/* power_save option is defined in hda_codec.c */
|
static int power_save = CONFIG_SND_HDA_POWER_SAVE_DEFAULT;
|
||||||
|
module_param(power_save, int, 0644);
|
||||||
|
MODULE_PARM_DESC(power_save, "Automatic power-saving timeout "
|
||||||
|
"(in second, 0 = disable).");
|
||||||
|
|
||||||
/* reset the HD-audio controller in power save mode.
|
/* reset the HD-audio controller in power save mode.
|
||||||
* this may give more power-saving, but will take longer time to
|
* this may give more power-saving, but will take longer time to
|
||||||
|
@ -1230,6 +1233,7 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model,
|
||||||
memset(&bus_temp, 0, sizeof(bus_temp));
|
memset(&bus_temp, 0, sizeof(bus_temp));
|
||||||
bus_temp.private_data = chip;
|
bus_temp.private_data = chip;
|
||||||
bus_temp.modelname = model;
|
bus_temp.modelname = model;
|
||||||
|
bus_temp.power_save = &power_save;
|
||||||
bus_temp.pci = chip->pci;
|
bus_temp.pci = chip->pci;
|
||||||
bus_temp.ops.command = azx_send_cmd;
|
bus_temp.ops.command = azx_send_cmd;
|
||||||
bus_temp.ops.get_response = azx_get_response;
|
bus_temp.ops.get_response = azx_get_response;
|
||||||
|
|
Loading…
Reference in New Issue