[PATCH v6 0/6] ASoC: wcd938x: enable t14s audio headset

From: srinivas . kandagatla
Date: Thu Mar 27 2025 - 06:06:55 EST


From: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>

On Lenovo ThinkPad T14s, the headset is connected via a HiFi Switch to
support CTIA and OMTP headsets. This switch is used to minimise pop and
click during headset type switching.

This patchset adds required bindings and changes to codec and dts to
tnable the regulator required to power this switch along with wiring up
gpio that control the headset switching.

Without this patchset, there will be lots of noise on headset and mic
will not we functional.

Merge strategy:
- mux bindings and mux patches can go independently
- ASoC codec patches with bindings can go independently.
- dts needs can go in parallel to Codec bindings.

Changes since v5:
- add flag to check if mux is selected or not and conditionally
do deselect.
Also proposed mux exclusive apis https://lkml.org/lkml/2025/3/26/955
However, this patchset can go as it is without exclusive apis
We cal always do the cleanup later.

Changes since v4:
- do not rely on as-is idle mux state, exclusively get mux

Changes since v3:
- rearranged mux deselct to do better error handling.
- reused mux_state for gpios as well.
- removed tested by on bindings

Changes since v2:
- udpated bindings as suggested by Rob and Krzysztof
- cleaned up swap_gnd_mic callback
- updated mux gpio to use dev_err_probe.
- added Tested-by and reviewed-by tags

Changes since v1:
- moved to using mux-controls.
- fixed typo in regulator naming.


Srinivas Kandagatla (6):
dt-bindings: mux: add optional regulator binding to gpio mux
mux: gpio: add optional regulator support
ASoC: codecs: wcd-mbhc: cleanup swap_gnd_mic api
ASoC: dt-bindings: wcd93xx: add bindings for audio mux controlling hp
ASoC: codecs: wcd938x: add mux control support for hp audio mux
arm64: dts: qcom: x1e78100-t14s: Enable audio headset support

.../devicetree/bindings/mux/gpio-mux.yaml | 4 ++
.../bindings/sound/qcom,wcd938x.yaml | 6 ++
.../qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 25 ++++++++
drivers/mux/gpio.c | 5 ++
sound/soc/codecs/Kconfig | 1 +
sound/soc/codecs/wcd-mbhc-v2.c | 2 +-
sound/soc/codecs/wcd-mbhc-v2.h | 2 +-
sound/soc/codecs/wcd937x.c | 2 +-
sound/soc/codecs/wcd938x.c | 57 +++++++++++++++----
sound/soc/codecs/wcd939x.c | 2 +-
10 files changed, 90 insertions(+), 16 deletions(-)

--
2.39.5