diff mbox series

[1/3] ASoC:codec:max98373: Changed amp shutdown register as volatile

Message ID 20210325033555.29377-1-ryans.lee@maximintegrated.com (mailing list archive)
State Accepted
Commit a23f9099ff1541f15704e96b784d3846d2a4483d
Headers show
Series [1/3] ASoC:codec:max98373: Changed amp shutdown register as volatile | expand

Commit Message

Ryan Lee March 25, 2021, 3:35 a.m. UTC
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@maximintegrated.com>
---
 sound/soc/codecs/max98373-i2c.c | 1 +
 sound/soc/codecs/max98373-sdw.c | 1 +
 2 files changed, 2 insertions(+)

Comments

Mark Brown March 25, 2021, 1:56 p.m. UTC | #1
On Wed, Mar 24, 2021 at 08:35:53PM -0700, Ryan Lee wrote:
> 0x20FF(amp global enable) register was defined as non-volatile,
> but it is not. Overheating, overcurrent can cause amp shutdown
> in hardware.

Please submit patches using subject lines reflecting the style for the
subsystem, this makes it easier for people to identify relevant patches.
Look at what existing commits in the area you're changing are doing and
make sure your subject lines visually resemble what they're doing.
There's no need to resubmit to fix this alone.
Mark Brown March 25, 2021, 5:37 p.m. UTC | #2
On Wed, 24 Mar 2021 20:35:53 -0700, Ryan Lee wrote:
> 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.

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/3] ASoC:codec:max98373: Changed amp shutdown register as volatile
      commit: a23f9099ff1541f15704e96b784d3846d2a4483d
[2/3] ASoC:codec:max98373: Added 30ms turn on/off time delay
      commit: 3a27875e91fb9c29de436199d20b33f9413aea77
[3/3] ASoC:codec:max98373: Added controls for autorestart config
      commit: 7a0d884986f3693aca8a2dc4e1b31d35c508542e

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
diff mbox series

Patch

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: