[PATCH v2 0/2] ASoC: cs35l56: Support for factory calibration through ALSA controls

From: Richard Fitzgerald

Date: Wed Mar 25 2026 - 13:13:18 EST


Factory calibration is normally done through debugfs files.
Google have requested that factory calibration can be performed by
repair shops. These repair shops only have access to the standard
"user" kernel, which does not include debugfs.

Patch #1 adds a new control definition macro to create a boolean control
with specified access permissions. (new in V2)

Patch #2 is the implementation in the cs35l56 driver.

Changes in V2:
- Rename "Calibrate" control to "Calibrate Switch" to conform to naming
convention for boolean controls.
- Mark "Calibrate Switch" control volatile.
- Cache the value written to the "CAL_AMBIENT" control so that a read will
return the last set value.
- Return 1 from writing "CAL_AMBIENT" if the value was changed.
- Return 1 from writing the "Calibrate Switch" control to true because
that always causes some activity in the amp.
- Replace use of the confusing in_range() with normal comparisons against
limits and make the limits the same as the control definition.
- Simplify the code in cs35l56_calibrate_ctl_set(). It's a boolean so the
value written to it is either false or true.

Richard Fitzgerald (2):
ASoC: soc.h: Add SOC_SINGLE_BOOL_EXT_ACC() to allow setting access
flags
ASoC: cs35l56: Allow factory calibration through ALSA controls

include/sound/cs35l56.h | 1 +
include/sound/soc.h | 6 ++
sound/soc/codecs/Kconfig | 13 +++++
sound/soc/codecs/cs35l56-shared.c | 9 +++
sound/soc/codecs/cs35l56.c | 96 +++++++++++++++++++++++++++++++
sound/soc/codecs/cs35l56.h | 2 +
6 files changed, 127 insertions(+)

--
2.47.3