Re: [PATCH 0/3] ASoC: codecs: add the Qualcomm WCD9378 audio codec
From: Luca Weiss
Date: Thu Jul 16 2026 - 04:16:28 EST
Hi Jorijn,
On Mon Jul 6, 2026 at 9:22 PM CEST, Jorijn van der Graaf wrote:
> This series adds bindings and a codec driver for the Qualcomm WCD9378,
> found on SM7635 boards such as the Fairphone 6. The chip pairs a
> WCD937x-compatible analog core with SDCA-style function blocks whose
> built-in sequencers handle the analog power-up/down; all control
> registers, analog core included, sit in a 32-bit paged SDCA control
> address space behind the TX SoundWire slave.
>
> The driver implements the TX/capture paths (three ADCs fed from four
> analog microphone inputs, three mic bias supplies) and is modeled on
> wcd937x, reusing the wcd-common helpers. RX/playback, MBHC and the
> SmartAMP function are follow-up work. Register sequences come from the
> GPL downstream wcd9378 driver in Qualcomm's audio-kernel-ar tree; the
> chip has no public datasheet.
>
> One dependency outside this series: the paged register map needs the
> Qualcomm SoundWire controller to implement SCP address paging, posted
> separately to the soundwire tree as
> "soundwire: qcom: add SCP address paging support". Without it the
> codec enumerates but every paged register access silently reads zero.
> There is no compile-time dependency, so the two can go through their
> respective trees in any order; capture just needs both to land.
>
> Patch 1 moves the qcom,micbias4-microvolt requirement out of
> qcom,wcd93xx-common.yaml into the codecs that have four mic bias
> supplies, so the three-bias WCD9378 binding in patch 2 can reference
> the common schema. Patch 3 is the driver itself.
>
> Tested on the Fairphone 6 (SM7635): handset mic capture through the
> LPASS TX macro at 48 kHz across reboots, including UCM-driven use by
> PipeWire in a Plasma Mobile session. The board DTS follows once these
> bindings are accepted.
Many thanks for all your work on the Fairphone (Gen. 6)!
If possible, can you share also dts patches with me, so I can try out
your patches, and provide at least Tested-by?
Also for audio, UCM and AudioReach topology if it differs from
https://github.com/z3ntu/audioreach-topology/commits/fp6/ or what you've
used to test the changes.
So for NFC, speaker, microphone and magnetometer would be great.
A git branch with your changes also works of course if you have that
pushed somewhere.
Regards
Luca
>
> Jorijn van der Graaf (3):
> ASoC: dt-bindings: qcom,wcd93xx-common: don't require micbias4
> ASoC: dt-bindings: add the Qualcomm WCD9378 audio codec
> ASoC: codecs: wcd9378: add TX/capture codec driver
>
> .../bindings/sound/qcom,wcd9378-codec.yaml | 76 +
> .../bindings/sound/qcom,wcd9378-sdw.yaml | 122 ++
> .../bindings/sound/qcom,wcd937x.yaml | 1 +
> .../bindings/sound/qcom,wcd938x.yaml | 1 +
> .../bindings/sound/qcom,wcd939x.yaml | 1 +
> .../bindings/sound/qcom,wcd93xx-common.yaml | 1 -
> sound/soc/codecs/Kconfig | 19 +
> sound/soc/codecs/Makefile | 7 +
> sound/soc/codecs/wcd9378-sdw.c | 495 ++++++
> sound/soc/codecs/wcd9378.c | 1382 +++++++++++++++++
> sound/soc/codecs/wcd9378.h | 246 +++
> 11 files changed, 2350 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd9378-codec.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd9378-sdw.yaml
> create mode 100644 sound/soc/codecs/wcd9378-sdw.c
> create mode 100644 sound/soc/codecs/wcd9378.c
> create mode 100644 sound/soc/codecs/wcd9378.h