xtensa: xtfpga: add CY7C67300 USB controller support
authorMax Filippov <jcmvbkbc@gmail.com>
Sun, 8 Sep 2013 02:58:38 +0000 (06:58 +0400)
committerMax Filippov <jcmvbkbc@gmail.com>
Mon, 13 Apr 2015 06:34:37 +0000 (09:34 +0300)
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/platforms/xtfpga/include/platform/hardware.h
arch/xtensa/platforms/xtfpga/setup.c

index 6edd20b..4dc6708 100644 (file)
@@ -62,4 +62,7 @@
                                /* 5*rx buffs + 5*tx buffs */
 #define OETH_SRAMBUFF_SIZE     (5 * 0x600 + 5 * 0x600)
 
+#define C67X00_PADDR           (XCHAL_KIO_PADDR + 0x0D0D0000)
+#define C67X00_SIZE            0x10
+#define C67X00_IRQ             5
 #endif /* __XTENSA_XTAVNET_HARDWARE_H */
index 57fd08b..b4cf70e 100644 (file)
@@ -189,6 +189,7 @@ void __init platform_calibrate_ccount(void)
 #include <linux/serial_8250.h>
 #include <linux/if.h>
 #include <net/ethoc.h>
+#include <linux/usb/c67x00.h>
 
 /*----------------------------------------------------------------------------
  *  Ethernet -- OpenCores Ethernet MAC (ethoc driver)
@@ -233,6 +234,38 @@ static struct platform_device ethoc_device = {
 };
 
 /*----------------------------------------------------------------------------
+ *  USB Host/Device -- Cypress CY7C67300
+ */
+
+static struct resource c67x00_res[] = {
+       [0] = { /* register space */
+               .start = C67X00_PADDR,
+               .end   = C67X00_PADDR + C67X00_SIZE - 1,
+               .flags = IORESOURCE_MEM,
+       },
+       [1] = { /* IRQ number */
+               .start = C67X00_IRQ,
+               .end   = C67X00_IRQ,
+               .flags = IORESOURCE_IRQ,
+       },
+};
+
+static struct c67x00_platform_data c67x00_pdata = {
+       .sie_config = C67X00_SIE1_HOST | C67X00_SIE2_UNUSED,
+       .hpi_regstep = 4,
+};
+
+static struct platform_device c67x00_device = {
+       .name = "c67x00",
+       .id = -1,
+       .num_resources = ARRAY_SIZE(c67x00_res),
+       .resource = c67x00_res,
+       .dev = {
+               .platform_data = &c67x00_pdata,
+       },
+};
+
+/*----------------------------------------------------------------------------
  *  UART
  */
 
@@ -268,6 +301,7 @@ static struct platform_device xtavnet_uart = {
 /* platform devices */
 static struct platform_device *platform_devices[] __initdata = {
        &ethoc_device,
+       &c67x00_device,
        &xtavnet_uart,
 };