Re: [PATCH v6 5/6] ASoC: codecs: wcd938x: add mux control support for hp audio mux

From: Dmitry Baryshkov
Date: Sat Apr 05 2025 - 13:28:03 EST


On 03/04/2025 15:19, Srinivas Kandagatla wrote:


On 02/04/2025 10:12, Johan Hovold wrote:
On Thu, Mar 27, 2025 at 10:06:32AM +0000, Srinivas Kandagatla wrote:
From: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>

On some platforms to minimise pop and click during switching between
CTIA and OMTP headset an additional HiFi mux is used. Most common
case is that this switch is switched on by default, but on some
platforms this needs a regulator enable.

move to using mux control to enable both regulator and handle gpios,
deprecate the usage of gpio.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>
Tested-by: Christopher Obbard <christopher.obbard@xxxxxxxxxx>

@@ -3261,11 +3276,26 @@ static int wcd938x_populate_dt_data(struct wcd938x_priv *wcd938x, struct device
          return dev_err_probe(dev, wcd938x->reset_gpio,
                       "Failed to get reset gpio\n");
-    wcd938x->us_euro_gpio = devm_gpiod_get_optional(dev, "us-euro",
-                        GPIOD_OUT_LOW);
-    if (IS_ERR(wcd938x->us_euro_gpio))
-        return dev_err_probe(dev, PTR_ERR(wcd938x->us_euro_gpio),
-                     "us-euro swap Control GPIO not found\n");
+    wcd938x->us_euro_mux = devm_mux_control_get(dev, NULL);

Thanks Johan,
Running with this patch on the CRD I noticed that this now prints an
error as there is no optional mux (or gpio) defined:

    wcd938x_codec audio-codec: /audio-codec: failed to get mux-control (0)

This is not from codec driver, mux control is throwing up this.


You need to suppress that error in mux_get() to allow for optional muxes
to be looked up like this.
I have a plan for this,

I proposed some changes to mux api for exclusive apis at https:// lkml.org/lkml/2025/3/26/955

This should also allow us to easily add an optional api, which I plan to do once i get some feedback on this patch.

I'd rather suggest an API to switch the state without deselecting the the mux.


--srini



--
With best wishes
Dmitry