Skip to content

Commit

Permalink
usb: misc: usb3503: Clean up on driver unbind
Browse files Browse the repository at this point in the history
The driver should clean up after itself by unpreparing the clock when it
is unbound.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Krzysztof Kozlowski authored and Greg Kroah-Hartman committed Jun 8, 2016
1 parent 495660c commit 62c32e4
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/usb/misc/usb3503.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,17 @@ static int usb3503_i2c_probe(struct i2c_client *i2c,
return usb3503_probe(hub);
}

static int usb3503_i2c_remove(struct i2c_client *i2c)
{
struct usb3503 *hub;

hub = i2c_get_clientdata(i2c);
if (hub->clk)
clk_disable_unprepare(hub->clk);

return 0;
}

static int usb3503_platform_probe(struct platform_device *pdev)
{
struct usb3503 *hub;
Expand All @@ -343,6 +354,17 @@ static int usb3503_platform_probe(struct platform_device *pdev)
return usb3503_probe(hub);
}

static int usb3503_platform_remove(struct platform_device *pdev)
{
struct usb3503 *hub;

hub = platform_get_drvdata(pdev);
if (hub->clk)
clk_disable_unprepare(hub->clk);

return 0;
}

#ifdef CONFIG_PM_SLEEP
static int usb3503_i2c_suspend(struct device *dev)
{
Expand Down Expand Up @@ -396,6 +418,7 @@ static struct i2c_driver usb3503_i2c_driver = {
.of_match_table = of_match_ptr(usb3503_of_match),
},
.probe = usb3503_i2c_probe,
.remove = usb3503_i2c_remove,
.id_table = usb3503_id,
};

Expand All @@ -405,6 +428,7 @@ static struct platform_driver usb3503_platform_driver = {
.of_match_table = of_match_ptr(usb3503_of_match),
},
.probe = usb3503_platform_probe,
.remove = usb3503_platform_remove,
};

static int __init usb3503_init(void)
Expand Down

0 comments on commit 62c32e4

Please sign in to comment.