ARM-i.MX6Q-dts : Added USB_OTG Support
Subsystems (2)
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
@@ -32,3 +32,7 @@ &usdhc3 { status = "okay"; }; + +&usbotg { + status = "okay"; +};
arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +22 -0
@@ -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 = <®_usb_otg_vbus>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbotg_1>; + disable-over-current; + status = "disabled"; +};
Signature · 1 line
1.7.9.5
PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support
Quoted 25 lines · Ashutosh singh
This patch adds support for
USB_OTGon Phytec phyFLEX-i.MX6 Quad module.Signed-off-by Ashutosh singh <[email protected]>--- 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@@ -32,3 +32,7 @@ &usdhc3 { status = "okay"; }; + +&usbotg { + status = "okay"; +};arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +0
-0
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.
Fabio Estevam
reviewerPATCH 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
@@ -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
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@@ -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
PATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support
In reply to Mark RutlandQuoted 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.
Sascha Hauer
maintainerPATCH 1/1 ARM-i.MX6Q-dts : Added USB_OTG Support
In reply to Ashutosh singhPlease 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_OTGon Phytec phyFLEX-i.MX6 Quad module.Signed-off-by Ashutosh singh <[email protected]>--- 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@@ -32,3 +32,7 @@ &usdhc3 { status = "okay"; }; + +&usbotg { + status = "okay"; +};arch/arm/boot/dts/imx6q-phytec-pfla02.dtsi +22
-0@@ -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 = <®_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 |