Trivial suspend and resume OF OHCI.
On MPC52xx turn off and on power to ports.


Signed-off-by: Domen Puncer <[EMAIL PROTECTED]>

---
 drivers/usb/host/ohci-ppc-of.c |   30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

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);
+       if (machine_is_compatible("generic-mpc5200")) {
+               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);
+       }
+       return 0;
+}
+static int ohci_hcd_ppc_soc_drv_resume(struct of_device *op)
+{
+       struct usb_hcd *hcd = dev_get_drvdata(&op->dev);
+       if (machine_is_compatible("generic-mpc5200")) {
+               struct ohci_hcd *ohci = hcd_to_ohci(hcd);
+
+               out_be32(&ohci->regs->roothub.a, descr_a);
+       }
+       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",
_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Reply via email to