Commit 55d402d8 authored by Thomas Dahlmann's avatar Thomas Dahlmann Committed by Greg Kroah-Hartman

USB: amd5536 UDC driver (in GEODE southbridge)

Driver for the AMD5536 UDC, as found in the AMD Geode CS5536 (southbridge).
This is a high speed DMA-capable controller, which can also be used in
OTG configurations (which are not supported by this patch).
Acked-by: default avatarJordan Crouse <jordan.crouse@amd.com>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent beafef07
...@@ -82,6 +82,27 @@ choice ...@@ -82,6 +82,27 @@ choice
Many controller drivers are platform-specific; these Many controller drivers are platform-specific; these
often need board-specific hooks. often need board-specific hooks.
config USB_GADGET_AMD5536UDC
boolean "AMD5536 UDC"
depends on PCI
select USB_GADGET_DUALSPEED
help
The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
It is a USB Highspeed DMA capable USB device controller. Beside ep0
it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
The UDC port supports OTG operation, and may be used as a host port
if it's not being used to implement peripheral or OTG roles.
Say "y" to link the driver statically, or "m" to build a
dynamically linked module called "amd5536udc" and force all
gadget drivers to also be dynamically linked.
config USB_AMD5536UDC
tristate
depends on USB_GADGET_AMD5536UDC
default USB_GADGET
select USB_GADGET_SELECTED
config USB_GADGET_FSL_USB2 config USB_GADGET_FSL_USB2
boolean "Freescale Highspeed USB DR Peripheral Controller" boolean "Freescale Highspeed USB DR Peripheral Controller"
depends on MPC834x || PPC_MPC831x depends on MPC834x || PPC_MPC831x
......
...@@ -7,6 +7,7 @@ endif ...@@ -7,6 +7,7 @@ endif
obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
obj-$(CONFIG_USB_NET2280) += net2280.o obj-$(CONFIG_USB_NET2280) += net2280.o
obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o
obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
obj-$(CONFIG_USB_GOKU) += goku_udc.o obj-$(CONFIG_USB_GOKU) += goku_udc.o
obj-$(CONFIG_USB_OMAP) += omap_udc.o obj-$(CONFIG_USB_OMAP) += omap_udc.o
......
This diff is collapsed.
This diff is collapsed.
...@@ -305,6 +305,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address"); ...@@ -305,6 +305,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethernet Address");
#define DEV_CONFIG_CDC #define DEV_CONFIG_CDC
#endif #endif
#ifdef CONFIG_USB_GADGET_AMD5536UDC
#define DEV_CONFIG_CDC
#endif
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
......
...@@ -17,6 +17,12 @@ ...@@ -17,6 +17,12 @@
#define gadget_is_net2280(g) 0 #define gadget_is_net2280(g) 0
#endif #endif
#ifdef CONFIG_USB_GADGET_AMD5536UDC
#define gadget_is_amd5536udc(g) !strcmp("amd5536udc", (g)->name)
#else
#define gadget_is_amd5536udc(g) 0
#endif
#ifdef CONFIG_USB_GADGET_DUMMY_HCD #ifdef CONFIG_USB_GADGET_DUMMY_HCD
#define gadget_is_dummy(g) !strcmp("dummy_udc", (g)->name) #define gadget_is_dummy(g) !strcmp("dummy_udc", (g)->name)
#else #else
...@@ -202,6 +208,8 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) ...@@ -202,6 +208,8 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
return 0x18; return 0x18;
else if (gadget_is_fsl_usb2(gadget)) else if (gadget_is_fsl_usb2(gadget))
return 0x19; return 0x19;
else if (gadget_is_amd5536udc(gadget))
return 0x20;
else if (gadget_is_m66592(gadget)) else if (gadget_is_m66592(gadget))
return 0x20; return 0x20;
return -ENOENT; return -ENOENT;
......
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