mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	USB: gadget driver for LPC32xx
This patch adds a USB gadget driver for the LPC32xx ARM SoC. Signed-off-by: Roland Stigge <stigge@antcom.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									8b7c3b6810
								
							
						
					
					
						commit
						24a28e4283
					
				
							
								
								
									
										28
									
								
								Documentation/devicetree/bindings/usb/lpc32xx-udc.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Documentation/devicetree/bindings/usb/lpc32xx-udc.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | * NXP LPC32xx SoC USB Device Controller (UDC) | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | - compatible: Must be "nxp,lpc3220-udc" | ||||||
|  | - reg: Physical base address of the controller and length of memory mapped | ||||||
|  |   region. | ||||||
|  | - interrupts: The USB interrupts: | ||||||
|  |               * USB Device Low Priority Interrupt | ||||||
|  |               * USB Device High Priority Interrupt | ||||||
|  |               * USB Device DMA Interrupt | ||||||
|  |               * External USB Transceiver Interrupt (OTG ATX) | ||||||
|  | - transceiver: phandle of the associated ISP1301 device - this is necessary for | ||||||
|  |                the UDC controller for connecting to the USB physical layer | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	isp1301: usb-transceiver@2c { | ||||||
|  | 		compatible = "nxp,isp1301"; | ||||||
|  | 		reg = <0x2c>; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	usbd@31020000 { | ||||||
|  | 		compatible = "nxp,lpc3220-udc"; | ||||||
|  | 		reg = <0x31020000 0x300>; | ||||||
|  | 		interrupt-parent = <&mic>; | ||||||
|  | 		interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>; | ||||||
|  | 		transceiver = <&isp1301>; | ||||||
|  | 	}; | ||||||
| @ -147,6 +147,17 @@ config USB_AT91 | |||||||
| 	   dynamically linked module called "at91_udc" and force all | 	   dynamically linked module called "at91_udc" and force all | ||||||
| 	   gadget drivers to also be dynamically linked. | 	   gadget drivers to also be dynamically linked. | ||||||
| 
 | 
 | ||||||
|  | config USB_LPC32XX | ||||||
|  | 	tristate "LPC32XX USB Peripheral Controller" | ||||||
|  | 	depends on ARCH_LPC32XX | ||||||
|  | 	select USB_ISP1301 | ||||||
|  | 	help | ||||||
|  | 	   This option selects the USB device controller in the LPC32xx SoC. | ||||||
|  | 
 | ||||||
|  | 	   Say "y" to link the driver statically, or "m" to build a | ||||||
|  | 	   dynamically linked module called "lpc32xx_udc" and force all | ||||||
|  | 	   gadget drivers to also be dynamically linked. | ||||||
|  | 
 | ||||||
| config USB_ATMEL_USBA | config USB_ATMEL_USBA | ||||||
| 	tristate "Atmel USBA" | 	tristate "Atmel USBA" | ||||||
| 	select USB_GADGET_DUALSPEED | 	select USB_GADGET_DUALSPEED | ||||||
|  | |||||||
| @ -26,6 +26,7 @@ obj-$(CONFIG_USB_CI13XXX_PCI)	+= ci13xxx_pci.o | |||||||
| obj-$(CONFIG_USB_S3C_HSOTG)	+= s3c-hsotg.o | obj-$(CONFIG_USB_S3C_HSOTG)	+= s3c-hsotg.o | ||||||
| obj-$(CONFIG_USB_S3C_HSUDC)	+= s3c-hsudc.o | obj-$(CONFIG_USB_S3C_HSUDC)	+= s3c-hsudc.o | ||||||
| obj-$(CONFIG_USB_LANGWELL)	+= langwell_udc.o | obj-$(CONFIG_USB_LANGWELL)	+= langwell_udc.o | ||||||
|  | obj-$(CONFIG_USB_LPC32XX)	+= lpc32xx_udc.o | ||||||
| obj-$(CONFIG_USB_EG20T)		+= pch_udc.o | obj-$(CONFIG_USB_EG20T)		+= pch_udc.o | ||||||
| obj-$(CONFIG_USB_MV_UDC)	+= mv_udc.o | obj-$(CONFIG_USB_MV_UDC)	+= mv_udc.o | ||||||
| mv_udc-y			:= mv_udc_core.o | mv_udc-y			:= mv_udc_core.o | ||||||
|  | |||||||
| @ -37,6 +37,7 @@ | |||||||
| #define gadget_is_goku(g)		(!strcmp("goku_udc", (g)->name)) | #define gadget_is_goku(g)		(!strcmp("goku_udc", (g)->name)) | ||||||
| #define gadget_is_imx(g)		(!strcmp("imx_udc", (g)->name)) | #define gadget_is_imx(g)		(!strcmp("imx_udc", (g)->name)) | ||||||
| #define gadget_is_langwell(g)		(!strcmp("langwell_udc", (g)->name)) | #define gadget_is_langwell(g)		(!strcmp("langwell_udc", (g)->name)) | ||||||
|  | #define gadget_is_lpc32xx(g)		(!strcmp("lpc32xx_udc", (g)->name)) | ||||||
| #define gadget_is_m66592(g)		(!strcmp("m66592_udc", (g)->name)) | #define gadget_is_m66592(g)		(!strcmp("m66592_udc", (g)->name)) | ||||||
| #define gadget_is_musbhdrc(g)		(!strcmp("musb-hdrc", (g)->name)) | #define gadget_is_musbhdrc(g)		(!strcmp("musb-hdrc", (g)->name)) | ||||||
| #define gadget_is_net2272(g)		(!strcmp("net2272", (g)->name)) | #define gadget_is_net2272(g)		(!strcmp("net2272", (g)->name)) | ||||||
| @ -118,6 +119,8 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) | |||||||
| 		return 0x31; | 		return 0x31; | ||||||
| 	else if (gadget_is_dwc3(gadget)) | 	else if (gadget_is_dwc3(gadget)) | ||||||
| 		return 0x32; | 		return 0x32; | ||||||
|  | 	else if (gadget_is_lpc32xx(gadget)) | ||||||
|  | 		return 0x33; | ||||||
| 
 | 
 | ||||||
| 	return -ENOENT; | 	return -ENOENT; | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										3538
									
								
								drivers/usb/gadget/lpc32xx_udc.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3538
									
								
								drivers/usb/gadget/lpc32xx_udc.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Roland Stigge
						Roland Stigge