mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-05-05 09:57:21 +02:00
ASoC: cs35l56: Fix illegal writes to OTP_MEM registers
Mark the OTP_MEM registers as volatile so that regcache_sync() will not
attempt to write to them.
These registers hold a constant, and originally they were marked as
readable non-volatile so that this value would be read into the regmap
cache. The problem with this is regcache_sync() issues a write for any
cached register that does not have a reg_default.
Though these registers are constants and writing them in normal use
cannot change OTP, it is illegal for the host to write to them.
Fixes: e1830f66f6 ("ASoC: cs35l56: Add helper functions for amp calibration")
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20260428115228.158252-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
13d30682e8
commit
be102efb83
@@ -108,8 +108,6 @@ int cs35l56_set_patch(struct cs35l56_base *cs35l56_base)
|
||||
EXPORT_SYMBOL_NS_GPL(cs35l56_set_patch, "SND_SOC_CS35L56_SHARED");
|
||||
|
||||
static const struct reg_default cs35l56_reg_defaults[] = {
|
||||
/* no defaults for OTP_MEM - first read populates cache */
|
||||
|
||||
{ CS35L56_ASP1_ENABLES1, 0x00000000 },
|
||||
{ CS35L56_ASP1_CONTROL1, 0x00000028 },
|
||||
{ CS35L56_ASP1_CONTROL2, 0x18180200 },
|
||||
@@ -138,8 +136,6 @@ static const struct reg_default cs35l56_reg_defaults[] = {
|
||||
};
|
||||
|
||||
static const struct reg_default cs35l63_reg_defaults[] = {
|
||||
/* no defaults for OTP_MEM - first read populates cache */
|
||||
|
||||
{ CS35L56_ASP1_ENABLES1, 0x00000000 },
|
||||
{ CS35L56_ASP1_CONTROL1, 0x00000028 },
|
||||
{ CS35L56_ASP1_CONTROL2, 0x18180200 },
|
||||
@@ -282,6 +278,9 @@ static bool cs35l56_common_volatile_reg(unsigned int reg)
|
||||
case CS35L56_GLOBAL_ENABLES: /* owned by firmware */
|
||||
case CS35L56_BLOCK_ENABLES: /* owned by firmware */
|
||||
case CS35L56_BLOCK_ENABLES2: /* owned by firmware */
|
||||
case CS35L56_OTP_MEM_53:
|
||||
case CS35L56_OTP_MEM_54:
|
||||
case CS35L56_OTP_MEM_55:
|
||||
case CS35L56_SYNC_GPIO1_CFG ... CS35L56_ASP2_DIO_GPIO13_CFG:
|
||||
case CS35L56_UPDATE_REGS:
|
||||
case CS35L56_REFCLK_INPUT: /* owned by firmware */
|
||||
|
||||
Reference in New Issue
Block a user