Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fee2fba3 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

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: default avatarTakashi Iwai <tiwai@suse.de>
parent 986862bd
Loading
Loading
Loading
Loading
+6 −10
Original line number Original line Diff line number Diff line
@@ -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));
	}
	}
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -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 */
+5 −1
Original line number Original line Diff line number Diff line
@@ -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;