mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec
@ 2026-10-06 12:55 Alvin Šipraga
  2026-10-06 12:55 ` [PATCH 1/2] ASoC: adau1372: allow sleepy powerdown GPIOs Alvin Šipraga
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Alvin Šipraga @ 2026-10-06 12:55 UTC (permalink / raw)
  To: Lars-Peter Clausen, Nuno Sá,
	Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
	Alexandre Belloni
  Cc: linux-sound, linux-kernel, Alvin Šipraga

Signed-off-by: Alvin Šipraga <alvin.sipraga@analog.com>
---
Alvin Šipraga (2):
      ASoC: adau1372: allow sleepy powerdown GPIOs
      ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes

 sound/soc/codecs/adau1372.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
---
base-commit: d0cb7a7b2a490c381ad97f53155d02a748b60dea
change-id: 20261006-asoc-adau1372-fixes-c4e6b9912ebe

Best regards,
--  
Alvin Šipraga <alvin.sipraga@analog.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] ASoC: adau1372: allow sleepy powerdown GPIOs
  2026-10-06 12:55 [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Alvin Šipraga
@ 2026-10-06 12:55 ` Alvin Šipraga
  2026-10-06 12:55 ` [PATCH 2/2] ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes Alvin Šipraga
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Alvin Šipraga @ 2026-10-06 12:55 UTC (permalink / raw)
  To: Lars-Peter Clausen, Nuno Sá,
	Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
	Alexandre Belloni
  Cc: linux-sound, linux-kernel, Alvin Šipraga

gpiod_set_value() emits a WARN when the GPIO provider indicates that it
can sleep, as is typical for I2C controlled GPIO expanders. Since the
powerdown GPIO is only manipulated in process context, use the _cansleep
variant instead. This lets the driver use sleepy GPIOs to power off the
chip.

Fixes: 6cd4c6459e47 ("ASoC: Add ADAU1372 audio CODEC support")
Signed-off-by: Alvin Šipraga <alvin.sipraga@analog.com>
---
 sound/soc/codecs/adau1372.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/sound/soc/codecs/adau1372.c b/sound/soc/codecs/adau1372.c
index cc174ec3a1f8..b84495371b0b 100644
--- a/sound/soc/codecs/adau1372.c
+++ b/sound/soc/codecs/adau1372.c
@@ -798,7 +798,7 @@ static int adau1372_set_power(struct adau1372 *adau1372, bool enable)
 		if (ret)
 			return ret;
 		if (adau1372->pd_gpio)
-			gpiod_set_value(adau1372->pd_gpio, 0);
+			gpiod_set_value_cansleep(adau1372->pd_gpio, 0);
 
 		if (adau1372->switch_mode)
 			adau1372->switch_mode(adau1372->dev);
@@ -818,8 +818,7 @@ static int adau1372_set_power(struct adau1372 *adau1372, bool enable)
 							   ADAU1372_CLK_CTRL_PLL_EN,
 							   0);
 				regcache_cache_only(adau1372->regmap, true);
-				if (adau1372->pd_gpio)
-					gpiod_set_value(adau1372->pd_gpio, 1);
+				gpiod_set_value_cansleep(adau1372->pd_gpio, 1);
 				clk_disable_unprepare(adau1372->mclk);
 				return ret;
 			}
@@ -836,7 +835,7 @@ static int adau1372_set_power(struct adau1372 *adau1372, bool enable)
 			 * map. No need to do any register writes to manually
 			 * turn things off.
 			 */
-			gpiod_set_value(adau1372->pd_gpio, 1);
+			gpiod_set_value_cansleep(adau1372->pd_gpio, 1);
 			regcache_mark_dirty(adau1372->regmap);
 		} else {
 			regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL,

-- 
2.54.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes
  2026-10-06 12:55 [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Alvin Šipraga
  2026-10-06 12:55 ` [PATCH 1/2] ASoC: adau1372: allow sleepy powerdown GPIOs Alvin Šipraga
