From: Rosen Penev Date: Fri, 15 Nov 2024 23:22:42 +0000 (-0800) Subject: ramips: mt7621: use regulators for USB GPIO X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=079db0ab810e2bc70eeedf091f41a25760d5264f;p=thirdparty%2Fopenwrt.git ramips: mt7621: use regulators for USB GPIO Regulators as implemented by the XHCI driver only accept one GPIO. However, we can abuse the fact that the XHCI driver accepts two regulators, one for 5V and the other for 3.3V, for USB 2 and 3 GPIOs. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16967 Signed-off-by: Robert Marko --- diff --git a/target/linux/ramips/dts/mt7621_d-team_pbr-m1.dts b/target/linux/ramips/dts/mt7621_d-team_pbr-m1.dts index ffa405133b5..a0f8a621063 100644 --- a/target/linux/ramips/dts/mt7621_d-team_pbr-m1.dts +++ b/target/linux/ramips/dts/mt7621_d-team_pbr-m1.dts @@ -60,20 +60,26 @@ }; }; - gpio_export { - compatible = "gpio-export"; + reg_usb_vbus: regulator-usb { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; - power_usb2 { - gpio-export,name = "power_usb2"; - gpio-export,output = <1>; - gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; - }; + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; - power_usb3 { - gpio-export,name = "power_usb3"; - gpio-export,output = <1>; - gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; - }; + gpio_export { + compatible = "gpio-export"; power_sata { gpio-export,name = "power_sata"; @@ -102,6 +108,11 @@ status = "okay"; }; +&xhci { + vusb33-supply = <®_3p3v>; + vbus-supply = <®_usb_vbus>; +}; + &spi0 { status = "okay"; diff --git a/target/linux/ramips/dts/mt7621_dual-q_h721.dts b/target/linux/ramips/dts/mt7621_dual-q_h721.dts index 8b2df414173..3499e14f950 100644 --- a/target/linux/ramips/dts/mt7621_dual-q_h721.dts +++ b/target/linux/ramips/dts/mt7621_dual-q_h721.dts @@ -21,22 +21,6 @@ bootargs = "console=ttyS0,115200"; }; - gpio-export { - compatible = "gpio-export"; - - usb-30-power { - gpio-export,name = "usb-30-power"; - gpio-export,output = <0>; - gpios = <&gpio 22 GPIO_ACTIVE_LOW>; - }; - - usb-20-power { - gpio-export,name = "usb-20-power"; - gpio-export,output = <0>; - gpios = <&gpio 23 GPIO_ACTIVE_LOW>; - }; - }; - keys { compatible = "gpio-keys"; @@ -91,6 +75,27 @@ gpios = <&gpio 27 GPIO_ACTIVE_LOW>; }; }; + + reg_usb_vbus: regulator-usb { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio 23 GPIO_ACTIVE_LOW>; + }; +}; + +&xhci { + vusb33-supply = <®_3p3v>; + vbus-supply = <®_usb_vbus>; }; &spi0 { diff --git a/target/linux/ramips/dts/mt7621_lenovo_newifi-d1.dts b/target/linux/ramips/dts/mt7621_lenovo_newifi-d1.dts index a4d55a5e870..c43ed152f65 100644 --- a/target/linux/ramips/dts/mt7621_lenovo_newifi-d1.dts +++ b/target/linux/ramips/dts/mt7621_lenovo_newifi-d1.dts @@ -59,20 +59,22 @@ }; }; - gpio_export { - compatible = "gpio-export"; - - usb2power { - gpio-export,name = "usb2power"; - gpio-export,output = <1>; - gpios = <&gpio 9 GPIO_ACTIVE_HIGH>; - }; + reg_usb_vbus: regulator-usb { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; - usb3power { - gpio-export,name = "usb3power"; - gpio-export,output = <1>; - gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; - }; + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio 9 GPIO_ACTIVE_HIGH>; + enable-active-high; }; }; @@ -80,6 +82,11 @@ status = "okay"; }; +&xhci { + vusb33-supply = <®_3p3v>; + vbus-supply = <®_usb_vbus>; +}; + &spi0 { status = "okay"; diff --git a/target/linux/ramips/dts/mt7621_xzwifi_creativebox-v1.dts b/target/linux/ramips/dts/mt7621_xzwifi_creativebox-v1.dts index 00e4171d932..8830320954b 100644 --- a/target/linux/ramips/dts/mt7621_xzwifi_creativebox-v1.dts +++ b/target/linux/ramips/dts/mt7621_xzwifi_creativebox-v1.dts @@ -67,24 +67,35 @@ gpio_export { compatible = "gpio-export"; - power_usb2 { - gpio-export,name = "power_usb2"; - gpio-export,output = <1>; - gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; - }; - - power_usb3 { - gpio-export,name = "power_usb3"; - gpio-export,output = <1>; - gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; - }; - power_sata { gpio-export,name = "power_sata"; gpio-export,output = <1>; gpios = <&gpio 27 GPIO_ACTIVE_HIGH>; }; }; + + reg_usb_vbus: regulator-usb { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&xhci { + vusb33-supply = <®_3p3v>; + vbus-supply = <®_usb_vbus>; }; &spi0 {