[PATCH] USB: au1200: EHCI and OHCI fixes
I received an DBAU1200 eval kit from AMD a few days ago and tried to enable the USB2 port, but the current linux-2.6 GIT did not even compile with CONFIG_SOC_1200, CONFIG_SOC_AU1X00, CONFIG_USB_EHCI and CONFIG_USB_OHCI set. Furthermore, in ehci-hcd.c, platform_driver_register() was called with an improper argument of type 'struct device_driver *' which of course ended up in a kernel oops. How could that ever have worked on your machines? Anyway, here's a trivial patch that makes the USB subsystem working on my board for both OHCI and EHCI. It also removes the /* FIXME use "struct platform_driver" */. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Acked-by: David Brownell <david-b@pacbell.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
18577a6184
commit
d14feb5ee4
@@ -41,8 +41,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#define USBH_DISABLE (USB_MCFG_EBMEN | USB_MCFG_EMEMEN)
|
#define USBH_DISABLE (USB_MCFG_EBMEN | USB_MCFG_EMEMEN)
|
||||||
|
|
||||||
#endif /* Au1200 */
|
|
||||||
|
|
||||||
extern int usb_disabled(void);
|
extern int usb_disabled(void);
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
@@ -107,9 +105,9 @@ int usb_ehci_au1xxx_probe(const struct hc_driver *driver,
|
|||||||
|
|
||||||
/* Au1200 AB USB does not support coherent memory */
|
/* Au1200 AB USB does not support coherent memory */
|
||||||
if (!(read_c0_prid() & 0xff)) {
|
if (!(read_c0_prid() & 0xff)) {
|
||||||
pr_info("%s: this is chip revision AB!\n", dev->dev.name);
|
pr_info("%s: this is chip revision AB!\n", dev->name);
|
||||||
pr_info("%s: update your board or re-configure the kernel\n",
|
pr_info("%s: update your board or re-configure the kernel\n",
|
||||||
dev->dev.name);
|
dev->name);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -228,9 +226,8 @@ static const struct hc_driver ehci_au1xxx_hc_driver = {
|
|||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static int ehci_hcd_au1xxx_drv_probe(struct device *dev)
|
static int ehci_hcd_au1xxx_drv_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
|
||||||
struct usb_hcd *hcd = NULL;
|
struct usb_hcd *hcd = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -243,10 +240,9 @@ static int ehci_hcd_au1xxx_drv_probe(struct device *dev)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ehci_hcd_au1xxx_drv_remove(struct device *dev)
|
static int ehci_hcd_au1xxx_drv_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
struct usb_hcd *hcd = platform_get_drvdata(pdev);
|
||||||
struct usb_hcd *hcd = dev_get_drvdata(dev);
|
|
||||||
|
|
||||||
usb_ehci_au1xxx_remove(hcd, pdev);
|
usb_ehci_au1xxx_remove(hcd, pdev);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -269,12 +265,13 @@ static int ehci_hcd_au1xxx_drv_resume(struct device *dev)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
MODULE_ALIAS("au1xxx-ehci");
|
MODULE_ALIAS("au1xxx-ehci");
|
||||||
/* FIXME use "struct platform_driver" */
|
static struct platform_driver ehci_hcd_au1xxx_driver = {
|
||||||
static struct device_driver ehci_hcd_au1xxx_driver = {
|
|
||||||
.name = "au1xxx-ehci",
|
|
||||||
.bus = &platform_bus_type,
|
|
||||||
.probe = ehci_hcd_au1xxx_drv_probe,
|
.probe = ehci_hcd_au1xxx_drv_probe,
|
||||||
.remove = ehci_hcd_au1xxx_drv_remove,
|
.remove = ehci_hcd_au1xxx_drv_remove,
|
||||||
/*.suspend = ehci_hcd_au1xxx_drv_suspend, */
|
/*.suspend = ehci_hcd_au1xxx_drv_suspend, */
|
||||||
/*.resume = ehci_hcd_au1xxx_drv_resume, */
|
/*.resume = ehci_hcd_au1xxx_drv_resume, */
|
||||||
|
.driver = {
|
||||||
|
.name = "au1xxx-ehci",
|
||||||
|
.bus = &platform_bus_type
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
@@ -110,6 +110,7 @@ static void au1xxx_start_ohc(struct platform_device *dev)
|
|||||||
|
|
||||||
printk(KERN_DEBUG __FILE__
|
printk(KERN_DEBUG __FILE__
|
||||||
": Clock to USB host has been enabled \n");
|
": Clock to USB host has been enabled \n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void au1xxx_stop_ohc(struct platform_device *dev)
|
static void au1xxx_stop_ohc(struct platform_device *dev)
|
||||||
|
Reference in New Issue
Block a user