diff options
author | Rander Wang <rander.wang@intel.com> | 2020-03-17 17:33:17 +0100 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-03-19 08:13:03 +0100 |
commit | 1032504f22acb92671cfbd06c0dc419b9f0c7976 (patch) | |
tree | 20d4929b4a000add1ca0d949a083f60eedce637c /drivers/soundwire/cadence_master.h | |
parent | soundwire: cadence: handle error cases with CONFIG_UPDATE (diff) | |
download | linux-1032504f22acb92671cfbd06c0dc419b9f0c7976.tar.xz linux-1032504f22acb92671cfbd06c0dc419b9f0c7976.zip |
soundwire: cadence: add clock_stop/restart routines
Add support for clock stop and restart, with two configuration
parameters:
1) when entering the ClockStop mode, Slave-initiated wakes can be
prevented.
2) When exiting the ClockStop mode, the caller can request a Bus Reset
(either if all Slaves were configured in ClockStopMode1 or the Master
IP lost context and enumeration is required)
The code handles the case where no Slaves are present by configuring
the IP to treat COMMAND_IGNORED as success.
The exit_reset part can be dealt with in the caller, along with the
required syncArm/syncGo sequence in multi-link mode.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200317163329.25501-6-pierre-louis.bossart@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire/cadence_master.h')
-rw-r--r-- | drivers/soundwire/cadence_master.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/soundwire/cadence_master.h b/drivers/soundwire/cadence_master.h index 691faa386889..e8fa5c7e09f4 100644 --- a/drivers/soundwire/cadence_master.h +++ b/drivers/soundwire/cadence_master.h @@ -145,6 +145,8 @@ int sdw_cdns_exit_reset(struct sdw_cdns *cdns); int sdw_cdns_enable_interrupt(struct sdw_cdns *cdns, bool state); bool sdw_cdns_is_clock_stop(struct sdw_cdns *cdns); +int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake); +int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset); #ifdef CONFIG_DEBUG_FS void sdw_cdns_debugfs_init(struct sdw_cdns *cdns, struct dentry *root); |