All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables
@ 2026-08-05 12:27 Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 1/3] ASoC: tegra210_i2s: sort the register default table Peter Ujfalusi
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Peter Ujfalusi @ 2026-08-05 12:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood, Thierry Reding, Jonathan Hunter,
	Sheetal
  Cc: linux-sound, stable


reg_defaults must be sorted by ascending register address, since
regcache_lookup_reg() locates entries in it with bsearch().  When a table is
not sorted, bsearch() cannot find the entries which follow a descending step,
so regcache_reg_needs_sync() falls back to reporting that a sync is needed for
them.  Those registers are then written to the device on every regcache_sync()
even when they were never touched.

See commit fd80df352ba1 ("regcache: Add support for sorting defaults arrays")
for the same problem in a different context.

The series is based on broonie/for-linus (05eebef3c7b2).

Affected tables:
  tegra210_i2s_reg_defaults     2 of 8 entries unreachable
  tegra264_i2s_reg_defaults     4 of 9 entries unreachable
  tegra210_mixer_reg_defaults   1 entry unreachable

Peter Ujfalusi (3):
  ASoC: tegra210_i2s: sort the register default table
  ASoC: tegra210_i2s: sort the Tegra264 register default table
  ASoC: tegra210_mixer: sort the register default table

 sound/soc/tegra/tegra210_i2s.c   | 8 ++++----
 sound/soc/tegra/tegra210_mixer.c | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

-- 
2.55.0


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

* [PATCH 1/3] ASoC: tegra210_i2s: sort the register default table
  2026-08-05 12:27 [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Peter Ujfalusi
@ 2026-08-05 12:27 ` Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 2/3] ASoC: tegra210_i2s: sort the Tegra264 " Peter Ujfalusi
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Peter Ujfalusi @ 2026-08-05 12:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood, Thierry Reding, Jonathan Hunter,
	Sheetal
  Cc: linux-sound, stable

reg_defaults must be sorted by ascending register address, as
regcache_lookup_reg() locates entries in it with bsearch().  See commit
fd80df352ba1 ("regcache: Add support for sorting defaults arrays").

TEGRA210_I2S_ENABLE (0x80) is listed after TEGRA210_I2S_CG (0x88) and
TEGRA210_I2S_TIMING (0xa4), so both it and TEGRA210_I2S_TIMING are
unreachable.  regcache_reg_needs_sync() then cannot compare them against
their default and reports that a sync is needed, so they are written to
the device on every regcache_sync() even when they were never touched.

Sort the table by register address.

Fixes: c0bfa98349d1 ("ASoC: tegra: Add Tegra210 based I2S driver")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/tegra/tegra210_i2s.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/tegra/tegra210_i2s.c b/sound/soc/tegra/tegra210_i2s.c
index ff8c72fc38c5..fd49d2d6ee49 100644
--- a/sound/soc/tegra/tegra210_i2s.c
+++ b/sound/soc/tegra/tegra210_i2s.c
@@ -23,9 +23,9 @@ static const struct reg_default tegra210_i2s_reg_defaults[] = {
 	{ TEGRA210_I2S_RX_CIF_CTRL, 0x00007700 },
 	{ TEGRA210_I2S_TX_INT_MASK, 0x00000003 },
 	{ TEGRA210_I2S_TX_CIF_CTRL, 0x00007700 },
+	{ TEGRA210_I2S_ENABLE, 0x1 },
 	{ TEGRA210_I2S_CG, 0x1 },
 	{ TEGRA210_I2S_TIMING, 0x0000001f },
-	{ TEGRA210_I2S_ENABLE, 0x1 },
 	/*
 	 * Below update does not have any effect on Tegra186 and Tegra194.
 	 * On Tegra210, I2S4 has "i2s4a" and "i2s4b" pins and below update
-- 
2.55.0


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

* [PATCH 2/3] ASoC: tegra210_i2s: sort the Tegra264 register default table
  2026-08-05 12:27 [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 1/3] ASoC: tegra210_i2s: sort the register default table Peter Ujfalusi
@ 2026-08-05 12:27 ` Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 3/3] ASoC: tegra210_mixer: sort the " Peter Ujfalusi
  2026-08-07 14:57 ` [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Peter Ujfalusi @ 2026-08-05 12:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood, Thierry Reding, Jonathan Hunter,
	Sheetal
  Cc: linux-sound, stable

reg_defaults must be sorted by ascending register address, as
regcache_lookup_reg() locates entries in it with bsearch().  See commit
fd80df352ba1 ("regcache: Add support for sorting defaults arrays").

TEGRA264_I2S_ENABLE (0x100), TEGRA264_I2S_RX_FIFO_WR_ACCESS_MODE (0x30)
and TEGRA264_I2S_TX_FIFO_RD_ACCESS_MODE (0xb0) are listed at the end of
the table, after TEGRA264_I2S_TIMING (0x130), which leaves 4 of the 9
entries unreachable.  regcache_reg_needs_sync() then cannot compare them
against their default and reports that a sync is needed, so they are
written to the device on every regcache_sync() even when they were never
touched.

Sort the table by register address.

Fixes: b3354438d898 ("ASoC: tegra: I2S: Add Tegra264 support")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/tegra/tegra210_i2s.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/soc/tegra/tegra210_i2s.c b/sound/soc/tegra/tegra210_i2s.c
index fd49d2d6ee49..e4d11518ff01 100644
--- a/sound/soc/tegra/tegra210_i2s.c
+++ b/sound/soc/tegra/tegra210_i2s.c
@@ -38,13 +38,13 @@ static const struct reg_default tegra210_i2s_reg_defaults[] = {
 static const struct reg_default tegra264_i2s_reg_defaults[] = {
 	{ TEGRA210_I2S_RX_INT_MASK, 0x00000003 },
 	{ TEGRA210_I2S_RX_CIF_CTRL, 0x00003f00 },
+	{ TEGRA264_I2S_RX_FIFO_WR_ACCESS_MODE, 0x1 },
 	{ TEGRA264_I2S_TX_INT_MASK, 0x00000003 },
 	{ TEGRA264_I2S_TX_CIF_CTRL, 0x00003f00 },
+	{ TEGRA264_I2S_TX_FIFO_RD_ACCESS_MODE, 0x1 },
+	{ TEGRA264_I2S_ENABLE, 0x1 },
 	{ TEGRA264_I2S_CG, 0x1 },
 	{ TEGRA264_I2S_TIMING, 0x0000001f },
-	{ TEGRA264_I2S_ENABLE, 0x1 },
-	{ TEGRA264_I2S_RX_FIFO_WR_ACCESS_MODE, 0x1 },
-	{ TEGRA264_I2S_TX_FIFO_RD_ACCESS_MODE, 0x1 },
 };
 
 static void tegra210_i2s_set_slot_ctrl(struct tegra210_i2s *i2s,
-- 
2.55.0


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

* [PATCH 3/3] ASoC: tegra210_mixer: sort the register default table
  2026-08-05 12:27 [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 1/3] ASoC: tegra210_i2s: sort the register default table Peter Ujfalusi
  2026-08-05 12:27 ` [PATCH 2/3] ASoC: tegra210_i2s: sort the Tegra264 " Peter Ujfalusi
