diff options
author | Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | 2020-03-17 11:33:28 -0500 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-03-19 12:43:05 +0530 |
commit | 2c800e3ba7f6b43db5782c8b57bc47647a834215 (patch) | |
tree | b6cd20304db023d27297ffe8d19d9adf1264b840 /drivers/soundwire/cadence_master.c | |
parent | b17350e4037257d25f1ca9772ba5daced9f1bf07 (diff) | |
download | linux-2c800e3ba7f6b43db5782c8b57bc47647a834215.tar.gz linux-2c800e3ba7f6b43db5782c8b57bc47647a834215.tar.bz2 linux-2c800e3ba7f6b43db5782c8b57bc47647a834215.zip |
soundwire: cadence: multi-link support
Enable multi-link (aka multi-master configuration). In this
configuration, updates and commands with the 'ssp_sync' tag will be
deferred and controlled by the gsync hardware signal.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200317163329.25501-17-pierre-louis.bossart@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire/cadence_master.c')
-rw-r--r-- | drivers/soundwire/cadence_master.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index 55cf219cc908..eedc4cefdab0 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -843,7 +843,13 @@ int sdw_cdns_exit_reset(struct sdw_cdns *cdns) CDNS_MCP_CONTROL_HW_RST); /* commit changes */ - return cdns_config_update(cdns); + cdns_updatel(cdns, CDNS_MCP_CONFIG_UPDATE, + CDNS_MCP_CONFIG_UPDATE_BIT, + CDNS_MCP_CONFIG_UPDATE_BIT); + + /* don't wait here */ + return 0; + } EXPORT_SYMBOL(sdw_cdns_exit_reset); @@ -1104,7 +1110,9 @@ int sdw_cdns_init(struct sdw_cdns *cdns) /* Disable auto bus release */ val &= ~CDNS_MCP_CONFIG_BUS_REL; - /* Multi-master support to be added here */ + if (cdns->bus.multi_link) + /* Set Multi-master mode to take gsync into account */ + val |= CDNS_MCP_CONFIG_MMASTER; /* leave frame delay to hardware default of 0x1F */ |