mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ASoC: adau1372: Clear PLL_EN on failed PLL lock without reset GPIO
The PLL lock failure path in adau1372_set_power() unwinds by putting
the regmap back in cache-only mode, asserting the optional power-down
GPIO and disabling mclk.
adau1372_enable_pll() enables CLK_CTRL.PLL_EN before polling the PLL
lock bit. If the lock fails on a board without a power-down GPIO, the
error path disables mclk and returns an error, but leaves PLL_EN set in
the hardware register. The normal power-off path already handles the
no-GPIO case by explicitly clearing PLL_EN.
Mirror that cleanup in the PLL lock failure path and clear PLL_EN while
the regmap is still live, before switching it back to cache-only mode.
Fixes: bfe6a264ef ("ASoC: adau1372: Fix clock leak on PLL lock failure")
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
Link: https://patch.msgid.link/20260604125520.1428905-1-lgs201920130244@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
7165d138c6
commit
69b4141b42
|
|
@ -813,6 +813,11 @@ static int adau1372_set_power(struct adau1372 *adau1372, bool enable)
|
|||
if (adau1372->use_pll) {
|
||||
ret = adau1372_enable_pll(adau1372);
|
||||
if (ret) {
|
||||
if (!adau1372->pd_gpio)
|
||||
regmap_update_bits(adau1372->regmap,
|
||||
ADAU1372_REG_CLK_CTRL,
|
||||
ADAU1372_CLK_CTRL_PLL_EN,
|
||||
0);
|
||||
regcache_cache_only(adau1372->regmap, true);
|
||||
if (adau1372->pd_gpio)
|
||||
gpiod_set_value(adau1372->pd_gpio, 1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user