[U-Boot] [PATCH v2 10/14] colibri-imx6ull: migrate usb to using driver model

Igor Opaniuk igor.opaniuk at toradex.com
Wed Apr 17 07:58:26 UTC 2019


Hi Marcel,

Just found out that to be able to use usbotg1 also in host mode this
change should be introduced:
--- a/arch/arm/dts/imx6ull-colibri.dts
+++ b/arch/arm/dts/imx6ull-colibri.dts
@@ -220,7 +220,7 @@

 /* Colibri USBC */
 &usbotg1 {
-       dr_mode = "otg";
+       dr_mode = "host";
        srp-disable;
        hnp-disable;
        adp-disable;

Without (tested with USB pendrive):
Colibri iMX6ULL # usb start
starting USB...
USB0:   USB1:   USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found


With (tested with USB pendrive):
Colibri iMX6ULL # usb start
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB EHCI 1.00
scanning bus 0 for devices... 2 USB Device(s) found
scanning bus 1 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found

On Tue, Apr 9, 2019 at 5:31 PM Marcel Ziswiler <marcel at ziswiler.com> wrote:
>
> From: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>
> Migrate USB to using driver model.
> Add USBH_PEN GPIO regulator.
> While at it also add alias e.g. as required for UMS.
>
> Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
> Reviewed-by: Igor Opaniuk <igor.opaniuk at toradex.com>
>
> ---
>
> Changes in v2:
> - Added Igor's reviewed-by.
>
>  arch/arm/dts/imx6ull-colibri.dts              | 24 ++++++++++
>  .../toradex/colibri-imx6ull/colibri-imx6ull.c | 48 -------------------
>  configs/colibri-imx6ull_defconfig             |  1 +
>  3 files changed, 25 insertions(+), 48 deletions(-)
>
> diff --git a/arch/arm/dts/imx6ull-colibri.dts b/arch/arm/dts/imx6ull-colibri.dts
> index 0d416ebd10..91e48aab61 100644
> --- a/arch/arm/dts/imx6ull-colibri.dts
> +++ b/arch/arm/dts/imx6ull-colibri.dts
> @@ -13,6 +13,7 @@
>
>         aliases {
>                 mmc0 = &usdhc1;
> +               usb0 = &usbotg1; /* required for ums */
>         };
>
>         chosen {
> @@ -35,6 +36,13 @@
>                 regulator-max-microvolt = <3300000>;
>         };
>
> +       reg_5v0: regulator-5v0 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "5V";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +       };
> +
>         reg_sd1_vmmc: regulator-sd1-vmmc {
>                 compatible = "regulator-gpio";
>                 gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
> @@ -47,6 +55,17 @@
>                 states = <1800000 0x1 3300000 0x0>;
>                 vin-supply = <&reg_module_3v3>;
>         };
> +
> +       reg_usbh_vbus: regulator-usbh-vbus {
> +               compatible = "regulator-fixed";
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&pinctrl_usbh_reg>;
> +               regulator-name = "VCC_USB[1-4]";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               gpio = <&gpio1 2 GPIO_ACTIVE_LOW>; /* USBH_PEN */
> +               vin-supply = <&reg_5v0>;
> +       };
>  };
>
>  &adc1 {
> @@ -183,15 +202,20 @@
>         fsl,dte-mode;
>  };
>
> +/* Colibri USBC */
>  &usbotg1 {
>         dr_mode = "otg";
>         srp-disable;
>         hnp-disable;
>         adp-disable;
> +       status = "okay";
>  };
>
> +/* Colibri USBH */
>  &usbotg2 {
>         dr_mode = "host";
> +       vbus-supply = <&reg_usbh_vbus>;
> +       status = "okay";
>  };
>
>  /* Colibri MMC */
> diff --git a/board/toradex/colibri-imx6ull/colibri-imx6ull.c b/board/toradex/colibri-imx6ull/colibri-imx6ull.c
> index c9af44e30e..21addaf6ed 100644
> --- a/board/toradex/colibri-imx6ull/colibri-imx6ull.c
> +++ b/board/toradex/colibri-imx6ull/colibri-imx6ull.c
> @@ -24,8 +24,6 @@
>  #include <miiphy.h>
>  #include <mtd_node.h>
>  #include <netdev.h>
> -#include <usb.h>
> -#include <usb/ehci-ci.h>
>
>  #include "../common/tdx-common.h"
>  #include "../common/tdx-cfg-block.h"
> @@ -41,8 +39,6 @@ DECLARE_GLOBAL_DATA_PTR;
>
>  #define NAND_PAD_READY0_CTRL (PAD_CTL_DSE_48ohm | PAD_CTL_PUS_22K_UP)
>
> -#define USB_CDET_GPIO  IMX_GPIO_NR(7, 14)
> -
>  int dram_init(void)
>  {
>         gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
> @@ -50,10 +46,6 @@ int dram_init(void)
>         return 0;
>  }
>
> -static iomux_v3_cfg_t const usb_cdet_pads[] = {
> -       MX6_PAD_SNVS_TAMPER2__GPIO5_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
> -};
> -
>  #ifdef CONFIG_NAND_MXS
>  static void setup_gpmi_nand(void)
>  {
> @@ -163,11 +155,6 @@ int board_init(void)
>         setup_lcd();
>  #endif
>
> -#ifdef CONFIG_USB_EHCI_MX6
> -       imx_iomux_v3_setup_multiple_pads(usb_cdet_pads, ARRAY_SIZE(usb_cdet_pads));
> -       gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
> -#endif
> -
>         return 0;
>  }
>
> @@ -241,41 +228,6 @@ int ft_board_setup(void *blob, bd_t *bd)
>  }
>  #endif
>
> -#ifdef CONFIG_USB_EHCI_MX6
> -static iomux_v3_cfg_t const usb_otg2_pads[] = {
> -               MX6_PAD_GPIO1_IO02__GPIO1_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
> -};
> -
> -int board_ehci_hcd_init(int port)
> -{
> -       switch (port) {
> -       case 0:
> -               break;
> -       case 1:
> -               imx_iomux_v3_setup_multiple_pads(usb_otg2_pads,
> -                                                ARRAY_SIZE(usb_otg2_pads));
> -               break;
> -       default:
> -               return -EINVAL;
> -       }
> -       return 0;
> -}
> -
> -int board_usb_phy_mode(int port)
> -{
> -       switch (port) {
> -       case 0:
> -               if (gpio_get_value(USB_CDET_GPIO))
> -                       return USB_INIT_DEVICE;
> -               else
> -                       return USB_INIT_HOST;
> -       case 1:
> -       default:
> -               return USB_INIT_HOST;
> -       }
> -}
> -#endif
> -
>  static struct mxc_serial_platdata mxc_serial_plat = {
>         .reg = (struct mxc_uart *)UART1_BASE,
>         .use_dte = 1,
> diff --git a/configs/colibri-imx6ull_defconfig b/configs/colibri-imx6ull_defconfig
> index 69305323f2..0440b4ed94 100644
> --- a/configs/colibri-imx6ull_defconfig
> +++ b/configs/colibri-imx6ull_defconfig
> @@ -71,6 +71,7 @@ CONFIG_DM_REGULATOR_FIXED=y
>  CONFIG_DM_SERIAL=y
>  CONFIG_MXC_UART=y
>  CONFIG_USB=y
> +CONFIG_DM_USB=y
>  CONFIG_USB_GADGET=y
>  CONFIG_USB_GADGET_MANUFACTURER="Toradex"
>  CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
> --
> 2.20.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



-- 
Best regards - Freundliche GrĂ¼sse - Meilleures salutations

Senior Development Engineer,
Igor Opaniuk

Toradex AG
Altsagenstrasse 5 | 6048 Horw/Luzern | Switzerland | T: +41 41 500 48
00 (main line)


More information about the U-Boot mailing list