soundwire: cadence: Write to correct address for each FIFO chunk
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Sat, 17 Sep 2022 12:35:17 +0000 (13:35 +0100)
committerVinod Koul <vkoul@kernel.org>
Tue, 20 Sep 2022 05:06:07 +0000 (10:36 +0530)
_cdns_xfer_msg() must add the fragment offset to msg->addr to get the
base target address of each FIFO chunk. Otherwise every chunk will
be written to the first 32 register addresses.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20220917123517.229153-1-rf@opensource.cirrus.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/cadence_master.c

index 3ef472049980341b384079781502842affb90184..ca241bbeadd9355d59a71dacfff622a5812bc004 100644 (file)
@@ -569,7 +569,7 @@ _cdns_xfer_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int cmd,
        }
 
        base = CDNS_MCP_CMD_BASE;
-       addr = msg->addr;
+       addr = msg->addr + offset;
 
        for (i = 0; i < count; i++) {
                data = FIELD_PREP(CDNS_MCP_CMD_DEV_ADDR, msg->dev_num);