[RFC PATCH 0/3] ASoC: tegra: ASRC control fixes and ratio caching

From: Sheetal

Date: Mon Sep 21 2026 - 04:57:41 EST


This RFC series updates the Tegra186 ASRC driver control handling.

The main RFC point is the userspace-visible ALSA mixer control ABI
change in patch 2. The existing per-stream controls expose the software
ratio as separate integer and fractional mixer controls. This series
replaces each pair with one two-value mixer control so userspace updates
the integer and fractional parts together. That avoids programming a
transient mixed ratio to hardware, but it does require userspace that
sets ASRC software ratios to switch to the new paired controls.

Patch 1 fixes the Stream6 input-threshold control, which was using the
same stream index as Stream5 and therefore addressed the wrong lane.

Patch 2 replaces the separate integer and fractional software ratio
ALSA mixer controls with a paired two-value control per stream. This
keeps the integer/fractional ratio update atomic from userspace,
validates both values before programming hardware, serializes
ratio-source and ratio updates, refreshes the hardware lock for large
ratio jumps, and rolls back partial hardware updates on failure.

ALSA exposes one min and max range for all values in an integer-array
control, so the paired ratio controls advertise the fractional field's
full 32-bit range. The put callback validates the integer part separately
against the hardware field width.

Patch 3 caches software ratio updates while the target stream is not
active or the ASRC device is runtime suspended. Cached ratios are applied
when streams are configured and restored after runtime resume, avoiding
unsafe volatile register accesses while suspended.

Sheetal (3):
ASoC: tegra: Fix ASRC Stream6 input threshold control
ASoC: tegra: Update ASRC ratio controls
ASoC: tegra: Cache ASRC ratios until streams are active

sound/soc/tegra/tegra186_asrc.c | 513 +++++++++++++++++++++-----------
sound/soc/tegra/tegra186_asrc.h | 5 +
2 files changed, 347 insertions(+), 171 deletions(-)

--
2.43.0