summaryrefslogtreecommitdiff
path: root/drivers/usb/typec
diff options
context:
space:
mode:
authorNeil Armstrong <neil.armstrong@linaro.org>2024-06-06 15:11:14 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-06-20 19:32:13 +0200
commit74b64e760ee3433c0f8d95715038c869bcddacf7 (patch)
tree729c1fdd3f862b232de444cde7c8a089b54b8bc5 /drivers/usb/typec
parent2be53b0436fda455e1bf6968ebae53f5d4f3cb0b (diff)
downloadlinux-74b64e760ee3433c0f8d95715038c869bcddacf7.tar.gz
linux-74b64e760ee3433c0f8d95715038c869bcddacf7.tar.bz2
linux-74b64e760ee3433c0f8d95715038c869bcddacf7.zip
usb: typec-mux: nb7vpq904m: unregister typec switch on probe error and remove
Add the missing call to typec_switch_put() when probe fails and the nb7vpq904m_remove() call is called. Fixes: 348359e7c232 ("usb: typec: nb7vpq904m: Add an error handling path in nb7vpq904m_probe()") Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Fixes: 88d8f3ac9c67 ("usb: typec: add support for the nb7vpq904m Type-C Linear Redriver") Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20240606-topic-sm8x50-upstream-retimer-broadcast-mode-v2-2-c6f6eae479c3@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/typec')
-rw-r--r--drivers/usb/typec/mux/nb7vpq904m.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/typec/mux/nb7vpq904m.c b/drivers/usb/typec/mux/nb7vpq904m.c
index ed93194b16cf..569f1162ee2e 100644
--- a/drivers/usb/typec/mux/nb7vpq904m.c
+++ b/drivers/usb/typec/mux/nb7vpq904m.c
@@ -415,7 +415,7 @@ static int nb7vpq904m_probe(struct i2c_client *client)
ret = nb7vpq904m_parse_data_lanes_mapping(nb7);
if (ret)
- return ret;
+ goto err_switch_put;
ret = regulator_enable(nb7->vcc_supply);
if (ret)
@@ -458,6 +458,9 @@ err_disable_gpio:
gpiod_set_value(nb7->enable_gpio, 0);
regulator_disable(nb7->vcc_supply);
+err_switch_put:
+ typec_switch_put(nb7->typec_switch);
+
return ret;
}
@@ -471,6 +474,8 @@ static void nb7vpq904m_remove(struct i2c_client *client)
gpiod_set_value(nb7->enable_gpio, 0);
regulator_disable(nb7->vcc_supply);
+
+ typec_switch_put(nb7->typec_switch);
}
static const struct i2c_device_id nb7vpq904m_table[] = {