Some sound card setups might require extra pin switches to allow turning off certain audio components. simple-card supports this already using the "pin-switches" and "widgets" device tree property. This series makes it possible to use the same properties for the Qcom sound cards.
To implement that, the function that parses the "pin-switches" property in simple-card-utils.c is first moved into the ASoC core. Then two simple function calls are added to the common Qcom sound card DT parser. Finally there is a small patch for the msm8916-wcd-analog codec to make it possible to model sound card setups used in some MSM8916 smartphones. (See PATCH 2/4 for an explanation of some real example use cases.)
Using pin switches rather than patching codec drivers with switches was originally suggested by Mark Brown on a patch for the tfa989x codec: https://lore.kernel.org/alsa-devel/YXaMVHo9drCIuD3u@sirena.org.uk/
Stephan Gerhold (4): ASoC: core: Add snd_soc_of_parse_pin_switches() from simple-card-utils ASoC: dt-bindings: qcom: sm8250: Document "pin-switches" and "widgets" ASoC: qcom: common: Parse "pin-switches" and "widgets" from DT ASoC: msm8916-wcd-analog: Use separate outputs for HPH_L/HPH_R
.../bindings/sound/qcom,sm8250.yaml | 16 ++++++ include/sound/soc.h | 1 + sound/soc/codecs/msm8916-wcd-analog.c | 7 +-- sound/soc/generic/simple-card-utils.c | 45 +---------------- sound/soc/qcom/common.c | 10 ++++ sound/soc/soc-core.c | 50 +++++++++++++++++++ 6 files changed, 82 insertions(+), 47 deletions(-)