@ 2026-10-06 12:55 ` Alvin Šipraga
  2026-10-06 13:03 ` [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Nuno Sá
  2026-10-06 15:21 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Alvin Šipraga @ 2026-10-06 12:55 UTC (permalink / raw)
  To: Lars-Peter Clausen, Nuno Sá,
	Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
	Alexandre Belloni
  Cc: linux-sound, linux-kernel, Alvin Šipraga

The chip has strange power-on reset values for the registers that
control the output ASRC and DAC source muxes - the values are actually
marked "Reserved" in the datasheet [1]. This means that until the
underlying kcontrols are modified, the codec will not function as
expected.

The registers in question are:

  register / field       reset value       valid values

  ASRCO_SOURCE_0_1       0x10
   ASRC_OUT_SOURCE0      0                 4 .. 16
   ASRC_OUT_SOURCE1      1                 4 .. 16
  ASRCO_SOURCE_2_3       0x10
   ASRC_OUT_SOURCE2      2                 4 .. 16
   ASRC_OUT_SOURCE3      3                 4 .. 16
  DAC_SOURCE_0_1         0x10
   DAC_SOURCE_0          0                 12 .. 13
   DAC_SOURCE_1          1                 12 .. 13

Set some sane defaults during the driver probe:

  ADC Decimator0 -> Output ASRC0
  ADC Decimator1 -> Output ASRC1
  ADC Decimator2 -> Output ASRC2
  ADC Decimator3 -> Output ASRC3
  Input ASRC0 -> DAC0
  Input ASRC1 -> DAC1

With this, the chip will behave as advertised by the default kcontrol
state exposed by the driver.

[1] https://www.analog.com/media/en/technical-documentation/data-sheets/ADAU1372.pdf

Fixes: 6cd4c6459e47 ("ASoC: Add ADAU1372 audio CODEC support")
Signed-off-by: Alvin Šipraga <alvin.sipraga@analog.com>
---
 sound/soc/codecs/adau1372.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/sound/soc/codecs/adau1372.c b/sound/soc/codecs/adau1372.c
index b84495371b0b..c3d3be898ba6 100644
--- a/sound/soc/codecs/adau1372.c
+++ b/sound/soc/codecs/adau1372.c
@@ -1002,6 +1002,17 @@ int adau1372_probe(struct device *dev, struct regmap *regmap,
 
 	regmap_write(regmap, ADAU1372_REG_OP_STAGE_MUTE, 0x0);
 
+	/*
+	 * Set sane default values for the Output ASRC and DAC input muxes,
+	 * since the power-on reset defaults are invalid "Reserved" states.
+	 */
+	regmap_write(regmap, ADAU1372_REG_ASRCO_SOURCE_0_1,
+		     0x54); /* Decimator0, Decimator1 */
+	regmap_write(regmap, ADAU1372_REG_ASRCO_SOURCE_2_3,
+		     0x76); /* Decimator2, Decimator3 */
+	regmap_write(regmap, ADAU1372_REG_DAC_SOURCE,
+		     0xdc); /* Input ASRC0, Input ASRC1 */
+
 	regmap_write(regmap, 0x7, 0x01); /* CLOCK OUT */
 
 	return  devm_snd_soc_register_component(dev, &adau1372_driver, &adau1372_dai_driver, 1);

-- 
2.54.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec
  2026-10-06 12:55 [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Alvin Šipraga
  2026-10-06 12:55 ` [PATCH 1/2] ASoC: adau1372: allow sleepy powerdown GPIOs Alvin Šipraga
  2026-10-06 12:55 ` [PATCH 2/2] ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes Alvin Šipraga
@ 2026-10-06 13:03 ` Nuno Sá
  2026-10-06 15:21 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Nuno Sá @ 2026-10-06 13:03 UTC (permalink / raw)
  To: Alvin Šipraga
  Cc: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Alexandre Belloni, linux-sound, linux-kernel

On Tue, Oct 06, 2026 at 02:55:55PM +0200, Alvin Šipraga wrote:
> Signed-off-by: Alvin Šipraga <alvin.sipraga@analog.com>
> ---
> Alvin Šipraga (2):
>       ASoC: adau1372: allow sleepy powerdown GPIOs
>       ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes
> 
>  sound/soc/codecs/adau1372.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> ---
> base-commit: d0cb7a7b2a490c381ad97f53155d02a748b60dea
> change-id: 20261006-asoc-adau1372-fixes-c4e6b9912ebe
> 
> Best regards,
> --  
> Alvin Šipraga <alvin.sipraga@analog.com>
> 

Acked-by: Nuno Sá <nuno.sa@analog.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec
  2026-10-06 12:55 [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Alvin Šipraga
                   ` (2 preceding siblings ...)
  2026-10-06 13:03 ` [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Nuno Sá
@ 2026-10-06 15:21 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2026-10-06 15:21 UTC (permalink / raw)
  To: Lars-Peter Clausen, Nuno Sá,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Alexandre Belloni,
	Alvin Šipraga
  Cc: linux-sound, linux-kernel

On Tue, 06 Oct 2026 14:55:55 +0200, Alvin Šipraga wrote:
> ASoC: adau1372: two small bugfixes for the codec

Applied to

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

Thanks!

[1/2] ASoC: adau1372: allow sleepy powerdown GPIOs
      https://git.kernel.org/broonie/sound/c/64dd172bbffe
[2/2] ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes
      https://git.kernel.org/broonie/sound/c/36d0e05815ce

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-10-07 10:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-06 12:55 [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Alvin Šipraga
2026-10-06 12:55 ` [PATCH 1/2] ASoC: adau1372: allow sleepy powerdown GPIOs Alvin Šipraga
2026-10-06 12:55 ` [PATCH 2/2] ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes Alvin Šipraga
2026-10-06 13:03 ` [PATCH 0/2] ASoC: adau1372: two small bugfixes for the codec Nuno Sá
2026-10-06 15:21 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®