Skip to content

Commit c575371

Browse files
plbossartvinodkoul
authored andcommitted
soundwire: cadence: split access to IP_MCP_CONFIG fields
The latest Cadence IP splits the MCP_CONFIG fields in two registers: MCP_CONFIG and IP_MCP_CONFIG. Rename the relevant fields and change the access methods used for those fields. For existing solutions, this is an iso-functionality change. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://lore.kernel.org/r/20230314015410.487311-14-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 9402e25 commit c575371

1 file changed

Lines changed: 27 additions & 20 deletions

File tree

drivers/soundwire/cadence_master.c

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,17 @@ module_param_named(cnds_mcp_int_mask, interrupt_mask, int, 0444);
2727
MODULE_PARM_DESC(cdns_mcp_int_mask, "Cadence MCP IntMask");
2828

2929
#define CDNS_MCP_CONFIG 0x0
30-
31-
#define CDNS_MCP_CONFIG_MCMD_RETRY GENMASK(27, 24)
32-
#define CDNS_MCP_CONFIG_MPREQ_DELAY GENMASK(20, 16)
33-
#define CDNS_MCP_CONFIG_MMASTER BIT(7)
3430
#define CDNS_MCP_CONFIG_BUS_REL BIT(6)
35-
#define CDNS_MCP_CONFIG_SNIFFER BIT(5)
36-
#define CDNS_MCP_CONFIG_CMD BIT(3)
37-
#define CDNS_MCP_CONFIG_OP GENMASK(2, 0)
38-
#define CDNS_MCP_CONFIG_OP_NORMAL 0
31+
32+
#define CDNS_IP_MCP_CONFIG 0x0 /* IP offset added at run-time */
33+
34+
#define CDNS_IP_MCP_CONFIG_MCMD_RETRY GENMASK(27, 24)
35+
#define CDNS_IP_MCP_CONFIG_MPREQ_DELAY GENMASK(20, 16)
36+
#define CDNS_IP_MCP_CONFIG_MMASTER BIT(7)
37+
#define CDNS_IP_MCP_CONFIG_SNIFFER BIT(5)
38+
#define CDNS_IP_MCP_CONFIG_CMD BIT(3)
39+
#define CDNS_IP_MCP_CONFIG_OP GENMASK(2, 0)
40+
#define CDNS_IP_MCP_CONFIG_OP_NORMAL 0
3941

4042
#define CDNS_MCP_CONTROL 0x4
4143

@@ -1348,28 +1350,33 @@ int sdw_cdns_init(struct sdw_cdns *cdns)
13481350
/* Configure mcp config */
13491351
val = cdns_readl(cdns, CDNS_MCP_CONFIG);
13501352

1353+
/* Disable auto bus release */
1354+
val &= ~CDNS_MCP_CONFIG_BUS_REL;
1355+
1356+
cdns_writel(cdns, CDNS_MCP_CONFIG, val);
1357+
1358+
/* Configure IP mcp config */
1359+
val = cdns_ip_readl(cdns, CDNS_IP_MCP_CONFIG);
1360+
13511361
/* enable bus operations with clock and data */
1352-
val &= ~CDNS_MCP_CONFIG_OP;
1353-
val |= CDNS_MCP_CONFIG_OP_NORMAL;
1362+
val &= ~CDNS_IP_MCP_CONFIG_OP;
1363+
val |= CDNS_IP_MCP_CONFIG_OP_NORMAL;
13541364

13551365
/* Set cmd mode for Tx and Rx cmds */
1356-
val &= ~CDNS_MCP_CONFIG_CMD;
1366+
val &= ~CDNS_IP_MCP_CONFIG_CMD;
13571367

13581368
/* Disable sniffer mode */
1359-
val &= ~CDNS_MCP_CONFIG_SNIFFER;
1360-
1361-
/* Disable auto bus release */
1362-
val &= ~CDNS_MCP_CONFIG_BUS_REL;
1369+
val &= ~CDNS_IP_MCP_CONFIG_SNIFFER;
13631370

13641371
if (cdns->bus.multi_link)
13651372
/* Set Multi-master mode to take gsync into account */
1366-
val |= CDNS_MCP_CONFIG_MMASTER;
1373+
val |= CDNS_IP_MCP_CONFIG_MMASTER;
13671374

13681375
/* leave frame delay to hardware default of 0x1F */
13691376

13701377
/* leave command retry to hardware default of 0 */
13711378

1372-
cdns_writel(cdns, CDNS_MCP_CONFIG, val);
1379+
cdns_ip_writel(cdns, CDNS_IP_MCP_CONFIG, val);
13731380

13741381
/* changes will be committed later */
13751382
return 0;
@@ -1683,9 +1690,9 @@ int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset)
16831690
if (!bus_reset) {
16841691

16851692
/* enable bus operations with clock and data */
1686-
cdns_updatel(cdns, CDNS_MCP_CONFIG,
1687-
CDNS_MCP_CONFIG_OP,
1688-
CDNS_MCP_CONFIG_OP_NORMAL);
1693+
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONFIG,
1694+
CDNS_IP_MCP_CONFIG_OP,
1695+
CDNS_IP_MCP_CONFIG_OP_NORMAL);
16891696

16901697
ret = cdns_config_update(cdns);
16911698
if (ret < 0) {

0 commit comments

Comments
 (0)