Re: [PATCH] ARM: dts: Configure USB host for 37xx-evm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi,

On 22/05/17 19:06, Tony Lindgren wrote:
> Looks like nobody bothered to configure USB host for 37xx-evm
> when we converted things to device tree, so let's add it. This
> is similar to beagleboard configuration with few extra quirks
> to configure the port. And as with beagleboard, OHCI won't work
> because there is no USB LS/FS PHY. A HS USB hub is needed to use
> devices like keyboard and mice.
> 
> Cc: Roger Quadros <rogerq@xxxxxx>
> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
> ---
>  arch/arm/boot/dts/omap3-evm-37xx.dts    | 82 +++++++++++++++++++++++++++++++++
>  arch/arm/boot/dts/omap3-evm-common.dtsi | 33 +++++++++++++
>  2 files changed, 115 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/omap3-evm-37xx.dts b/arch/arm/boot/dts/omap3-evm-37xx.dts
> --- a/arch/arm/boot/dts/omap3-evm-37xx.dts
> +++ b/arch/arm/boot/dts/omap3-evm-37xx.dts
> @@ -98,6 +98,32 @@
>  		>;
>  	};
>  
> +	hsusb2_pins: pinmux_hsusb2_pins {
> +		pinctrl-single,pins = <
> +
> +		/* On-board EHCI USB2 gpmc_nbe1.gpio_61 */
> +		OMAP3_CORE1_IOPAD(0x20c8, PIN_OUTPUT | MUX_MODE4)

GPIO_61 looks like nUSB2_EN_1V8 from you comment. This is PHY power related and not hsusb2 related
so it should be in a different group?

> +
> +		/* mcspi1_cs3.hsusb2_data2 */
> +		OMAP3_CORE1_IOPAD(0x21d4, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* mcspi2_clk.hsusb2_data7 */
> +		OMAP3_CORE1_IOPAD(0x21d6, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* mcspi2_simo.hsusb2_data4 */
> +		OMAP3_CORE1_IOPAD(0x21d8, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* mcspi2_somi.hsusb2_data5 */
> +		OMAP3_CORE1_IOPAD(0x21da, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* mcspi2_cs0.hsusb2_data6 */
> +		OMAP3_CORE1_IOPAD(0x21dc, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* mcspi2_cs1.hsusb2_data3 */
> +		OMAP3_CORE1_IOPAD(0x21de, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +		>;
> +	};
> +
>  	wl12xx_gpio: pinmux_wl12xx_gpio {
>  		pinctrl-single,pins = <
>  			OMAP3_CORE1_IOPAD(0x2180, PIN_OUTPUT | MUX_MODE4)		/* uart1_cts.gpio_150 */
> @@ -112,6 +138,37 @@
>  	};
>  };
>  
> +&omap3_pmx_core2 {
> +	hsusb2_2_pins: pinmux_hsusb2_2_pins {
> +		pinctrl-single,pins = <
> +
> +		/* EHCI PHY reset GPIO etk_d7.gpio_21 */
> +		OMAP3630_CORE2_IOPAD(0x25ea, PIN_OUTPUT | MUX_MODE4)

GPIO_21 is PHY RESET related and not hsusb2 related. Can we have this in a pin group for hsusb2_phy?

Also, hsusb2_pins and hsusb2_2_pins are both related to hsusb2. In omap3-beagle.dts
we don't assign them to any node and they are just setup once at boot by pincltrl default.

> +
> +		/* EHCI VBUS etk_d8.gpio_22 */
> +		OMAP3630_CORE2_IOPAD(0x25ec, PIN_OUTPUT | MUX_MODE4)

GPIO_21 is PHY power enable so can we have this in a pin group for hsusb2_power?

> +
> +		/* etk_d10.hsusb2_clk */
> +		OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3)
> +
> +		/* etk_d11.hsusb2_stp */
> +		OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3)
> +
> +		/* etk_d12.hsusb2_dir */
> +		OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* etk_d13.hsusb2_nxt */
> +		OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* etk_d14.hsusb2_data0 */
> +		OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +
> +		/* etk_d15.hsusb2_data1 */
> +		OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3)
> +		>;
> +	};
> +};
> +
>  &omap3_pmx_wkup {
>  	dss_dpi_pins2: pinmux_dss_dpi_pins1 {
>  		pinctrl-single,pins = <
> @@ -153,6 +210,31 @@
>  	pinctrl-0 = <&uart3_pins>;
>  };
>  
> +&hsusb2_power {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&hsusb2_pins &hsusb2_2_pins>;
> +};
> +
> +/* GPIO_61 (nUSB2_EN_1V8) low for on-board EHCI USB2 interface */
> +&gpio2 {
> +	en_hsusb2_clk {

Is this GPIO_61 enabling 1V8 supply or clk? Node name should be fixed accordingly.

> +		gpio-hog;
> +		gpios = <29 GPIO_ACTIVE_HIGH>;

Should this be be GPIO_61?
Does this need to be a hog?

> +		output-low;
> +		line-name = "hsusb2 port";

Can line name be more revealing? e.g. hsusb2 power or hsusb2 clock?

> +	};
> +};
> +
> +/* T2_GPIO_2 low to route GPIO_61 to on-board devices */
> +&twl_gpio {
> +	en_hsusb2_clk {
> +		gpio-hog;
> +		gpios = <2 GPIO_ACTIVE_HIGH>;
> +		output-low;
> +		line-name = "en_hsusb2_clk";
> +	};
> +};
> +
>  &gpmc {
>  	ranges = <0 0 0x30000000 0x1000000>,	/* CS0: 16MB for NAND */
>  		 <5 0 0x2c000000 0x01000000>;
> diff --git a/arch/arm/boot/dts/omap3-evm-common.dtsi b/arch/arm/boot/dts/omap3-evm-common.dtsi
> --- a/arch/arm/boot/dts/omap3-evm-common.dtsi
> +++ b/arch/arm/boot/dts/omap3-evm-common.dtsi
> @@ -12,6 +12,24 @@
>  		};
>  	};
>  
> +	/* HS USB Port 2 Power */
> +	hsusb2_power: hsusb2_power_reg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "hsusb2_vbus";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>; /* gpio_22 */
> +		startup-delay-us = <70000>;
> +		enable-active-high;
> +	};
> +
> +	/* HS USB Host PHY on PORT 2 */
> +	hsusb2_phy: hsusb2_phy {

Here we can put the PHY reset related pinmux group.

> +		compatible = "usb-nop-xceiv";
> +		reset-gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; /* gpio_21 */
> +		vcc-supply = <&hsusb2_power>;
> +	};
> +
>  	leds {
>  		compatible = "gpio-leds";
>  		ledb {
> @@ -143,6 +161,14 @@
>  			>;
>  };
>  
> +&usbhshost {
> +	port2-mode = "ehci-phy";
> +};
> +
> +&usbhsehci {
> +	phys = <0 &hsusb2_phy>;
> +};
> +
>  &usb_otg_hs {
>  	interface-type = <0>;
>  	usb-phy = <&usb2_phy>;
> @@ -159,3 +185,10 @@
>  		reg = <5 0 0xff>;
>  	};
>  };
> +
> +&vaux2 {
> +	regulator-name = "usb_1v8";
> +	regulator-min-microvolt = <1800000>;
> +	regulator-max-microvolt = <1800000>;
> +	regulator-always-on> +};
> 

-- 
cheers,
-roger
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux