[U-Boot] [PATCH V2 11/11] colibri_vf: Enable board specific USB initialisation for USB pen gpio

Stefan Agner stefan at agner.ch
Mon Jun 1 12:25:13 CEST 2015


On 2015-06-01 10:51, Bhuvanchandra DV wrote:
> From: Sanchayan Maity <maitysanchayan at gmail.com>
> 
> Add IOMUX for the pad used as USB pen. This needs to be driven low for
> the Iris and Viola boards where it is pulled up high by default. This is
> required for the USB host functionality to work on these boards. Use the
> board specific weak initialisation function, to drive the pin low which
> would be called on "usb start".
> 
> Signed-off-by: Sanchayan Maity <maitysanchayan at gmail.com>
> ---
>  arch/arm/include/asm/arch-vf610/iomux-vf610.h |  1 +
>  board/toradex/colibri_vf/colibri_vf.c         | 25 +++++++++++++++++++++++++
>  2 files changed, 26 insertions(+)
> 
> diff --git a/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> b/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> index b8b22b1..019307b 100644
> --- a/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> +++ b/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> @@ -131,6 +131,7 @@ enum {
>  	VF610_PAD_PTD1__QSPI0_A_CS0		= IOMUX_PAD(0x0140, 0x0140, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
>  	VF610_PAD_PTD2__QSPI0_A_DATA3		= IOMUX_PAD(0x0144, 0x0144, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
>  	VF610_PAD_PTD3__QSPI0_A_DATA2		= IOMUX_PAD(0x0148, 0x0148, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
> +	VF610_PAD_PTD4__GPIO_83         = IOMUX_PAD(0x014C, 0x014C, 0,
> __NA_, 0, VF610_GPIO_PAD_CTRL),
>  	VF610_PAD_PTD4__QSPI0_A_DATA1		= IOMUX_PAD(0x014c, 0x014c, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
>  	VF610_PAD_PTD5__QSPI0_A_DATA0		= IOMUX_PAD(0x0150, 0x0150, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
>  	VF610_PAD_PTD7__QSPI0_B_QSCK		= IOMUX_PAD(0x0158, 0x0158, 1, __NA_,
> 0, VF610_QSPI_PAD_CTRL),
> diff --git a/board/toradex/colibri_vf/colibri_vf.c
> b/board/toradex/colibri_vf/colibri_vf.c
> index 7173022..8618fd0 100644
> --- a/board/toradex/colibri_vf/colibri_vf.c
> +++ b/board/toradex/colibri_vf/colibri_vf.c
> @@ -20,6 +20,7 @@
>  #include <netdev.h>
>  #include <i2c.h>
>  #include <g_dnl.h>
> +#include <asm/gpio.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -32,6 +33,12 @@ DECLARE_GLOBAL_DATA_PTR;
>  #define ENET_PAD_CTRL	(PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_HIGH | \
>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
>  
> +#define USB_PEN_GPIO           83
> +
> +static const iomux_v3_cfg_t usb_pads[] = {
> +	VF610_PAD_PTD4__GPIO_83,
> +};
> +
>  int dram_init(void)
>  {
>  	static const struct ddr3_jedec_timings timings = {
> @@ -464,3 +471,21 @@ int g_dnl_bind_fixup(struct usb_device_descriptor
> *dev, const char *name)
>  
>  	return 0;
>  }
> +
> +#ifdef CONFIG_USB_EHCI_VF
> +int board_ehci_hcd_init(int port)
> +{
> +	imx_iomux_v3_setup_multiple_pads(usb_pads, ARRAY_SIZE(usb_pads));
> +
> +	switch (port) {
> +	case 0:
> +		/* USBC does not have PEN, also configured as USB client only */
> +		break;
> +	case 1:
> +		gpio_request(USB_PEN_GPIO, "usb-pen-gpio");
> +		gpio_direction_output(USB_PEN_GPIO, 0);
> +		break;
> +	}
> +	return 0;
> +}
> +#endif

Acked-by: Stefan Agner <stefan at agner.ch>

--
Stefan



More information about the U-Boot mailing list