[OpenWrt-Devel] [PATCH v2] ath79: use gpio_hog instead of gpio-export

Birger Koblitz mail at birger-koblitz.de
Tue Nov 5 10:29:18 EST 2019


Thanks Adrian for taking this up again!

Birger

On 5 November 2019 16:12:02 CET, Adrian Schmutzler <freifunk at adrianschmutzler.de> wrote:
>From: Birger Koblitz <mail at birger-koblitz.de>
>
>The gpio-export functionality is a hack for missing kernel
>functionality, which was rejected in upstream kernel long time ago,
>for details see this email
>http://lists.infradead.org/pipermail/openwrt-devel/2019-February/015772.html,
>discussion in PR#1366 or
>https://github.com/openwrt/openwrt/pull/1814#issuecomment-462942022.
>
>This patch converts all DTS files with settings that normally do
>not need user interaction, e.g. power for external USB ports, to
>gpio_hog. The only remaining gpio-export will be in
>qca9558_openmesh_om5p-ac-v2.dts
>
>Signed-off-by: Birger Koblitz <mail at birger-koblitz.de>
>[rebased, renamed nodes, do not change openmesh, removed redundant
>status=okay, updated commit message]
>Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
>
>---
>
>This is a resubmission of the patch initially created by Birger
>Koblitz. It should be limited to conversion that do not require
>the user setting the value.
>---
> .../dts/ar7161_buffalo_wzr-hp-ag300h.dts      | 19 ++++++------
> .../ath79/dts/ar7241_tplink_tl-mr3x20.dtsi    | 15 +++++-----
> .../ath79/dts/ar7241_tplink_tl-wr842n-v1.dts  | 19 +++++-------
> .../ath79/dts/ar7242_buffalo_wzr-bhr.dtsi     | 20 ++++++-------
> .../dts/ar7242_buffalo_wzr-hp-g302h-a1a0.dts  | 20 ++++++-------
> .../ath79/dts/ar9341_tplink_tl-wr842n-v2.dts  | 19 ++++++------
> .../ath79/dts/qca9558_devolo_dvl1750e.dts     | 15 +++++-----
> .../ath79/dts/qca9558_tplink_archer-c7.dtsi   | 30 +++++++++----------
> .../dts/qca9558_tplink_tl-wdr4900-v2.dts      | 28 +++++++++--------
> .../ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi | 20 +++++--------
> .../ath79/dts/qca9561_tplink_archer-c5x.dtsi  | 30 +++++++++----------
> .../ath79/dts/qca9563_dlink_dir-859-a1.dts    | 20 +++++--------
> .../ath79/dts/qca9563_tplink_archer-c7-v4.dts | 30 +++++++++----------
> .../dts/qca9563_tplink_archer-x7-v5.dtsi      | 17 +++++------
> .../dts/qca9563_tplink_tl-wr1043nd-v4.dts     | 16 +++++-----
> 15 files changed, 145 insertions(+), 173 deletions(-)
>
>diff --git a/target/linux/ath79/dts/ar7161_buffalo_wzr-hp-ag300h.dts
>b/target/linux/ath79/dts/ar7161_buffalo_wzr-hp-ag300h.dts
>index f51bc0f771..23f1845876 100644
>--- a/target/linux/ath79/dts/ar7161_buffalo_wzr-hp-ag300h.dts
>+++ b/target/linux/ath79/dts/ar7161_buffalo_wzr-hp-ag300h.dts
>@@ -120,16 +120,6 @@
> 		};
> 	};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_usb_power {
>-			gpio-export,name = "buffalo:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
>-
> 	flash {
> 		compatible = "mtd-concat";
> 
>@@ -172,6 +162,15 @@
> 	};
> };
> 
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "buffalo:power:usb";
>+		gpios = <2 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
>+};
>+
> &usb_phy {
> 	status = "okay";
> };
>diff --git a/target/linux/ath79/dts/ar7241_tplink_tl-mr3x20.dtsi
>b/target/linux/ath79/dts/ar7241_tplink_tl-mr3x20.dtsi
>index 04403637b6..333ee17ceb 100644
>--- a/target/linux/ath79/dts/ar7241_tplink_tl-mr3x20.dtsi
>+++ b/target/linux/ath79/dts/ar7241_tplink_tl-mr3x20.dtsi
>@@ -3,15 +3,14 @@
> #include "ar7241_tplink.dtsi"
> 
> / {
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>+};
> 
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
>-		};
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <6 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>diff --git a/target/linux/ath79/dts/ar7241_tplink_tl-wr842n-v1.dts
>b/target/linux/ath79/dts/ar7241_tplink_tl-wr842n-v1.dts
>index 162b5f2838..ee468df244 100644
>--- a/target/linux/ath79/dts/ar7241_tplink_tl-wr842n-v1.dts
>+++ b/target/linux/ath79/dts/ar7241_tplink_tl-wr842n-v1.dts
>@@ -66,15 +66,16 @@
> 			linux,default-trigger = "phy0tpt";
> 		};
> 	};
>+};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>+&gpio {
>+	status = "okay";
> 
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
>-		};
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <6 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>@@ -155,10 +156,6 @@
> 	mtd-mac-address-increment = <1>;
> };
> 
>-&gpio {
>-	status = "okay";
>-};
>-
> &uart {
> 	status = "okay";
> };
>diff --git a/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi
>b/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi
>index 3b5a4dd13d..d7632faf5c 100644
>--- a/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi
>+++ b/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi
>@@ -57,17 +57,6 @@
> 		};
> 	};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>-
>-		gpio_usb_power {
>-			gpio-export,name = "buffalo:usb-power";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
>-
> 	virtual_flash {
> 		compatible = "mtd-concat";
> 		devices = <&flash0 &flash1>;
>@@ -109,6 +98,15 @@
> 	};
> };
> 
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "buffalo:usb-power";
>+		gpios = <16 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
>+};
>+
> &spi {
> 	status = "okay";
> 	cs-gpios = <0>, <0>;
>diff --git
>a/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g302h-a1a0.dts
>b/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g302h-a1a0.dts
>index 8ac4df2194..2b30b7830b 100644
>--- a/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g302h-a1a0.dts
>+++ b/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g302h-a1a0.dts
>@@ -109,17 +109,6 @@
> 		};
> 	};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>-
>-		gpio_usb_power {
>-			gpio-export,name = "buffalo:usb-power";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
>-
> 	virtual_flash {
> 		compatible = "mtd-concat";
> 		devices = <&flash0 &flash1>;
>@@ -161,6 +150,15 @@
> 	};
> };
> 
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "buffalo:usb-power";
>+		gpios = <13 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
>+};
>+
> &spi {
> 	status = "okay";
> 	cs-gpios = <0>, <0>;
>diff --git a/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
>b/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
>index 86a316b518..1df0e27cb2 100644
>--- a/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
>+++ b/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
>@@ -6,16 +6,6 @@
> / {
> 	model = "TP-Link TL-WR842N/ND v2";
> 	compatible = "tplink,tl-wr842n-v2", "qca,ar9341";
>-
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
> };
> 
> &keys {
>@@ -36,6 +26,15 @@
> 	};
> };
> 
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <4 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
>+};
>+
> &spi {
> 	num-cs = <1>;
> 
>diff --git a/target/linux/ath79/dts/qca9558_devolo_dvl1750e.dts
>b/target/linux/ath79/dts/qca9558_devolo_dvl1750e.dts
>index 3d25004c40..e790cf0df4 100644
>--- a/target/linux/ath79/dts/qca9558_devolo_dvl1750e.dts
>+++ b/target/linux/ath79/dts/qca9558_devolo_dvl1750e.dts
>@@ -53,15 +53,14 @@
> 		compatible = "gpio-beeper";
> 		gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
> 	};
>+};
> 
>-	gpio_export {
>-		compatible = "gpio-export";
>-
>-		gpio_usb_power {
>-			gpio-export,name = "devolo:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
>-		};
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "devolo:power:usb";
>+		gpios = <11 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c7.dtsi
>b/target/linux/ath79/dts/qca9558_tplink_archer-c7.dtsi
>index c77613dad6..fb38f35dc1 100644
>--- a/target/linux/ath79/dts/qca9558_tplink_archer-c7.dtsi
>+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c7.dtsi
>@@ -64,22 +64,6 @@
> 			debounce-interval = <60>;
> 		};
> 	};
>-
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_usb1_power {
>-			gpio-export,name = "tp-link:power:usb1";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
>-		};
>-
>-		gpio_usb2_power {
>-			gpio-export,name = "tp-link:power:usb2";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
> };
> 
> &pcie1 {
>@@ -92,6 +76,20 @@
> 
> &gpio {
> 	status = "okay";
>+
>+	usb1_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb1";
>+		gpios = <21 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
>+
>+	usb2_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb2";
>+		gpios = <22 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
> };
> 
> &usb_phy0 {
>diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wdr4900-v2.dts
>b/target/linux/ath79/dts/qca9558_tplink_tl-wdr4900-v2.dts
>index 77166b8bfe..470b742578 100644
>--- a/target/linux/ath79/dts/qca9558_tplink_tl-wdr4900-v2.dts
>+++ b/target/linux/ath79/dts/qca9558_tplink_tl-wdr4900-v2.dts
>@@ -57,7 +57,7 @@
> 		};
> 	};
> 
>-	 ath9k-leds {
>+	ath9k-leds {
> 		compatible = "gpio-leds";
> 
> 		wlan5g {
>@@ -77,21 +77,23 @@
> 			debounce-interval = <60>;
> 		};
> 	};
>+};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>+&gpio {
>+	status = "okay";
> 
>-		gpio_usb1_power {
>-			gpio-export,name = "tp-link:power:usb1";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
>-		};
>+	usb1_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb1";
>+		gpios = <21 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
> 
>-		gpio_usb2_power {
>-			gpio-export,name = "tp-link:power:usb2";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
>-		};
>+	usb2_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb2";
>+		gpios = <22 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi
>b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi
>index 1092250f02..f6d34ab3ff 100644
>--- a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi
>+++ b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi
>@@ -64,16 +64,16 @@
> 			debounce-interval = <60>;
> 		};
> 	};
>+};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>+&gpio {
>+	status = "okay";
> 
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
>-		};
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <21 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>@@ -81,10 +81,6 @@
> 	status = "okay";
> };
> 
>-&gpio {
>-	status = "okay";
>-};
>-
> &usb_phy0 {
> 	status = "okay";
> };
>diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
>b/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
>index ddf92108b5..53329f2268 100644
>--- a/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
>+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
>@@ -103,22 +103,6 @@
> 			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
> 		};
> 	};
>-
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_shift_register_oe {
>-			gpio-export,name = "tp-link:oe:sr";
>-			gpio-export,output = <0>;
>-			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
>-		};
>-
>-		gpio_shift_register_reset {
>-			gpio-export,name = "tp-link:reset:sr";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
> };
> 
> &uart {
>@@ -127,6 +111,20 @@
> 
> &gpio {
> 	status = "okay";
>+
>+	shift_register_oe {
>+		gpio-hog;
>+		line-name = "tp-link:oe:sr";
>+		gpios = <16 GPIO_ACTIVE_HIGH>;
>+		output-low;
>+	};
>+
>+	shift_register_reset {
>+		gpio-hog;
>+		line-name = "tp-link:reset:sr";
>+		gpios = <19 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
> };
> 
> &pcie {
>diff --git a/target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
>b/target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
>index a17d9f263a..63baa376c6 100644
>--- a/target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
>+++ b/target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
>@@ -61,16 +61,16 @@
> 			debounce-interval = <60>;
> 		};
> 	};
>+};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>+&gpio {
>+	status = "okay";
> 
>-		gpio_switch_reset {
>-			gpio-export,name = "dir-859-a1:reset:switch";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
>-		};
>+	switch_reset {
>+		gpio-hog;
>+		line-name = "dir-859-a1:reset:switch";
>+		gpios = <11 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>@@ -78,10 +78,6 @@
> 	status = "okay";
> };
> 
>-&gpio {
>-	status = "okay";
>-};
>-
> &pcie {
> 	status = "okay";
> };
>diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-c7-v4.dts
>b/target/linux/ath79/dts/qca9563_tplink_archer-c7-v4.dts
>index 470a8e6bf9..66083aa7f9 100644
>--- a/target/linux/ath79/dts/qca9563_tplink_archer-c7-v4.dts
>+++ b/target/linux/ath79/dts/qca9563_tplink_archer-c7-v4.dts
>@@ -42,22 +42,6 @@
> 		};
> 	};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_shift_register_oe {
>-			gpio-export,name = "tp-link:oe:sr";
>-			gpio-export,output = <0>;
>-			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;	// 74HC595 /OE (Output Enable)
>-		};
>-
>-		gpio_shift_register_reset {
>-			gpio-export,name = "tp-link:reset:sr";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;	// 74HC595 /SRCLR (Serial
>Clear)
>-		};
>-	};
>-
> 	leds {
> 		compatible = "gpio-leds";
> 
>@@ -158,6 +142,20 @@
> 
> &gpio {
> 	status = "okay";
>+
>+	shift_register_oe { // 74HC595 /OE
>+		gpio-hog;
>+		line-name = "tp-link:oe:sr";
>+		gpios = <1 GPIO_ACTIVE_LOW>;
>+		output-low;
>+	};
>+
>+	shift_register_reset { // 74HC595 /SRCLR
>+		gpio-hog;
>+		line-name = "tp-link:reset:sr";
>+		gpios = <21 GPIO_ACTIVE_LOW>;
>+		output-high;
>+	};
> };
> 
> &usb_phy0 {
>diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
>b/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
>index 2e66e0f03e..64115c4248 100644
>--- a/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
>+++ b/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
>@@ -93,16 +93,6 @@
> 			debounce-interval = <60>;
> 		};
> 	};
>-
>-	gpio-export {
>-		compatible = "gpio-export";
>-
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
>-		};
>-	};
> };
> 
> &pcie {
>@@ -115,6 +105,13 @@
> 
> &gpio {
> 	status = "okay";
>+
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <19 GPIO_ACTIVE_HIGH>;
>+		output-high;
>+	};
> };
> 
> &usb_phy0 {
>diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
>b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
>index 07a7409886..45ee0c21c7 100644
>--- a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
>+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
>@@ -6,16 +6,14 @@
> / {
> 	compatible = "tplink,tl-wr1043nd-v4", "qca,qca9563";
> 	model = "TP-Link TL-WR1043ND v4";
>+};
> 
>-	gpio-export {
>-		compatible = "gpio-export";
>-		#size-cells = <0>;
>-
>-		gpio_usb_power {
>-			gpio-export,name = "tp-link:power:usb";
>-			gpio-export,output = <1>;
>-			gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
>-		};
>+&gpio {
>+	usb_power {
>+		gpio-hog;
>+		line-name = "tp-link:power:usb";
>+		gpios = <8 GPIO_ACTIVE_HIGH>;
>+		output-high;
> 	};
> };
> 
>-- 
>2.20.1
>
>
>_______________________________________________
>openwrt-devel mailing list
>openwrt-devel at lists.openwrt.org
>https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20191105/2b8cf674/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list