Commit 68ba61b8 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

[PATCH] USB: at91 usb driver supend/resume fixes

AT91: the two USB drivers (OHCI, UDC) got out of sync with various
usbcore and driver model PM updates; fix.

Also minor fixes to ohci:  whitespace/style, MODULE_ALIAS so coldplug works
using /sys/.../modalias, and turn off _both_ clocks during suspend.
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 35fcca44
...@@ -1709,7 +1709,7 @@ static int __devexit at91udc_remove(struct platform_device *dev) ...@@ -1709,7 +1709,7 @@ static int __devexit at91udc_remove(struct platform_device *dev)
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static int at91udc_suspend(struct platform_device *dev, u32 state, u32 level) static int at91udc_suspend(struct platform_device *dev, pm_message_t mesg)
{ {
struct at91_udc *udc = platform_get_drvdata(dev); struct at91_udc *udc = platform_get_drvdata(dev);
...@@ -1731,7 +1731,7 @@ static int at91udc_suspend(struct platform_device *dev, u32 state, u32 level) ...@@ -1731,7 +1731,7 @@ static int at91udc_suspend(struct platform_device *dev, u32 state, u32 level)
return 0; return 0;
} }
static int at91udc_resume(struct platform_device *dev, u32 level) static int at91udc_resume(struct platform_device *dev)
{ {
struct at91_udc *udc = platform_get_drvdata(dev); struct at91_udc *udc = platform_get_drvdata(dev);
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <asm/arch/board.h> #include <asm/arch/board.h>
#ifndef CONFIG_ARCH_AT91RM9200 #ifndef CONFIG_ARCH_AT91RM9200
#error "This file is AT91RM9200 bus glue. CONFIG_ARCH_AT91RM9200 must be defined." #error "CONFIG_ARCH_AT91RM9200 must be defined."
#endif #endif
/* interface and function clocks */ /* interface and function clocks */
...@@ -84,8 +84,6 @@ static int usb_hcd_at91_remove (struct usb_hcd *, struct platform_device *); ...@@ -84,8 +84,6 @@ static int usb_hcd_at91_remove (struct usb_hcd *, struct platform_device *);
* Allocates basic resources for this USB host controller, and * Allocates basic resources for this USB host controller, and
* then invokes the start() method for the HCD associated with it * then invokes the start() method for the HCD associated with it
* through the hotplug entry's driver_data. * through the hotplug entry's driver_data.
*
* Store this function in the HCD's struct pci_driver as probe().
*/ */
int usb_hcd_at91_probe (const struct hc_driver *driver, struct platform_device *pdev) int usb_hcd_at91_probe (const struct hc_driver *driver, struct platform_device *pdev)
{ {
...@@ -148,7 +146,6 @@ int usb_hcd_at91_probe (const struct hc_driver *driver, struct platform_device * ...@@ -148,7 +146,6 @@ int usb_hcd_at91_probe (const struct hc_driver *driver, struct platform_device *
} }
/* may be called without controller electrically present */
/* may be called with controller, bus, and devices active */ /* may be called with controller, bus, and devices active */
/** /**
...@@ -235,8 +232,8 @@ static const struct hc_driver ohci_at91_hc_driver = { ...@@ -235,8 +232,8 @@ static const struct hc_driver ohci_at91_hc_driver = {
.hub_control = ohci_hub_control, .hub_control = ohci_hub_control,
#ifdef CONFIG_PM #ifdef CONFIG_PM
.hub_suspend = ohci_hub_suspend, .bus_suspend = ohci_bus_suspend,
.hub_resume = ohci_hub_resume, .bus_resume = ohci_bus_resume,
#endif #endif
.start_port_reset = ohci_start_port_reset, .start_port_reset = ohci_start_port_reset,
}; };
...@@ -254,21 +251,21 @@ static int ohci_hcd_at91_drv_remove(struct platform_device *dev) ...@@ -254,21 +251,21 @@ static int ohci_hcd_at91_drv_remove(struct platform_device *dev)
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static int ohci_hcd_at91_drv_suspend(struct platform_device *dev, u32 state, u32 level)
{
printk("%s(%s:%d): not implemented yet\n",
__func__, __FILE__, __LINE__);
/* REVISIT suspend/resume look "too" simple here */
static int
ohci_hcd_at91_drv_suspend(struct platform_device *dev, pm_message_t mesg)
{
clk_disable(fclk); clk_disable(fclk);
clk_disable(iclk);
return 0; return 0;
} }
static int ohci_hcd_at91_drv_resume(struct platform_device *dev, u32 state) static int ohci_hcd_at91_drv_resume(struct platform_device *dev)
{ {
printk("%s(%s:%d): not implemented yet\n", clk_enable(iclk);
__func__, __FILE__, __LINE__);
clk_enable(fclk); clk_enable(fclk);
return 0; return 0;
...@@ -278,6 +275,8 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *dev, u32 state) ...@@ -278,6 +275,8 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *dev, u32 state)
#define ohci_hcd_at91_drv_resume NULL #define ohci_hcd_at91_drv_resume NULL
#endif #endif
MODULE_ALIAS("at91rm9200-ohci");
static struct platform_driver ohci_hcd_at91_driver = { static struct platform_driver ohci_hcd_at91_driver = {
.probe = ohci_hcd_at91_drv_probe, .probe = ohci_hcd_at91_drv_probe,
.remove = ohci_hcd_at91_drv_remove, .remove = ohci_hcd_at91_drv_remove,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment