[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210325033555.29377-1-ryans.lee@maximintegrated.com>
Date: Wed, 24 Mar 2021 20:35:53 -0700
From: Ryan Lee <ryans.lee@...imintegrated.com>
To: lgirdwood@...il.com, broonie@...nel.org, perex@...ex.cz,
tiwai@...e.com, pierre-louis.bossart@...ux.intel.com,
kai.vehmanen@...ux.intel.com, yung-chuan.liao@...ux.intel.com,
rander.wang@...ux.intel.com, ryans.lee@...imintegrated.com,
guennadi.liakhovetski@...ux.intel.com, vkoul@...nel.org,
yong.zhi@...el.com, judyhsiao@...gle.com,
alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Cc: ryan.lee.maxim@...il.com
Subject: [PATCH 1/3] ASoC:codec:max98373: Changed amp shutdown register as volatile
0x20FF(amp global enable) register was defined as non-volatile,
but it is not. Overheating, overcurrent can cause amp shutdown
in hardware.
'regmap_write' compare register readback value before writing
to avoid same value writing. 'regmap_read' just read cache
not actual hardware value for the non-volatile register.
When amp is internally shutdown by some reason, next 'AMP ON'
command can be ignored because regmap think amp is already ON.
Signed-off-by: Ryan Lee <ryans.lee@...imintegrated.com>
---
sound/soc/codecs/max98373-i2c.c | 1 +
sound/soc/codecs/max98373-sdw.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/sound/soc/codecs/max98373-i2c.c b/sound/soc/codecs/max98373-i2c.c
index 85f6865019d4..ddb6436835d7 100644
--- a/sound/soc/codecs/max98373-i2c.c
+++ b/sound/soc/codecs/max98373-i2c.c
@@ -446,6 +446,7 @@ static bool max98373_volatile_reg(struct device *dev, unsigned int reg)
case MAX98373_R2054_MEAS_ADC_PVDD_CH_READBACK:
case MAX98373_R2055_MEAS_ADC_THERM_CH_READBACK:
case MAX98373_R20B6_BDE_CUR_STATE_READBACK:
+ case MAX98373_R20FF_GLOBAL_SHDN:
case MAX98373_R21FF_REV_ID:
return true;
default:
diff --git a/sound/soc/codecs/max98373-sdw.c b/sound/soc/codecs/max98373-sdw.c
index d8c47667a9ea..f3a12205cd48 100644
--- a/sound/soc/codecs/max98373-sdw.c
+++ b/sound/soc/codecs/max98373-sdw.c
@@ -220,6 +220,7 @@ static bool max98373_volatile_reg(struct device *dev, unsigned int reg)
case MAX98373_R2054_MEAS_ADC_PVDD_CH_READBACK:
case MAX98373_R2055_MEAS_ADC_THERM_CH_READBACK:
case MAX98373_R20B6_BDE_CUR_STATE_READBACK:
+ case MAX98373_R20FF_GLOBAL_SHDN:
case MAX98373_R21FF_REV_ID:
/* SoundWire Control Port Registers */
case MAX98373_R0040_SCP_INIT_STAT_1 ... MAX98373_R0070_SCP_FRAME_CTLR:
--
2.17.1
Powered by blists - more mailing lists