imx:mx6sabresd add board level support for usb
PATCH 1/2 imx:mx6sabresd add board level support for usb
Add pinmux settings, implement board_ehci_hcd_init and board_ehci_power
Signed-off-by Peng Fan <[email protected]>
--- board/freescale/mx6sabresd/mx6sabresd.c | 68 +++++++++++++++++++++++++++++++++ include/configs/mx6sabresd.h | 14 +++++++ 2 files changed, 82 insertions(+)
board/freescale/mx6sabresd/mx6sabresd.c +68 -0
@@ -29,6 +29,7 @@#include <power/pfuze100_pmic.h> #include "../common/pfuze.h" #include <asm/arch/mx6-ddr.h> +#include <usb.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -537,6 +538,69 @@ int board_eth_init(bd_t *bis)return cpu_eth_init (bis); } +#ifdef CONFIG_USB_EHCI_MX6 +#define USB_OTHERREGS_OFFSET 0x800 +#define UCTRL_PWR_POL (1 << 9) + +static iomux_v3_cfg_t const usb_otg_pads[] = { +MX6_PAD_EIM_D22__USB_OTG_PWR |MUX_PAD_CTRL (NO_PAD_CTRL ), +MX6_PAD_ENET_RX_ER__USB_OTG_ID |MUX_PAD_CTRL (NO_PAD_CTRL ), +}; + +static iomux_v3_cfg_t const usb_hc1_pads[] = { +MX6_PAD_ENET_TXD1__GPIO1_IO29 |MUX_PAD_CTRL (NO_PAD_CTRL ), +}; + +static void setup_usb (void ) +{ +imx_iomux_v3_setup_multiple_pads (usb_otg_pads, +ARRAY_SIZE (usb_otg_pads)); + +/* +* set daisy chain for otg_pin_id on 6q. +* for 6dl, this bit is reserved +*/ +imx_iomux_set_gpr_register (1 ,13 ,1 ,0 ); + +imx_iomux_v3_setup_multiple_pads (usb_hc1_pads, +ARRAY_SIZE (usb_hc1_pads)); +} + +int board_ehci_hcd_init (int port) +{ +u32 *usbnc_usb_ctrl; + +if (port >1 ) +return -EINVAL ; + + usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR +USB_OTHERREGS_OFFSET + + port *4 ); + +setbits_le32 (usbnc_usb_ctrl,UCTRL_PWR_POL ); + +return 0 ; +} + +int board_ehci_power (int port,int on) +{ +switch (port) { +case 0 : +break ; +case 1 : +if (on) +gpio_direction_output (IMX_GPIO_NR (1 ,29 ),1 ); +else +gpio_direction_output (IMX_GPIO_NR (1 ,29 ),0 ); +break ; +default : +printf ("MXC USB port %d not yet supported\n" , port); +return -EINVAL ; + } + +return 0 ; +} +#endif +int board_early_init_f (void ) {setup_iomux_uart ();
@@ -557,6 +621,10 @@ int board_init(void)#endif setup_i2c (1 ,CONFIG_SYS_I2C_SPEED ,0x7f , &i2c_pad_info1); +#ifdef CONFIG_USB_EHCI_MX6 +setup_usb (); +#endif +return 0 ; }
include/configs/mx6sabresd.h +14 -0
@@ -60,4 +60,18 @@#define CONFIG_POWER_PFUZE100 #define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08 +/* USB Configs */ +#define CONFIG_CMD_USB +#ifdef CONFIG_CMD_USB +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_MX6 +#define CONFIG_USB_STORAGE +#define CONFIG_EHCI_HCD_INIT_AFTER_RESET +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_ASIX +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) +#define CONFIG_MXC_USB_FLAGS 0 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 1/* Enabled USB controller number */ +#endif +#endif /* __MX6QSABRESD_CONFIG_H */
Signature · 1 line
1.8.4
PATCH 2/2 imx:mx6qarm2 add board level support for usb
Add pinmux settings and implement board_ehci_hcd_init
Signed-off-by Peng Fan <[email protected]>
--- board/freescale/mx6qarm2/mx6qarm2.c | 42 +++++++++++++++++++++++++++++++++++++ include/configs/mx6qarm2.h | 14 +++++++++++++ 2 files changed, 56 insertions(+)
board/freescale/mx6qarm2/mx6qarm2.c +42 -0
@@ -16,6 +16,7 @@#include <fsl_esdhc.h> #include <miiphy.h> #include <netdev.h> +#include <usb.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -213,6 +214,43 @@ int board_eth_init(bd_t *bis)return 0 ; } +#ifdef CONFIG_USB_EHCI_MX6 +#define USB_OTHERREGS_OFFSET 0x800 +#define UCTRL_PWR_POL (1 << 9) + +static iomux_v3_cfg_t const usb_otg_pads[] = { +MX6_PAD_EIM_D22__USB_OTG_PWR |MUX_PAD_CTRL (NO_PAD_CTRL ), +MX6_PAD_GPIO_1__USB_OTG_ID |MUX_PAD_CTRL (NO_PAD_CTRL ), +}; + +static void setup_usb (void ) +{ +imx_iomux_v3_setup_multiple_pads (usb_otg_pads, +ARRAY_SIZE (usb_otg_pads)); + +/* +* set daisy chain for otg_pin_id on 6q. +* for 6dl, this bit is reserved +*/ +imx_iomux_set_gpr_register (1 ,13 ,1 ,1 ); +} + +int board_ehci_hcd_init (int port) +{ +u32 *usbnc_usb_ctrl; + +if (port >0 ) +return -EINVAL ; + + usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR +USB_OTHERREGS_OFFSET + + port *4 ); + +setbits_le32 (usbnc_usb_ctrl,UCTRL_PWR_POL ); + +return 0 ; +} +#endif +int board_early_init_f (void ) {setup_iomux_uart ();
@@ -226,6 +264,10 @@ int board_init(void)/* address of boot parameters */ gd->bd->bi_boot_params =PHYS_SDRAM +0x100 ; +#ifdef CONFIG_USB_EHCI_MX6 +setup_usb (); +#endif +return 0 ; }
include/configs/mx6qarm2.h +14 -0
@@ -189,4 +189,18 @@#define CONFIG_OF_LIBFDT #define CONFIG_CMD_BOOTZ +/* USB Configs */ +#define CONFIG_CMD_USB +#ifdef CONFIG_CMD_USB +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_MX6 +#define CONFIG_USB_STORAGE +#define CONFIG_EHCI_HCD_INIT_AFTER_RESET +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_ASIX +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) +#define CONFIG_MXC_USB_FLAGS 0 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 1 +#endif +#endif /* __CONFIG_H */
Signature · 1 line
1.8.4
PATCH 2/2 imx:mx6qarm2 add board level support for usb
Quoted 4 lines · Peng Fan
Add pinmux settings and implement
board_ehci_hcd_initSigned-off-by Peng Fan <[email protected]>---
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH 1/2 imx:mx6sabresd add board level support for usb
In reply to Peng FanQuoted 4 lines · Peng Fan
Add pinmux settings, implement
board_ehci_hcd_initandboard_ehci_powerSigned-off-by Peng Fan <[email protected]>---
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================