Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24a28e42 authored by Roland Stigge's avatar Roland Stigge Committed by Greg Kroah-Hartman
Browse files

USB: gadget driver for LPC32xx



This patch adds a USB gadget driver for the LPC32xx ARM SoC.

Signed-off-by: default avatarRoland Stigge <stigge@antcom.de>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8b7c3b68
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
* 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>;
	};
+11 −0
Original line number Diff line number Diff line
@@ -147,6 +147,17 @@ config USB_AT91
	   dynamically linked module called "at91_udc" and force all
	   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
	tristate "Atmel USBA"
	select USB_GADGET_DUALSPEED
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ obj-$(CONFIG_USB_CI13XXX_PCI) += ci13xxx_pci.o
obj-$(CONFIG_USB_S3C_HSOTG)	+= s3c-hsotg.o
obj-$(CONFIG_USB_S3C_HSUDC)	+= s3c-hsudc.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_MV_UDC)	+= mv_udc.o
mv_udc-y			:= mv_udc_core.o
+3 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
#define gadget_is_goku(g)		(!strcmp("goku_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_lpc32xx(g)		(!strcmp("lpc32xx_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_net2272(g)		(!strcmp("net2272", (g)->name))
@@ -118,6 +119,8 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
		return 0x31;
	else if (gadget_is_dwc3(gadget))
		return 0x32;
	else if (gadget_is_lpc32xx(gadget))
		return 0x33;

	return -ENOENT;
}
+3538 −0

File added.

Preview size limit exceeded, changes collapsed.