Skip to contentSkip to conversation

ARM-i.MX6Q-dts : Added USB_OTG Support

PATCH New Ashutosh singh 5 participants 6 messages Jan 24, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

This patch adds support for USB_OTG on Phytec phyFLEX-i.MX6 Quad module.

---
 arch/arm/boot/dts/imx6q-phytec-pbab01.dts  |    4 ++++
 arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi |   22 ++++++++++++++++++++++
 2 files changed, 26 insertions(+)
arch/arm/boot/dts/imx6q-phytec-pbab01.dts +4 -0
index 7d37ec6..39e69bd 100644
@@ -32,3 +32,7 @@
 &usdhc3 {
 	status = "okay";
 };
+
+&usbotg {
+	status = "okay";
+};
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +22 -0
index 1a3b50d..dcb1d59 100644
@@ -18,6 +18,19 @@
 	memory {
 		reg = <0x10000000 0x80000000>;
 	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio4 15 0>;
+			enable-active-low;
+		};
+	};
 };
 
 &ecspi3 {
@@ -134,6 +147,7 @@
 				MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000
 				MX6QDL_PAD_DISP0_DAT3__GPIO4_IO24 0x80000000 /* SPI NOR chipselect */
 				MX6QDL_PAD_DI0_PIN15__GPIO4_IO17  0x80000000 /* PMIC interrupt */
+				MX6QDL_PAD_KEY_ROW4__GPIO4_IO15   0x80000000 /* USB_OTG_PWR_EN */
 			>;
 		};
 	};
@@ -178,3 +192,11 @@
         wp-gpios = <&gpio1 29 0>;
         status = "disabled";
 };
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_1>;
+	disable-over-current;
+	status = "disabled";
+};
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

Quoted 25 lines · Ashutosh singh

This patch adds support for USB_OTG on Phytec phyFLEX-i.MX6 Quad module.

---
 arch/arm/boot/dts/imx6q-phytec-pbab01.dts  |    4 ++++
 arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi |   22 ++++++++++++++++++++++
 2 files changed, 26 insertions(+)
arch/arm/boot/dts/imx6q-phytec-pbab01.dts +4 -0
index 7d37ec6..39e69bd 100644
@@ -32,3 +32,7 @@
 &usdhc3 {
 	status = "okay";
 };
+
+&usbotg {
+	status = "okay";
+};
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +0 -0
index 1a3b50d..dcb1d59 100644

arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi line 23

Quoted 6 lines
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +3 -0
@@ -18,6 +18,19 @@
 	memory {
 		reg = <0x10000000 0x80000000>;
 	};
+
+	regulators {
+		compatible = "simple-bus";

This is _not_ a simple bus. It doesn't have the required ranges property.

Why do these need to be in a regulators container node? We don't group dma controllers under a dmas node, or uarts under a uarts node.

arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi line 34

Quoted 11 lines
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +10 -0
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio4 15 0>;
+			enable-active-low;
+		};
+	};
 };

Thanks,
Mark.

reviewer
#2 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

Hi Mark,

Quoted 9 lines · Mark Rutland

Review

Quoted 3 lines
(quoted diff) +3 -0
+
+     regulators {
+             compatible = "simple-bus";

This is _not_ a simple bus. It doesn't have the required ranges property.

Why do these need to be in a regulators container node? We don't group dma controllers under a dmas node, or uarts under a uarts node.

It seems we have this same issue on several imx6 dts files.

Would the below address your suggestion?

arch/arm/boot/dts/imx6qdl-sabresd.dtsi +21 -25
index e75e11b..ba35560 100644
@@ -15,33 +15,29 @@
                reg = <0x10000000 0x40000000>;
        };
 
-       regulators {
-               compatible = "simple-bus";
-
-               reg_usb_otg_vbus: usb_otg_vbus {
-                       compatible = "regulator-fixed";
-                       regulator-name = "usb_otg_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio3 22 0>;
-                       enable-active-high;
-               };
+       reg_usb_otg_vbus: regulator at 0 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio3 22 0>;
+               enable-active-high;
+       };
 
-               reg_usb_h1_vbus: usb_h1_vbus {
-                       compatible = "regulator-fixed";
-                       regulator-name = "usb_h1_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio1 29 0>;
-                       enable-active-high;
-               };
+       reg_usb_h1_vbus: regulator at 1 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio1 29 0>;
+               enable-active-high;
+       };
 
