[ARM] pxa: separate PXA25x and PXA27x UDC register definitions
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sun, 20 Apr 2008 16:32:16 +0000 (17:32 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 19 May 2008 15:25:58 +0000 (16:25 +0100)
The PXA25x and PXA27x USB device controller register definitions are
different.  Currently, they live side by side in pxa-regs.h, but only
one set is available depending on the setting of PXA25x or PXA27x.

This means that if we build to support both PXA25x and PXA27x, the
PXA27x definitions are unavailable, even to PXA27x specific code.

Remove these definitions from pxa-regs.h, and place them in separate
files.  Include these files where appropriate.

Note: according to the dependencies in drivers/usb/gadget/Kconfig,
we do not support the UDC on PXA27x nor PXA3xx CPUs, so remove the
platform devices from pxa27x.c and pxa3xx.c.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-pxa/em-x270.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa3xx.c
drivers/usb/gadget/pxa2xx_udc.c
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/arch-pxa/pxa25x-udc.h [new file with mode: 0644]
include/asm-arm/arch-pxa/pxa27x-udc.h [new file with mode: 0644]

index edc4f07..1269ac9 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <asm/arch/pxa-regs.h>
 #include <asm/arch/pxa2xx-gpio.h>
+#include <asm/arch/pxa27x-udc.h>
 #include <asm/arch/pxafb.h>
 #include <asm/arch/ohci.h>
 #include <asm/arch/mmc.h>
index 7e94583..cdaf573 100644 (file)
@@ -353,7 +353,7 @@ void __init pxa_set_i2c_power_info(struct i2c_pxa_platform_data *info)
 }
 
 static struct platform_device *devices[] __initdata = {
-       &pxa_device_udc,
+/*     &pxa_device_udc,        The UDC driver is PXA25x only */
        &pxa_device_ffuart,
        &pxa_device_btuart,
        &pxa_device_stuart,
index 644550b..7fbe786 100644 (file)
@@ -520,7 +520,7 @@ void __init pxa3xx_init_irq(void)
  */
 
 static struct platform_device *devices[] __initdata = {
-       &pxa_device_udc,
+/*     &pxa_device_udc,        The UDC driver is PXA25x only */
        &pxa_device_ffuart,
        &pxa_device_btuart,
        &pxa_device_stuart,
index 08f699b..63db96a 100644 (file)
 #include <linux/err.h>
 #include <linux/seq_file.h>
 #include <linux/debugfs.h>
+#include <linux/io.h>
 
 #include <asm/byteorder.h>
 #include <asm/dma.h>
 #include <asm/gpio.h>
-#include <asm/io.h>
 #include <asm/system.h>
 #include <asm/mach-types.h>
 #include <asm/unaligned.h>
-#include <asm/hardware.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 
+/*
+ * This driver is PXA25x only.  Grab the right register definitions.
+ */
+#ifdef CONFIG_ARCH_PXA
+#include <asm/arch/pxa25x-udc.h>
+#endif
+
 #include <asm/mach/udc_pxa2xx.h>
 
 
index 4b2ea1e..68d7428 100644 (file)
 #define SMC_REG_BASE   __REG(0x40500500)  /* Secondary Modem Codec */
 
 
-/*
- * USB Device Controller
- * PXA25x and PXA27x USB device controller registers are different.
- */
-#if defined(CONFIG_PXA25x)
-
-#define UDC_RES1       __REG(0x40600004)  /* UDC Undocumented - Reserved1 */
-#define UDC_RES2       __REG(0x40600008)  /* UDC Undocumented - Reserved2 */
-#define UDC_RES3       __REG(0x4060000C)  /* UDC Undocumented - Reserved3 */
-
-#define UDCCR          __REG(0x40600000)  /* UDC Control Register */
-#define UDCCR_UDE      (1 << 0)        /* UDC enable */
-#define UDCCR_UDA      (1 << 1)        /* UDC active */
-#define UDCCR_RSM      (1 << 2)        /* Device resume */
-#define UDCCR_RESIR    (1 << 3)        /* Resume interrupt request */
-#define UDCCR_SUSIR    (1 << 4)        /* Suspend interrupt request */
-#define UDCCR_SRM      (1 << 5)        /* Suspend/resume interrupt mask */
-#define UDCCR_RSTIR    (1 << 6)        /* Reset interrupt request */
-#define UDCCR_REM      (1 << 7)        /* Reset interrupt mask */
-
-#define UDCCS0         __REG(0x40600010)  /* UDC Endpoint 0 Control/Status Register */
-#define UDCCS0_OPR     (1 << 0)        /* OUT packet ready */
-#define UDCCS0_IPR     (1 << 1)        /* IN packet ready */
-#define UDCCS0_FTF     (1 << 2)        /* Flush Tx FIFO */
-#define UDCCS0_DRWF    (1 << 3)        /* Device remote wakeup feature */
-#define UDCCS0_SST     (1 << 4)        /* Sent stall */
-#define UDCCS0_FST     (1 << 5)        /* Force stall */
-#define UDCCS0_RNE     (1 << 6)        /* Receive FIFO no empty */
-#define UDCCS0_SA      (1 << 7)        /* Setup active */
-
-/* Bulk IN - Endpoint 1,6,11 */
-#define UDCCS1         __REG(0x40600014)  /* UDC Endpoint 1 (IN) Control/Status Register */
-#define UDCCS6         __REG(0x40600028)  /* UDC Endpoint 6 (IN) Control/Status Register */
-#define UDCCS11                __REG(0x4060003C)  /* UDC Endpoint 11 (IN) Control/Status Register */
-
-#define UDCCS_BI_TFS   (1 << 0)        /* Transmit FIFO service */
-#define UDCCS_BI_TPC   (1 << 1)        /* Transmit packet complete */
-#define UDCCS_BI_FTF   (1 << 2)        /* Flush Tx FIFO */
-#define UDCCS_BI_TUR   (1 << 3)        /* Transmit FIFO underrun */
-#define UDCCS_BI_SST   (1 << 4)        /* Sent stall */
-#define UDCCS_BI_FST   (1 << 5)        /* Force stall */
-#define UDCCS_BI_TSP   (1 << 7)        /* Transmit short packet */
-
-/* Bulk OUT - Endpoint 2,7,12 */
-#define UDCCS2         __REG(0x40600018)  /* UDC Endpoint 2 (OUT) Control/Status Register */
-#define UDCCS7         __REG(0x4060002C)  /* UDC Endpoint 7 (OUT) Control/Status Register */
-#define UDCCS12                __REG(0x40600040)  /* UDC Endpoint 12 (OUT) Control/Status Register */
-
-#define UDCCS_BO_RFS   (1 << 0)        /* Receive FIFO service */
-#define UDCCS_BO_RPC   (1 << 1)        /* Receive packet complete */
-#define UDCCS_BO_DME   (1 << 3)        /* DMA enable */
-#define UDCCS_BO_SST   (1 << 4)        /* Sent stall */
-#define UDCCS_BO_FST   (1 << 5)        /* Force stall */
-#define UDCCS_BO_RNE   (1 << 6)        /* Receive FIFO not empty */
-#define UDCCS_BO_RSP   (1 << 7)        /* Receive short packet */
-
-/* Isochronous IN - Endpoint 3,8,13 */
-#define UDCCS3         __REG(0x4060001C)  /* UDC Endpoint 3 (IN) Control/Status Register */
-#define UDCCS8         __REG(0x40600030)  /* UDC Endpoint 8 (IN) Control/Status Register */
-#define UDCCS13                __REG(0x40600044)  /* UDC Endpoint 13 (IN) Control/Status Register */
-
-#define UDCCS_II_TFS   (1 << 0)        /* Transmit FIFO service */
-#define UDCCS_II_TPC   (1 << 1)        /* Transmit packet complete */
-#define UDCCS_II_FTF   (1 << 2)        /* Flush Tx FIFO */
-#define UDCCS_II_TUR   (1 << 3)        /* Transmit FIFO underrun */
-#define UDCCS_II_TSP   (1 << 7)        /* Transmit short packet */
-
-/* Isochronous OUT - Endpoint 4,9,14 */
-#define UDCCS4         __REG(0x40600020)  /* UDC Endpoint 4 (OUT) Control/Status Register */
-#define UDCCS9         __REG(0x40600034)  /* UDC Endpoint 9 (OUT) Control/Status Register */
-#define UDCCS14                __REG(0x40600048)  /* UDC Endpoint 14 (OUT) Control/Status Register */
-
-#define UDCCS_IO_RFS   (1 << 0)        /* Receive FIFO service */
-#define UDCCS_IO_RPC   (1 << 1)        /* Receive packet complete */
-#define UDCCS_IO_ROF   (1 << 2)        /* Receive overflow */
-#define UDCCS_IO_DME   (1 << 3)        /* DMA enable */
-#define UDCCS_IO_RNE   (1 << 6)        /* Receive FIFO not empty */
-#define UDCCS_IO_RSP   (1 << 7)        /* Receive short packet */
-
-/* Interrupt IN - Endpoint 5,10,15 */
-#define UDCCS5         __REG(0x40600024)  /* UDC Endpoint 5 (Interrupt) Control/Status Register */
-#define UDCCS10                __REG(0x40600038)  /* UDC Endpoint 10 (Interrupt) Control/Status Register */
-#define UDCCS15                __REG(0x4060004C)  /* UDC Endpoint 15 (Interrupt) Control/Status Register */
-
-#define UDCCS_INT_TFS  (1 << 0)        /* Transmit FIFO service */
-#define UDCCS_INT_TPC  (1 << 1)        /* Transmit packet complete */
-#define UDCCS_INT_FTF  (1 << 2)        /* Flush Tx FIFO */
-#define UDCCS_INT_TUR  (1 << 3)        /* Transmit FIFO underrun */
-#define UDCCS_INT_SST  (1 << 4)        /* Sent stall */
-#define UDCCS_INT_FST  (1 << 5)        /* Force stall */
-#define UDCCS_INT_TSP  (1 << 7)        /* Transmit short packet */
-
-#define UFNRH          __REG(0x40600060)  /* UDC Frame Number Register High */
-#define UFNRL          __REG(0x40600064)  /* UDC Frame Number Register Low */
-#define UBCR2          __REG(0x40600068)  /* UDC Byte Count Reg 2 */
-#define UBCR4          __REG(0x4060006c)  /* UDC Byte Count Reg 4 */
-#define UBCR7          __REG(0x40600070)  /* UDC Byte Count Reg 7 */
-#define UBCR9          __REG(0x40600074)  /* UDC Byte Count Reg 9 */
-#define UBCR12         __REG(0x40600078)  /* UDC Byte Count Reg 12 */
-#define UBCR14         __REG(0x4060007c)  /* UDC Byte Count Reg 14 */
-#define UDDR0          __REG(0x40600080)  /* UDC Endpoint 0 Data Register */
-#define UDDR1          __REG(0x40600100)  /* UDC Endpoint 1 Data Register */
-#define UDDR2          __REG(0x40600180)  /* UDC Endpoint 2 Data Register */
-#define UDDR3          __REG(0x40600200)  /* UDC Endpoint 3 Data Register */
-#define UDDR4          __REG(0x40600400)  /* UDC Endpoint 4 Data Register */
-#define UDDR5          __REG(0x406000A0)  /* UDC Endpoint 5 Data Register */
-#define UDDR6          __REG(0x40600600)  /* UDC Endpoint 6 Data Register */
-#define UDDR7          __REG(0x40600680)  /* UDC Endpoint 7 Data Register */
-#define UDDR8          __REG(0x40600700)  /* UDC Endpoint 8 Data Register */
-#define UDDR9          __REG(0x40600900)  /* UDC Endpoint 9 Data Register */
-#define UDDR10         __REG(0x406000C0)  /* UDC Endpoint 10 Data Register */
-#define UDDR11         __REG(0x40600B00)  /* UDC Endpoint 11 Data Register */
-#define UDDR12         __REG(0x40600B80)  /* UDC Endpoint 12 Data Register */
-#define UDDR13         __REG(0x40600C00)  /* UDC Endpoint 13 Data Register */
-#define UDDR14         __REG(0x40600E00)  /* UDC Endpoint 14 Data Register */
-#define UDDR15         __REG(0x406000E0)  /* UDC Endpoint 15 Data Register */
-
-#define UICR0          __REG(0x40600050)  /* UDC Interrupt Control Register 0 */
-
-#define UICR0_IM0      (1 << 0)        /* Interrupt mask ep 0 */
-#define UICR0_IM1      (1 << 1)        /* Interrupt mask ep 1 */
-#define UICR0_IM2      (1 << 2)        /* Interrupt mask ep 2 */
-#define UICR0_IM3      (1 << 3)        /* Interrupt mask ep 3 */
-#define UICR0_IM4      (1 << 4)        /* Interrupt mask ep 4 */
-#define UICR0_IM5      (1 << 5)        /* Interrupt mask ep 5 */
-#define UICR0_IM6      (1 << 6)        /* Interrupt mask ep 6 */
-#define UICR0_IM7      (1 << 7)        /* Interrupt mask ep 7 */
-
-#define UICR1          __REG(0x40600054)  /* UDC Interrupt Control Register 1 */
-
-#define UICR1_IM8      (1 << 0)        /* Interrupt mask ep 8 */
-#define UICR1_IM9      (1 << 1)        /* Interrupt mask ep 9 */
-#define UICR1_IM10     (1 << 2)        /* Interrupt mask ep 10 */
-#define UICR1_IM11     (1 << 3)        /* Interrupt mask ep 11 */
-#define UICR1_IM12     (1 << 4)        /* Interrupt mask ep 12 */
-#define UICR1_IM13     (1 << 5)        /* Interrupt mask ep 13 */
-#define UICR1_IM14     (1 << 6)        /* Interrupt mask ep 14 */
-#define UICR1_IM15     (1 << 7)        /* Interrupt mask ep 15 */
-
-#define USIR0          __REG(0x40600058)  /* UDC Status Interrupt Register 0 */
-
-#define USIR0_IR0      (1 << 0)        /* Interrupt request ep 0 */
-#define USIR0_IR1      (1 << 1)        /* Interrupt request ep 1 */
-#define USIR0_IR2      (1 << 2)        /* Interrupt request ep 2 */
-#define USIR0_IR3      (1 << 3)        /* Interrupt request ep 3 */
-#define USIR0_IR4      (1 << 4)        /* Interrupt request ep 4 */
-#define USIR0_IR5      (1 << 5)        /* Interrupt request ep 5 */
-#define USIR0_IR6      (1 << 6)        /* Interrupt request ep 6 */
-#define USIR0_IR7      (1 << 7)        /* Interrupt request ep 7 */
-
-#define USIR1          __REG(0x4060005C)  /* UDC Status Interrupt Register 1 */
-
-#define USIR1_IR8      (1 << 0)        /* Interrupt request ep 8 */
-#define USIR1_IR9      (1 << 1)        /* Interrupt request ep 9 */
-#define USIR1_IR10     (1 << 2)        /* Interrupt request ep 10 */
-#define USIR1_IR11     (1 << 3)        /* Interrupt request ep 11 */
-#define USIR1_IR12     (1 << 4)        /* Interrupt request ep 12 */
-#define USIR1_IR13     (1 << 5)        /* Interrupt request ep 13 */
-#define USIR1_IR14     (1 << 6)        /* Interrupt request ep 14 */
-#define USIR1_IR15     (1 << 7)        /* Interrupt request ep 15 */
-
-#elif defined(CONFIG_PXA27x)
-
-#define UDCCR           __REG(0x40600000) /* UDC Control Register */
-#define UDCCR_OEN      (1 << 31)       /* On-the-Go Enable */
-#define UDCCR_AALTHNP  (1 << 30)       /* A-device Alternate Host Negotiation
-                                          Protocol Port Support */
-#define UDCCR_AHNP     (1 << 29)       /* A-device Host Negotiation Protocol
-                                          Support */
-#define UDCCR_BHNP     (1 << 28)       /* B-device Host Negotiation Protocol
-                                          Enable */
-#define UDCCR_DWRE     (1 << 16)       /* Device Remote Wake-up Enable */
-#define UDCCR_ACN      (0x03 << 11)    /* Active UDC configuration Number */
-#define UDCCR_ACN_S    11
-#define UDCCR_AIN      (0x07 << 8)     /* Active UDC interface Number */
-#define UDCCR_AIN_S    8
-#define UDCCR_AAISN    (0x07 << 5)     /* Active UDC Alternate Interface
-                                          Setting Number */
-#define UDCCR_AAISN_S  5
-#define UDCCR_SMAC     (1 << 4)        /* Switch Endpoint Memory to Active
-                                          Configuration */
-#define UDCCR_EMCE     (1 << 3)        /* Endpoint Memory Configuration
-                                          Error */
-#define UDCCR_UDR      (1 << 2)        /* UDC Resume */
-#define UDCCR_UDA      (1 << 1)        /* UDC Active */
-#define UDCCR_UDE      (1 << 0)        /* UDC Enable */
-
-#define UDCICR0         __REG(0x40600004) /* UDC Interrupt Control Register0 */
-#define UDCICR1         __REG(0x40600008) /* UDC Interrupt Control Register1 */
-#define UDCICR_FIFOERR (1 << 1)        /* FIFO Error interrupt for EP */
-#define UDCICR_PKTCOMPL (1 << 0)       /* Packet Complete interrupt for EP */
-
-#define UDC_INT_FIFOERROR  (0x2)
-#define UDC_INT_PACKETCMP  (0x1)
-
-#define UDCICR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
-#define UDCICR1_IECC   (1 << 31)       /* IntEn - Configuration Change */
-#define UDCICR1_IESOF  (1 << 30)       /* IntEn - Start of Frame */
-#define UDCICR1_IERU   (1 << 29)       /* IntEn - Resume */
-#define UDCICR1_IESU   (1 << 28)       /* IntEn - Suspend */
-#define UDCICR1_IERS   (1 << 27)       /* IntEn - Reset */
-
-#define UDCISR0         __REG(0x4060000C) /* UDC Interrupt Status Register 0 */
-#define UDCISR1         __REG(0x40600010) /* UDC Interrupt Status Register 1 */
-#define UDCISR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
-#define UDCISR1_IRCC   (1 << 31)       /* IntReq - Configuration Change */
-#define UDCISR1_IRSOF  (1 << 30)       /* IntReq - Start of Frame */
-#define UDCISR1_IRRU   (1 << 29)       /* IntReq - Resume */
-#define UDCISR1_IRSU   (1 << 28)       /* IntReq - Suspend */
-#define UDCISR1_IRRS   (1 << 27)       /* IntReq - Reset */
-
-#define UDCFNR          __REG(0x40600014) /* UDC Frame Number Register */
-#define UDCOTGICR      __REG(0x40600018) /* UDC On-The-Go interrupt control */
-#define UDCOTGICR_IESF (1 << 24)       /* OTG SET_FEATURE command recvd */
-#define UDCOTGICR_IEXR (1 << 17)       /* Extra Transciever Interrupt
-                                          Rising Edge Interrupt Enable */
-#define UDCOTGICR_IEXF (1 << 16)       /* Extra Transciever Interrupt
-                                          Falling Edge Interrupt Enable */
-#define UDCOTGICR_IEVV40R (1 << 9)     /* OTG Vbus Valid 4.0V Rising Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IEVV40F (1 << 8)     /* OTG Vbus Valid 4.0V Falling Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IEVV44R (1 << 7)     /* OTG Vbus Valid 4.4V Rising Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IEVV44F (1 << 6)     /* OTG Vbus Valid 4.4V Falling Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IESVR        (1 << 5)        /* OTG Session Valid Rising Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IESVF        (1 << 4)        /* OTG Session Valid Falling Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IESDR        (1 << 3)        /* OTG A-Device SRP Detect Rising
-                                          Edge Interrupt Enable */
-#define UDCOTGICR_IESDF        (1 << 2)        /* OTG A-Device SRP Detect Falling
-                                          Edge Interrupt Enable */
-#define UDCOTGICR_IEIDR        (1 << 1)        /* OTG ID Change Rising Edge
-                                          Interrupt Enable */
-#define UDCOTGICR_IEIDF        (1 << 0)        /* OTG ID Change Falling Edge
-                                          Interrupt Enable */
-
-#define UP2OCR           __REG(0x40600020)  /* USB Port 2 Output Control register */
-
-#define UP2OCR_CPVEN   (1 << 0)        /* Charge Pump Vbus Enable */
-#define UP2OCR_CPVPE   (1 << 1)        /* Charge Pump Vbus Pulse Enable */
-#define UP2OCR_DPPDE   (1 << 2)        /* Host Port 2 Transceiver D+ Pull Down Enable */
-#define UP2OCR_DMPDE   (1 << 3)        /* Host Port 2 Transceiver D- Pull Down Enable */
-#define UP2OCR_DPPUE   (1 << 4)        /* Host Port 2 Transceiver D+ Pull Up Enable */
-#define UP2OCR_DMPUE   (1 << 5)        /* Host Port 2 Transceiver D- Pull Up Enable */
-#define UP2OCR_DPPUBE  (1 << 6)        /* Host Port 2 Transceiver D+ Pull Up Bypass Enable */
-#define UP2OCR_DMPUBE  (1 << 7)        /* Host Port 2 Transceiver D- Pull Up Bypass Enable */
-#define UP2OCR_EXSP            (1 << 8)        /* External Transceiver Speed Control */
-#define UP2OCR_EXSUS   (1 << 9)        /* External Transceiver Speed Enable */
-#define UP2OCR_IDON            (1 << 10)       /* OTG ID Read Enable */
-#define UP2OCR_HXS             (1 << 16)       /* Host Port 2 Transceiver Output Select */
-#define UP2OCR_HXOE            (1 << 17)       /* Host Port 2 Transceiver Output Enable */
-#define UP2OCR_SEOS            (1 << 24)       /* Single-Ended Output Select */
-
-#define UDCCSN(x)      __REG2(0x40600100, (x) << 2)
-#define UDCCSR0         __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
-#define UDCCSR0_SA     (1 << 7)        /* Setup Active */
-#define UDCCSR0_RNE    (1 << 6)        /* Receive FIFO Not Empty */
-#define UDCCSR0_FST    (1 << 5)        /* Force Stall */
-#define UDCCSR0_SST    (1 << 4)        /* Sent Stall */
-#define UDCCSR0_DME    (1 << 3)        /* DMA Enable */
-#define UDCCSR0_FTF    (1 << 2)        /* Flush Transmit FIFO */
-#define UDCCSR0_IPR    (1 << 1)        /* IN Packet Ready */
-#define UDCCSR0_OPC    (1 << 0)        /* OUT Packet Complete */
-
-#define UDCCSRA         __REG(0x40600104) /* UDC Control/Status register - Endpoint A */
-#define UDCCSRB         __REG(0x40600108) /* UDC Control/Status register - Endpoint B */
-#define UDCCSRC         __REG(0x4060010C) /* UDC Control/Status register - Endpoint C */
-#define UDCCSRD         __REG(0x40600110) /* UDC Control/Status register - Endpoint D */
-#define UDCCSRE         __REG(0x40600114) /* UDC Control/Status register - Endpoint E */
-#define UDCCSRF         __REG(0x40600118) /* UDC Control/Status register - Endpoint F */
-#define UDCCSRG         __REG(0x4060011C) /* UDC Control/Status register - Endpoint G */
-#define UDCCSRH         __REG(0x40600120) /* UDC Control/Status register - Endpoint H */
-#define UDCCSRI         __REG(0x40600124) /* UDC Control/Status register - Endpoint I */
-#define UDCCSRJ         __REG(0x40600128) /* UDC Control/Status register - Endpoint J */
-#define UDCCSRK         __REG(0x4060012C) /* UDC Control/Status register - Endpoint K */
-#define UDCCSRL         __REG(0x40600130) /* UDC Control/Status register - Endpoint L */
-#define UDCCSRM         __REG(0x40600134) /* UDC Control/Status register - Endpoint M */
-#define UDCCSRN         __REG(0x40600138) /* UDC Control/Status register - Endpoint N */
-#define UDCCSRP         __REG(0x4060013C) /* UDC Control/Status register - Endpoint P */
-#define UDCCSRQ         __REG(0x40600140) /* UDC Control/Status register - Endpoint Q */
-#define UDCCSRR         __REG(0x40600144) /* UDC Control/Status register - Endpoint R */
-#define UDCCSRS         __REG(0x40600148) /* UDC Control/Status register - Endpoint S */
-#define UDCCSRT         __REG(0x4060014C) /* UDC Control/Status register - Endpoint T */
-#define UDCCSRU         __REG(0x40600150) /* UDC Control/Status register - Endpoint U */
-#define UDCCSRV         __REG(0x40600154) /* UDC Control/Status register - Endpoint V */
-#define UDCCSRW         __REG(0x40600158) /* UDC Control/Status register - Endpoint W */
-#define UDCCSRX         __REG(0x4060015C) /* UDC Control/Status register - Endpoint X */
-
-#define UDCCSR_DPE     (1 << 9)        /* Data Packet Error */
-#define UDCCSR_FEF     (1 << 8)        /* Flush Endpoint FIFO */
-#define UDCCSR_SP      (1 << 7)        /* Short Packet Control/Status */
-#define UDCCSR_BNE     (1 << 6)        /* Buffer Not Empty (IN endpoints) */
-#define UDCCSR_BNF     (1 << 6)        /* Buffer Not Full (OUT endpoints) */
-#define UDCCSR_FST     (1 << 5)        /* Force STALL */
-#define UDCCSR_SST     (1 << 4)        /* Sent STALL */
-#define UDCCSR_DME     (1 << 3)        /* DMA Enable */
-#define UDCCSR_TRN     (1 << 2)        /* Tx/Rx NAK */
-#define UDCCSR_PC      (1 << 1)        /* Packet Complete */
-#define UDCCSR_FS      (1 << 0)        /* FIFO needs service */
-
-#define UDCBCN(x)      __REG2(0x40600200, (x)<<2)
-#define UDCBCR0         __REG(0x40600200) /* Byte Count Register - EP0 */
-#define UDCBCRA         __REG(0x40600204) /* Byte Count Register - EPA */
-#define UDCBCRB         __REG(0x40600208) /* Byte Count Register - EPB */
-#define UDCBCRC         __REG(0x4060020C) /* Byte Count Register - EPC */
-#define UDCBCRD         __REG(0x40600210) /* Byte Count Register - EPD */
-#define UDCBCRE         __REG(0x40600214) /* Byte Count Register - EPE */
-#define UDCBCRF         __REG(0x40600218) /* Byte Count Register - EPF */
-#define UDCBCRG         __REG(0x4060021C) /* Byte Count Register - EPG */
-#define UDCBCRH         __REG(0x40600220) /* Byte Count Register - EPH */
-#define UDCBCRI         __REG(0x40600224) /* Byte Count Register - EPI */
-#define UDCBCRJ         __REG(0x40600228) /* Byte Count Register - EPJ */
-#define UDCBCRK         __REG(0x4060022C) /* Byte Count Register - EPK */
-#define UDCBCRL         __REG(0x40600230) /* Byte Count Register - EPL */
-#define UDCBCRM         __REG(0x40600234) /* Byte Count Register - EPM */
-#define UDCBCRN         __REG(0x40600238) /* Byte Count Register - EPN */
-#define UDCBCRP         __REG(0x4060023C) /* Byte Count Register - EPP */
-#define UDCBCRQ         __REG(0x40600240) /* Byte Count Register - EPQ */
-#define UDCBCRR         __REG(0x40600244) /* Byte Count Register - EPR */
-#define UDCBCRS         __REG(0x40600248) /* Byte Count Register - EPS */
-#define UDCBCRT         __REG(0x4060024C) /* Byte Count Register - EPT */
-#define UDCBCRU         __REG(0x40600250) /* Byte Count Register - EPU */
-#define UDCBCRV         __REG(0x40600254) /* Byte Count Register - EPV */
-#define UDCBCRW         __REG(0x40600258) /* Byte Count Register - EPW */
-#define UDCBCRX         __REG(0x4060025C) /* Byte Count Register - EPX */
-
-#define UDCDN(x)       __REG2(0x40600300, (x)<<2)
-#define PHYS_UDCDN(x)  (0x40600300 + ((x)<<2))
-#define PUDCDN(x)      (volatile u32 *)(io_p2v(PHYS_UDCDN((x))))
-#define UDCDR0          __REG(0x40600300) /* Data Register - EP0 */
-#define UDCDRA          __REG(0x40600304) /* Data Register - EPA */
-#define UDCDRB          __REG(0x40600308) /* Data Register - EPB */
-#define UDCDRC          __REG(0x4060030C) /* Data Register - EPC */
-#define UDCDRD          __REG(0x40600310) /* Data Register - EPD */
-#define UDCDRE          __REG(0x40600314) /* Data Register - EPE */
-#define UDCDRF          __REG(0x40600318) /* Data Register - EPF */
-#define UDCDRG          __REG(0x4060031C) /* Data Register - EPG */
-#define UDCDRH          __REG(0x40600320) /* Data Register - EPH */
-#define UDCDRI          __REG(0x40600324) /* Data Register - EPI */
-#define UDCDRJ          __REG(0x40600328) /* Data Register - EPJ */
-#define UDCDRK          __REG(0x4060032C) /* Data Register - EPK */
-#define UDCDRL          __REG(0x40600330) /* Data Register - EPL */
-#define UDCDRM          __REG(0x40600334) /* Data Register - EPM */
-#define UDCDRN          __REG(0x40600338) /* Data Register - EPN */
-#define UDCDRP          __REG(0x4060033C) /* Data Register - EPP */
-#define UDCDRQ          __REG(0x40600340) /* Data Register - EPQ */
-#define UDCDRR          __REG(0x40600344) /* Data Register - EPR */
-#define UDCDRS          __REG(0x40600348) /* Data Register - EPS */
-#define UDCDRT          __REG(0x4060034C) /* Data Register - EPT */
-#define UDCDRU          __REG(0x40600350) /* Data Register - EPU */
-#define UDCDRV          __REG(0x40600354) /* Data Register - EPV */
-#define UDCDRW          __REG(0x40600358) /* Data Register - EPW */
-#define UDCDRX          __REG(0x4060035C) /* Data Register - EPX */
-
-#define UDCCN(x)       __REG2(0x40600400, (x)<<2)
-#define UDCCRA          __REG(0x40600404) /* Configuration register EPA */
-#define UDCCRB          __REG(0x40600408) /* Configuration register EPB */
-#define UDCCRC          __REG(0x4060040C) /* Configuration register EPC */
-#define UDCCRD          __REG(0x40600410) /* Configuration register EPD */
-#define UDCCRE          __REG(0x40600414) /* Configuration register EPE */
-#define UDCCRF          __REG(0x40600418) /* Configuration register EPF */
-#define UDCCRG          __REG(0x4060041C) /* Configuration register EPG */
-#define UDCCRH          __REG(0x40600420) /* Configuration register EPH */
-#define UDCCRI          __REG(0x40600424) /* Configuration register EPI */
-#define UDCCRJ          __REG(0x40600428) /* Configuration register EPJ */
-#define UDCCRK          __REG(0x4060042C) /* Configuration register EPK */
-#define UDCCRL          __REG(0x40600430) /* Configuration register EPL */
-#define UDCCRM          __REG(0x40600434) /* Configuration register EPM */
-#define UDCCRN          __REG(0x40600438) /* Configuration register EPN */
-#define UDCCRP          __REG(0x4060043C) /* Configuration register EPP */
-#define UDCCRQ          __REG(0x40600440) /* Configuration register EPQ */
-#define UDCCRR          __REG(0x40600444) /* Configuration register EPR */
-#define UDCCRS          __REG(0x40600448) /* Configuration register EPS */
-#define UDCCRT          __REG(0x4060044C) /* Configuration register EPT */
-#define UDCCRU          __REG(0x40600450) /* Configuration register EPU */
-#define UDCCRV          __REG(0x40600454) /* Configuration register EPV */
-#define UDCCRW          __REG(0x40600458) /* Configuration register EPW */
-#define UDCCRX          __REG(0x4060045C) /* Configuration register EPX */
-
-#define UDCCONR_CN     (0x03 << 25)    /* Configuration Number */
-#define UDCCONR_CN_S   (25)
-#define UDCCONR_IN     (0x07 << 22)    /* Interface Number */
-#define UDCCONR_IN_S   (22)
-#define UDCCONR_AISN   (0x07 << 19)    /* Alternate Interface Number */
-#define UDCCONR_AISN_S (19)
-#define UDCCONR_EN     (0x0f << 15)    /* Endpoint Number */
-#define UDCCONR_EN_S   (15)
-#define UDCCONR_ET     (0x03 << 13)    /* Endpoint Type: */
-#define UDCCONR_ET_S   (13)
-#define UDCCONR_ET_INT (0x03 << 13)    /*   Interrupt */
-#define UDCCONR_ET_BULK        (0x02 << 13)    /*   Bulk */
-#define UDCCONR_ET_ISO (0x01 << 13)    /*   Isochronous */
-#define UDCCONR_ET_NU  (0x00 << 13)    /*   Not used */
-#define UDCCONR_ED     (1 << 12)       /* Endpoint Direction */
-#define UDCCONR_MPS    (0x3ff << 2)    /* Maximum Packet Size */
-#define UDCCONR_MPS_S  (2)
-#define UDCCONR_DE     (1 << 1)        /* Double Buffering Enable */
-#define UDCCONR_EE     (1 << 0)        /* Endpoint Enable */
-
-
-#define UDC_INT_FIFOERROR  (0x2)
-#define UDC_INT_PACKETCMP  (0x1)
-
-#define UDC_FNR_MASK     (0x7ff)
-
-#define UDCCSR_WR_MASK   (UDCCSR_DME|UDCCSR_FST)
-#define UDC_BCR_MASK    (0x3ff)
-#endif
-
 /*
  * Fast Infrared Communication Port
  */
diff --git a/include/asm-arm/arch-pxa/pxa25x-udc.h b/include/asm-arm/arch-pxa/pxa25x-udc.h
new file mode 100644 (file)
index 0000000..8403059
--- /dev/null
@@ -0,0 +1,163 @@
+#ifndef _ASM_ARCH_PXA25X_UDC_H
+#define _ASM_ARCH_PXA25X_UDC_H
+
+#ifdef _ASM_ARCH_PXA27X_UDC_H
+#error You can't include both PXA25x and PXA27x UDC support
+#endif
+
+#define UDC_RES1       __REG(0x40600004)  /* UDC Undocumented - Reserved1 */
+#define UDC_RES2       __REG(0x40600008)  /* UDC Undocumented - Reserved2 */
+#define UDC_RES3       __REG(0x4060000C)  /* UDC Undocumented - Reserved3 */
+
+#define UDCCR          __REG(0x40600000)  /* UDC Control Register */
+#define UDCCR_UDE      (1 << 0)        /* UDC enable */
+#define UDCCR_UDA      (1 << 1)        /* UDC active */
+#define UDCCR_RSM      (1 << 2)        /* Device resume */
+#define UDCCR_RESIR    (1 << 3)        /* Resume interrupt request */
+#define UDCCR_SUSIR    (1 << 4)        /* Suspend interrupt request */
+#define UDCCR_SRM      (1 << 5)        /* Suspend/resume interrupt mask */
+#define UDCCR_RSTIR    (1 << 6)        /* Reset interrupt request */
+#define UDCCR_REM      (1 << 7)        /* Reset interrupt mask */
+
+#define UDCCS0         __REG(0x40600010)  /* UDC Endpoint 0 Control/Status Register */
+#define UDCCS0_OPR     (1 << 0)        /* OUT packet ready */
+#define UDCCS0_IPR     (1 << 1)        /* IN packet ready */
+#define UDCCS0_FTF     (1 << 2)        /* Flush Tx FIFO */
+#define UDCCS0_DRWF    (1 << 3)        /* Device remote wakeup feature */
+#define UDCCS0_SST     (1 << 4)        /* Sent stall */
+#define UDCCS0_FST     (1 << 5)        /* Force stall */
+#define UDCCS0_RNE     (1 << 6)        /* Receive FIFO no empty */
+#define UDCCS0_SA      (1 << 7)        /* Setup active */
+
+/* Bulk IN - Endpoint 1,6,11 */
+#define UDCCS1         __REG(0x40600014)  /* UDC Endpoint 1 (IN) Control/Status Register */
+#define UDCCS6         __REG(0x40600028)  /* UDC Endpoint 6 (IN) Control/Status Register */
+#define UDCCS11                __REG(0x4060003C)  /* UDC Endpoint 11 (IN) Control/Status Register */
+
+#define UDCCS_BI_TFS   (1 << 0)        /* Transmit FIFO service */
+#define UDCCS_BI_TPC   (1 << 1)        /* Transmit packet complete */
+#define UDCCS_BI_FTF   (1 << 2)        /* Flush Tx FIFO */
+#define UDCCS_BI_TUR   (1 << 3)        /* Transmit FIFO underrun */
+#define UDCCS_BI_SST   (1 << 4)        /* Sent stall */
+#define UDCCS_BI_FST   (1 << 5)        /* Force stall */
+#define UDCCS_BI_TSP   (1 << 7)        /* Transmit short packet */
+
+/* Bulk OUT - Endpoint 2,7,12 */
+#define UDCCS2         __REG(0x40600018)  /* UDC Endpoint 2 (OUT) Control/Status Register */
+#define UDCCS7         __REG(0x4060002C)  /* UDC Endpoint 7 (OUT) Control/Status Register */
+#define UDCCS12                __REG(0x40600040)  /* UDC Endpoint 12 (OUT) Control/Status Register */
+
+#define UDCCS_BO_RFS   (1 << 0)        /* Receive FIFO service */
+#define UDCCS_BO_RPC   (1 << 1)        /* Receive packet complete */
+#define UDCCS_BO_DME   (1 << 3)        /* DMA enable */
+#define UDCCS_BO_SST   (1 << 4)        /* Sent stall */
+#define UDCCS_BO_FST   (1 << 5)        /* Force stall */
+#define UDCCS_BO_RNE   (1 << 6)        /* Receive FIFO not empty */
+#define UDCCS_BO_RSP   (1 << 7)        /* Receive short packet */
+
+/* Isochronous IN - Endpoint 3,8,13 */
+#define UDCCS3         __REG(0x4060001C)  /* UDC Endpoint 3 (IN) Control/Status Register */
+#define UDCCS8         __REG(0x40600030)  /* UDC Endpoint 8 (IN) Control/Status Register */
+#define UDCCS13                __REG(0x40600044)  /* UDC Endpoint 13 (IN) Control/Status Register */
+
+#define UDCCS_II_TFS   (1 << 0)        /* Transmit FIFO service */
+#define UDCCS_II_TPC   (1 << 1)        /* Transmit packet complete */
+#define UDCCS_II_FTF   (1 << 2)        /* Flush Tx FIFO */
+#define UDCCS_II_TUR   (1 << 3)        /* Transmit FIFO underrun */
+#define UDCCS_II_TSP   (1 << 7)        /* Transmit short packet */
+
+/* Isochronous OUT - Endpoint 4,9,14 */
+#define UDCCS4         __REG(0x40600020)  /* UDC Endpoint 4 (OUT) Control/Status Register */
+#define UDCCS9         __REG(0x40600034)  /* UDC Endpoint 9 (OUT) Control/Status Register */
+#define UDCCS14                __REG(0x40600048)  /* UDC Endpoint 14 (OUT) Control/Status Register */
+
+#define UDCCS_IO_RFS   (1 << 0)        /* Receive FIFO service */
+#define UDCCS_IO_RPC   (1 << 1)        /* Receive packet complete */
+#define UDCCS_IO_ROF   (1 << 2)        /* Receive overflow */
+#define UDCCS_IO_DME   (1 << 3)        /* DMA enable */
+#define UDCCS_IO_RNE   (1 << 6)        /* Receive FIFO not empty */
+#define UDCCS_IO_RSP   (1 << 7)        /* Receive short packet */
+
+/* Interrupt IN - Endpoint 5,10,15 */
+#define UDCCS5         __REG(0x40600024)  /* UDC Endpoint 5 (Interrupt) Control/Status Register */
+#define UDCCS10                __REG(0x40600038)  /* UDC Endpoint 10 (Interrupt) Control/Status Register */
+#define UDCCS15                __REG(0x4060004C)  /* UDC Endpoint 15 (Interrupt) Control/Status Register */
+
+#define UDCCS_INT_TFS  (1 << 0)        /* Transmit FIFO service */
+#define UDCCS_INT_TPC  (1 << 1)        /* Transmit packet complete */
+#define UDCCS_INT_FTF  (1 << 2)        /* Flush Tx FIFO */
+#define UDCCS_INT_TUR  (1 << 3)        /* Transmit FIFO underrun */
+#define UDCCS_INT_SST  (1 << 4)        /* Sent stall */
+#define UDCCS_INT_FST  (1 << 5)        /* Force stall */
+#define UDCCS_INT_TSP  (1 << 7)        /* Transmit short packet */
+
+#define UFNRH          __REG(0x40600060)  /* UDC Frame Number Register High */
+#define UFNRL          __REG(0x40600064)  /* UDC Frame Number Register Low */
+#define UBCR2          __REG(0x40600068)  /* UDC Byte Count Reg 2 */
+#define UBCR4          __REG(0x4060006c)  /* UDC Byte Count Reg 4 */
+#define UBCR7          __REG(0x40600070)  /* UDC Byte Count Reg 7 */
+#define UBCR9          __REG(0x40600074)  /* UDC Byte Count Reg 9 */
+#define UBCR12         __REG(0x40600078)  /* UDC Byte Count Reg 12 */
+#define UBCR14         __REG(0x4060007c)  /* UDC Byte Count Reg 14 */
+#define UDDR0          __REG(0x40600080)  /* UDC Endpoint 0 Data Register */
+#define UDDR1          __REG(0x40600100)  /* UDC Endpoint 1 Data Register */
+#define UDDR2          __REG(0x40600180)  /* UDC Endpoint 2 Data Register */
+#define UDDR3          __REG(0x40600200)  /* UDC Endpoint 3 Data Register */
+#define UDDR4          __REG(0x40600400)  /* UDC Endpoint 4 Data Register */
+#define UDDR5          __REG(0x406000A0)  /* UDC Endpoint 5 Data Register */
+#define UDDR6          __REG(0x40600600)  /* UDC Endpoint 6 Data Register */
+#define UDDR7          __REG(0x40600680)  /* UDC Endpoint 7 Data Register */
+#define UDDR8          __REG(0x40600700)  /* UDC Endpoint 8 Data Register */
+#define UDDR9          __REG(0x40600900)  /* UDC Endpoint 9 Data Register */
+#define UDDR10         __REG(0x406000C0)  /* UDC Endpoint 10 Data Register */
+#define UDDR11         __REG(0x40600B00)  /* UDC Endpoint 11 Data Register */
+#define UDDR12         __REG(0x40600B80)  /* UDC Endpoint 12 Data Register */
+#define UDDR13         __REG(0x40600C00)  /* UDC Endpoint 13 Data Register */
+#define UDDR14         __REG(0x40600E00)  /* UDC Endpoint 14 Data Register */
+#define UDDR15         __REG(0x406000E0)  /* UDC Endpoint 15 Data Register */
+
+#define UICR0          __REG(0x40600050)  /* UDC Interrupt Control Register 0 */
+
+#define UICR0_IM0      (1 << 0)        /* Interrupt mask ep 0 */
+#define UICR0_IM1      (1 << 1)        /* Interrupt mask ep 1 */
+#define UICR0_IM2      (1 << 2)        /* Interrupt mask ep 2 */
+#define UICR0_IM3      (1 << 3)        /* Interrupt mask ep 3 */
+#define UICR0_IM4      (1 << 4)        /* Interrupt mask ep 4 */
+#define UICR0_IM5      (1 << 5)        /* Interrupt mask ep 5 */
+#define UICR0_IM6      (1 << 6)        /* Interrupt mask ep 6 */
+#define UICR0_IM7      (1 << 7)        /* Interrupt mask ep 7 */
+
+#define UICR1          __REG(0x40600054)  /* UDC Interrupt Control Register 1 */
+
+#define UICR1_IM8      (1 << 0)        /* Interrupt mask ep 8 */
+#define UICR1_IM9      (1 << 1)        /* Interrupt mask ep 9 */
+#define UICR1_IM10     (1 << 2)        /* Interrupt mask ep 10 */
+#define UICR1_IM11     (1 << 3)        /* Interrupt mask ep 11 */
+#define UICR1_IM12     (1 << 4)        /* Interrupt mask ep 12 */
+#define UICR1_IM13     (1 << 5)        /* Interrupt mask ep 13 */
+#define UICR1_IM14     (1 << 6)        /* Interrupt mask ep 14 */
+#define UICR1_IM15     (1 << 7)        /* Interrupt mask ep 15 */
+
+#define USIR0          __REG(0x40600058)  /* UDC Status Interrupt Register 0 */
+
+#define USIR0_IR0      (1 << 0)        /* Interrupt request ep 0 */
+#define USIR0_IR1      (1 << 1)        /* Interrupt request ep 1 */
+#define USIR0_IR2      (1 << 2)        /* Interrupt request ep 2 */
+#define USIR0_IR3      (1 << 3)        /* Interrupt request ep 3 */
+#define USIR0_IR4      (1 << 4)        /* Interrupt request ep 4 */
+#define USIR0_IR5      (1 << 5)        /* Interrupt request ep 5 */
+#define USIR0_IR6      (1 << 6)        /* Interrupt request ep 6 */
+#define USIR0_IR7      (1 << 7)        /* Interrupt request ep 7 */
+
+#define USIR1          __REG(0x4060005C)  /* UDC Status Interrupt Register 1 */
+
+#define USIR1_IR8      (1 << 0)        /* Interrupt request ep 8 */
+#define USIR1_IR9      (1 << 1)        /* Interrupt request ep 9 */
+#define USIR1_IR10     (1 << 2)        /* Interrupt request ep 10 */
+#define USIR1_IR11     (1 << 3)        /* Interrupt request ep 11 */
+#define USIR1_IR12     (1 << 4)        /* Interrupt request ep 12 */
+#define USIR1_IR13     (1 << 5)        /* Interrupt request ep 13 */
+#define USIR1_IR14     (1 << 6)        /* Interrupt request ep 14 */
+#define USIR1_IR15     (1 << 7)        /* Interrupt request ep 15 */
+
+#endif
diff --git a/include/asm-arm/arch-pxa/pxa27x-udc.h b/include/asm-arm/arch-pxa/pxa27x-udc.h
new file mode 100644 (file)
index 0000000..9cf0b1f
--- /dev/null
@@ -0,0 +1,256 @@
+#ifndef _ASM_ARCH_PXA27X_UDC_H
+#define _ASM_ARCH_PXA27X_UDC_H
+
+#ifdef _ASM_ARCH_PXA25X_UDC_H
+#error You can't include both PXA25x and PXA27x UDC support
+#endif
+
+#define UDCCR           __REG(0x40600000) /* UDC Control Register */
+#define UDCCR_OEN      (1 << 31)       /* On-the-Go Enable */
+#define UDCCR_AALTHNP  (1 << 30)       /* A-device Alternate Host Negotiation
+                                          Protocol Port Support */
+#define UDCCR_AHNP     (1 << 29)       /* A-device Host Negotiation Protocol
+                                          Support */
+#define UDCCR_BHNP     (1 << 28)       /* B-device Host Negotiation Protocol
+                                          Enable */
+#define UDCCR_DWRE     (1 << 16)       /* Device Remote Wake-up Enable */
+#define UDCCR_ACN      (0x03 << 11)    /* Active UDC configuration Number */
+#define UDCCR_ACN_S    11
+#define UDCCR_AIN      (0x07 << 8)     /* Active UDC interface Number */
+#define UDCCR_AIN_S    8
+#define UDCCR_AAISN    (0x07 << 5)     /* Active UDC Alternate Interface
+                                          Setting Number */
+#define UDCCR_AAISN_S  5
+#define UDCCR_SMAC     (1 << 4)        /* Switch Endpoint Memory to Active
+                                          Configuration */
+#define UDCCR_EMCE     (1 << 3)        /* Endpoint Memory Configuration
+                                          Error */
+#define UDCCR_UDR      (1 << 2)        /* UDC Resume */
+#define UDCCR_UDA      (1 << 1)        /* UDC Active */
+#define UDCCR_UDE      (1 << 0)        /* UDC Enable */
+
+#define UDCICR0         __REG(0x40600004) /* UDC Interrupt Control Register0 */
+#define UDCICR1         __REG(0x40600008) /* UDC Interrupt Control Register1 */
+#define UDCICR_FIFOERR (1 << 1)        /* FIFO Error interrupt for EP */
+#define UDCICR_PKTCOMPL (1 << 0)       /* Packet Complete interrupt for EP */
+
+#define UDC_INT_FIFOERROR  (0x2)
+#define UDC_INT_PACKETCMP  (0x1)
+
+#define UDCICR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
+#define UDCICR1_IECC   (1 << 31)       /* IntEn - Configuration Change */
+#define UDCICR1_IESOF  (1 << 30)       /* IntEn - Start of Frame */
+#define UDCICR1_IERU   (1 << 29)       /* IntEn - Resume */
+#define UDCICR1_IESU   (1 << 28)       /* IntEn - Suspend */
+#define UDCICR1_IERS   (1 << 27)       /* IntEn - Reset */
+
+#define UDCISR0         __REG(0x4060000C) /* UDC Interrupt Status Register 0 */
+#define UDCISR1         __REG(0x40600010) /* UDC Interrupt Status Register 1 */
+#define UDCISR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
+#define UDCISR1_IRCC   (1 << 31)       /* IntReq - Configuration Change */
+#define UDCISR1_IRSOF  (1 << 30)       /* IntReq - Start of Frame */
+#define UDCISR1_IRRU   (1 << 29)       /* IntReq - Resume */
+#define UDCISR1_IRSU   (1 << 28)       /* IntReq - Suspend */
+#define UDCISR1_IRRS   (1 << 27)       /* IntReq - Reset */
+
+#define UDCFNR          __REG(0x40600014) /* UDC Frame Number Register */
+#define UDCOTGICR      __REG(0x40600018) /* UDC On-The-Go interrupt control */
+#define UDCOTGICR_IESF (1 << 24)       /* OTG SET_FEATURE command recvd */
+#define UDCOTGICR_IEXR (1 << 17)       /* Extra Transciever Interrupt
+                                          Rising Edge Interrupt Enable */
+#define UDCOTGICR_IEXF (1 << 16)       /* Extra Transciever Interrupt
+                                          Falling Edge Interrupt Enable */
+#define UDCOTGICR_IEVV40R (1 << 9)     /* OTG Vbus Valid 4.0V Rising Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IEVV40F (1 << 8)     /* OTG Vbus Valid 4.0V Falling Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IEVV44R (1 << 7)     /* OTG Vbus Valid 4.4V Rising Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IEVV44F (1 << 6)     /* OTG Vbus Valid 4.4V Falling Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IESVR        (1 << 5)        /* OTG Session Valid Rising Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IESVF        (1 << 4)        /* OTG Session Valid Falling Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IESDR        (1 << 3)        /* OTG A-Device SRP Detect Rising
+                                          Edge Interrupt Enable */
+#define UDCOTGICR_IESDF        (1 << 2)        /* OTG A-Device SRP Detect Falling
+                                          Edge Interrupt Enable */
+#define UDCOTGICR_IEIDR        (1 << 1)        /* OTG ID Change Rising Edge
+                                          Interrupt Enable */
+#define UDCOTGICR_IEIDF        (1 << 0)        /* OTG ID Change Falling Edge
+                                          Interrupt Enable */
+
+#define UP2OCR           __REG(0x40600020)  /* USB Port 2 Output Control register */
+
+#define UP2OCR_CPVEN   (1 << 0)        /* Charge Pump Vbus Enable */
+#define UP2OCR_CPVPE   (1 << 1)        /* Charge Pump Vbus Pulse Enable */
+#define UP2OCR_DPPDE   (1 << 2)        /* Host Port 2 Transceiver D+ Pull Down Enable */
+#define UP2OCR_DMPDE   (1 << 3)        /* Host Port 2 Transceiver D- Pull Down Enable */
+#define UP2OCR_DPPUE   (1 << 4)        /* Host Port 2 Transceiver D+ Pull Up Enable */
+#define UP2OCR_DMPUE   (1 << 5)        /* Host Port 2 Transceiver D- Pull Up Enable */
+#define UP2OCR_DPPUBE  (1 << 6)        /* Host Port 2 Transceiver D+ Pull Up Bypass Enable */
+#define UP2OCR_DMPUBE  (1 << 7)        /* Host Port 2 Transceiver D- Pull Up Bypass Enable */
+#define UP2OCR_EXSP            (1 << 8)        /* External Transceiver Speed Control */
+#define UP2OCR_EXSUS   (1 << 9)        /* External Transceiver Speed Enable */
+#define UP2OCR_IDON            (1 << 10)       /* OTG ID Read Enable */
+#define UP2OCR_HXS             (1 << 16)       /* Host Port 2 Transceiver Output Select */
+#define UP2OCR_HXOE            (1 << 17)       /* Host Port 2 Transceiver Output Enable */
+#define UP2OCR_SEOS            (1 << 24)       /* Single-Ended Output Select */
+
+#define UDCCSN(x)      __REG2(0x40600100, (x) << 2)
+#define UDCCSR0         __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
+#define UDCCSR0_SA     (1 << 7)        /* Setup Active */
+#define UDCCSR0_RNE    (1 << 6)        /* Receive FIFO Not Empty */
+#define UDCCSR0_FST    (1 << 5)        /* Force Stall */
+#define UDCCSR0_SST    (1 << 4)        /* Sent Stall */
+#define UDCCSR0_DME    (1 << 3)        /* DMA Enable */
+#define UDCCSR0_FTF    (1 << 2)        /* Flush Transmit FIFO */
+#define UDCCSR0_IPR    (1 << 1)        /* IN Packet Ready */
+#define UDCCSR0_OPC    (1 << 0)        /* OUT Packet Complete */
+
+#define UDCCSRA         __REG(0x40600104) /* UDC Control/Status register - Endpoint A */
+#define UDCCSRB         __REG(0x40600108) /* UDC Control/Status register - Endpoint B */
+#define UDCCSRC         __REG(0x4060010C) /* UDC Control/Status register - Endpoint C */
+#define UDCCSRD         __REG(0x40600110) /* UDC Control/Status register - Endpoint D */
+#define UDCCSRE         __REG(0x40600114) /* UDC Control/Status register - Endpoint E */
+#define UDCCSRF         __REG(0x40600118) /* UDC Control/Status register - Endpoint F */
+#define UDCCSRG         __REG(0x4060011C) /* UDC Control/Status register - Endpoint G */
+#define UDCCSRH         __REG(0x40600120) /* UDC Control/Status register - Endpoint H */
+#define UDCCSRI         __REG(0x40600124) /* UDC Control/Status register - Endpoint I */
+#define UDCCSRJ         __REG(0x40600128) /* UDC Control/Status register - Endpoint J */
+#define UDCCSRK         __REG(0x4060012C) /* UDC Control/Status register - Endpoint K */
+#define UDCCSRL         __REG(0x40600130) /* UDC Control/Status register - Endpoint L */
+#define UDCCSRM         __REG(0x40600134) /* UDC Control/Status register - Endpoint M */
+#define UDCCSRN         __REG(0x40600138) /* UDC Control/Status register - Endpoint N */
+#define UDCCSRP         __REG(0x4060013C) /* UDC Control/Status register - Endpoint P */
+#define UDCCSRQ         __REG(0x40600140) /* UDC Control/Status register - Endpoint Q */
+#define UDCCSRR         __REG(0x40600144) /* UDC Control/Status register - Endpoint R */
+#define UDCCSRS         __REG(0x40600148) /* UDC Control/Status register - Endpoint S */
+#define UDCCSRT         __REG(0x4060014C) /* UDC Control/Status register - Endpoint T */
+#define UDCCSRU         __REG(0x40600150) /* UDC Control/Status register - Endpoint U */
+#define UDCCSRV         __REG(0x40600154) /* UDC Control/Status register - Endpoint V */
+#define UDCCSRW         __REG(0x40600158) /* UDC Control/Status register - Endpoint W */
+#define UDCCSRX         __REG(0x4060015C) /* UDC Control/Status register - Endpoint X */
+
+#define UDCCSR_DPE     (1 << 9)        /* Data Packet Error */
+#define UDCCSR_FEF     (1 << 8)        /* Flush Endpoint FIFO */
+#define UDCCSR_SP      (1 << 7)        /* Short Packet Control/Status */
+#define UDCCSR_BNE     (1 << 6)        /* Buffer Not Empty (IN endpoints) */
+#define UDCCSR_BNF     (1 << 6)        /* Buffer Not Full (OUT endpoints) */
+#define UDCCSR_FST     (1 << 5)        /* Force STALL */
+#define UDCCSR_SST     (1 << 4)        /* Sent STALL */
+#define UDCCSR_DME     (1 << 3)        /* DMA Enable */
+#define UDCCSR_TRN     (1 << 2)        /* Tx/Rx NAK */
+#define UDCCSR_PC      (1 << 1)        /* Packet Complete */
+#define UDCCSR_FS      (1 << 0)        /* FIFO needs service */
+
+#define UDCBCN(x)      __REG2(0x40600200, (x)<<2)
+#define UDCBCR0         __REG(0x40600200) /* Byte Count Register - EP0 */
+#define UDCBCRA         __REG(0x40600204) /* Byte Count Register - EPA */
+#define UDCBCRB         __REG(0x40600208) /* Byte Count Register - EPB */
+#define UDCBCRC         __REG(0x4060020C) /* Byte Count Register - EPC */
+#define UDCBCRD         __REG(0x40600210) /* Byte Count Register - EPD */
+#define UDCBCRE         __REG(0x40600214) /* Byte Count Register - EPE */
+#define UDCBCRF         __REG(0x40600218) /* Byte Count Register - EPF */
+#define UDCBCRG         __REG(0x4060021C) /* Byte Count Register - EPG */
+#define UDCBCRH         __REG(0x40600220) /* Byte Count Register - EPH */
+#define UDCBCRI         __REG(0x40600224) /* Byte Count Register - EPI */
+#define UDCBCRJ         __REG(0x40600228) /* Byte Count Register - EPJ */
+#define UDCBCRK         __REG(0x4060022C) /* Byte Count Register - EPK */
+#define UDCBCRL         __REG(0x40600230) /* Byte Count Register - EPL */
+#define UDCBCRM         __REG(0x40600234) /* Byte Count Register - EPM */
+#define UDCBCRN         __REG(0x40600238) /* Byte Count Register - EPN */
+#define UDCBCRP         __REG(0x4060023C) /* Byte Count Register - EPP */
+#define UDCBCRQ         __REG(0x40600240) /* Byte Count Register - EPQ */
+#define UDCBCRR         __REG(0x40600244) /* Byte Count Register - EPR */
+#define UDCBCRS         __REG(0x40600248) /* Byte Count Register - EPS */
+#define UDCBCRT         __REG(0x4060024C) /* Byte Count Register - EPT */
+#define UDCBCRU         __REG(0x40600250) /* Byte Count Register - EPU */
+#define UDCBCRV         __REG(0x40600254) /* Byte Count Register - EPV */
+#define UDCBCRW         __REG(0x40600258) /* Byte Count Register - EPW */
+#define UDCBCRX         __REG(0x4060025C) /* Byte Count Register - EPX */
+
+#define UDCDN(x)       __REG2(0x40600300, (x)<<2)
+#define PHYS_UDCDN(x)  (0x40600300 + ((x)<<2))
+#define PUDCDN(x)      (volatile u32 *)(io_p2v(PHYS_UDCDN((x))))
+#define UDCDR0          __REG(0x40600300) /* Data Register - EP0 */
+#define UDCDRA          __REG(0x40600304) /* Data Register - EPA */
+#define UDCDRB          __REG(0x40600308) /* Data Register - EPB */
+#define UDCDRC          __REG(0x4060030C) /* Data Register - EPC */
+#define UDCDRD          __REG(0x40600310) /* Data Register - EPD */
+#define UDCDRE          __REG(0x40600314) /* Data Register - EPE */
+#define UDCDRF          __REG(0x40600318) /* Data Register - EPF */
+#define UDCDRG          __REG(0x4060031C) /* Data Register - EPG */
+#define UDCDRH          __REG(0x40600320) /* Data Register - EPH */
+#define UDCDRI          __REG(0x40600324) /* Data Register - EPI */
+#define UDCDRJ          __REG(0x40600328) /* Data Register - EPJ */
+#define UDCDRK          __REG(0x4060032C) /* Data Register - EPK */
+#define UDCDRL          __REG(0x40600330) /* Data Register - EPL */
+#define UDCDRM          __REG(0x40600334) /* Data Register - EPM */
+#define UDCDRN          __REG(0x40600338) /* Data Register - EPN */
+#define UDCDRP          __REG(0x4060033C) /* Data Register - EPP */
+#define UDCDRQ          __REG(0x40600340) /* Data Register - EPQ */
+#define UDCDRR          __REG(0x40600344) /* Data Register - EPR */
+#define UDCDRS          __REG(0x40600348) /* Data Register - EPS */
+#define UDCDRT          __REG(0x4060034C) /* Data Register - EPT */
+#define UDCDRU          __REG(0x40600350) /* Data Register - EPU */
+#define UDCDRV          __REG(0x40600354) /* Data Register - EPV */
+#define UDCDRW          __REG(0x40600358) /* Data Register - EPW */
+#define UDCDRX          __REG(0x4060035C) /* Data Register - EPX */
+
+#define UDCCN(x)       __REG2(0x40600400, (x)<<2)
+#define UDCCRA          __REG(0x40600404) /* Configuration register EPA */
+#define UDCCRB          __REG(0x40600408) /* Configuration register EPB */
+#define UDCCRC          __REG(0x4060040C) /* Configuration register EPC */
+#define UDCCRD          __REG(0x40600410) /* Configuration register EPD */
+#define UDCCRE          __REG(0x40600414) /* Configuration register EPE */
+#define UDCCRF          __REG(0x40600418) /* Configuration register EPF */
+#define UDCCRG          __REG(0x4060041C) /* Configuration register EPG */
+#define UDCCRH          __REG(0x40600420) /* Configuration register EPH */
+#define UDCCRI          __REG(0x40600424) /* Configuration register EPI */
+#define UDCCRJ          __REG(0x40600428) /* Configuration register EPJ */
+#define UDCCRK          __REG(0x4060042C) /* Configuration register EPK */
+#define UDCCRL          __REG(0x40600430) /* Configuration register EPL */
+#define UDCCRM          __REG(0x40600434) /* Configuration register EPM */
+#define UDCCRN          __REG(0x40600438) /* Configuration register EPN */
+#define UDCCRP          __REG(0x4060043C) /* Configuration register EPP */
+#define UDCCRQ          __REG(0x40600440) /* Configuration register EPQ */
+#define UDCCRR          __REG(0x40600444) /* Configuration register EPR */
+#define UDCCRS          __REG(0x40600448) /* Configuration register EPS */
+#define UDCCRT          __REG(0x4060044C) /* Configuration register EPT */
+#define UDCCRU          __REG(0x40600450) /* Configuration register EPU */
+#define UDCCRV          __REG(0x40600454) /* Configuration register EPV */
+#define UDCCRW          __REG(0x40600458) /* Configuration register EPW */
+#define UDCCRX          __REG(0x4060045C) /* Configuration register EPX */
+
+#define UDCCONR_CN     (0x03 << 25)    /* Configuration Number */
+#define UDCCONR_CN_S   (25)
+#define UDCCONR_IN     (0x07 << 22)    /* Interface Number */
+#define UDCCONR_IN_S   (22)
+#define UDCCONR_AISN   (0x07 << 19)    /* Alternate Interface Number */
+#define UDCCONR_AISN_S (19)
+#define UDCCONR_EN     (0x0f << 15)    /* Endpoint Number */
+#define UDCCONR_EN_S   (15)
+#define UDCCONR_ET     (0x03 << 13)    /* Endpoint Type: */
+#define UDCCONR_ET_S   (13)
+#define UDCCONR_ET_INT (0x03 << 13)    /*   Interrupt */
+#define UDCCONR_ET_BULK        (0x02 << 13)    /*   Bulk */
+#define UDCCONR_ET_ISO (0x01 << 13)    /*   Isochronous */
+#define UDCCONR_ET_NU  (0x00 << 13)    /*   Not used */
+#define UDCCONR_ED     (1 << 12)       /* Endpoint Direction */
+#define UDCCONR_MPS    (0x3ff << 2)    /* Maximum Packet Size */
+#define UDCCONR_MPS_S  (2)
+#define UDCCONR_DE     (1 << 1)        /* Double Buffering Enable */
+#define UDCCONR_EE     (1 << 0)        /* Endpoint Enable */
+
+
+#define UDC_INT_FIFOERROR  (0x2)
+#define UDC_INT_PACKETCMP  (0x1)
+
+#define UDC_FNR_MASK     (0x7ff)
+
+#define UDCCSR_WR_MASK   (UDCCSR_DME|UDCCSR_FST)
+#define UDC_BCR_MASK    (0x3ff)
+
+#endif