Loading drivers/usb/musb/blackfin.c +40 −24 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct bfin_glue { struct device *dev; struct platform_device *musb; }; #define glue_to_musb(g) platform_get_drvdata(g->musb) /* * Load an endpoint's FIFO Loading Loading @@ -406,27 +407,6 @@ static int bfin_musb_init(struct musb *musb) return 0; } static int bfin_musb_suspend(struct musb *musb) { if (is_host_active(musb)) /* * During hibernate gpio_vrsel will change from high to low * low which will generate wakeup event resume the system * immediately. Set it to 0 before hibernate to avoid this * wakeup event. */ gpio_set_value(musb->config->gpio_vrsel, 0); return 0; } static int bfin_musb_resume(struct musb *musb) { bfin_musb_reg_init(musb); return 0; } static int bfin_musb_exit(struct musb *musb) { gpio_free(musb->config->gpio_vrsel); Loading @@ -446,9 +426,6 @@ static const struct musb_platform_ops bfin_ops = { .set_mode = bfin_musb_set_mode, .try_idle = bfin_musb_try_idle, .suspend = bfin_musb_suspend, .resume = bfin_musb_resume, .vbus_status = bfin_musb_vbus_status, .set_vbus = bfin_musb_set_vbus, }; Loading Loading @@ -528,10 +505,49 @@ static int __exit bfin_remove(struct platform_device *pdev) return 0; } #ifdef CONFIG_PM static int bfin_suspend(struct device *dev) { struct bfin_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); if (is_host_active(musb)) /* * During hibernate gpio_vrsel will change from high to low * low which will generate wakeup event resume the system * immediately. Set it to 0 before hibernate to avoid this * wakeup event. */ gpio_set_value(musb->config->gpio_vrsel, 0); return 0; } static int bfin_resume(struct device *dev) { struct bfin_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); bfin_musb_reg_init(musb); return 0; } static struct dev_pm_ops bfin_pm_ops = { .suspend = bfin_suspend, .resume = bfin_resume, }; #define DEV_PM_OPS &bfin_pm_op, #else #define DEV_PM_OPS NULL #endif static struct platform_driver bfin_driver = { .remove = __exit_p(bfin_remove), .driver = { .name = "musb-bfin", .pm = DEV_PM_OPS, }, }; Loading Loading
drivers/usb/musb/blackfin.c +40 −24 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct bfin_glue { struct device *dev; struct platform_device *musb; }; #define glue_to_musb(g) platform_get_drvdata(g->musb) /* * Load an endpoint's FIFO Loading Loading @@ -406,27 +407,6 @@ static int bfin_musb_init(struct musb *musb) return 0; } static int bfin_musb_suspend(struct musb *musb) { if (is_host_active(musb)) /* * During hibernate gpio_vrsel will change from high to low * low which will generate wakeup event resume the system * immediately. Set it to 0 before hibernate to avoid this * wakeup event. */ gpio_set_value(musb->config->gpio_vrsel, 0); return 0; } static int bfin_musb_resume(struct musb *musb) { bfin_musb_reg_init(musb); return 0; } static int bfin_musb_exit(struct musb *musb) { gpio_free(musb->config->gpio_vrsel); Loading @@ -446,9 +426,6 @@ static const struct musb_platform_ops bfin_ops = { .set_mode = bfin_musb_set_mode, .try_idle = bfin_musb_try_idle, .suspend = bfin_musb_suspend, .resume = bfin_musb_resume, .vbus_status = bfin_musb_vbus_status, .set_vbus = bfin_musb_set_vbus, }; Loading Loading @@ -528,10 +505,49 @@ static int __exit bfin_remove(struct platform_device *pdev) return 0; } #ifdef CONFIG_PM static int bfin_suspend(struct device *dev) { struct bfin_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); if (is_host_active(musb)) /* * During hibernate gpio_vrsel will change from high to low * low which will generate wakeup event resume the system * immediately. Set it to 0 before hibernate to avoid this * wakeup event. */ gpio_set_value(musb->config->gpio_vrsel, 0); return 0; } static int bfin_resume(struct device *dev) { struct bfin_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); bfin_musb_reg_init(musb); return 0; } static struct dev_pm_ops bfin_pm_ops = { .suspend = bfin_suspend, .resume = bfin_resume, }; #define DEV_PM_OPS &bfin_pm_op, #else #define DEV_PM_OPS NULL #endif static struct platform_driver bfin_driver = { .remove = __exit_p(bfin_remove), .driver = { .name = "musb-bfin", .pm = DEV_PM_OPS, }, }; Loading