|
@@ -181,3 +181,121 @@ static struct resource udc_resources[] = {
|
|
|
.start = INT_USB_IRQ_GEN,
|
|
|
.flags = IORESOURCE_IRQ,
|
|
|
}, { /* PIO IRQ */
|
|
|
+ .start = INT_USB_IRQ_NISO,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ }, { /* SOF IRQ */
|
|
|
+ .start = INT_USB_IRQ_ISO,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static u64 udc_dmamask = ~(u32)0;
|
|
|
+
|
|
|
+static struct platform_device udc_device = {
|
|
|
+ .name = "omap_udc",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &udc_dmamask,
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(udc_resources),
|
|
|
+ .resource = udc_resources,
|
|
|
+};
|
|
|
+
|
|
|
+static inline void udc_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+ /* IRQ numbers for omap7xx */
|
|
|
+ if(cpu_is_omap7xx()) {
|
|
|
+ udc_resources[1].start = INT_7XX_USB_GENI;
|
|
|
+ udc_resources[2].start = INT_7XX_USB_NON_ISO;
|
|
|
+ udc_resources[3].start = INT_7XX_USB_ISO;
|
|
|
+ }
|
|
|
+ pdata->udc_device = &udc_device;
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+static inline void udc_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
|
|
|
+
|
|
|
+/* The dmamask must be set for OHCI to work */
|
|
|
+static u64 ohci_dmamask = ~(u32)0;
|
|
|
+
|
|
|
+static struct resource ohci_resources[] = {
|
|
|
+ {
|
|
|
+ .start = OMAP_OHCI_BASE,
|
|
|
+ .end = OMAP_OHCI_BASE + 0xff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .start = INT_USB_IRQ_HGEN,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device ohci_device = {
|
|
|
+ .name = "ohci",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &ohci_dmamask,
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(ohci_resources),
|
|
|
+ .resource = ohci_resources,
|
|
|
+};
|
|
|
+
|
|
|
+static inline void ohci_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+ if (cpu_is_omap7xx())
|
|
|
+ ohci_resources[1].start = INT_7XX_USB_HHC_1;
|
|
|
+ pdata->ohci_device = &ohci_device;
|
|
|
+ pdata->ocpi_enable = &ocpi_enable;
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+static inline void ohci_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_USB_OTG) && defined(CONFIG_ARCH_OMAP_OTG)
|
|
|
+
|
|
|
+static struct resource otg_resources[] = {
|
|
|
+ /* order is significant! */
|
|
|
+ {
|
|
|
+ .start = OTG_BASE,
|
|
|
+ .end = OTG_BASE + 0xff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ }, {
|
|
|
+ .start = INT_USB_IRQ_OTG,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device otg_device = {
|
|
|
+ .name = "omap_otg",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(otg_resources),
|
|
|
+ .resource = otg_resources,
|
|
|
+};
|
|
|
+
|
|
|
+static inline void otg_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+ if (cpu_is_omap7xx())
|
|
|
+ otg_resources[1].start = INT_7XX_USB_OTG;
|
|
|
+ pdata->otg_device = &otg_device;
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+static inline void otg_device_init(struct omap_usb_config *pdata)
|
|
|
+{
|
|
|
+}
|
|
|
+
|