Skip to content

Commit

Permalink
usb: usb3503: add PM functions
Browse files Browse the repository at this point in the history
The usb3503 needs to switch to standby mode while suspending and should
switch to hub mode when resumed. Also we can control clock on PM
function.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Joonyoung Shim authored and Greg Kroah-Hartman committed Jul 12, 2014
1 parent 0e278b3 commit ecdc071
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions drivers/usb/misc/usb3503.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,6 @@ static int usb3503_switch_mode(struct usb3503 *hub, enum usb3503_mode mode)

case USB3503_MODE_STANDBY:
usb3503_reset(hub, 0);

hub->mode = mode;
dev_info(dev, "switched to STANDBY mode\n");
break;

Expand Down Expand Up @@ -347,6 +345,37 @@ static int usb3503_platform_probe(struct platform_device *pdev)
return usb3503_probe(hub);
}

#ifdef CONFIG_PM_SLEEP
static int usb3503_i2c_suspend(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
struct usb3503 *hub = i2c_get_clientdata(client);

usb3503_switch_mode(hub, USB3503_MODE_STANDBY);

if (hub->clk)
clk_disable_unprepare(hub->clk);

return 0;
}

static int usb3503_i2c_resume(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
struct usb3503 *hub = i2c_get_clientdata(client);

if (hub->clk)
clk_prepare_enable(hub->clk);

usb3503_switch_mode(hub, hub->mode);

return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(usb3503_i2c_pm_ops, usb3503_i2c_suspend,
usb3503_i2c_resume);

static const struct i2c_device_id usb3503_id[] = {
{ USB3503_I2C_NAME, 0 },
{ }
Expand All @@ -365,6 +394,7 @@ MODULE_DEVICE_TABLE(of, usb3503_of_match);
static struct i2c_driver usb3503_i2c_driver = {
.driver = {
.name = USB3503_I2C_NAME,
.pm = &usb3503_i2c_pm_ops,
.of_match_table = of_match_ptr(usb3503_of_match),
},
.probe = usb3503_i2c_probe,
Expand Down

0 comments on commit ecdc071

Please sign in to comment.