mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 13:36:46 +07:00
ASoC: hdac_hdmi: Fix to wait for D3 before powering off codec
Powering off codec immediately after sending D3 verb may not set the node to D3 state. So wait for a confirmation response before shutting down codec. Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
ab85f5b36e
commit
7ed49700c4
@ -1486,6 +1486,7 @@ static int hdac_hdmi_runtime_suspend(struct device *dev)
|
||||
struct hdac_ext_device *edev = to_hda_ext_device(dev);
|
||||
struct hdac_device *hdac = &edev->hdac;
|
||||
struct hdac_bus *bus = hdac->bus;
|
||||
unsigned long timeout;
|
||||
int err;
|
||||
|
||||
dev_dbg(dev, "Enter: %s\n", __func__);
|
||||
@ -1495,10 +1496,19 @@ static int hdac_hdmi_runtime_suspend(struct device *dev)
|
||||
return 0;
|
||||
|
||||
/* Power down afg */
|
||||
if (!snd_hdac_check_power_state(hdac, hdac->afg, AC_PWRST_D3))
|
||||
if (!snd_hdac_check_power_state(hdac, hdac->afg, AC_PWRST_D3)) {
|
||||
snd_hdac_codec_write(hdac, hdac->afg, 0,
|
||||
AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
|
||||
|
||||
/* Wait till power state is set to D3 */
|
||||
timeout = jiffies + msecs_to_jiffies(1000);
|
||||
while (!snd_hdac_check_power_state(hdac, hdac->afg, AC_PWRST_D3)
|
||||
&& time_before(jiffies, timeout)) {
|
||||
|
||||
msleep(50);
|
||||
}
|
||||
}
|
||||
|
||||
err = snd_hdac_display_power(bus, false);
|
||||
if (err < 0) {
|
||||
dev_err(bus->dev, "Cannot turn on display power on i915\n");
|
||||
|
Loading…
Reference in New Issue
Block a user