[PATCH v2 1/4] usb: typec-mux: ptn36502: unregister typec switch on probe error and remove

From: Neil Armstrong
Date: Thu Jun 06 2024 - 09:11:39 EST


Add the missing call to typec_switch_put() when probe fails and
the ptn36502_remove() call is called.

Fixes: 8e99dc783648 ("usb: typec: add support for PTN36502 redriver")
Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
---
drivers/usb/typec/mux/ptn36502.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/typec/mux/ptn36502.c b/drivers/usb/typec/mux/ptn36502.c
index 0ec86ef32a87..88136a6d6f31 100644
--- a/drivers/usb/typec/mux/ptn36502.c
+++ b/drivers/usb/typec/mux/ptn36502.c
@@ -322,8 +322,10 @@ static int ptn36502_probe(struct i2c_client *client)
"Failed to acquire orientation-switch\n");

ret = regulator_enable(ptn->vdd18_supply);
- if (ret)
- return dev_err_probe(dev, ret, "Failed to enable vdd18\n");
+ if (ret) {
+ ret = dev_err_probe(dev, ret, "Failed to enable vdd18\n");
+ goto err_switch_put;
+ }

ret = ptn36502_detect(ptn);
if (ret)
@@ -363,6 +365,9 @@ static int ptn36502_probe(struct i2c_client *client)
err_disable_regulator:
regulator_disable(ptn->vdd18_supply);

+err_switch_put:
+ typec_switch_put(ptn->typec_switch);
+
return ret;
}

@@ -374,6 +379,8 @@ static void ptn36502_remove(struct i2c_client *client)
typec_switch_unregister(ptn->sw);

regulator_disable(ptn->vdd18_supply);
+
+ typec_switch_put(ptn->typec_switch);
}

static const struct i2c_device_id ptn36502_table[] = {

--
2.34.1