forked from Minki/linux
soundwire: intel: disable shim wake on suspend
If we enabled the clock stop mode and suspend, we need to disable the shim wake. We do so only if the parent is pm_runtime active due to power rail dependencies. GitHub issue: https://github.com/thesofproject/linux/issues/1678 Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://lore.kernel.org/r/20200901150556.19432-2-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
6073755886
commit
e4be9facb9
@ -1532,6 +1532,7 @@ static int __maybe_unused intel_suspend(struct device *dev)
|
||||
struct sdw_cdns *cdns = dev_get_drvdata(dev);
|
||||
struct sdw_intel *sdw = cdns_to_intel(cdns);
|
||||
struct sdw_bus *bus = &cdns->bus;
|
||||
u32 clock_stop_quirks;
|
||||
int ret;
|
||||
|
||||
if (bus->prop.hw_disabled) {
|
||||
@ -1543,6 +1544,23 @@ static int __maybe_unused intel_suspend(struct device *dev)
|
||||
if (pm_runtime_suspended(dev)) {
|
||||
dev_dbg(dev, "%s: pm_runtime status: suspended\n", __func__);
|
||||
|
||||
clock_stop_quirks = sdw->link_res->clock_stop_quirks;
|
||||
|
||||
if ((clock_stop_quirks & SDW_INTEL_CLK_STOP_BUS_RESET ||
|
||||
!clock_stop_quirks) &&
|
||||
!pm_runtime_suspended(dev->parent)) {
|
||||
|
||||
/*
|
||||
* if we've enabled clock stop, and the parent
|
||||
* is still active, disable shim wake. The
|
||||
* SHIM registers are not accessible if the
|
||||
* parent is already pm_runtime suspended so
|
||||
* it's too late to change that configuration
|
||||
*/
|
||||
|
||||
intel_shim_wake(sdw, false);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user