@ -35,6 +35,7 @@
# include <pmic.h>
# include <fsl_pmic.h>
# include <mc13892.h>
# include <usb/ehci-fsl.h>
DECLARE_GLOBAL_DATA_PTR ;
@ -172,6 +173,64 @@ static void setup_iomux_spi(void)
}
# endif
# ifdef CONFIG_USB_EHCI_MX5
# define MX51EVK_USBH1_HUB_RST IOMUX_TO_GPIO(MX51_PIN_GPIO1_7) /* GPIO1_7 */
# define MX51EVK_USBH1_STP IOMUX_TO_GPIO(MX51_PIN_USBH1_STP) /* GPIO1_27 */
# define MX51EVK_USB_CLK_EN_B IOMUX_TO_GPIO(MX51_PIN_EIM_D18) /* GPIO2_1 */
# define MX51EVK_USB_PHY_RESET IOMUX_TO_GPIO(MX51_PIN_EIM_D21) /* GPIO2_5 */
# define USBH1_PAD (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | \
PAD_CTL_100K_PU | PAD_CTL_PUE_PULL | \
PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE )
# define GPIO_PAD (PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | \
PAD_CTL_SRE_FAST )
# define NO_PAD (1 << 16)
static void setup_usb_h1 ( void )
{
setup_iomux_usb_h1 ( ) ;
/* GPIO_1_7 for USBH1 hub reset */
mxc_request_iomux ( MX51_PIN_GPIO1_7 , IOMUX_CONFIG_ALT0 ) ;
mxc_iomux_set_pad ( MX51_PIN_GPIO1_7 , NO_PAD ) ;
/* GPIO_2_1 */
mxc_request_iomux ( MX51_PIN_EIM_D17 , IOMUX_CONFIG_ALT1 ) ;
mxc_iomux_set_pad ( MX51_PIN_EIM_D17 , GPIO_PAD ) ;
/* GPIO_2_5 for USB PHY reset */
mxc_request_iomux ( MX51_PIN_EIM_D21 , IOMUX_CONFIG_ALT1 ) ;
mxc_iomux_set_pad ( MX51_PIN_EIM_D21 , GPIO_PAD ) ;
}
void board_ehci_hcd_init ( int port )
{
/* Set USBH1_STP to GPIO and toggle it */
mxc_request_iomux ( MX51_PIN_USBH1_STP , IOMUX_CONFIG_GPIO ) ;
mxc_iomux_set_pad ( MX51_PIN_USBH1_STP , USBH1_PAD ) ;
gpio_direction_output ( MX51EVK_USBH1_STP , 0 ) ;
gpio_direction_output ( MX51EVK_USB_PHY_RESET , 0 ) ;
mdelay ( 10 ) ;
gpio_set_value ( MX51EVK_USBH1_STP , 1 ) ;
/* Set back USBH1_STP to be function */
mxc_request_iomux ( MX51_PIN_USBH1_STP , IOMUX_CONFIG_ALT0 ) ;
mxc_iomux_set_pad ( MX51_PIN_USBH1_STP , USBH1_PAD ) ;
/* De-assert USB PHY RESETB */
gpio_set_value ( MX51EVK_USB_PHY_RESET , 1 ) ;
/* Drive USB_CLK_EN_B line low */
gpio_direction_output ( MX51EVK_USB_CLK_EN_B , 0 ) ;
/* Reset USB hub */
gpio_direction_output ( MX51EVK_USBH1_HUB_RST , 0 ) ;
mdelay ( 2 ) ;
gpio_set_value ( MX51EVK_USBH1_HUB_RST , 1 ) ;
}
# endif
static void power_init ( void )
{
unsigned int val ;
@ -394,6 +453,9 @@ int board_early_init_f(void)
{
setup_iomux_uart ( ) ;
setup_iomux_fec ( ) ;
# ifdef CONFIG_USB_EHCI_MX5
setup_usb_h1 ( ) ;
# endif
return 0 ;
}