@ 2026-08-05 12:27 ` Peter Ujfalusi
  2026-08-07 14:57 ` [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Peter Ujfalusi @ 2026-08-05 12:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood, Thierry Reding, Jonathan Hunter,
	Sheetal
  Cc: linux-sound, stable

reg_defaults must be sorted by ascending register address, as
regcache_lookup_reg() locates entries in it with bsearch().  See commit
fd80df352ba1 ("regcache: Add support for sorting defaults arrays").

TEGRA210_MIXER_ENABLE (0x400) is the last entry of the table, after
TEGRA210_MIXER_PEAKM_RAM_CTRL (0x434), which makes it unreachable.
regcache_reg_needs_sync() then cannot compare it against its default and
reports that a sync is needed, so it is written to the device on every
regcache_sync() even when it was never touched.

Sort the table by register address.

Fixes: 05bb3d5ec64a ("ASoC: tegra: Add Tegra210 based Mixer driver")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/tegra/tegra210_mixer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/tegra/tegra210_mixer.c b/sound/soc/tegra/tegra210_mixer.c
index a69774578d69..8eb4e54b954b 100644
--- a/sound/soc/tegra/tegra210_mixer.c
+++ b/sound/soc/tegra/tegra210_mixer.c
@@ -57,10 +57,10 @@ static const struct reg_default tegra210_mixer_reg_defaults[] = {
 	MIXER_TX_REG_DEFAULTS(3),
 	MIXER_TX_REG_DEFAULTS(4),
 
+	{ TEGRA210_MIXER_ENABLE, 0x1 },
 	{ TEGRA210_MIXER_CG, 0x00000001},
 	{ TEGRA210_MIXER_GAIN_CFG_RAM_CTRL, 0x00004000},
 	{ TEGRA210_MIXER_PEAKM_RAM_CTRL, 0x00004000},
-	{ TEGRA210_MIXER_ENABLE, 0x1 },
 };
 
 /* Default gain parameters */
-- 
2.55.0


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

* Re: [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables
  2026-08-05 12:27 [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Peter Ujfalusi
                   ` (2 preceding siblings ...)
  2026-08-05 12:27 ` [PATCH 3/3] ASoC: tegra210_mixer: sort the " Peter Ujfalusi
@ 2026-08-07 14:57 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2026-08-07 14:57 UTC (permalink / raw)
  To: Liam Girdwood, Thierry Reding, Jonathan Hunter, Sheetal,
	Peter Ujfalusi
  Cc: linux-sound, stable

On Wed, 05 Aug 2026 15:27:45 +0300, Peter Ujfalusi wrote:
> ASoC: tegra: sort the reg_defaults tables
> 
> reg_defaults must be sorted by ascending register address, since
> regcache_lookup_reg() locates entries in it with bsearch().  When a table is
> not sorted, bsearch() cannot find the entries which follow a descending step,
> so regcache_reg_needs_sync() falls back to reporting that a sync is needed for
> them.  Those registers are then written to the device on every regcache_sync()
> even when they were never touched.
> 
> [...]

Applied to

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

Thanks!

[1/3] ASoC: tegra210_i2s: sort the register default table
      https://git.kernel.org/broonie/sound/c/597273563d90
[2/3] ASoC: tegra210_i2s: sort the Tegra264 register default table
      https://git.kernel.org/broonie/sound/c/82da8df38800
[3/3] ASoC: tegra210_mixer: sort the register default table
      https://git.kernel.org/broonie/sound/c/f70bc276fc7f

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-08-08 12:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-05 12:27 [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Peter Ujfalusi
2026-08-05 12:27 ` [PATCH 1/3] ASoC: tegra210_i2s: sort the register default table Peter Ujfalusi
2026-08-05 12:27 ` [PATCH 2/3] ASoC: tegra210_i2s: sort the Tegra264 " Peter Ujfalusi
2026-08-05 12:27 ` [PATCH 3/3] ASoC: tegra210_mixer: sort the " Peter Ujfalusi
2026-08-07 14:57 ` [PATCH 0/3] ASoC: tegra: sort the reg_defaults tables Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.