Loading arch/arm/mach-mx5/devices.c +23 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,29 @@ struct platform_device mxc_usbh1_device = { }, }; static struct resource usbh2_resources[] = { { .start = MX51_OTG_BASE_ADDR + 0x400, .end = MX51_OTG_BASE_ADDR + 0x400 + 0x1ff, .flags = IORESOURCE_MEM, }, { .start = MX51_MXC_INT_USB_H2, .flags = IORESOURCE_IRQ, }, }; struct platform_device mxc_usbh2_device = { .name = "mxc-ehci", .id = 2, .num_resources = ARRAY_SIZE(usbh2_resources), .resource = usbh2_resources, .dev = { .dma_mask = &usb_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), }, }; static struct resource mxc_kpp_resources[] = { { .start = MX51_MXC_INT_KPP, Loading arch/arm/mach-mx5/devices.h +1 −0 Original line number Diff line number Diff line extern struct platform_device mxc_usbdr_host_device; extern struct platform_device mxc_usbh1_device; extern struct platform_device mxc_usbh2_device; extern struct platform_device mxc_usbdr_udc_device; extern struct platform_device mxc_hsi2c_device; extern struct platform_device mxc_keypad_device; arch/arm/plat-mxc/ehci.c +25 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #define MXC_OTG_OFFSET 0 #define MXC_H1_OFFSET 0x200 #define MXC_H2_OFFSET 0x400 /* USB_CTRL */ #define MXC_OTG_UCTRL_OWIE_BIT (1 << 27) /* OTG wakeup intr enable */ Loading @@ -61,6 +62,11 @@ #define MXC_OTG_PHYCTRL_OC_DIS_BIT (1 << 8) /* OTG Disable Overcurrent Event */ #define MXC_H1_OC_DIS_BIT (1 << 5) /* UH1 Disable Overcurrent Event */ /* USBH2CTRL */ #define MXC_H2_UCTRL_H2UIE_BIT (1 << 8) #define MXC_H2_UCTRL_H2WIE_BIT (1 << 7) #define MXC_H2_UCTRL_H2PM_BIT (1 << 4) #define MXC_USBCMD_OFFSET 0x140 /* USBCMD */ Loading Loading @@ -266,6 +272,9 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) case 1: /* Host 1 port */ usbotg_base = usb_base + MXC_H1_OFFSET; break; case 2: /* Host 2 port */ usbotg_base = usb_base + MXC_H2_OFFSET; break; default: printk(KERN_ERR"%s no such port %d\n", __func__, port); ret = -ENOENT; Loading Loading @@ -329,6 +338,22 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) v &= MXC_UCMD_ITC_NO_THRESHOLD_MASK; __raw_writel(v, usbotg_base + MXC_USBCMD_OFFSET); break; case 2: /* Host 2 ULPI */ v = __raw_readl(usbother_base + MXC_USBH2CTRL_OFFSET); if (flags & MXC_EHCI_WAKEUP_ENABLED) { /* HOST1 wakeup/ULPI intr enable */ v |= (MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT); } else { /* HOST1 wakeup/ULPI intr disable */ v &= ~(MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT); } if (flags & MXC_EHCI_POWER_PINS_ENABLED) v &= ~MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask used*/ else v |= MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask used*/ __raw_writel(v, usbother_base + MXC_USBH2CTRL_OFFSET); break; } error: Loading arch/arm/plat-mxc/include/mach/mxc_ehci.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #define MXC_USBCTRL_OFFSET 0 #define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8 #define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc #define MXC_USBH2CTRL_OFFSET 0x14 #define MX5_USBOTHER_REGS_OFFSET 0x800 Loading Loading
arch/arm/mach-mx5/devices.c +23 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,29 @@ struct platform_device mxc_usbh1_device = { }, }; static struct resource usbh2_resources[] = { { .start = MX51_OTG_BASE_ADDR + 0x400, .end = MX51_OTG_BASE_ADDR + 0x400 + 0x1ff, .flags = IORESOURCE_MEM, }, { .start = MX51_MXC_INT_USB_H2, .flags = IORESOURCE_IRQ, }, }; struct platform_device mxc_usbh2_device = { .name = "mxc-ehci", .id = 2, .num_resources = ARRAY_SIZE(usbh2_resources), .resource = usbh2_resources, .dev = { .dma_mask = &usb_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), }, }; static struct resource mxc_kpp_resources[] = { { .start = MX51_MXC_INT_KPP, Loading
arch/arm/mach-mx5/devices.h +1 −0 Original line number Diff line number Diff line extern struct platform_device mxc_usbdr_host_device; extern struct platform_device mxc_usbh1_device; extern struct platform_device mxc_usbh2_device; extern struct platform_device mxc_usbdr_udc_device; extern struct platform_device mxc_hsi2c_device; extern struct platform_device mxc_keypad_device;
arch/arm/plat-mxc/ehci.c +25 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #define MXC_OTG_OFFSET 0 #define MXC_H1_OFFSET 0x200 #define MXC_H2_OFFSET 0x400 /* USB_CTRL */ #define MXC_OTG_UCTRL_OWIE_BIT (1 << 27) /* OTG wakeup intr enable */ Loading @@ -61,6 +62,11 @@ #define MXC_OTG_PHYCTRL_OC_DIS_BIT (1 << 8) /* OTG Disable Overcurrent Event */ #define MXC_H1_OC_DIS_BIT (1 << 5) /* UH1 Disable Overcurrent Event */ /* USBH2CTRL */ #define MXC_H2_UCTRL_H2UIE_BIT (1 << 8) #define MXC_H2_UCTRL_H2WIE_BIT (1 << 7) #define MXC_H2_UCTRL_H2PM_BIT (1 << 4) #define MXC_USBCMD_OFFSET 0x140 /* USBCMD */ Loading Loading @@ -266,6 +272,9 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) case 1: /* Host 1 port */ usbotg_base = usb_base + MXC_H1_OFFSET; break; case 2: /* Host 2 port */ usbotg_base = usb_base + MXC_H2_OFFSET; break; default: printk(KERN_ERR"%s no such port %d\n", __func__, port); ret = -ENOENT; Loading Loading @@ -329,6 +338,22 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) v &= MXC_UCMD_ITC_NO_THRESHOLD_MASK; __raw_writel(v, usbotg_base + MXC_USBCMD_OFFSET); break; case 2: /* Host 2 ULPI */ v = __raw_readl(usbother_base + MXC_USBH2CTRL_OFFSET); if (flags & MXC_EHCI_WAKEUP_ENABLED) { /* HOST1 wakeup/ULPI intr enable */ v |= (MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT); } else { /* HOST1 wakeup/ULPI intr disable */ v &= ~(MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT); } if (flags & MXC_EHCI_POWER_PINS_ENABLED) v &= ~MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask used*/ else v |= MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask used*/ __raw_writel(v, usbother_base + MXC_USBH2CTRL_OFFSET); break; } error: Loading
arch/arm/plat-mxc/include/mach/mxc_ehci.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #define MXC_USBCTRL_OFFSET 0 #define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8 #define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc #define MXC_USBH2CTRL_OFFSET 0x14 #define MX5_USBOTHER_REGS_OFFSET 0x800 Loading