From patchwork Tue Apr 24 03:18:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [11/11] MXS: Enable USB on M28EVK Date: Mon, 23 Apr 2012 17:18:43 -0000 From: Marek Vasut X-Patchwork-Id: 154575 Message-Id: <1335237523-9053-12-git-send-email-marex@denx.de> To: linux-arm-kernel@lists.infradead.org Cc: Marek Vasut , Li Frank-B20596 , Tony Lin , Lin Tony-B19295 , Detlev Zundel , Chen Peter-B29397 , Sascha Hauer , Linux USB , Stefano Babic , Wolfgang Denk , Shawn Guo , Fabio Estevam , Shawn Guo , Subodh Nijsure Enable the second USB port on M28EVK board. Signed-off-by: Marek Vasut Cc: Chen Peter-B29397 Cc: Detlev Zundel Cc: Fabio Estevam Cc: Li Frank-B20596 Cc: Lin Tony-B19295 Cc: Linux USB Cc: Sascha Hauer Cc: Shawn Guo Cc: Shawn Guo Cc: Stefano Babic Cc: Subodh Nijsure Cc: Tony Lin Cc: Wolfgang Denk --- arch/arm/mach-mxs/Kconfig | 2 ++ arch/arm/mach-mxs/mach-m28evk.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index c57f996..05f6e84 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig @@ -81,6 +81,8 @@ config MODULE_M28 select MXS_HAVE_PLATFORM_MXS_I2C select MXS_HAVE_PLATFORM_MXS_MMC select MXS_HAVE_PLATFORM_MXSFB + select MXS_HAVE_PLATFORM_USB + select USB_ARCH_HAS_EHCI select MXS_OCOTP config MODULE_APX4 diff --git a/arch/arm/mach-mxs/mach-m28evk.c b/arch/arm/mach-mxs/mach-m28evk.c index 06d7996..fe00921 100644 --- a/arch/arm/mach-mxs/mach-m28evk.c +++ b/arch/arm/mach-mxs/mach-m28evk.c @@ -39,6 +39,8 @@ #define MX28EVK_BL_ENABLE MXS_GPIO_NR(3, 18) #define M28EVK_LCD_ENABLE MXS_GPIO_NR(3, 28) +#define M28EVK_USB_ENABLE MXS_GPIO_NR(3, 13) +#define M28EVK_USBOTG_ENABLE MXS_GPIO_NR(3, 12) #define MX28EVK_MMC0_WRITE_PROTECT MXS_GPIO_NR(2, 12) #define MX28EVK_MMC1_WRITE_PROTECT MXS_GPIO_NR(0, 28) @@ -210,6 +212,16 @@ static const iomux_cfg_t m28evk_pads[] __initconst = { /* Backlight */ MX28_PAD_PWM3__GPIO_3_28 | MXS_PAD_CTRL, + + /* USB */ + MX28_PAD_SSP2_SS2__USB0_OVERCURRENT, + MX28_PAD_SSP2_SS1__USB1_OVERCURRENT, + MX28_PAD_PWM2__USB0_ID | + MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP, + MX28_PAD_AUART3_TX__GPIO_3_13 | + MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP, + MX28_PAD_AUART3_RX__GPIO_3_12 | + MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP, }; /* led */ @@ -317,6 +329,13 @@ static struct mxs_mmc_platform_data m28evk_mmc_pdata[] __initdata = { }, }; +static struct imx_usb_platform_data m28_usb_data = { + .gpio_vbus = M28EVK_USBOTG_ENABLE, + .gpio_vbus_inverted = 1, + .gadget_mode = 0, + .host_mode = 1, +}; + static void __init m28evk_init(void) { mxs_iomux_setup_multiple_pads(m28evk_pads, ARRAY_SIZE(m28evk_pads)); @@ -344,6 +363,8 @@ static void __init m28evk_init(void) mx28_add_mxs_i2c(0); i2c_register_board_info(0, m28_stk5v3_i2c_boardinfo, ARRAY_SIZE(m28_stk5v3_i2c_boardinfo)); + + mx28_add_mxs_usbh(0, &m28_usb_data); } static void __init m28evk_timer_init(void)