soundwire: cadence: multi-link support
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tue, 17 Mar 2020 16:33:28 +0000 (11:33 -0500)
committerVinod Koul <vkoul@kernel.org>
Thu, 19 Mar 2020 07:13:05 +0000 (12:43 +0530)
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>
drivers/soundwire/cadence_master.c

index 55cf219..eedc4ce 100644 (file)
@@ -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 */