mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
ALSA: hda - Add reboot notifier to each codec
Add reboot notifier to each codec so that it can do some workarounds needed for reboot. So far, patch_sigmatel.c calls its shutup routine for avoiding noises at reboot on some HP machines. References: Novell bnc#544779 http://bugzilla.novell.com/show_bug.cgi?id=544779 Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
167eae5a17
commit
fb8d1a344d
4 changed files with 21 additions and 0 deletions
|
@ -3404,6 +3404,23 @@ static void cleanup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid)
|
|||
}
|
||||
}
|
||||
|
||||
/* call each reboot notifier */
|
||||
void snd_hda_bus_reboot_notify(struct hda_bus *bus)
|
||||
{
|
||||
struct hda_codec *codec;
|
||||
|
||||
if (!bus)
|
||||
return;
|
||||
list_for_each_entry(codec, &bus->codec_list, list) {
|
||||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
||||
if (!codec->power_on)
|
||||
continue;
|
||||
#endif
|
||||
if (codec->patch_ops.reboot_notify)
|
||||
codec->patch_ops.reboot_notify(codec);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* open the digital out in the exclusive mode
|
||||
*/
|
||||
|
|
|
@ -674,6 +674,7 @@ struct hda_codec_ops {
|
|||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
||||
int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid);
|
||||
#endif
|
||||
void (*reboot_notify)(struct hda_codec *codec);
|
||||
};
|
||||
|
||||
/* record for amp information cache */
|
||||
|
@ -910,6 +911,7 @@ int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,
|
|||
* Misc
|
||||
*/
|
||||
void snd_hda_get_codec_name(struct hda_codec *codec, char *name, int namelen);
|
||||
void snd_hda_bus_reboot_notify(struct hda_bus *bus);
|
||||
|
||||
/*
|
||||
* power management
|
||||
|
|
|
@ -2150,6 +2150,7 @@ static int azx_resume(struct pci_dev *pci)
|
|||
static int azx_halt(struct notifier_block *nb, unsigned long event, void *buf)
|
||||
{
|
||||
struct azx *chip = container_of(nb, struct azx, reboot_notifier);
|
||||
snd_hda_bus_reboot_notify(chip->bus);
|
||||
azx_stop_chip(chip);
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
|
|
@ -4831,6 +4831,7 @@ static struct hda_codec_ops stac92xx_patch_ops = {
|
|||
.suspend = stac92xx_suspend,
|
||||
.resume = stac92xx_resume,
|
||||
#endif
|
||||
.reboot_notify = stac92xx_shutup,
|
||||
};
|
||||
|
||||
static int patch_stac9200(struct hda_codec *codec)
|
||||
|
|
Loading…
Reference in a new issue