mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v5 0/7] ASoC: Qualcomm Tambora (WCD9378) SDCA codec
@ 2026-09-25 16:10 Srinivas Kandagatla
  2026-09-25 16:10 ` [PATCH v5 1/7] ASoC: SDCA: allow building without ACPI Srinivas Kandagatla
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Srinivas Kandagatla @ 2026-09-25 16:10 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Bard Liao, Pierre-Louis Bossart, Charles Keepax
  Cc: Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Maciej Strozek,
	linux-sound, linux-arm-msm, devicetree, linux-kernel, patches,
	Srinivas Kandagatla

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-5 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, and translate
sound-dai cells by entity index.

Patches 6-7 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 qcom,sdca-compliant
boolean property.

Tested with HPH playback and headset-mic capture on the Snapdragon
X2 Elite Glymur CRD and Lenovo T14s Gen7.

Jack detection is not wired up in this series.

Changes since v4 [1]:
 - ASoC: SDCA: add class_ops with populate_function -- callback
   now takes the SDCA function device instead of the parent
   sdw_slave (Charles).
 - Drop the v4 sdca_apply_default_control_classifiers() helper
   and set is_volatile / has_reset directly in the WCD9378 static
   control tables (Charles).
 - dt-bindings: sound: qcom,wcd9378-sdw.yaml -- $ref
   dai-common.yaml# and switch to unevaluatedProperties
   (Krzysztof).
 - ASoC: codecs: wcd9378-sdca: fix SU 35 Selector mode RO -> RW
   so the class-layer DAPM mux can drive it; keep SU 43/45
   cached; reduce reset_max_delay to 25ms; drop the
   sdw_slave_read_prop() call (Charles); lower-case hex literals.
 - Commit body / Kconfig help corrections across 1/7, 2/7 and
   7/7 (Mark, Sashiko).

Changes since v3 [2]:
 - 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/20260918131914.681588-1-srinivas.kandagatla@oss.qualcomm.com/
[2] https://lore.kernel.org/all/20260915165652.914893-1-srinivas.kandagatla@oss.qualcomm.com/

Srinivas Kandagatla (7):
  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: dt-bindings: qcom: add Tambora WCD9378 SDCA codec
  ASoC: codecs: add Qualcomm Tambora (WCD9378) SDCA codec

 .../bindings/sound/qcom,wcd9378-sdw.yaml      |  105 ++
 include/sound/sdca.h                          |   23 +-
 include/sound/sdca_class.h                    |   70 ++
 sound/soc/codecs/Kconfig                      |   11 +
 sound/soc/codecs/Makefile                     |    2 +
 sound/soc/codecs/wcd9378-sdca.c               | 1080 +++++++++++++++++
 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               |    2 +
 14 files changed, 1531 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


base-commit: 4c253ac4b29b8c6cc6fdef8f92d4facde62e63b9
-- 
2.53.0


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

end of thread, other threads:[~2026-09-25 21:52 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-25 16:10 [PATCH v5 0/7] ASoC: Qualcomm Tambora (WCD9378) SDCA codec Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 1/7] ASoC: SDCA: allow building without ACPI Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 2/7] ASoC: SDCA: export PM helpers keyed on sdca_class_drv Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 3/7] ASoC: SDCA: expose class SoundWire probe/remove as library Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 4/7] ASoC: SDCA: add class_ops with populate_function Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 5/7] ASoC: SDCA: class_function: xlate sound-dai cell by entity index Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 6/7] ASoC: dt-bindings: qcom: add Tambora WCD9378 SDCA codec Srinivas Kandagatla
2026-09-25 16:10 ` [PATCH v5 7/7] ASoC: codecs: add Qualcomm Tambora (WCD9378) " Srinivas Kandagatla
2026-09-25 17:31   ` Mark Brown
2026-09-25 20:28     ` Srinivas Kandagatla
2026-09-25 21:52       ` 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®