Skip to content

Commit 7f9ae6d

Browse files
rfvirgilbroonie
authored andcommitted
ASoC: cs35l56: Use reg_base to offset addresses on SoundWire
Set the reg_base member of regmap_config for SoundWire so that the regmap core will apply the 0x8000 offset to addresses, instead of doing it within our low-level regmap read/write callbacks. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://patch.msgid.link/20260519135435.479949-3-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent a6f7c21 commit 7f9ae6d

2 files changed

Lines changed: 3 additions & 6 deletions

File tree

sound/soc/codecs/cs35l56-sdw.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ static int cs35l56_sdw_slow_read(struct sdw_slave *peripheral, unsigned int reg,
5959
{
6060
int ret, i;
6161

62-
reg += CS35L56_SDW_ADDR_OFFSET;
63-
6462
for (i = 0; i < val_size; i += sizeof(u32)) {
6563
/* Poll for bus bridge idle */
6664
ret = cs35l56_sdw_poll_mem_status(peripheral,
@@ -123,11 +121,9 @@ static int cs35l56_sdw_read(void *context, const void *reg_buf,
123121

124122
reg = le32_to_cpu(*(const __le32 *)reg_buf);
125123

126-
if (cs35l56_is_otp_register(reg))
124+
if (cs35l56_is_otp_register(reg - CS35L56_SDW_ADDR_OFFSET))
127125
return cs35l56_sdw_slow_read(peripheral, reg, buf8, val_size);
128126

129-
reg += CS35L56_SDW_ADDR_OFFSET;
130-
131127
if (val_size == 4)
132128
return cs35l56_sdw_read_one(peripheral, reg, val_buf);
133129

@@ -186,7 +182,6 @@ static int cs35l56_sdw_gather_write(void *context,
186182
int ret;
187183

188184
reg = le32_to_cpu(*(const __le32 *)reg_buf);
189-
reg += CS35L56_SDW_ADDR_OFFSET;
190185

191186
if (val_size == 4)
192187
return cs35l56_sdw_write_one(peripheral, reg, src_be);

sound/soc/codecs/cs35l56-shared.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,6 +1880,7 @@ EXPORT_SYMBOL_NS_GPL(cs35l56_regmap_spi, "SND_SOC_CS35L56_SHARED");
18801880

18811881
const struct regmap_config cs35l56_regmap_sdw = {
18821882
.reg_bits = 32,
1883+
.reg_base = 0x8000,
18831884
.val_bits = 32,
18841885
.reg_stride = 4,
18851886
.reg_format_endian = REGMAP_ENDIAN_LITTLE,
@@ -1915,6 +1916,7 @@ const struct regmap_config cs35l63_regmap_sdw = {
19151916
.reg_bits = 32,
19161917
.val_bits = 32,
19171918
.reg_stride = 4,
1919+
.reg_base = 0x8000,
19181920
.reg_format_endian = REGMAP_ENDIAN_LITTLE,
19191921
.val_format_endian = REGMAP_ENDIAN_BIG,
19201922
.max_register = CS35L56_DSP1_PMEM_5114,

0 commit comments

Comments
 (0)