[PATCH v4 0/8] ASoC: Qualcomm Tambora (WCD9378) SDCA codec

From: Srinivas Kandagatla

Date: Fri Sep 18 2026 - 09:32:08 EST


Add support for the Qualcomm Tambora (WCD9378) headset codec in
SDCA-compliant mode over SoundWire. On ARM/DT platforms without
ACPI/DisCo firmware, the SDCA topology and SoundWire port properties
are supplied as static data through the codec driver.

Patches 1-6 extend the ASoC SDCA class framework so that a
class-based codec driver can be built on ARM/DT: allow builds
without ACPI, expose the SoundWire probe/remove library entry
points, add class_ops with a populate_function hook, translate
sound-dai cells by entity index, and add a
sdca_apply_default_control_classifiers() helper.

Patches 7-8 add the WCD9378 dt-binding and driver. The same
silicon can be fused for a mobile (non-SDCA) or an SDCA-compliant
mode; the two share the SoundWire class-ID compatible
(sdw20217011000) and are selected apart by the new
qcom,sdca-compliant boolean property.

Testing: HPH playback and headset-mic capture tested on the
Snapdragon X2 Elite Glymur CRD and Lenovo T14s Gen7.

Jack detection is not wired up in this series.

Changes since v3 [1]:
- dt-bindings: sound: qcom,wcd9378-sdw.yaml -- drop the
qcom,wcd9378c front compatible so the schema plays nicely with
the SoundWire class-ID compatible; introduce a
qcom,sdca-compliant boolean flag to select the SDCA fuse; drop
the fake top-level wrapper node so the slave sits directly
under the SoundWire controller; drop '|' from qcom,port-mapping
description (Krzysztof).
- ASoC: codecs: wcd9378-sdca: gate probe on qcom,sdca-compliant.
- set SDCA_NO_INTERRUPT correctly on controls, (Mark)

[1] https://lore.kernel.org/all/20260915165652.914893-1-srinivas.kandagatla@xxxxxxxxxxxxxxxx/

Srinivas Kandagatla (8):
ASoC: SDCA: allow building without ACPI
ASoC: SDCA: export PM helpers keyed on sdca_class_drv
ASoC: SDCA: expose class SoundWire probe/remove as library
ASoC: SDCA: add class_ops with populate_function
ASoC: SDCA: class_function: xlate sound-dai cell by entity index
ASoC: SDCA: add sdca_apply_default_control_classifiers() helper
dt-bindings: sound: qcom: add Tambora WCD9378 SDCA codec
ASoC: codecs: add Qualcomm Tambora (WCD9378) SDCA codec

.../bindings/sound/qcom,wcd9378-sdw.yaml | 102 ++
include/sound/sdca.h | 23 +-
include/sound/sdca_class.h | 70 ++
include/sound/sdca_function.h | 2 +
sound/soc/codecs/Kconfig | 11 +
sound/soc/codecs/Makefile | 2 +
sound/soc/codecs/wcd9378-sdca.c | 1058 +++++++++++++++++
sound/soc/codecs/wcd9378-sdca.h | 20 +
sound/soc/codecs/wcd9378-sdw.c | 51 +
sound/soc/sdca/Kconfig | 6 +-
sound/soc/sdca/sdca_class.c | 148 ++-
sound/soc/sdca/sdca_class.h | 35 -
sound/soc/sdca/sdca_class_function.c | 45 +-
sound/soc/sdca/sdca_device.c | 4 +
sound/soc/sdca/sdca_functions.c | 31 +
15 files changed, 1537 insertions(+), 71 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd9378-sdw.yaml
create mode 100644 include/sound/sdca_class.h
create mode 100644 sound/soc/codecs/wcd9378-sdca.c
create mode 100644 sound/soc/codecs/wcd9378-sdca.h
create mode 100644 sound/soc/codecs/wcd9378-sdw.c
delete mode 100644 sound/soc/sdca/sdca_class.h

--
2.53.0