mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-01 06:46:35 +01:00
ASoC: SOF: Intel: hda: use hdac_ext fine-grained link management
Opt-in to use snd_hdac_ext_bus_link_power() to manage HDA link power up/down events. This allows to reduce power consumption in cases where some HDA codecs are suspended, but other child devices (HDA or non-HDA codecs) remain active and controller itself remains in active state. By using snd_hdac_ext_bus_link_power(), the individual HDA links can be powered off and if all HDA codecs are powered down, the command DMA can also be shut down. Signed-off-by: Kai Vehmanen <[email protected]> Acked-by: Mark Brown <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
This commit is contained in:
1 parent
f9e5fd1b66
commit
87fc20e4a0
1 file changed
+9
-1
@@ -19,13 +19,21 @@
|
||||
#define sof_hda_ext_ops NULL
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
|
||||
static const struct hdac_bus_ops bus_core_ops = {
|
||||
.command = snd_hdac_bus_send_cmd,
|
||||
.get_response = snd_hdac_bus_get_response,
|
||||
.link_power = snd_hdac_ext_bus_link_power,
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This can be used for both with/without hda link support.
|
||||
*/
|
||||
void sof_hda_bus_init(struct hdac_bus *bus, struct device *dev)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
|
||||
snd_hdac_ext_bus_init(bus, dev, NULL, sof_hda_ext_ops);
|
||||
snd_hdac_ext_bus_init(bus, dev, &bus_core_ops, sof_hda_ext_ops);
|
||||
#else /* CONFIG_SND_SOC_SOF_HDA */
|
||||
memset(bus, 0, sizeof(*bus));
|
||||
bus->dev = dev;
|
||||
|
||||
Reference in new issue
Block a user