diff mbox series

[v6,2/6] mux: gpio: add optional regulator support

Message ID 20250327100633.11530-3-srinivas.kandagatla@linaro.org (mailing list archive)
State Handled Elsewhere
Headers show
Series ASoC: wcd938x: enable t14s audio headset | expand

Commit Message

Srinivas Kandagatla March 27, 2025, 10:06 a.m. UTC
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

Some of the external muxes needs powering up using a regulator.
This is the case with Lenovo T14s laptop which has a external audio mux
to handle US/EURO headsets.

Add support to the driver to handle this optional regulator.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: Christopher Obbard <christopher.obbard@linaro.org>
---
 drivers/mux/gpio.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Mark Brown April 1, 2025, 10:16 a.m. UTC | #1
On Thu, Mar 27, 2025 at 10:06:29AM +0000, srinivas.kandagatla@linaro.org wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> Some of the external muxes needs powering up using a regulator.
> This is the case with Lenovo T14s laptop which has a external audio mux
> to handle US/EURO headsets.

The ASoC bits of this series look fine, what's the plan with the mux
bits?  It looks like the two parts can just get merged independently.
Johan Hovold April 2, 2025, 8:05 a.m. UTC | #2
On Thu, Mar 27, 2025 at 10:06:29AM +0000, Srinivas Kandagatla wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> Some of the external muxes needs powering up using a regulator.
> This is the case with Lenovo T14s laptop which has a external audio mux
> to handle US/EURO headsets.
> 
> Add support to the driver to handle this optional regulator.
> 
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Tested-by: Christopher Obbard <christopher.obbard@linaro.org>

> @@ -82,6 +83,10 @@ static int mux_gpio_probe(struct platform_device *pdev)
>  		mux_chip->mux->idle_state = idle_state;
>  	}
>  
> +	ret = devm_regulator_get_enable_optional(dev, "mux");
> +	if (ret && ret != -ENODEV)
> +		return dev_err_probe(dev, ret, "Couldn't retrieve/enable gpio mux supply\n");

nit: "failed to get/enable mux supply" may be more consistent with the
other (non-capitalised error) messages and avoids repeating "gpio mux"
which will be added by driver core.

> +
>  	ret = devm_mux_chip_register(dev, mux_chip);
>  	if (ret < 0)
>  		return ret;

Either way:

Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Srinivas Kandagatla April 2, 2025, 8:11 a.m. UTC | #3
On 01/04/2025 11:16, Mark Brown wrote:
> On Thu, Mar 27, 2025 at 10:06:29AM +0000, srinivas.kandagatla@linaro.org wrote:
>> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>>
>> Some of the external muxes needs powering up using a regulator.
>> This is the case with Lenovo T14s laptop which has a external audio mux
>> to handle US/EURO headsets.
> 
> The ASoC bits of this series look fine, what's the plan with the mux
> bits?  It looks like the two parts can just get merged independently.
ASoC bits and codec bindings can go independently, there is no compile 
time dependency.

--srini
diff mbox series

Patch

diff --git a/drivers/mux/gpio.c b/drivers/mux/gpio.c
index cc5f2c1861d4..d1607f287755 100644
--- a/drivers/mux/gpio.c
+++ b/drivers/mux/gpio.c
@@ -15,6 +15,7 @@ 
 #include <linux/mux/driver.h>
 #include <linux/platform_device.h>
 #include <linux/property.h>
+#include <linux/regulator/consumer.h>
 
 struct mux_gpio {
 	struct gpio_descs *gpios;
@@ -82,6 +83,10 @@  static int mux_gpio_probe(struct platform_device *pdev)
 		mux_chip->mux->idle_state = idle_state;
 	}
 
+	ret = devm_regulator_get_enable_optional(dev, "mux");
+	if (ret && ret != -ENODEV)
+		return dev_err_probe(dev, ret, "Couldn't retrieve/enable gpio mux supply\n");
+
 	ret = devm_mux_chip_register(dev, mux_chip);
 	if (ret < 0)
 		return ret;