[PATCH 3/5] mpc52xx suspend: USB
Domen Puncer
domen.puncer at telargo.com
Thu Mar 15 21:42:28 EST 2007
Trivial suspend and resume OF OHCI.
On MPC52xx turn off and on power to ports.
Signed-off-by: Domen Puncer <domen.puncer at telargo.com>
Index: grant.git/drivers/usb/host/ohci-ppc-of.c
===================================================================
--- grant.git.orig/drivers/usb/host/ohci-ppc-of.c
+++ grant.git/drivers/usb/host/ohci-ppc-of.c
@@ -214,6 +214,32 @@ MODULE_DEVICE_TABLE(of, ohci_hcd_ppc_of_
#endif
+#ifdef CONFIG_PM
+static u32 descr_a;
+static int ohci_hcd_ppc_soc_drv_suspend(struct of_device *op,
+ pm_message_t state)
+{
+ struct usb_hcd *hcd = dev_get_drvdata(&op->dev);
+#ifdef CONFIG_PPC_MPC52xx
+ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
+
+ descr_a = in_be32(&ohci->regs->roothub.a);
+ out_be32(&ohci->regs->roothub.a, (descr_a & ~0x200) | 0x100);
+#endif
+ return 0;
+}
+static int ohci_hcd_ppc_soc_drv_resume(struct of_device *op)
+{
+ struct usb_hcd *hcd = dev_get_drvdata(&op->dev);
+#ifdef CONFIG_PPC_MPC52xx
+ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
+
+ out_be32(&ohci->regs->roothub.a, descr_a);
+#endif
+ return 0;
+}
+#endif
+
static struct of_platform_driver ohci_hcd_ppc_of_driver = {
.name = "ppc-of-ohci",
.match_table = ohci_hcd_ppc_of_match,
@@ -221,8 +247,8 @@ static struct of_platform_driver ohci_hc
.remove = ohci_hcd_ppc_of_remove,
.shutdown = ohci_hcd_ppc_of_shutdown,
#ifdef CONFIG_PM
- /*.suspend = ohci_hcd_ppc_soc_drv_suspend,*/
- /*.resume = ohci_hcd_ppc_soc_drv_resume,*/
+ .suspend = ohci_hcd_ppc_soc_drv_suspend,
+ .resume = ohci_hcd_ppc_soc_drv_resume,
#endif
.driver = {
.name = "ppc-of-ohci",
More information about the Linuxppc-embedded
mailing list