diff --git a/arch/arm/plat-mxc/ehci.c b/arch/arm/plat-mxc/ehci.c index 9915607..c600775 100644 --- a/arch/arm/plat-mxc/ehci.c +++ b/arch/arm/plat-mxc/ehci.c @@ -41,11 +41,14 @@ #define MX35_H1_SIC_SHIFT 21 #define MX35_H1_SIC_MASK (0x3 << MX35_H1_SIC_SHIFT) +#define MX35_H1_PP_HST_BIT (1 << 18) +#define MX35_H1_XCSH_BIT (1 << 9) #define MX35_H1_PM_BIT (1 << 8) #define MX35_H1_IPPUE_UP_BIT (1 << 7) #define MX35_H1_IPPUE_DOWN_BIT (1 << 6) #define MX35_H1_TLL_BIT (1 << 5) #define MX35_H1_USBTE_BIT (1 << 4) +#define MX35_H1_OCPOL_HST_BIT (1 << 2) #define MXC_OTG_OFFSET 0 #define MXC_H1_OFFSET 0x200 @@ -84,8 +87,10 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) break; case 1: /* H1 port */ - v &= ~(MX35_H1_SIC_MASK | MX35_H1_PM_BIT | MX35_H1_TLL_BIT | - MX35_H1_USBTE_BIT | MX35_H1_IPPUE_DOWN_BIT | MX35_H1_IPPUE_UP_BIT); + v &= ~(MX35_H1_SIC_MASK | MX35_H1_PM_BIT | \ + MX35_H1_TLL_BIT | MX35_H1_USBTE_BIT | \ + MX35_H1_IPPUE_DOWN_BIT | \ + MX35_H1_IPPUE_UP_BIT | MX35_H1_OCPOL_HST_BIT); v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX35_H1_SIC_SHIFT; if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) @@ -103,6 +108,15 @@ int mxc_initialize_usb_hw(int port, unsigned int flags) if (flags & MXC_EHCI_IPPUE_UP) v |= MX35_H1_IPPUE_UP_BIT; + if (flags & MXC_EHCI_PP_HST) + v |= MX35_H1_PP_HST_BIT; + + if (flags & MXC_EHCI_XCSH) + v |= MX35_H1_XCSH_BIT; + + if (!(flags & MXC_EHCI_OCPOL_HST)) + v |= MX35_H1_OCPOL_HST_BIT; + break; default: return -EINVAL; diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx25.h b/arch/arm/plat-mxc/include/mach/iomux-mx25.h index d7f52c9..b610e71 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx25.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx25.h @@ -254,6 +254,7 @@ #define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL) #define MX25_PAD_CONTRAST__PWM4_PWMO IOMUX_PAD(0x310, 0x118, 0x14, 0, 0, NO_PAD_CTRL) #define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTRL) +#define MX25_PAD_CONTRAST__USBH2_PWR IOMUX_PAD(0x310, 0x118, 0x16, 0, 0, NO_PAD_CTRL) #define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL) #define MX25_PAD_PWM__GPIO_1_26 IOMUX_PAD(0x314, 0x11c, 0x15, 0, 0, NO_PAD_CTRL) diff --git a/arch/arm/plat-mxc/include/mach/mxc_ehci.h b/arch/arm/plat-mxc/include/mach/mxc_ehci.h index 7fc5f99..cd4e4d6 100644 --- a/arch/arm/plat-mxc/include/mach/mxc_ehci.h +++ b/arch/arm/plat-mxc/include/mach/mxc_ehci.h @@ -25,8 +25,11 @@ #define MXC_EHCI_INTERNAL_PHY (1 << 7) #define MXC_EHCI_IPPUE_DOWN (1 << 8) #define MXC_EHCI_IPPUE_UP (1 << 9) -#define MXC_EHCI_WAKEUP_ENABLED (1 << 10) +#define MXC_EHCI_WAKEUP_ENABLED (1 << 10) #define MXC_EHCI_ITC_NO_THRESHOLD (1 << 11) +#define MXC_EHCI_PP_HST (1 << 12) +#define MXC_EHCI_XCSH (1 << 13) +#define MXC_EHCI_OCPOL_HST (1 << 14) #define MXC_USBCTRL_OFFSET 0 #define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8