-               reg_audio: wm8962_supply {
-                       compatible = "regulator-fixed";
-                       regulator-name = "wm8962-supply";
-                       gpio = <&gpio4 10 0>;
-                       enable-active-high;
-               };
+       reg_audio: regulator at 2 {
+               compatible = "regulator-fixed";
+               regulator-name = "wm8962-supply";
+               gpio = <&gpio4 10 0>;
+               enable-active-high;
        };
 
        gpio-keys {

If so, I will prepare some patches to update other dts files.

Thanks,

Fabio Estevam

#3 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

Quoted 11 lines · Fabio Estevam

Hi Mark,

Quoted 7 lines · Mark Rutland

Review

Quoted 3 lines
(quoted diff) +3 -0
+
+     regulators {
+             compatible = "simple-bus";

This is _not_ a simple bus. It doesn't have the required ranges property.

Quoted 6 lines
Quoted 2 lines

Why do these need to be in a regulators container node? We don't group dma controllers under a dmas node, or uarts under a uarts node.

It seems we have this same issue on several imx6 dts files.

Would the below address your suggestion?

The below patch looks good to me.

In general there seems to be a misunderstanding of the purpose of simple-bus, as an annotation that children of a node should be probed, rather than as a representation of a simple bus (which is of the same type as the parent-bus, which requires no programming, where children can be used without knowledge of the simple-bus).

There seem to be a lot of cases where simple-bus is used as a fallback compatible string, when in reality the node's children make no sense without information from and/or programming of the node with the simple-bus property. Those cases are completely wrong, and a complete abuse of simple-bus.

There are other cases where simple-bus nodes are used to group nodes from a commonly reused block. As long as these have the requisite ranges, #address-cells, and #size-cells, then they are valid, and make sense for translating / widening addresses for common groups of peripherals even if they're not on a different physical bus.

I don't see the point in grouping together nodes in an artificial container because of their functionality rather than their topology, it seems to breed confusion.

Cheers,
Mark.

Quoted 67 lines
arch/arm/boot/dts/imx6qdl-sabresd.dtsi +21 -25
index e75e11b..ba35560 100644
@@ -15,33 +15,29 @@
                reg = <0x10000000 0x40000000>;
        };
 
-       regulators {
-               compatible = "simple-bus";
-
-               reg_usb_otg_vbus: usb_otg_vbus {
-                       compatible = "regulator-fixed";
-                       regulator-name = "usb_otg_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio3 22 0>;
-                       enable-active-high;
-               };
+       reg_usb_otg_vbus: regulator at 0 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio3 22 0>;
+               enable-active-high;
+       };
 
-               reg_usb_h1_vbus: usb_h1_vbus {
-                       compatible = "regulator-fixed";
-                       regulator-name = "usb_h1_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio1 29 0>;
-                       enable-active-high;
-               };
+       reg_usb_h1_vbus: regulator at 1 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio1 29 0>;
+               enable-active-high;
+       };
 
-               reg_audio: wm8962_supply {
-                       compatible = "regulator-fixed";
-                       regulator-name = "wm8962-supply";
-                       gpio = <&gpio4 10 0>;
-                       enable-active-high;
-               };
+       reg_audio: regulator at 2 {
+               compatible = "regulator-fixed";
+               regulator-name = "wm8962-supply";
+               gpio = <&gpio4 10 0>;
+               enable-active-high;
        };
 
        gpio-keys {

If so, I will prepare some patches to update other dts files.

Thanks,

Fabio Estevam

#4 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

In reply to Mark Rutland
Quoted 10 lines · Mark Rutland

arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi line 23

Quoted 7 lines
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +3 -0
@@ -18,6 +18,19 @@
 	memory {
 		reg = <0x10000000 0x80000000>;
 	};
+
+	regulators {
+		compatible = "simple-bus";

This is _not_ a simple bus. It doesn't have the required ranges property.

Maybe the real question is that if the required ranges property is missing, why kernel still accepts it as a simple bus and populate the devices under it?

Quoted 3 lines

Why do these need to be in a regulators container node? We don't group dma controllers under a dmas node, or uarts under a uarts node.

Grouping fixed clocks under 'clocks' and fixed regulators under 'regulators' is a common pattern which can be found on most of the ARM dts files.

Shawn

Quoted 15 lines

arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi line 34

Quoted 12 lines
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +10 -0
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio4 15 0>;
+			enable-active-low;
+		};
+	};
 };

Thanks,
Mark.

maintainer
#5 lore raw

PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support

In reply to Ashutosh singh

Please add Phytec phyFLEX-i.MX6 to the subject. I assumed some SoC specific changes here.

Sascha

Quoted 72 lines · Ashutosh singh

This patch adds support for USB_OTG on Phytec phyFLEX-i.MX6 Quad module.

---
 arch/arm/boot/dts/imx6q-phytec-pbab01.dts  |    4 ++++
 arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi |   22 ++++++++++++++++++++++
 2 files changed, 26 insertions(+)
arch/arm/boot/dts/imx6q-phytec-pbab01.dts +4 -0
index 7d37ec6..39e69bd 100644
@@ -32,3 +32,7 @@
 &usdhc3 {
 	status = "okay";
 };
+
+&usbotg {
+	status = "okay";
+};
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +22 -0
index 1a3b50d..dcb1d59 100644
@@ -18,6 +18,19 @@
 	memory {
 		reg = <0x10000000 0x80000000>;
 	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb_otg_vbus: usb_otg_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb_otg_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio4 15 0>;
+			enable-active-low;
+		};
+	};
 };
 
 &ecspi3 {
@@ -134,6 +147,7 @@
 				MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000
 				MX6QDL_PAD_DISP0_DAT3__GPIO4_IO24 0x80000000 /* SPI NOR chipselect */
 				MX6QDL_PAD_DI0_PIN15__GPIO4_IO17  0x80000000 /* PMIC interrupt */
+				MX6QDL_PAD_KEY_ROW4__GPIO4_IO15   0x80000000 /* USB_OTG_PWR_EN */
 			>;
 		};
 	};
@@ -178,3 +192,11 @@
         wp-gpios = <&gpio1 29 0>;
         status = "disabled";
 };
+
+&usbotg {
+	vbus-supply = <&reg_usb_otg_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg_1>;
+	disable-over-current;
+	status = "disabled";
+};
Signature · 6 lines
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Signature · 4 lines
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |