* [PATCH 0/5 v3] usb: musb: Power management support @ 2011-02-28 8:49 Hema HK 2011-02-28 8:49 ` [PATCH 2/5 v3] usb: musb: Remove platform context save/restore API Hema HK ` (3 more replies) 0 siblings, 4 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb-u79uwXL29TY76Z2rM5mHXA Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA, Hema HK This patch series supports the retention and offmode support in the idle path for musb driver using runtime pm APIs. This is restricted to support offmode and retention only when device not connected.When device/cable connected with gadget driver loaded, configured to no idle/standby which will not allow the core transition to retention or off. There is no context save/restore done by hardware for musb in OMAP3 and OMAP4,driver has to take care of saving and restoring the context during offmode. Musb has a requirement of configuring sysconfig register to force idle/standby mode and set the ENABLE_FORCE bit in module STANDBY register for retention and offmode support. Runtime pm and hwmod frameworks will take care of configuring to force idle/standby when pm_runtime_put_sync is called and back to no idle/standby when pm_runeime_get_sync is called. Compile, boot tested and also tested the retention in the idle path on OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled. Usb basic functionality tested on OMAP4430SDP. There is some problem with idle path offmode in mainline, I could not test with offmode. But I have tested this patch with resetting the controller in the idle path when wakeup from retention just to make sure that the context is lost, and restore path is working fine. V3 Vesion: Fixed some minor comments from Felipe. V2 version: ---------- Rebased patches on Felipe's musb-hwmod-pm-runtime branch. Fixed comments from Felipe. Hema HK (5): usb: otg: TWL4030: Update the last_event variable. usb: musb: Remove platform context save/restore APIs usb: musb: Idle path retention and offmode support for OMAP3 usb: musb: OMAP4430: Power down the PHY during board init usb: otg: OMAP4430: Save/restore the context arch/arm/mach-omap2/omap_phy_internal.c | 7 ++++ arch/arm/mach-omap2/usb-musb.c | 4 ++ drivers/usb/musb/musb_core.c | 40 +++++++++++++++++++++++ drivers/usb/musb/musb_core.h | 4 -- drivers/usb/musb/musb_gadget.c | 11 ++++++ drivers/usb/musb/omap2430.c | 54 ++++++++++++++---------------- drivers/usb/otg/twl4030-usb.c | 2 + 7 files changed, 89 insertions(+), 33 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/5 v3] usb: musb: Remove platform context save/restore API 2011-02-28 8:49 [PATCH 0/5 v3] usb: musb: Power management support Hema HK @ 2011-02-28 8:49 ` Hema HK 2011-02-28 8:49 ` [PATCH 3/5 v3] usb: musb: Idle path retention and offmode support for OMAP3 Hema HK ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb; +Cc: linux-omap, Hema HK, Felipe Balbi For OMAP3 and OMAP4 for offmode and retention support, musb sysconfig is configured to force idle and standby with ENABLE_FORCE bit of OTG_FORCESTNDBY set. And on wakeup configure to no ilde/standby with resetting the ENABLE_FORCE bit. There is not need to save and restore of this register anymore so removed omap2430_save_context/omap2430_restore_context functions. and also removed otg_forcestandby member of musb_context_registers structure Signed-off-by: Hema HK <hemahk@ti.com> Cc: Felipe Balbi <balbi@ti.com> --- drivers/usb/musb/musb_core.h | 4 ---- drivers/usb/musb/omap2430.c | 11 ----------- 2 files changed, 0 insertions(+), 15 deletions(-) diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h index 5216729..5cb50f8 100644 --- a/drivers/usb/musb/musb_core.h +++ b/drivers/usb/musb/musb_core.h @@ -358,10 +358,6 @@ struct musb_csr_regs { struct musb_context_registers { -#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ - defined(CONFIG_ARCH_OMAP4) - u32 otg_forcestandby; -#endif u8 power; u16 intrtxe, intrrxe; u8 intrusbe; diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index 64cf243..b6dcc7e 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -488,15 +488,6 @@ static int __exit omap2430_remove(struct platform_device *pdev) } #ifdef CONFIG_PM -static void omap2430_save_context(struct musb *musb) -{ - musb->context.otg_forcestandby = musb_readl(musb->mregs, OTG_FORCESTDBY); -} - -static void omap2430_restore_context(struct musb *musb) -{ - musb_writel(musb->mregs, OTG_FORCESTDBY, musb->context.otg_forcestandby); -} static int omap2430_suspend(struct device *dev) { @@ -505,7 +496,6 @@ static int omap2430_suspend(struct device *dev) omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); - omap2430_save_context(musb); if (!pm_runtime_suspended(dev) && dev->bus && dev->bus->pm && dev->bus->pm->runtime_suspend) @@ -524,7 +514,6 @@ static int omap2430_resume(struct device *dev) dev->bus->pm->runtime_resume(dev); omap2430_low_level_init(musb); - omap2430_restore_context(musb); otg_set_suspend(musb->xceiv, 0); return 0; -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/5 v3] usb: musb: Idle path retention and offmode support for OMAP3 2011-02-28 8:49 [PATCH 0/5 v3] usb: musb: Power management support Hema HK 2011-02-28 8:49 ` [PATCH 2/5 v3] usb: musb: Remove platform context save/restore API Hema HK @ 2011-02-28 8:49 ` Hema HK 2011-02-28 8:49 ` [PATCH 4/5 v3] usb: musb: OMAP4430: Power down the PHY during board init Hema HK [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> 3 siblings, 0 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb; +Cc: linux-omap, Hema HK, Felipe Balbi This patch supports the retention and offmode support in the idle path for musb driver using runtime pm APIs. This is restricted to support offmode and retention only when device not connected.When device/cable connected with gadget driver loaded,configured to no idle/standby which will not allow the core transition to retention or off. There is no context save/restore done by hardware for musb in OMAP3 and OMAP4,driver has to take care of saving and restoring the context during offmode. Musb has a requirement of configuring sysconfig register to force idle/standby mode and set the ENFORCE bit in module STANDBY register for retention and offmode support. Runtime pm and hwmod frameworks will take care of configuring to force idle/standby when pm_runtime_put_sync is called and back to no idle/standby when pm_runeime_get_sync is called. Compile, boot tested and also tested the retention in the idle path on OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled. Usb basic functionality tested on OMAP4430SDP. There is some problem with idle path offmode in mainline, I could not test with offmode. But I have tested this patch with resetting the controller in the idle path when wakeup from retention just to make sure that the context is lost, and restore path is working fine. Removed .suspend/.resume fnction pointers and functions because there is no need of having these functions as all required work is done at runtime in the driver. There is no need to call the runtime pm api with glue driver device as glue layer device is the parent of musb core device, when runtime apis are called for the child, parent device runtime functionality will be invoked. Design overview: pm_runtime_get_sync: When called with musb core device takes care of enabling the clock, calling runtime callback function of omap2430 glue layer, runtime call back of musb driver and configure the musb sysconfig to no idle/standby pm_runtime_put: Takes care of calling runtime callback function of omap2430 glue layer, runtime call back of musb driver, Configure the musb sysconfig to force idle/standby and disable the clock. During musb driver load: Call pm_runtime_get_sync. End of musb driver load: Call pm_runtime_put During gadget driver load: Call pm_runtime_get_sync, End of gadget driver load: Call pm_runtime_put if there is no device or cable is connected. During unload of the gadget driver:Call pm_runtime_get_sync if cable/device is not connected. End of the gadget driver unload : pm_runtime_put During unload of musb driver : Call pm_runtime_get_sync End of unload: Call pm_runtime_put On connect of usb cable/device -> transceiver notification(VBUS and ID-GND): pm_runtime_get_sync only if the gadget driver loaded. On disconnect of the cable/device -> Disconnect Notification: pm_runtime_put if the gadget driver is loaded. Signed-off-by: Hema HK <hemahk@ti.com> Cc: Felipe Balbi <balbi@ti.com> --- drivers/usb/musb/musb_core.c | 40 ++++++++++++++++++++++++++++++++ drivers/usb/musb/musb_gadget.c | 11 +++++++++ drivers/usb/musb/omap2430.c | 49 ++++++++++++++++++++++------------------ 3 files changed, 78 insertions(+), 22 deletions(-) diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index bc29655..36376d2 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -1956,6 +1956,10 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) goto fail0; } + pm_runtime_use_autosuspend(musb->controller); + pm_runtime_set_autosuspend_delay(musb->controller, 200); + pm_runtime_enable(musb->controller); + spin_lock_init(&musb->lock); musb->board_mode = plat->mode; musb->board_set_power = plat->set_power; @@ -2091,6 +2095,8 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) if (status < 0) goto fail3; + pm_runtime_put(musb->controller); + status = musb_init_debugfs(musb); if (status < 0) goto fail4; @@ -2190,9 +2196,11 @@ static int __exit musb_remove(struct platform_device *pdev) * - Peripheral mode: peripheral is deactivated (or never-activated) * - OTG mode: both roles are deactivated (or never-activated) */ + pm_runtime_get_sync(musb->controller); musb_exit_debugfs(musb); musb_shutdown(pdev); + pm_runtime_put(musb->controller); musb_free(musb); iounmap(ctrl_base); device_init_wakeup(&pdev->dev, 0); @@ -2378,9 +2386,41 @@ static int musb_resume_noirq(struct device *dev) return 0; } +static int musb_runtime_suspend(struct device *dev) +{ + struct musb *musb = dev_to_musb(dev); + + musb_save_context(musb); + + return 0; +} + +static int musb_runtime_resume(struct device *dev) +{ + struct musb *musb = dev_to_musb(dev); + static int first = 1; + + /* + * When pm_runtime_get_sync called for the first time in driver + * init, some of the structure is still not initialized which is + * used in restore function. But clock needs to be + * enabled before any register access, so + * pm_runtime_get_sync has to be called. + * Also context restore without save does not make + * any sense + */ + if (!first) + musb_restore_context(musb); + first = 0; + + return 0; +} + static const struct dev_pm_ops musb_dev_pm_ops = { .suspend = musb_suspend, .resume_noirq = musb_resume_noirq, + .runtime_suspend = musb_runtime_suspend, + .runtime_resume = musb_runtime_resume, }; #define MUSB_DEV_PM_OPS (&musb_dev_pm_ops) diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index da8c93b..0a96eda 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c @@ -1820,6 +1820,8 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver, goto err0; } + pm_runtime_get_sync(musb->controller); + DBG(3, "registering driver %s\n", driver->function); if (musb->gadget_driver) { @@ -1884,6 +1886,10 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver, } hcd->self.uses_pio_for_control = 1; + + if (musb->xceiv->last_event == USB_EVENT_NONE) + pm_runtime_put(musb->controller); + } return 0; @@ -1960,6 +1966,9 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) if (!musb->gadget_driver) return -EINVAL; + if (musb->xceiv->last_event == USB_EVENT_NONE) + pm_runtime_get_sync(musb->controller); + /* * REVISIT always use otg_set_peripheral() here too; * this needs to shut down the OTG engine. @@ -2001,6 +2010,8 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) if (!is_otg_enabled(musb)) musb_stop(musb); + pm_runtime_put(musb->controller); + return 0; } EXPORT_SYMBOL(usb_gadget_unregister_driver); diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index b6dcc7e..4726798 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -244,6 +244,7 @@ static int musb_otg_notifications(struct notifier_block *nb, if (is_otg_enabled(musb)) { #ifdef CONFIG_USB_GADGET_MUSB_HDRC if (musb->gadget_driver) { + pm_runtime_get_sync(musb->controller); otg_init(musb->xceiv); if (data->interface_type == @@ -253,6 +254,7 @@ static int musb_otg_notifications(struct notifier_block *nb, } #endif } else { + pm_runtime_get_sync(musb->controller); otg_init(musb->xceiv); if (data->interface_type == MUSB_INTERFACE_UTMI) @@ -263,12 +265,24 @@ static int musb_otg_notifications(struct notifier_block *nb, case USB_EVENT_VBUS: DBG(4, "VBUS Connect\n"); + if (musb->gadget_driver) + pm_runtime_get_sync(musb->controller); + otg_init(musb->xceiv); break; case USB_EVENT_NONE: DBG(4, "VBUS Disconnect\n"); +#ifdef CONFIG_USB_GADGET_MUSB_HDRC + if (is_otg_enabled(musb)) + if (musb->gadget_driver) +#endif + { + pm_runtime_mark_last_busy(musb->controller); + pm_runtime_put_autosuspend(musb->controller); + } + if (data->interface_type == MUSB_INTERFACE_UTMI) { if (musb->xceiv->set_vbus) otg_set_vbus(musb->xceiv, 0); @@ -300,7 +314,11 @@ static int omap2430_musb_init(struct musb *musb) return -ENODEV; } - omap2430_low_level_init(musb); + status = pm_runtime_get_sync(dev); + if (status < 0) { + dev_err(dev, "pm_runtime_get_sync FAILED"); + goto err1; + } l = musb_readl(musb->mregs, OTG_INTERFSEL); @@ -331,6 +349,10 @@ static int omap2430_musb_init(struct musb *musb) setup_timer(&musb_idle_timer, musb_do_idle, (unsigned long) musb); return 0; + +err1: + pm_runtime_disable(dev); + return status; } static void omap2430_musb_enable(struct musb *musb) @@ -407,8 +429,6 @@ static int __init omap2430_probe(struct platform_device *pdev) struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data; struct platform_device *musb; struct omap2430_glue *glue; - int status = 0; - int ret = -ENOMEM; glue = kzalloc(sizeof(*glue), GFP_KERNEL); @@ -454,16 +474,9 @@ static int __init omap2430_probe(struct platform_device *pdev) } pm_runtime_enable(&pdev->dev); - status = pm_runtime_get_sync(&pdev->dev); - if (status < 0) { - dev_err(&pdev->dev, "pm_runtime_get_sync FAILED"); - goto err3; - } return 0; -err3: - pm_runtime_disable(&pdev->dev); err2: platform_device_put(musb); @@ -489,7 +502,7 @@ static int __exit omap2430_remove(struct platform_device *pdev) #ifdef CONFIG_PM -static int omap2430_suspend(struct device *dev) +static int omap2430_runtime_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); @@ -497,22 +510,14 @@ static int omap2430_suspend(struct device *dev) omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); - if (!pm_runtime_suspended(dev) && dev->bus && dev->bus->pm && - dev->bus->pm->runtime_suspend) - dev->bus->pm->runtime_suspend(dev); - return 0; } -static int omap2430_resume(struct device *dev) +static int omap2430_runtime_resume(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); - if (!pm_runtime_suspended(dev) && dev->bus && dev->bus->pm && - dev->bus->pm->runtime_resume) - dev->bus->pm->runtime_resume(dev); - omap2430_low_level_init(musb); otg_set_suspend(musb->xceiv, 0); @@ -520,8 +525,8 @@ static int omap2430_resume(struct device *dev) } static struct dev_pm_ops omap2430_pm_ops = { - .suspend = omap2430_suspend, - .resume = omap2430_resume, + .runtime_suspend = omap2430_runtime_suspend, + .runtime_resume = omap2430_runtime_resume, }; #define DEV_PM_OPS (&omap2430_pm_ops) -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/5 v3] usb: musb: OMAP4430: Power down the PHY during board init 2011-02-28 8:49 [PATCH 0/5 v3] usb: musb: Power management support Hema HK 2011-02-28 8:49 ` [PATCH 2/5 v3] usb: musb: Remove platform context save/restore API Hema HK 2011-02-28 8:49 ` [PATCH 3/5 v3] usb: musb: Idle path retention and offmode support for OMAP3 Hema HK @ 2011-02-28 8:49 ` Hema HK [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> 3 siblings, 0 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb; +Cc: linux-omap, Hema HK, Felipe Balbi, Tony Lindgren, Paul Walmsley Powerdown the internal PHY during board init for OMAP44xx. So that when musb is disabled core transition to retention/off is not blocked. Signed-off-by: Hema HK <hemahk@ti.com> Cc: Felipe Balbi <balbi@ti.com> Cc: Tony Lindgren <tony@atomide.com> Cc: Paul Walmsley <paul@pwsan.com> --- arch/arm/mach-omap2/usb-musb.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index a9d4d14..516711d 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c @@ -161,6 +161,10 @@ void __init usb_musb_init(struct omap_musb_board_data *board_data) dev->dma_mask = &musb_dmamask; dev->coherent_dma_mask = musb_dmamask; put_device(dev); + + if (cpu_is_omap44xx()) + omap4430_phy_init(dev); + } #else -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
[parent not found: <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org>]
* [PATCH 1/5 v3] usb: otg: TWL4030: Update the last_event variable. [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> @ 2011-02-28 8:49 ` Hema HK 2011-02-28 8:49 ` [PATCH 5/5 v3] usb: otg: OMAP4430: Save/restore the context Hema HK ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb-u79uwXL29TY76Z2rM5mHXA Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA, Hema HK, Felipe Balbi Update the last_event variable of otg_transceiver. This will be used in the musb platform glue driver for runtime idling the device. Signed-off-by: Hema HK <hemahk-l0cyMroinI0@public.gmane.org> Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org> --- drivers/usb/otg/twl4030-usb.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c index 2362d83..e01b073 100644 --- a/drivers/usb/otg/twl4030-usb.c +++ b/drivers/usb/otg/twl4030-usb.c @@ -275,6 +275,8 @@ static enum usb_xceiv_events twl4030_usb_linkstat(struct twl4030_usb *twl) dev_dbg(twl->dev, "HW_CONDITIONS 0x%02x/%d; link %d\n", status, status, linkstat); + twl->otg.last_event = linkstat; + /* REVISIT this assumes host and peripheral controllers * are registered, and that both are active... */ -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/5 v3] usb: otg: OMAP4430: Save/restore the context [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> 2011-02-28 8:49 ` [PATCH 1/5 v3] usb: otg: TWL4030: Update the last_event variable Hema HK @ 2011-02-28 8:49 ` Hema HK 2011-02-28 8:56 ` [PATCH 0/5 v3] usb: musb: Power management support Felipe Balbi 2011-03-01 9:37 ` Felipe Balbi 3 siblings, 0 replies; 14+ messages in thread From: Hema HK @ 2011-02-28 8:49 UTC (permalink / raw) To: linux-usb-u79uwXL29TY76Z2rM5mHXA Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA, Hema HK, Felipe Balbi, Tony Lindgren, Paul Walmsley Add the context save/restore for the control module register used for OMAP4430 musb with UTMI embedded PHY interface. Signed-off-by: Hema HK <hemahk-l0cyMroinI0@public.gmane.org> Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org> Cc: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> Cc: Paul Walmsley <paul-DWxLp4Yu+b8AvxtiuMwx3w@public.gmane.org> --- arch/arm/mach-omap2/omap_phy_internal.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index c50441f..e2e605f 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -44,6 +44,7 @@ static struct clk *phyclk, *clk48m, *clk32k; static void __iomem *ctrl_base; +static int usbotghs_control; int omap4430_phy_init(struct device *dev) { @@ -130,6 +131,9 @@ int omap4430_phy_suspend(struct device *dev, int suspend) omap4430_phy_set_clk(dev, 0); /* Power down the phy */ __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); + + /* save the context */ + usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL); } else { /* Enable the internel phy clcoks */ omap4430_phy_set_clk(dev, 1); @@ -138,6 +142,9 @@ int omap4430_phy_suspend(struct device *dev, int suspend) __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF); mdelay(200); } + + /* restore the context */ + __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL); } return 0; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> 2011-02-28 8:49 ` [PATCH 1/5 v3] usb: otg: TWL4030: Update the last_event variable Hema HK 2011-02-28 8:49 ` [PATCH 5/5 v3] usb: otg: OMAP4430: Save/restore the context Hema HK @ 2011-02-28 8:56 ` Felipe Balbi [not found] ` <20110228085611.GL2459-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org> 2011-03-01 9:37 ` Felipe Balbi 3 siblings, 1 reply; 14+ messages in thread From: Felipe Balbi @ 2011-02-28 8:56 UTC (permalink / raw) To: Hema HK Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA, Tony Lindgren, Greg KH Hi, On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > This patch series supports the retention and offmode support in the > idle path for musb driver using runtime pm APIs. > > This is restricted to support offmode and retention only when device not > connected.When device/cable connected with gadget driver loaded, configured > to no idle/standby which will not allow the core transition to retention > or off. > > There is no context save/restore done by hardware for musb in OMAP3 > and OMAP4,driver has to take care of saving and restoring the context > during offmode. > > Musb has a requirement of configuring sysconfig register to force > idle/standby mode and set the ENABLE_FORCE bit in module STANDBY register > for retention and offmode support. > > Runtime pm and hwmod frameworks will take care of configuring to force > idle/standby when pm_runtime_put_sync is called and back to no > idle/standby when pm_runeime_get_sync is called. > > Compile, boot tested and also tested the retention in the idle path on > OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled. > Usb basic functionality tested on OMAP4430SDP. > > There is some problem with idle path offmode in mainline, I could not test > with offmode. But I have tested this patch with resetting the controller > in the idle path when wakeup from retention just to make sure that the > context is lost, and restore path is working fine. Tony and Greg, how do we handle this one ? Who should take my pull request for this series ? I hope we still have a little time to get this into 2.6.39, but if we don't I can hold on to them until 2.6.40. -- balbi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 14+ messages in thread
[parent not found: <20110228085611.GL2459-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org>]
* Re: [PATCH 0/5 v3] usb: musb: Power management support [not found] ` <20110228085611.GL2459-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org> @ 2011-02-28 14:20 ` Greg KH 2011-02-28 21:22 ` Tony Lindgren 0 siblings, 1 reply; 14+ messages in thread From: Greg KH @ 2011-02-28 14:20 UTC (permalink / raw) To: Felipe Balbi Cc: Hema HK, linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA, Tony Lindgren On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > Hi, > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > This patch series supports the retention and offmode support in the > > idle path for musb driver using runtime pm APIs. > > > > This is restricted to support offmode and retention only when device not > > connected.When device/cable connected with gadget driver loaded, configured > > to no idle/standby which will not allow the core transition to retention > > or off. > > > > There is no context save/restore done by hardware for musb in OMAP3 > > and OMAP4,driver has to take care of saving and restoring the context > > during offmode. > > > > Musb has a requirement of configuring sysconfig register to force > > idle/standby mode and set the ENABLE_FORCE bit in module STANDBY register > > for retention and offmode support. > > > > Runtime pm and hwmod frameworks will take care of configuring to force > > idle/standby when pm_runtime_put_sync is called and back to no > > idle/standby when pm_runeime_get_sync is called. > > > > Compile, boot tested and also tested the retention in the idle path on > > OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled. > > Usb basic functionality tested on OMAP4430SDP. > > > > There is some problem with idle path offmode in mainline, I could not test > > with offmode. But I have tested this patch with resetting the controller > > in the idle path when wakeup from retention just to make sure that the > > context is lost, and restore path is working fine. > > Tony and Greg, how do we handle this one ? Who should take my pull request > for this series ? I hope we still have a little time to get this into > 2.6.39, but if we don't I can hold on to them until 2.6.40. Doesn't bother me which tree they go through, I can take them, or, if it's easier due to omap merges, Tony can. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support 2011-02-28 14:20 ` Greg KH @ 2011-02-28 21:22 ` Tony Lindgren 2011-02-28 21:36 ` Greg KH [not found] ` <20110228212227.GK20560-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 0 siblings, 2 replies; 14+ messages in thread From: Tony Lindgren @ 2011-02-28 21:22 UTC (permalink / raw) To: Greg KH; +Cc: Felipe Balbi, Hema HK, linux-usb, linux-omap * Greg KH <greg@kroah.com> [110228 06:21]: > On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > > > > > There is some problem with idle path offmode in mainline, I could not test > > > with offmode. But I have tested this patch with resetting the controller > > > in the idle path when wakeup from retention just to make sure that the > > > context is lost, and restore path is working fine. > > > > Tony and Greg, how do we handle this one ? Who should take my pull request > > for this series ? I hope we still have a little time to get this into > > 2.6.39, but if we don't I can hold on to them until 2.6.40. > > Doesn't bother me which tree they go through, I can take them, or, if > it's easier due to omap merges, Tony can. I prefer Greg's queue unless there's some dependency issue to the patches we have in omap-for-linus. Tony ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support 2011-02-28 21:22 ` Tony Lindgren @ 2011-02-28 21:36 ` Greg KH 2011-03-01 9:21 ` Felipe Balbi [not found] ` <20110228212227.GK20560-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 1 sibling, 1 reply; 14+ messages in thread From: Greg KH @ 2011-02-28 21:36 UTC (permalink / raw) To: Tony Lindgren; +Cc: Felipe Balbi, Hema HK, linux-usb, linux-omap On Mon, Feb 28, 2011 at 01:22:28PM -0800, Tony Lindgren wrote: > * Greg KH <greg@kroah.com> [110228 06:21]: > > On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > > > > > > > There is some problem with idle path offmode in mainline, I could not test > > > > with offmode. But I have tested this patch with resetting the controller > > > > in the idle path when wakeup from retention just to make sure that the > > > > context is lost, and restore path is working fine. > > > > > > Tony and Greg, how do we handle this one ? Who should take my pull request > > > for this series ? I hope we still have a little time to get this into > > > 2.6.39, but if we don't I can hold on to them until 2.6.40. > > > > Doesn't bother me which tree they go through, I can take them, or, if > > it's easier due to omap merges, Tony can. > > I prefer Greg's queue unless there's some dependency issue to the > patches we have in omap-for-linus. If not, Felipe, send them on to me :) thanks, greg k-h ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support 2011-02-28 21:36 ` Greg KH @ 2011-03-01 9:21 ` Felipe Balbi 0 siblings, 0 replies; 14+ messages in thread From: Felipe Balbi @ 2011-03-01 9:21 UTC (permalink / raw) To: Greg KH; +Cc: Tony Lindgren, Felipe Balbi, Hema HK, linux-usb, linux-omap On Mon, Feb 28, 2011 at 01:36:40PM -0800, Greg KH wrote: > On Mon, Feb 28, 2011 at 01:22:28PM -0800, Tony Lindgren wrote: > > * Greg KH <greg@kroah.com> [110228 06:21]: > > > On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > > > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > > > > > > > > > There is some problem with idle path offmode in mainline, I could not test > > > > > with offmode. But I have tested this patch with resetting the controller > > > > > in the idle path when wakeup from retention just to make sure that the > > > > > context is lost, and restore path is working fine. > > > > > > > > Tony and Greg, how do we handle this one ? Who should take my pull request > > > > for this series ? I hope we still have a little time to get this into > > > > 2.6.39, but if we don't I can hold on to them until 2.6.40. > > > > > > Doesn't bother me which tree they go through, I can take them, or, if > > > it's easier due to omap merges, Tony can. > > > > I prefer Greg's queue unless there's some dependency issue to the > > patches we have in omap-for-linus. > > If not, Felipe, send them on to me :) I'll prepare it today and clear any dependencies if there are any :-) -- balbi ^ permalink raw reply [flat|nested] 14+ messages in thread
[parent not found: <20110228212227.GK20560-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH 0/5 v3] usb: musb: Power management support [not found] ` <20110228212227.GK20560-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> @ 2011-03-01 9:26 ` Felipe Balbi 2011-03-01 9:32 ` Felipe Balbi 0 siblings, 1 reply; 14+ messages in thread From: Felipe Balbi @ 2011-03-01 9:26 UTC (permalink / raw) To: Tony Lindgren Cc: Greg KH, Felipe Balbi, Hema HK, linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA On Mon, Feb 28, 2011 at 01:22:28PM -0800, Tony Lindgren wrote: > * Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org> [110228 06:21]: > > On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > > > > > > > There is some problem with idle path offmode in mainline, I could not test > > > > with offmode. But I have tested this patch with resetting the controller > > > > in the idle path when wakeup from retention just to make sure that the > > > > context is lost, and restore path is working fine. > > > > > > Tony and Greg, how do we handle this one ? Who should take my pull request > > > for this series ? I hope we still have a little time to get this into > > > 2.6.39, but if we don't I can hold on to them until 2.6.40. > > > > Doesn't bother me which tree they go through, I can take them, or, if > > it's easier due to omap merges, Tony can. > > I prefer Greg's queue unless there's some dependency issue to the > patches we have in omap-for-linus. Turns out I can easily split what's supposed to go for you and what's supposed to go for Greg, so I'll do it. Tony which commit can I use for your tree ? Is mainline 2.6.38-rc6 ok ? -- balbi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support 2011-03-01 9:26 ` Felipe Balbi @ 2011-03-01 9:32 ` Felipe Balbi 0 siblings, 0 replies; 14+ messages in thread From: Felipe Balbi @ 2011-03-01 9:32 UTC (permalink / raw) To: Felipe Balbi; +Cc: Tony Lindgren, Greg KH, Hema HK, linux-usb, linux-omap On Tue, Mar 01, 2011 at 11:26:56AM +0200, Felipe Balbi wrote: > On Mon, Feb 28, 2011 at 01:22:28PM -0800, Tony Lindgren wrote: > > * Greg KH <greg@kroah.com> [110228 06:21]: > > > On Mon, Feb 28, 2011 at 10:56:11AM +0200, Felipe Balbi wrote: > > > > On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > > > > > > > > > > There is some problem with idle path offmode in mainline, I could not test > > > > > with offmode. But I have tested this patch with resetting the controller > > > > > in the idle path when wakeup from retention just to make sure that the > > > > > context is lost, and restore path is working fine. > > > > > > > > Tony and Greg, how do we handle this one ? Who should take my pull request > > > > for this series ? I hope we still have a little time to get this into > > > > 2.6.39, but if we don't I can hold on to them until 2.6.40. > > > > > > Doesn't bother me which tree they go through, I can take them, or, if > > > it's easier due to omap merges, Tony can. > > > > I prefer Greg's queue unless there's some dependency issue to the > > patches we have in omap-for-linus. > > Turns out I can easily split what's supposed to go for you and what's > supposed to go for Greg, so I'll do it. Tony which commit can I use for > your tree ? Is mainline 2.6.38-rc6 ok ? Forget it, there's a dependency on a patch which is in Greg's queue, so I'll send them all through Greg. -- balbi ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5 v3] usb: musb: Power management support [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> ` (2 preceding siblings ...) 2011-02-28 8:56 ` [PATCH 0/5 v3] usb: musb: Power management support Felipe Balbi @ 2011-03-01 9:37 ` Felipe Balbi 3 siblings, 0 replies; 14+ messages in thread From: Felipe Balbi @ 2011-03-01 9:37 UTC (permalink / raw) To: Hema HK Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA On Mon, Feb 28, 2011 at 02:19:31PM +0530, Hema HK wrote: > This patch series supports the retention and offmode support in the > idle path for musb driver using runtime pm APIs. > > This is restricted to support offmode and retention only when device not > connected.When device/cable connected with gadget driver loaded, configured > to no idle/standby which will not allow the core transition to retention > or off. > > There is no context save/restore done by hardware for musb in OMAP3 > and OMAP4,driver has to take care of saving and restoring the context > during offmode. > > Musb has a requirement of configuring sysconfig register to force > idle/standby mode and set the ENABLE_FORCE bit in module STANDBY register > for retention and offmode support. > > Runtime pm and hwmod frameworks will take care of configuring to force > idle/standby when pm_runtime_put_sync is called and back to no > idle/standby when pm_runeime_get_sync is called. > > Compile, boot tested and also tested the retention in the idle path on > OMAP3630Zoom3. And tested the global suspend/resume with offmode enabled. > Usb basic functionality tested on OMAP4430SDP. > > There is some problem with idle path offmode in mainline, I could not test > with offmode. But I have tested this patch with resetting the controller > in the idle path when wakeup from retention just to make sure that the > context is lost, and restore path is working fine. applied, thanks -- balbi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2011-03-01 9:37 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-02-28 8:49 [PATCH 0/5 v3] usb: musb: Power management support Hema HK 2011-02-28 8:49 ` [PATCH 2/5 v3] usb: musb: Remove platform context save/restore API Hema HK 2011-02-28 8:49 ` [PATCH 3/5 v3] usb: musb: Idle path retention and offmode support for OMAP3 Hema HK 2011-02-28 8:49 ` [PATCH 4/5 v3] usb: musb: OMAP4430: Power down the PHY during board init Hema HK [not found] ` <1298882976-4997-1-git-send-email-hemahk-l0cyMroinI0@public.gmane.org> 2011-02-28 8:49 ` [PATCH 1/5 v3] usb: otg: TWL4030: Update the last_event variable Hema HK 2011-02-28 8:49 ` [PATCH 5/5 v3] usb: otg: OMAP4430: Save/restore the context Hema HK 2011-02-28 8:56 ` [PATCH 0/5 v3] usb: musb: Power management support Felipe Balbi [not found] ` <20110228085611.GL2459-UiBtZHVXSwEVvW8u9ZQWYwjfymiNCTlR@public.gmane.org> 2011-02-28 14:20 ` Greg KH 2011-02-28 21:22 ` Tony Lindgren 2011-02-28 21:36 ` Greg KH 2011-03-01 9:21 ` Felipe Balbi [not found] ` <20110228212227.GK20560-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 2011-03-01 9:26 ` Felipe Balbi 2011-03-01 9:32 ` Felipe Balbi 2011-03-01 9:37 ` Felipe Balbi
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.