ALSA: hdac: Add snd_hdac_ext_bus_link_power_down_all()
New HDA controllers like Skylake sport multiple HDA links, so we need a helper to turn off all the links in one go while suspending the device so add snd_hdac_ext_bus_link_power_down_all() API Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a7e3dd85ca
commit
c5b0c09b8f
|
@ -116,6 +116,7 @@ struct hdac_ext_link {
|
||||||
|
|
||||||
int snd_hdac_ext_bus_link_power_up(struct hdac_ext_link *link);
|
int snd_hdac_ext_bus_link_power_up(struct hdac_ext_link *link);
|
||||||
int snd_hdac_ext_bus_link_power_down(struct hdac_ext_link *link);
|
int snd_hdac_ext_bus_link_power_down(struct hdac_ext_link *link);
|
||||||
|
int snd_hdac_ext_bus_link_power_down_all(struct hdac_ext_bus *ebus);
|
||||||
void snd_hdac_ext_link_set_stream_id(struct hdac_ext_link *link,
|
void snd_hdac_ext_link_set_stream_id(struct hdac_ext_link *link,
|
||||||
int stream);
|
int stream);
|
||||||
void snd_hdac_ext_link_clear_stream_id(struct hdac_ext_link *link,
|
void snd_hdac_ext_link_clear_stream_id(struct hdac_ext_link *link,
|
||||||
|
|
|
@ -280,3 +280,23 @@ int snd_hdac_ext_bus_link_power_down(struct hdac_ext_link *link)
|
||||||
return check_hdac_link_power_active(link, false);
|
return check_hdac_link_power_active(link, false);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_link_power_down);
|
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_link_power_down);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* snd_hdac_ext_bus_link_power_down_all -power down all hda link
|
||||||
|
* @ebus: HD-audio extended bus
|
||||||
|
*/
|
||||||
|
int snd_hdac_ext_bus_link_power_down_all(struct hdac_ext_bus *ebus)
|
||||||
|
{
|
||||||
|
struct hdac_ext_link *hlink = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
list_for_each_entry(hlink, &ebus->hlink_list, list) {
|
||||||
|
snd_hdac_updatel(hlink->ml_addr, AZX_REG_ML_LCTL, AZX_MLCTL_SPA, 0);
|
||||||
|
ret = check_hdac_link_power_active(hlink, false);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_link_power_down_all);
|
||||||
|
|
Loading…
Reference in New Issue