2023-12-27 18:33:25

by Johan Jonker

[permalink] [raw]
Subject: [PATCH v3 1/2] ARM: dts: rockchip: add gpio-ranges property to gpio nodes

Add a gpio-ranges property to Rockchip gpio nodes similar to
rk356x/rk3588 to be independent from aliases and probe order.

Signed-off-by: Johan Jonker <[email protected]>
Reviewed-by: Kever Yang <[email protected]>
---

Changed V3:
reword
rebase to new Rockchip directory
remove unknown properties
---
arch/arm/boot/dts/rockchip/rk3036.dtsi | 3 +++
arch/arm/boot/dts/rockchip/rk3066a.dtsi | 6 ++++++
arch/arm/boot/dts/rockchip/rk3128.dtsi | 4 ++++
arch/arm/boot/dts/rockchip/rk3188.dtsi | 4 ++++
arch/arm/boot/dts/rockchip/rk322x.dtsi | 4 ++++
arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 +++++++++
arch/arm/boot/dts/rockchip/rv1108.dtsi | 4 ++++
arch/arm/boot/dts/rockchip/rv1126.dtsi | 5 +++++
8 files changed, 39 insertions(+)

diff --git a/arch/arm/boot/dts/rockchip/rk3036.dtsi b/arch/arm/boot/dts/rockchip/rk3036.dtsi
index 2b00109bea6a..6e5028b6dbfa 100644
--- a/arch/arm/boot/dts/rockchip/rk3036.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3036.dtsi
@@ -593,6 +593,7 @@ gpio0: gpio@2007c000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -606,6 +607,7 @@ gpio1: gpio@20080000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -619,6 +621,7 @@ gpio2: gpio@20084000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rk3066a.dtsi b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
index 30139f21de64..a4962b6b3f4c 100644
--- a/arch/arm/boot/dts/rockchip/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
@@ -285,6 +285,7 @@ gpio0: gpio@20034000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -298,6 +299,7 @@ gpio1: gpio@2003c000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -311,6 +313,7 @@ gpio2: gpio@2003e000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -324,6 +327,7 @@ gpio3: gpio@20080000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -337,6 +341,7 @@ gpio4: gpio@20084000 {
clocks = <&cru PCLK_GPIO4>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 128 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -350,6 +355,7 @@ gpio6: gpio@2000a000 {
clocks = <&cru PCLK_GPIO6>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 192 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rk3128.dtsi b/arch/arm/boot/dts/rockchip/rk3128.dtsi
index e2264c40b924..d66fcf12032e 100644
--- a/arch/arm/boot/dts/rockchip/rk3128.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3128.dtsi
@@ -712,6 +712,7 @@ gpio0: gpio@2007c000 {
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO0>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -723,6 +724,7 @@ gpio1: gpio@20080000 {
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO1>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -734,6 +736,7 @@ gpio2: gpio@20084000 {
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO2>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -745,6 +748,7 @@ gpio3: gpio@20088000 {
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO3>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
diff --git a/arch/arm/boot/dts/rockchip/rk3188.dtsi b/arch/arm/boot/dts/rockchip/rk3188.dtsi
index 44b54af0bbf9..6677e4a10e5d 100644
--- a/arch/arm/boot/dts/rockchip/rk3188.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3188.dtsi
@@ -231,6 +231,7 @@ gpio0: gpio@2000a000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -244,6 +245,7 @@ gpio1: gpio@2003c000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -257,6 +259,7 @@ gpio2: gpio@2003e000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -270,6 +273,7 @@ gpio3: gpio@20080000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rk322x.dtsi b/arch/arm/boot/dts/rockchip/rk322x.dtsi
index 831561fc1814..0d4f9957b99b 100644
--- a/arch/arm/boot/dts/rockchip/rk322x.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk322x.dtsi
@@ -959,6 +959,7 @@ gpio0: gpio@11110000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -972,6 +973,7 @@ gpio1: gpio@11120000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -985,6 +987,7 @@ gpio2: gpio@11130000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -998,6 +1001,7 @@ gpio3: gpio@11140000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
index ead343dc3df1..c5550aae4ed8 100644
--- a/arch/arm/boot/dts/rockchip/rk3288.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi
@@ -1461,6 +1461,7 @@ gpio0: gpio@ff750000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1474,6 +1475,7 @@ gpio1: gpio@ff780000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1487,6 +1489,7 @@ gpio2: gpio@ff790000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1500,6 +1503,7 @@ gpio3: gpio@ff7a0000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1513,6 +1517,7 @@ gpio4: gpio@ff7b0000 {
clocks = <&cru PCLK_GPIO4>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 128 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1526,6 +1531,7 @@ gpio5: gpio@ff7c0000 {
clocks = <&cru PCLK_GPIO5>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 160 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1539,6 +1545,7 @@ gpio6: gpio@ff7d0000 {
clocks = <&cru PCLK_GPIO6>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 192 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1552,6 +1559,7 @@ gpio7: gpio@ff7e0000 {
clocks = <&cru PCLK_GPIO7>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 224 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1565,6 +1573,7 @@ gpio8: gpio@ff7f0000 {
clocks = <&cru PCLK_GPIO8>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 256 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rv1108.dtsi b/arch/arm/boot/dts/rockchip/rv1108.dtsi
index abf3006f0a84..d12b97ee7588 100644
--- a/arch/arm/boot/dts/rockchip/rv1108.dtsi
+++ b/arch/arm/boot/dts/rockchip/rv1108.dtsi
@@ -602,6 +602,7 @@ gpio0: gpio@20030000 {
clocks = <&cru PCLK_GPIO0_PMU>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -615,6 +616,7 @@ gpio1: gpio@10310000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -628,6 +630,7 @@ gpio2: gpio@10320000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -641,6 +644,7 @@ gpio3: gpio@10330000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm/boot/dts/rockchip/rv1126.dtsi b/arch/arm/boot/dts/rockchip/rv1126.dtsi
index bb603cae13df..71d091af6395 100644
--- a/arch/arm/boot/dts/rockchip/rv1126.dtsi
+++ b/arch/arm/boot/dts/rockchip/rv1126.dtsi
@@ -569,6 +569,7 @@ gpio0: gpio@ff460000 {
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -580,6 +581,7 @@ gpio1: gpio@ff620000 {
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -591,6 +593,7 @@ gpio2: gpio@ff630000 {
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -602,6 +605,7 @@ gpio3: gpio@ff640000 {
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -613,6 +617,7 @@ gpio4: gpio@ff650000 {
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 128 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
--
2.39.2



2023-12-27 18:35:15

by Johan Jonker

[permalink] [raw]
Subject: [PATCH v3 2/2] arm64: dts: rockchip: add gpio-ranges property to gpio nodes

Add a gpio-ranges property to Rockchip gpio nodes similar to
rk356x/rk3588 to be independent from aliases and probe order.

Signed-off-by: Johan Jonker <[email protected]>
Reviewed-by: Kever Yang <[email protected]>
---

Changed V3:
reword
remove rk356x part
---
arch/arm64/boot/dts/rockchip/px30.dtsi | 4 ++++
arch/arm64/boot/dts/rockchip/rk3308.dtsi | 5 +++++
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 4 ++++
arch/arm64/boot/dts/rockchip/rk3368.dtsi | 4 ++++
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 5 +++++
5 files changed, 22 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
index d0905515399b..27d045296388 100644
--- a/arch/arm64/boot/dts/rockchip/px30.dtsi
+++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
@@ -1394,6 +1394,7 @@ gpio0: gpio@ff040000 {
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&pmucru PCLK_GPIO0_PMU>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1406,6 +1407,7 @@ gpio1: gpio@ff250000 {
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO1>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1418,6 +1420,7 @@ gpio2: gpio@ff260000 {
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO2>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1430,6 +1433,7 @@ gpio3: gpio@ff270000 {
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO3>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm64/boot/dts/rockchip/rk3308.dtsi b/arch/arm64/boot/dts/rockchip/rk3308.dtsi
index cfc0a87b5195..09fda512c101 100644
--- a/arch/arm64/boot/dts/rockchip/rk3308.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3308.dtsi
@@ -804,6 +804,7 @@ gpio0: gpio@ff220000 {
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO0>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -815,6 +816,7 @@ gpio1: gpio@ff230000 {
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO1>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -826,6 +828,7 @@ gpio2: gpio@ff240000 {
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO2>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -837,6 +840,7 @@ gpio3: gpio@ff250000 {
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO3>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
@@ -848,6 +852,7 @@ gpio4: gpio@ff260000 {
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO4>;
gpio-controller;
+ gpio-ranges = <&pinctrl 0 128 32>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
index fb5dcf6e9327..2cead2e85c07 100644
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
@@ -1058,6 +1058,7 @@ gpio0: gpio@ff210000 {
clocks = <&cru PCLK_GPIO0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1071,6 +1072,7 @@ gpio1: gpio@ff220000 {
clocks = <&cru PCLK_GPIO1>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1084,6 +1086,7 @@ gpio2: gpio@ff230000 {
clocks = <&cru PCLK_GPIO2>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <2>;

interrupt-controller;
@@ -1097,6 +1100,7 @@ gpio3: gpio@ff240000 {
clocks = <&cru PCLK_GPIO3>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <2>;

interrupt-controller;
diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi
index 62af0cb94839..2a017c862263 100644
--- a/arch/arm64/boot/dts/rockchip/rk3368.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3368.dtsi
@@ -987,6 +987,7 @@ gpio0: gpio@ff750000 {
interrupts = <GIC_SPI 0x51 IRQ_TYPE_LEVEL_HIGH>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -1000,6 +1001,7 @@ gpio1: gpio@ff780000 {
interrupts = <GIC_SPI 0x52 IRQ_TYPE_LEVEL_HIGH>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -1013,6 +1015,7 @@ gpio2: gpio@ff790000 {
interrupts = <GIC_SPI 0x53 IRQ_TYPE_LEVEL_HIGH>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -1026,6 +1029,7 @@ gpio3: gpio@ff7a0000 {
interrupts = <GIC_SPI 0x54 IRQ_TYPE_LEVEL_HIGH>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <0x2>;

interrupt-controller;
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index 6e12c5a920ca..206f7d54d4d0 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -2138,6 +2138,7 @@ gpio0: gpio@ff720000 {
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH 0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 0 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -2151,6 +2152,7 @@ gpio1: gpio@ff730000 {
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH 0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 32 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -2164,6 +2166,7 @@ gpio2: gpio@ff780000 {
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH 0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 64 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -2177,6 +2180,7 @@ gpio3: gpio@ff788000 {
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH 0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 96 32>;
#gpio-cells = <0x2>;

interrupt-controller;
@@ -2190,6 +2194,7 @@ gpio4: gpio@ff790000 {
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH 0>;

gpio-controller;
+ gpio-ranges = <&pinctrl 0 128 32>;
#gpio-cells = <0x2>;

interrupt-controller;
--
2.39.2


2023-12-28 16:31:23

by Jonas Karlman

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] ARM: dts: rockchip: add gpio-ranges property to gpio nodes

Hi Johan,

On 2023-12-27 19:33, Johan Jonker wrote:
> Add a gpio-ranges property to Rockchip gpio nodes similar to
> rk356x/rk3588 to be independent from aliases and probe order.
>
> Signed-off-by: Johan Jonker <[email protected]>
> Reviewed-by: Kever Yang <[email protected]>
> ---
>
> Changed V3:
> reword
> rebase to new Rockchip directory
> remove unknown properties
> ---
> arch/arm/boot/dts/rockchip/rk3036.dtsi | 3 +++
> arch/arm/boot/dts/rockchip/rk3066a.dtsi | 6 ++++++
> arch/arm/boot/dts/rockchip/rk3128.dtsi | 4 ++++
> arch/arm/boot/dts/rockchip/rk3188.dtsi | 4 ++++
> arch/arm/boot/dts/rockchip/rk322x.dtsi | 4 ++++
> arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 +++++++++
> arch/arm/boot/dts/rockchip/rv1108.dtsi | 4 ++++
> arch/arm/boot/dts/rockchip/rv1126.dtsi | 5 +++++
> 8 files changed, 39 insertions(+)
>
> diff --git a/arch/arm/boot/dts/rockchip/rk3036.dtsi b/arch/arm/boot/dts/rockchip/rk3036.dtsi
> index 2b00109bea6a..6e5028b6dbfa 100644
> --- a/arch/arm/boot/dts/rockchip/rk3036.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk3036.dtsi
> @@ -593,6 +593,7 @@ gpio0: gpio@2007c000 {
> clocks = <&cru PCLK_GPIO0>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -606,6 +607,7 @@ gpio1: gpio@20080000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -619,6 +621,7 @@ gpio2: gpio@20084000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rk3066a.dtsi b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
> index 30139f21de64..a4962b6b3f4c 100644
> --- a/arch/arm/boot/dts/rockchip/rk3066a.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
> @@ -285,6 +285,7 @@ gpio0: gpio@20034000 {
> clocks = <&cru PCLK_GPIO0>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -298,6 +299,7 @@ gpio1: gpio@2003c000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -311,6 +313,7 @@ gpio2: gpio@2003e000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -324,6 +327,7 @@ gpio3: gpio@20080000 {
> clocks = <&cru PCLK_GPIO3>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -337,6 +341,7 @@ gpio4: gpio@20084000 {
> clocks = <&cru PCLK_GPIO4>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 128 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -350,6 +355,7 @@ gpio6: gpio@2000a000 {
> clocks = <&cru PCLK_GPIO6>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 192 32>;

It does not look like this matches what pins the pinctrl driver expose
for rk3066a. Something like <&pinctrl 0 160 16> would probably be more
correct.

> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rk3128.dtsi b/arch/arm/boot/dts/rockchip/rk3128.dtsi
> index e2264c40b924..d66fcf12032e 100644
> --- a/arch/arm/boot/dts/rockchip/rk3128.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk3128.dtsi
> @@ -712,6 +712,7 @@ gpio0: gpio@2007c000 {
> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO0>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -723,6 +724,7 @@ gpio1: gpio@20080000 {
> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO1>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -734,6 +736,7 @@ gpio2: gpio@20084000 {
> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO2>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -745,6 +748,7 @@ gpio3: gpio@20088000 {
> interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO3>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> diff --git a/arch/arm/boot/dts/rockchip/rk3188.dtsi b/arch/arm/boot/dts/rockchip/rk3188.dtsi
> index 44b54af0bbf9..6677e4a10e5d 100644
> --- a/arch/arm/boot/dts/rockchip/rk3188.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk3188.dtsi
> @@ -231,6 +231,7 @@ gpio0: gpio@2000a000 {
> clocks = <&cru PCLK_GPIO0>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -244,6 +245,7 @@ gpio1: gpio@2003c000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -257,6 +259,7 @@ gpio2: gpio@2003e000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -270,6 +273,7 @@ gpio3: gpio@20080000 {
> clocks = <&cru PCLK_GPIO3>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rk322x.dtsi b/arch/arm/boot/dts/rockchip/rk322x.dtsi
> index 831561fc1814..0d4f9957b99b 100644
> --- a/arch/arm/boot/dts/rockchip/rk322x.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk322x.dtsi
> @@ -959,6 +959,7 @@ gpio0: gpio@11110000 {
> clocks = <&cru PCLK_GPIO0>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -972,6 +973,7 @@ gpio1: gpio@11120000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -985,6 +987,7 @@ gpio2: gpio@11130000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -998,6 +1001,7 @@ gpio3: gpio@11140000 {
> clocks = <&cru PCLK_GPIO3>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
> index ead343dc3df1..c5550aae4ed8 100644
> --- a/arch/arm/boot/dts/rockchip/rk3288.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi
> @@ -1461,6 +1461,7 @@ gpio0: gpio@ff750000 {
> clocks = <&cru PCLK_GPIO0>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;

The pinctrl driver for rk3288 only expose 24 pins for the first bank,
correct range would probably be <&pinctrl 0 0 24> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1474,6 +1475,7 @@ gpio1: gpio@ff780000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;

and correct range would probably be <&pinctrl 0 24 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1487,6 +1489,7 @@ gpio2: gpio@ff790000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;

and <&pinctrl 0 56 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1500,6 +1503,7 @@ gpio3: gpio@ff7a0000 {
> clocks = <&cru PCLK_GPIO3>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;

and <&pinctrl 0 88 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1513,6 +1517,7 @@ gpio4: gpio@ff7b0000 {
> clocks = <&cru PCLK_GPIO4>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 128 32>;

and <&pinctrl 0 120 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1526,6 +1531,7 @@ gpio5: gpio@ff7c0000 {
> clocks = <&cru PCLK_GPIO5>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 160 32>;

and <&pinctrl 0 152 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1539,6 +1545,7 @@ gpio6: gpio@ff7d0000 {
> clocks = <&cru PCLK_GPIO6>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 192 32>;

and <&pinctrl 0 184 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1552,6 +1559,7 @@ gpio7: gpio@ff7e0000 {
> clocks = <&cru PCLK_GPIO7>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 224 32>;

and <&pinctrl 0 216 32> here,

> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -1565,6 +1573,7 @@ gpio8: gpio@ff7f0000 {
> clocks = <&cru PCLK_GPIO8>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 256 32>;

and bank num 8 only expose 16 pins, so <&pinctrl 0 248 16> here.

> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rv1108.dtsi b/arch/arm/boot/dts/rockchip/rv1108.dtsi
> index abf3006f0a84..d12b97ee7588 100644
> --- a/arch/arm/boot/dts/rockchip/rv1108.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rv1108.dtsi
> @@ -602,6 +602,7 @@ gpio0: gpio@20030000 {
> clocks = <&cru PCLK_GPIO0_PMU>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -615,6 +616,7 @@ gpio1: gpio@10310000 {
> clocks = <&cru PCLK_GPIO1>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -628,6 +630,7 @@ gpio2: gpio@10320000 {
> clocks = <&cru PCLK_GPIO2>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> @@ -641,6 +644,7 @@ gpio3: gpio@10330000 {
> clocks = <&cru PCLK_GPIO3>;
>
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
>
> interrupt-controller;
> diff --git a/arch/arm/boot/dts/rockchip/rv1126.dtsi b/arch/arm/boot/dts/rockchip/rv1126.dtsi
> index bb603cae13df..71d091af6395 100644
> --- a/arch/arm/boot/dts/rockchip/rv1126.dtsi
> +++ b/arch/arm/boot/dts/rockchip/rv1126.dtsi
> @@ -569,6 +569,7 @@ gpio0: gpio@ff460000 {
> interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 0 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -580,6 +581,7 @@ gpio1: gpio@ff620000 {
> interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 32 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -591,6 +593,7 @@ gpio2: gpio@ff630000 {
> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 64 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -602,6 +605,7 @@ gpio3: gpio@ff640000 {
> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 96 32>;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> @@ -613,6 +617,7 @@ gpio4: gpio@ff650000 {
> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
> gpio-controller;
> + gpio-ranges = <&pinctrl 0 128 32>;

Bank num 4 only expose 2 pins, so should probably be <&pinctrl 0 128 2>.

Regards,
Jonas

> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> --
> 2.39.2
>
>
> _______________________________________________
> Linux-rockchip mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-rockchip


2023-12-29 15:48:19

by Johan Jonker

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] ARM: dts: rockchip: add gpio-ranges property to gpio nodes

Hi Jonas,

On 12/28/23 17:30, Jonas Karlman wrote:
> Hi Johan,
>
> On 2023-12-27 19:33, Johan Jonker wrote:
>> Add a gpio-ranges property to Rockchip gpio nodes similar to
>> rk356x/rk3588 to be independent from aliases and probe order.
>>
>> Signed-off-by: Johan Jonker <[email protected]>
>> Reviewed-by: Kever Yang <[email protected]>
>> ---
>>
>> Changed V3:
>> reword
>> rebase to new Rockchip directory
>> remove unknown properties
>> ---
>> arch/arm/boot/dts/rockchip/rk3036.dtsi | 3 +++
>> arch/arm/boot/dts/rockchip/rk3066a.dtsi | 6 ++++++
>> arch/arm/boot/dts/rockchip/rk3128.dtsi | 4 ++++
>> arch/arm/boot/dts/rockchip/rk3188.dtsi | 4 ++++
>> arch/arm/boot/dts/rockchip/rk322x.dtsi | 4 ++++
>> arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 +++++++++
>> arch/arm/boot/dts/rockchip/rv1108.dtsi | 4 ++++
>> arch/arm/boot/dts/rockchip/rv1126.dtsi | 5 +++++
>> 8 files changed, 39 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/rockchip/rk3036.dtsi b/arch/arm/boot/dts/rockchip/rk3036.dtsi
>> index 2b00109bea6a..6e5028b6dbfa 100644
>> --- a/arch/arm/boot/dts/rockchip/rk3036.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk3036.dtsi
>> @@ -593,6 +593,7 @@ gpio0: gpio@2007c000 {
>> clocks = <&cru PCLK_GPIO0>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -606,6 +607,7 @@ gpio1: gpio@20080000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -619,6 +621,7 @@ gpio2: gpio@20084000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rk3066a.dtsi b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>> index 30139f21de64..a4962b6b3f4c 100644
>> --- a/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>> @@ -285,6 +285,7 @@ gpio0: gpio@20034000 {
>> clocks = <&cru PCLK_GPIO0>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -298,6 +299,7 @@ gpio1: gpio@2003c000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -311,6 +313,7 @@ gpio2: gpio@2003e000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -324,6 +327,7 @@ gpio3: gpio@20080000 {
>> clocks = <&cru PCLK_GPIO3>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -337,6 +341,7 @@ gpio4: gpio@20084000 {
>> clocks = <&cru PCLK_GPIO4>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 128 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -350,6 +355,7 @@ gpio6: gpio@2000a000 {
>> clocks = <&cru PCLK_GPIO6>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 192 32>;
>

> It does not look like this matches what pins the pinctrl driver expose
> for rk3066a. Something like <&pinctrl 0 160 16> would probably be more
> correct.

See comment below.

>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rk3128.dtsi b/arch/arm/boot/dts/rockchip/rk3128.dtsi
>> index e2264c40b924..d66fcf12032e 100644
>> --- a/arch/arm/boot/dts/rockchip/rk3128.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk3128.dtsi
>> @@ -712,6 +712,7 @@ gpio0: gpio@2007c000 {
>> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO0>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -723,6 +724,7 @@ gpio1: gpio@20080000 {
>> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO1>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -734,6 +736,7 @@ gpio2: gpio@20084000 {
>> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO2>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -745,6 +748,7 @@ gpio3: gpio@20088000 {
>> interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO3>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> diff --git a/arch/arm/boot/dts/rockchip/rk3188.dtsi b/arch/arm/boot/dts/rockchip/rk3188.dtsi
>> index 44b54af0bbf9..6677e4a10e5d 100644
>> --- a/arch/arm/boot/dts/rockchip/rk3188.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk3188.dtsi
>> @@ -231,6 +231,7 @@ gpio0: gpio@2000a000 {
>> clocks = <&cru PCLK_GPIO0>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -244,6 +245,7 @@ gpio1: gpio@2003c000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -257,6 +259,7 @@ gpio2: gpio@2003e000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -270,6 +273,7 @@ gpio3: gpio@20080000 {
>> clocks = <&cru PCLK_GPIO3>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rk322x.dtsi b/arch/arm/boot/dts/rockchip/rk322x.dtsi
>> index 831561fc1814..0d4f9957b99b 100644
>> --- a/arch/arm/boot/dts/rockchip/rk322x.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk322x.dtsi
>> @@ -959,6 +959,7 @@ gpio0: gpio@11110000 {
>> clocks = <&cru PCLK_GPIO0>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -972,6 +973,7 @@ gpio1: gpio@11120000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -985,6 +987,7 @@ gpio2: gpio@11130000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -998,6 +1001,7 @@ gpio3: gpio@11140000 {
>> clocks = <&cru PCLK_GPIO3>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
>> index ead343dc3df1..c5550aae4ed8 100644
>> --- a/arch/arm/boot/dts/rockchip/rk3288.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi
>> @@ -1461,6 +1461,7 @@ gpio0: gpio@ff750000 {
>> clocks = <&cru PCLK_GPIO0>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>
> The pinctrl driver for rk3288 only expose 24 pins for the first bank,
> correct range would probably be <&pinctrl 0 0 24> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1474,6 +1475,7 @@ gpio1: gpio@ff780000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>

> and correct range would probably be <&pinctrl 0 24 32> here,

Random gpio offset ranges for a gpio bank of the various Rockchip SoCs makes it impossible to easy link gpio to pinctrl and vica versa in a standard way without additional Rockchip specific node properties.
To keep things simple the gpio-range for a gpio bank must always be inside to same multiple of 32 for all Rockchip SoCs in relation to the pinctrl.
A "rockchip,pins" property always must have the same "gpio-ranges" set.

Johan

>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1487,6 +1489,7 @@ gpio2: gpio@ff790000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>
> and <&pinctrl 0 56 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1500,6 +1503,7 @@ gpio3: gpio@ff7a0000 {
>> clocks = <&cru PCLK_GPIO3>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>
> and <&pinctrl 0 88 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1513,6 +1517,7 @@ gpio4: gpio@ff7b0000 {
>> clocks = <&cru PCLK_GPIO4>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 128 32>;
>
> and <&pinctrl 0 120 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1526,6 +1531,7 @@ gpio5: gpio@ff7c0000 {
>> clocks = <&cru PCLK_GPIO5>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 160 32>;
>
> and <&pinctrl 0 152 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1539,6 +1545,7 @@ gpio6: gpio@ff7d0000 {
>> clocks = <&cru PCLK_GPIO6>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 192 32>;
>
> and <&pinctrl 0 184 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1552,6 +1559,7 @@ gpio7: gpio@ff7e0000 {
>> clocks = <&cru PCLK_GPIO7>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 224 32>;
>
> and <&pinctrl 0 216 32> here,
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -1565,6 +1573,7 @@ gpio8: gpio@ff7f0000 {
>> clocks = <&cru PCLK_GPIO8>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 256 32>;
>
> and bank num 8 only expose 16 pins, so <&pinctrl 0 248 16> here.
>
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rv1108.dtsi b/arch/arm/boot/dts/rockchip/rv1108.dtsi
>> index abf3006f0a84..d12b97ee7588 100644
>> --- a/arch/arm/boot/dts/rockchip/rv1108.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rv1108.dtsi
>> @@ -602,6 +602,7 @@ gpio0: gpio@20030000 {
>> clocks = <&cru PCLK_GPIO0_PMU>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -615,6 +616,7 @@ gpio1: gpio@10310000 {
>> clocks = <&cru PCLK_GPIO1>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -628,6 +630,7 @@ gpio2: gpio@10320000 {
>> clocks = <&cru PCLK_GPIO2>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> @@ -641,6 +644,7 @@ gpio3: gpio@10330000 {
>> clocks = <&cru PCLK_GPIO3>;
>>
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>>
>> interrupt-controller;
>> diff --git a/arch/arm/boot/dts/rockchip/rv1126.dtsi b/arch/arm/boot/dts/rockchip/rv1126.dtsi
>> index bb603cae13df..71d091af6395 100644
>> --- a/arch/arm/boot/dts/rockchip/rv1126.dtsi
>> +++ b/arch/arm/boot/dts/rockchip/rv1126.dtsi
>> @@ -569,6 +569,7 @@ gpio0: gpio@ff460000 {
>> interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 0 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -580,6 +581,7 @@ gpio1: gpio@ff620000 {
>> interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 32 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -591,6 +593,7 @@ gpio2: gpio@ff630000 {
>> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 64 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -602,6 +605,7 @@ gpio3: gpio@ff640000 {
>> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 96 32>;
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> @@ -613,6 +617,7 @@ gpio4: gpio@ff650000 {
>> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
>> gpio-controller;
>> + gpio-ranges = <&pinctrl 0 128 32>;
>
> Bank num 4 only expose 2 pins, so should probably be <&pinctrl 0 128 2>.
>
> Regards,
> Jonas
>
>> #gpio-cells = <2>;
>> interrupt-controller;
>> #interrupt-cells = <2>;
>> --
>> 2.39.2
>>
>>
>> _______________________________________________
>> Linux-rockchip mailing list
>> [email protected]
>> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>

2023-12-29 21:25:25

by Jonas Karlman

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] ARM: dts: rockchip: add gpio-ranges property to gpio nodes

Hi Johan,

On 2023-12-29 16:47, Johan Jonker wrote:
> Hi Jonas,
>
> On 12/28/23 17:30, Jonas Karlman wrote:
>> Hi Johan,
>>
>> On 2023-12-27 19:33, Johan Jonker wrote:
>>> Add a gpio-ranges property to Rockchip gpio nodes similar to
>>> rk356x/rk3588 to be independent from aliases and probe order.
>>>
>>> Signed-off-by: Johan Jonker <[email protected]>
>>> Reviewed-by: Kever Yang <[email protected]>
>>> ---
>>>
>>> Changed V3:
>>> reword
>>> rebase to new Rockchip directory
>>> remove unknown properties
>>> ---
>>> arch/arm/boot/dts/rockchip/rk3036.dtsi | 3 +++
>>> arch/arm/boot/dts/rockchip/rk3066a.dtsi | 6 ++++++
>>> arch/arm/boot/dts/rockchip/rk3128.dtsi | 4 ++++
>>> arch/arm/boot/dts/rockchip/rk3188.dtsi | 4 ++++
>>> arch/arm/boot/dts/rockchip/rk322x.dtsi | 4 ++++
>>> arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 +++++++++
>>> arch/arm/boot/dts/rockchip/rv1108.dtsi | 4 ++++
>>> arch/arm/boot/dts/rockchip/rv1126.dtsi | 5 +++++
>>> 8 files changed, 39 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/rockchip/rk3036.dtsi b/arch/arm/boot/dts/rockchip/rk3036.dtsi
>>> index 2b00109bea6a..6e5028b6dbfa 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk3036.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk3036.dtsi
>>> @@ -593,6 +593,7 @@ gpio0: gpio@2007c000 {
>>> clocks = <&cru PCLK_GPIO0>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -606,6 +607,7 @@ gpio1: gpio@20080000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -619,6 +621,7 @@ gpio2: gpio@20084000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rk3066a.dtsi b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>>> index 30139f21de64..a4962b6b3f4c 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk3066a.dtsi
>>> @@ -285,6 +285,7 @@ gpio0: gpio@20034000 {
>>> clocks = <&cru PCLK_GPIO0>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -298,6 +299,7 @@ gpio1: gpio@2003c000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -311,6 +313,7 @@ gpio2: gpio@2003e000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -324,6 +327,7 @@ gpio3: gpio@20080000 {
>>> clocks = <&cru PCLK_GPIO3>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -337,6 +341,7 @@ gpio4: gpio@20084000 {
>>> clocks = <&cru PCLK_GPIO4>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 128 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -350,6 +355,7 @@ gpio6: gpio@2000a000 {
>>> clocks = <&cru PCLK_GPIO6>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 192 32>;
>>
>
>> It does not look like this matches what pins the pinctrl driver expose
>> for rk3066a. Something like <&pinctrl 0 160 16> would probably be more
>> correct.
>
> See comment below.
>
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rk3128.dtsi b/arch/arm/boot/dts/rockchip/rk3128.dtsi
>>> index e2264c40b924..d66fcf12032e 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk3128.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk3128.dtsi
>>> @@ -712,6 +712,7 @@ gpio0: gpio@2007c000 {
>>> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO0>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -723,6 +724,7 @@ gpio1: gpio@20080000 {
>>> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO1>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -734,6 +736,7 @@ gpio2: gpio@20084000 {
>>> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO2>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -745,6 +748,7 @@ gpio3: gpio@20088000 {
>>> interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO3>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> diff --git a/arch/arm/boot/dts/rockchip/rk3188.dtsi b/arch/arm/boot/dts/rockchip/rk3188.dtsi
>>> index 44b54af0bbf9..6677e4a10e5d 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk3188.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk3188.dtsi
>>> @@ -231,6 +231,7 @@ gpio0: gpio@2000a000 {
>>> clocks = <&cru PCLK_GPIO0>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -244,6 +245,7 @@ gpio1: gpio@2003c000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -257,6 +259,7 @@ gpio2: gpio@2003e000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -270,6 +273,7 @@ gpio3: gpio@20080000 {
>>> clocks = <&cru PCLK_GPIO3>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rk322x.dtsi b/arch/arm/boot/dts/rockchip/rk322x.dtsi
>>> index 831561fc1814..0d4f9957b99b 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk322x.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk322x.dtsi
>>> @@ -959,6 +959,7 @@ gpio0: gpio@11110000 {
>>> clocks = <&cru PCLK_GPIO0>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -972,6 +973,7 @@ gpio1: gpio@11120000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -985,6 +987,7 @@ gpio2: gpio@11130000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -998,6 +1001,7 @@ gpio3: gpio@11140000 {
>>> clocks = <&cru PCLK_GPIO3>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
>>> index ead343dc3df1..c5550aae4ed8 100644
>>> --- a/arch/arm/boot/dts/rockchip/rk3288.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi
>>> @@ -1461,6 +1461,7 @@ gpio0: gpio@ff750000 {
>>> clocks = <&cru PCLK_GPIO0>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>
>> The pinctrl driver for rk3288 only expose 24 pins for the first bank,
>> correct range would probably be <&pinctrl 0 0 24> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1474,6 +1475,7 @@ gpio1: gpio@ff780000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>
>
>> and correct range would probably be <&pinctrl 0 24 32> here,
>
> Random gpio offset ranges for a gpio bank of the various Rockchip SoCs makes it impossible to easy link gpio to pinctrl and vica versa in a standard way without additional Rockchip specific node properties.
> To keep things simple the gpio-range for a gpio bank must always be inside to same multiple of 32 for all Rockchip SoCs in relation to the pinctrl.
> A "rockchip,pins" property always must have the same "gpio-ranges" set.

I am fully aware that each gpio controller can handle up to 32 gpio pins
and that the relationship with the pin controller is not fully aligned
for some SoCs.

However, the gpio-ranges prop is described as:

"
It is useful to represent which GPIOs correspond to which pins on which pin
controllers. The gpio-ranges property described below represents this with
a discrete set of ranges mapping pins from the pin controller local number space
to pins in the GPIO controller local number space.

The format is: <[pin controller phandle], [GPIO controller offset],
[pin controller offset], [number of pins]>;
"

For RK each GPIO controller have a local number space 0 - 31, and the
pin controller local number space is 0 - <npins - 1> (total number of
exposed pins).

So for rk3066a the pinctrl local number space is 0-175, and this patch
(and v4) try to reference pin controller offset 192 for gpio6.

Same goes for rk3288, where the pinctrl local number space is 0-263 and
because of only 24 pins from bank num 0 is exposed the pin controller
offset used for gpio1-8 in this patch (and v4) result in wrong pins
being referenced.

Remaining SoCs seem to have gpio and pinctrl pins aligned to 32 and
look correct in v4.

Please also note that all RK SoC DTs beside px30, rv1108 and rv1126 have
a stable /aliases/gpioX DT reference for each gpio controller.

Regards,
Jonas

>
> Johan
>
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1487,6 +1489,7 @@ gpio2: gpio@ff790000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>
>> and <&pinctrl 0 56 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1500,6 +1503,7 @@ gpio3: gpio@ff7a0000 {
>>> clocks = <&cru PCLK_GPIO3>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>
>> and <&pinctrl 0 88 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1513,6 +1517,7 @@ gpio4: gpio@ff7b0000 {
>>> clocks = <&cru PCLK_GPIO4>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 128 32>;
>>
>> and <&pinctrl 0 120 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1526,6 +1531,7 @@ gpio5: gpio@ff7c0000 {
>>> clocks = <&cru PCLK_GPIO5>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 160 32>;
>>
>> and <&pinctrl 0 152 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1539,6 +1545,7 @@ gpio6: gpio@ff7d0000 {
>>> clocks = <&cru PCLK_GPIO6>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 192 32>;
>>
>> and <&pinctrl 0 184 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1552,6 +1559,7 @@ gpio7: gpio@ff7e0000 {
>>> clocks = <&cru PCLK_GPIO7>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 224 32>;
>>
>> and <&pinctrl 0 216 32> here,
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -1565,6 +1573,7 @@ gpio8: gpio@ff7f0000 {
>>> clocks = <&cru PCLK_GPIO8>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 256 32>;
>>
>> and bank num 8 only expose 16 pins, so <&pinctrl 0 248 16> here.
>>
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rv1108.dtsi b/arch/arm/boot/dts/rockchip/rv1108.dtsi
>>> index abf3006f0a84..d12b97ee7588 100644
>>> --- a/arch/arm/boot/dts/rockchip/rv1108.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rv1108.dtsi
>>> @@ -602,6 +602,7 @@ gpio0: gpio@20030000 {
>>> clocks = <&cru PCLK_GPIO0_PMU>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -615,6 +616,7 @@ gpio1: gpio@10310000 {
>>> clocks = <&cru PCLK_GPIO1>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -628,6 +630,7 @@ gpio2: gpio@10320000 {
>>> clocks = <&cru PCLK_GPIO2>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> @@ -641,6 +644,7 @@ gpio3: gpio@10330000 {
>>> clocks = <&cru PCLK_GPIO3>;
>>>
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>>
>>> interrupt-controller;
>>> diff --git a/arch/arm/boot/dts/rockchip/rv1126.dtsi b/arch/arm/boot/dts/rockchip/rv1126.dtsi
>>> index bb603cae13df..71d091af6395 100644
>>> --- a/arch/arm/boot/dts/rockchip/rv1126.dtsi
>>> +++ b/arch/arm/boot/dts/rockchip/rv1126.dtsi
>>> @@ -569,6 +569,7 @@ gpio0: gpio@ff460000 {
>>> interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 0 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -580,6 +581,7 @@ gpio1: gpio@ff620000 {
>>> interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 32 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -591,6 +593,7 @@ gpio2: gpio@ff630000 {
>>> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 64 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -602,6 +605,7 @@ gpio3: gpio@ff640000 {
>>> interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 96 32>;
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> @@ -613,6 +617,7 @@ gpio4: gpio@ff650000 {
>>> interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
>>> clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
>>> gpio-controller;
>>> + gpio-ranges = <&pinctrl 0 128 32>;
>>
>> Bank num 4 only expose 2 pins, so should probably be <&pinctrl 0 128 2>.
>>
>> Regards,
>> Jonas
>>
>>> #gpio-cells = <2>;
>>> interrupt-controller;
>>> #interrupt-cells = <2>;
>>> --
>>> 2.39.2
>>>
>>>
>>> _______________________________________________
>>> Linux-rockchip mailing list
>>> [email protected]
>>> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>>