]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
usb: typec-mux: ptn36502: unregister typec switch on probe error and remove
authorNeil Armstrong <neil.armstrong@linaro.org>
Thu, 6 Jun 2024 13:11:13 +0000 (15:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Jun 2024 17:32:13 +0000 (19:32 +0200)
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@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240606-topic-sm8x50-upstream-retimer-broadcast-mode-v2-1-c6f6eae479c3@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/mux/ptn36502.c

index 0ec86ef32a871686edfc533500f4a33623956af4..88136a6d6f3138c55b10ca77d9d76ed919e4f8b2 100644 (file)
@@ -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 @@ err_switch_unregister:
 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[] = {