public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd
@ 2024-08-02 22:56 Jonas Karlman
  2024-08-02 22:56 ` [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle() Jonas Karlman
                   ` (10 more replies)
  0 siblings, 11 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

This series includes some cleanup, add support for using the pinmux
status cmd and add support for the gpio request ops.

Following is an example on a Radxa ROCK 5A (RK3588S):

  => pinmux dev pinctrl
  dev: pinctrl
  => pinmux status
  GPIO0_A0  : gpio
  GPIO0_A1  : func-2
  GPIO0_A2  : gpio
  GPIO0_A3  : gpio
  GPIO0_A4  : func-1
  GPIO0_A5  : func-2
  GPIO0_A6  : gpio
  GPIO0_A7  : gpio
  GPIO0_B0  : gpio
  GPIO0_B1  : gpio
  GPIO0_B2  : gpio
  GPIO0_B3  : gpio
  GPIO0_B4  : gpio
  GPIO0_B5  : func-10
  GPIO0_B6  : func-10
  GPIO0_B7  : gpio
  [...]

and on a ASUS TinkerBoard R2.0 (RK3288W):

  => pinmux dev pinctrl
  dev: pinctrl
  => pinmux status
  [...]
  GPIO2_C6  : gpio
  GPIO2_C7  : gpio
  GPIO2_D0  : unrouted
  GPIO2_D1  : unrouted
  GPIO2_D2  : unrouted
  GPIO2_D3  : unrouted
  GPIO2_D4  : unrouted
  GPIO2_D5  : unrouted
  GPIO2_D6  : unrouted
  GPIO2_D7  : unrouted
  GPIO3_A0  : func-2
  GPIO3_A1  : func-2
  [...]

Patch 1 refactor to use syscon_regmap_lookup_by_phandle() helper.
Patch 6 refactor to get pinctrl device from gpio-ranges prop.

Patch 2, 3 and 7 change to use pinctrl pin offset instead of bank num to
get current pinmux.
Patch 4 add required ops for use of the pinmux status cmd.

Patch 5 and 8 add gpio_request_enable() and request() ops.

Patch 9 add gpio-ranges props for remaining RK SoCs, this is strictly
not needed for pinmux status cmd to function. However, the change to not
require the pin controller offset to be 32 aligned was required to add
gpio-ranges props for RK3288.

Patch 10 add gpio aliases for RK SoCs that is missing alias for gpio
controllers.

Changes in v2:
- Drop fixes patches already applied
- Split adding pin_to_bank() helper into own patch
- Add gpio_request_enable() and request() ops patch from the "rockchip:
  Add gpio request() ops" series
- Add missing gpio aliases
- Collect r-b tags

Jonas Karlman (10):
  pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle()
  pinctrl: rockchip: Add a pin_to_bank() helper
  pinctrl: rockchip: Update get_gpio_mux() ops
  pinctrl: rockchip: Add pinmux status related ops
  pinctrl: rockchip: Add gpio_request_enable() ops
  gpio: rockchip: Get pinctrl device from gpio-ranges prop
  gpio: rockchip: Use pinctrl pin offset to get_gpio_mux()
  gpio: rockchip: Add request() ops
  rockchip: gpio: Add gpio-ranges props
  rockchip: gpio: Add missing gpio aliases

 arch/arm/dts/px30-u-boot.dtsi                 |   4 +
 arch/arm/dts/rk3036-u-boot.dtsi               |  12 ++
 arch/arm/dts/rk3066a-u-boot.dtsi              |  10 +-
 arch/arm/dts/rk3128-u-boot.dtsi               |  16 ++
 arch/arm/dts/rk322x-u-boot.dtsi               |  16 ++
 arch/arm/dts/rk3288-u-boot.dtsi               |  42 ++++--
 arch/arm/dts/rk3308-u-boot.dtsi               |  20 +++
 arch/arm/dts/rk3328-u-boot.dtsi               |  13 ++
 arch/arm/dts/rk3368-u-boot.dtsi               |  16 ++
 arch/arm/dts/rk3399-u-boot.dtsi               |  20 +++
 arch/arm/dts/rk3xxx-u-boot.dtsi               |   7 +
 arch/arm/dts/rv1108-u-boot.dtsi               |  25 +++
 arch/arm/dts/rv1126-u-boot.dtsi               |  22 +++
 drivers/gpio/rk_gpio.c                        |  54 +++++--
 .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 142 ++++++++++++++----
 15 files changed, 364 insertions(+), 55 deletions(-)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle()
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-06 15:12   ` Quentin Schulz
  2024-08-02 22:56 ` [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper Jonas Karlman
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Use syscon_regmap_lookup_by_phandle() to simplify the code.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag
---
 .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 39 ++++++-------------
 1 file changed, 12 insertions(+), 27 deletions(-)

diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index d449d07d32e7..f6af22501c36 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -10,6 +10,7 @@
 #include <syscon.h>
 #include <fdtdec.h>
 #include <linux/bitops.h>
+#include <linux/err.h>
 #include <linux/libfdt.h>
 
 #include "pinctrl-rockchip.h"
@@ -640,37 +641,21 @@ int rockchip_pinctrl_probe(struct udevice *dev)
 {
 	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
 	struct rockchip_pin_ctrl *ctrl;
-	struct udevice *syscon;
-	struct regmap *regmap;
-	int ret = 0;
 
-	/* get rockchip grf syscon phandle */
-	ret = uclass_get_device_by_phandle(UCLASS_SYSCON, dev, "rockchip,grf",
-					   &syscon);
-	if (ret) {
-		debug("unable to find rockchip,grf syscon device (%d)\n", ret);
-		return ret;
+	priv->regmap_base =
+			syscon_regmap_lookup_by_phandle(dev, "rockchip,grf");
+	if (IS_ERR(priv->regmap_base)) {
+		debug("unable to find rockchip,grf regmap\n");
+		return PTR_ERR(priv->regmap_base);
 	}
 
-	/* get grf-reg base address */
-	regmap = syscon_get_regmap(syscon);
-	if (!regmap) {
-		debug("unable to find rockchip grf regmap\n");
-		return -ENODEV;
-	}
-	priv->regmap_base = regmap;
-
-	/* option: get pmu-reg base address */
-	ret = uclass_get_device_by_phandle(UCLASS_SYSCON, dev, "rockchip,pmu",
-					   &syscon);
-	if (!ret) {
-		/* get pmugrf-reg base address */
-		regmap = syscon_get_regmap(syscon);
-		if (!regmap) {
-			debug("unable to find rockchip pmu regmap\n");
-			return -ENODEV;
+	if (dev_read_bool(dev, "rockchip,pmu")) {
+		priv->regmap_pmu =
+			syscon_regmap_lookup_by_phandle(dev, "rockchip,pmu");
+		if (IS_ERR(priv->regmap_pmu)) {
+			debug("unable to find rockchip,pmu regmap\n");
+			return PTR_ERR(priv->regmap_pmu);
 		}
-		priv->regmap_pmu = regmap;
 	}
 
 	ctrl = rockchip_pinctrl_get_soc_data(dev);
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
  2024-08-02 22:56 ` [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle() Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-06 15:36   ` Quentin Schulz
  2024-08-09  9:35   ` Kever Yang
  2024-08-02 22:56 ` [PATCH v2 03/10] pinctrl: rockchip: Update get_gpio_mux() ops Jonas Karlman
                   ` (8 subsequent siblings)
  10 siblings, 2 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Add a pin_to_bank() helper that can locate a pin bank based on the pin
offset, to be used in get_gpio_mux() and gpio_request_enable() ops.

Reset ctrl->nr_pins to 0 so that pin_to_bank() can locate a bank after
the second probe in U-Boot proper.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch split from "pinctrl: rockchip: Add gpio_request_enable()
    ops" of "rockchip: Add gpio request() ops" series
---
 .../pinctrl/rockchip/pinctrl-rockchip-core.c   | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index f6af22501c36..894ff74aee98 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -176,6 +176,23 @@ static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin)
 	return ((val >> bit) & mask);
 }
 
+static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
+						      unsigned int pin)
+{
+	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
+	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
+	struct rockchip_pin_bank *bank = ctrl->pin_banks;
+	int i;
+
+	for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
+		if (pin >= bank->pin_base &&
+		    pin < bank->pin_base + bank->nr_pins)
+			return bank;
+	}
+
+	return NULL;
+}
+
 static int rockchip_pinctrl_get_gpio_mux(struct udevice *dev, int banknum,
 					 int index)
 {	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
@@ -539,6 +556,7 @@ static struct rockchip_pin_ctrl *rockchip_pinctrl_get_soc_data(struct udevice *d
 	drv_pmu_offs = ctrl->pmu_drv_offset;
 	drv_grf_offs = ctrl->grf_drv_offset;
 	bank = ctrl->pin_banks;
+	ctrl->nr_pins = 0;
 
 	for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
 		int bank_pins = 0;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 03/10] pinctrl: rockchip: Update get_gpio_mux() ops
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
  2024-08-02 22:56 ` [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle() Jonas Karlman
  2024-08-02 22:56 ` [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-02 22:56 ` [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops Jonas Karlman
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Add a way to get_gpio_mux() based on the pinctrl pin offset, use -1 as
banknum to use the pinctrl pin offset mode instead of bank pin offset.

This mode will be used by the gpio driver to ensure a pin used by gpio
request() and get_function() ops always refer to the same pinctrl pin.

Also add verify_config() of banknum and index to avoid an out of range
access of the pin_banks array, i.e. with gpio6 on rk3066a.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag

The pin_to_mux() helper will also be used in the get_pin_muxing() ops
added in next patch to support the pinmux status cmd.
---
 .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index 894ff74aee98..8ede74da40c9 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -193,10 +193,30 @@ static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
 	return NULL;
 }
 
+static int rockchip_pin_to_mux(struct udevice *dev, unsigned int pin)
+{
+	struct rockchip_pin_bank *bank;
+
+	bank = rockchip_pin_to_bank(dev, pin);
+	if (!bank)
+		return -EINVAL;
+
+	return rockchip_get_mux(bank, pin - bank->pin_base);
+}
+
 static int rockchip_pinctrl_get_gpio_mux(struct udevice *dev, int banknum,
 					 int index)
-{	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
+{
+	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
 	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
+	int ret;
+
+	if (banknum == -1)
+		return rockchip_pin_to_mux(dev, index);
+
+	ret = rockchip_verify_config(dev, banknum, index);
+	if (ret)
+		return ret;
 
 	return rockchip_get_mux(&ctrl->pin_banks[banknum], index);
 }
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (2 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 03/10] pinctrl: rockchip: Update get_gpio_mux() ops Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07  9:20   ` Quentin Schulz
  2024-08-02 22:56 ` [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops Jonas Karlman
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Add get_pins_count(), get_pin_name() and get_pin_muxing() ops to support
the pinmux status cmd.

  => pinmux dev pinctrl
  dev: pinctrl
  => pinmux status
  GPIO0_A0  : gpio
  GPIO0_A1  : func-1
  GPIO0_A2  : gpio
  GPIO0_A3  : gpio
  GPIO0_A4  : func-1
  GPIO0_A5  : gpio
  GPIO0_A6  : gpio
  GPIO0_A7  : func-1
  GPIO0_B0  : gpio
  GPIO0_B1  : func-1
  GPIO0_B2  : func-1
  GPIO0_B3  : gpio
  [...]

The change to use ENOENT for unrouted pins also help hide a "Error -22"
message for unrouted pins using the gpio status -a cmd.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag
---
 .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 50 ++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index 8ede74da40c9..345e0abdf5d1 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -126,7 +126,7 @@ static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin)
 
 	if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) {
 		debug("pin %d is unrouted\n", pin);
-		return -EINVAL;
+		return -ENOENT;
 	}
 
 	if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY)
@@ -193,6 +193,32 @@ static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
 	return NULL;
 }
 
+static int rockchip_pinctrl_get_pins_count(struct udevice *dev)
+{
+	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
+	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
+
+	return ctrl->nr_pins;
+}
+
+static const char *rockchip_pinctrl_get_pin_name(struct udevice *dev,
+						 unsigned int selector)
+{
+	static char name[PINNAME_SIZE];
+	struct rockchip_pin_bank *bank;
+	unsigned int index;
+
+	bank = rockchip_pin_to_bank(dev, selector);
+	if (!bank)
+		return NULL;
+
+	index = selector - bank->pin_base;
+	snprintf(name, sizeof(name), "GPIO%u_%c%u",
+		 bank->bank_num, 'A' + (index / 8), index % 8);
+
+	return name;
+}
+
 static int rockchip_pin_to_mux(struct udevice *dev, unsigned int pin)
 {
 	struct rockchip_pin_bank *bank;
@@ -221,6 +247,25 @@ static int rockchip_pinctrl_get_gpio_mux(struct udevice *dev, int banknum,
 	return rockchip_get_mux(&ctrl->pin_banks[banknum], index);
 }
 
+static int rockchip_pinctrl_get_pin_muxing(struct udevice *dev,
+					   unsigned int selector,
+					   char *buf, int size)
+{
+	int mux;
+
+	mux = rockchip_pin_to_mux(dev, selector);
+	if (mux == -ENOENT)
+		strlcpy(buf, "unrouted", size);
+	else if (mux < 0)
+		return mux;
+	else if (mux)
+		snprintf(buf, size, "func-%d", mux);
+	else
+		strlcpy(buf, "gpio", size);
+
+	return 0;
+}
+
 static int rockchip_verify_mux(struct rockchip_pin_bank *bank,
 			       int pin, int mux)
 {
@@ -558,8 +603,11 @@ static int rockchip_pinctrl_set_state(struct udevice *dev,
 }
 
 const struct pinctrl_ops rockchip_pinctrl_ops = {
+	.get_pins_count			= rockchip_pinctrl_get_pins_count,
+	.get_pin_name			= rockchip_pinctrl_get_pin_name,
 	.set_state			= rockchip_pinctrl_set_state,
 	.get_gpio_mux			= rockchip_pinctrl_get_gpio_mux,
+	.get_pin_muxing			= rockchip_pinctrl_get_pin_muxing,
 };
 
 /* retrieve the soc specific data */
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (3 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07  9:25   ` Quentin Schulz
  2024-08-09  9:37   ` Kever Yang
  2024-08-02 22:56 ` [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop Jonas Karlman
                   ` (5 subsequent siblings)
  10 siblings, 2 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Implement gpio_request_enable() ops so that the gpio request() ops can
be implemented and a gpio requested pin automatically is pinmuxed for
gpio use, similar to Linux kernel.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch from "rockchip: Add gpio request() ops" series
---
 drivers/pinctrl/rockchip/pinctrl-rockchip-core.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index 345e0abdf5d1..e164af0d8f61 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -358,6 +358,18 @@ static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux)
 	return 0;
 }
 
+static int rockchip_pinctrl_gpio_request_enable(struct udevice *dev,
+						unsigned int selector)
+{
+	struct rockchip_pin_bank *bank;
+
+	bank = rockchip_pin_to_bank(dev, selector);
+	if (!bank)
+		return -EINVAL;
+
+	return rockchip_set_mux(bank, selector - bank->pin_base, RK_FUNC_GPIO);
+}
+
 static int rockchip_perpin_drv_list[DRV_TYPE_MAX][8] = {
 	{ 2, 4, 8, 12, -1, -1, -1, -1 },
 	{ 3, 6, 9, 12, -1, -1, -1, -1 },
@@ -608,6 +620,7 @@ const struct pinctrl_ops rockchip_pinctrl_ops = {
 	.set_state			= rockchip_pinctrl_set_state,
 	.get_gpio_mux			= rockchip_pinctrl_get_gpio_mux,
 	.get_pin_muxing			= rockchip_pinctrl_get_pin_muxing,
+	.gpio_request_enable		= rockchip_pinctrl_gpio_request_enable,
 };
 
 /* retrieve the soc specific data */
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (4 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07  9:49   ` Quentin Schulz
  2024-08-02 22:56 ` [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux() Jonas Karlman
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Get pinctrl device from gpio-ranges phandle when the property exists,
fallback to get the first pinctrl device.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag
---
 drivers/gpio/rk_gpio.c | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
index 24ba12dd820e..abece6409ae0 100644
--- a/drivers/gpio/rk_gpio.c
+++ b/drivers/gpio/rk_gpio.c
@@ -181,12 +181,6 @@ static int rockchip_gpio_probe(struct udevice *dev)
 
 	priv->regs = dev_read_addr_ptr(dev);
 
-	if (CONFIG_IS_ENABLED(PINCTRL)) {
-		ret = uclass_first_device_err(UCLASS_PINCTRL, &priv->pinctrl);
-		if (ret)
-			return ret;
-	}
-
 	/*
 	 * If "gpio-ranges" is present in the devicetree use it to parse
 	 * the GPIO bank ID, otherwise use the legacy method.
@@ -194,16 +188,33 @@ static int rockchip_gpio_probe(struct udevice *dev)
 	ret = ofnode_parse_phandle_with_args(dev_ofnode(dev),
 					     "gpio-ranges", NULL, 3,
 					     0, &args);
-	if (!ret || ret != -ENOENT) {
+	if (!ret) {
 		uc_priv->gpio_count = args.args[2];
 		priv->bank = args.args[1] / ROCKCHIP_GPIOS_PER_BANK;
-	} else {
+
+		if (CONFIG_IS_ENABLED(PINCTRL)) {
+			ret = uclass_get_device_by_ofnode(UCLASS_PINCTRL,
+							  args.node,
+							  &priv->pinctrl);
+			if (ret)
+				return ret;
+		}
+	} else if (ret == -ENOENT || !CONFIG_IS_ENABLED(PINCTRL)) {
 		uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
 		ret = dev_read_alias_seq(dev, &priv->bank);
 		if (ret) {
 			end = strrchr(dev->name, '@');
 			priv->bank = trailing_strtoln(dev->name, end);
 		}
+
+		if (CONFIG_IS_ENABLED(PINCTRL)) {
+			ret = uclass_first_device_err(UCLASS_PINCTRL,
+						      &priv->pinctrl);
+			if (ret)
+				return ret;
+		}
+	} else {
+		return ret;
 	}
 
 	priv->name[0] = 'A' + priv->bank;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux()
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (5 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07 10:02   ` Quentin Schulz
  2024-08-02 22:56 ` [PATCH v2 08/10] gpio: rockchip: Add request() ops Jonas Karlman
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Use the pinctrl pin offset to get_gpio_mux() to remove the bank num
dependency and instead only use the bank num to assign a bank name.

Most Rockchip SoCs use all 32 pins of each gpio controller, meaning the
pinctrl pin offset typically is aligned to 32.

However, for gpio0 on RK3288 only 24 pins are used meaning the pinctrl
pin offset start at pin 24 for gpio1. Use DIV_ROUND_UP to get the 32 pin
aligned bank num.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag
---
 drivers/gpio/rk_gpio.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
index abece6409ae0..5972f7f8612d 100644
--- a/drivers/gpio/rk_gpio.c
+++ b/drivers/gpio/rk_gpio.c
@@ -34,7 +34,7 @@ enum {
 struct rockchip_gpio_priv {
 	void __iomem *regs;
 	struct udevice *pinctrl;
-	int bank;
+	int pfc_offset;
 	char name[2];
 	u32 version;
 };
@@ -108,7 +108,8 @@ static int rockchip_gpio_get_function(struct udevice *dev, unsigned offset)
 	int ret;
 
 	if (CONFIG_IS_ENABLED(PINCTRL)) {
-		ret = pinctrl_get_gpio_mux(priv->pinctrl, priv->bank, offset);
+		ret = pinctrl_get_gpio_mux(priv->pinctrl, -1,
+					   priv->pfc_offset + offset);
 		if (ret < 0)
 			return ret;
 		else if (ret != RK_FUNC_GPIO)
@@ -177,7 +178,7 @@ static int rockchip_gpio_probe(struct udevice *dev)
 	struct rockchip_gpio_priv *priv = dev_get_priv(dev);
 	struct ofnode_phandle_args args;
 	char *end;
-	int ret;
+	int bank, ret;
 
 	priv->regs = dev_read_addr_ptr(dev);
 
@@ -190,7 +191,8 @@ static int rockchip_gpio_probe(struct udevice *dev)
 					     0, &args);
 	if (!ret) {
 		uc_priv->gpio_count = args.args[2];
-		priv->bank = args.args[1] / ROCKCHIP_GPIOS_PER_BANK;
+		bank = DIV_ROUND_UP(args.args[1], ROCKCHIP_GPIOS_PER_BANK);
+		priv->pfc_offset = args.args[1];
 
 		if (CONFIG_IS_ENABLED(PINCTRL)) {
 			ret = uclass_get_device_by_ofnode(UCLASS_PINCTRL,
@@ -201,11 +203,12 @@ static int rockchip_gpio_probe(struct udevice *dev)
 		}
 	} else if (ret == -ENOENT || !CONFIG_IS_ENABLED(PINCTRL)) {
 		uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
-		ret = dev_read_alias_seq(dev, &priv->bank);
+		ret = dev_read_alias_seq(dev, &bank);
 		if (ret) {
 			end = strrchr(dev->name, '@');
-			priv->bank = trailing_strtoln(dev->name, end);
+			bank = trailing_strtoln(dev->name, end);
 		}
+		priv->pfc_offset = bank * ROCKCHIP_GPIOS_PER_BANK;
 
 		if (CONFIG_IS_ENABLED(PINCTRL)) {
 			ret = uclass_first_device_err(UCLASS_PINCTRL,
@@ -217,7 +220,7 @@ static int rockchip_gpio_probe(struct udevice *dev)
 		return ret;
 	}
 
-	priv->name[0] = 'A' + priv->bank;
+	priv->name[0] = 'A' + bank;
 	uc_priv->bank_name = priv->name;
 
 	priv->version = readl(priv->regs + VER_ID_V2);
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 08/10] gpio: rockchip: Add request() ops
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (6 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux() Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07 10:12   ` Quentin Schulz
  2024-08-09  9:38   ` Kever Yang
  2024-08-02 22:56 ` [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props Jonas Karlman
                   ` (2 subsequent siblings)
  10 siblings, 2 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Add a request() ops that call pinctrl_gpio_request() when the required
gpio-ranges prop has been defined to signal pinctrl driver to use gpio
pinmux.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch from "rockchip: Add gpio request() ops" series
---
 drivers/gpio/rk_gpio.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
index 5972f7f8612d..65811dbc78d6 100644
--- a/drivers/gpio/rk_gpio.c
+++ b/drivers/gpio/rk_gpio.c
@@ -126,6 +126,15 @@ static int rockchip_gpio_get_function(struct udevice *dev, unsigned offset)
 	return (data & mask) ? GPIOF_OUTPUT : GPIOF_INPUT;
 }
 
+static int rockchip_gpio_request(struct udevice *dev, unsigned offset,
+				 const char *label)
+{
+	if (CONFIG_IS_ENABLED(PINCTRL) && dev_read_bool(dev, "gpio-ranges"))
+		return pinctrl_gpio_request(dev, offset, label);
+
+	return 0;
+}
+
 /* Simple SPL interface to GPIOs */
 #ifdef CONFIG_SPL_BUILD
 
@@ -229,6 +238,7 @@ static int rockchip_gpio_probe(struct udevice *dev)
 }
 
 static const struct dm_gpio_ops gpio_rockchip_ops = {
+	.request		= rockchip_gpio_request,
 	.direction_input	= rockchip_gpio_direction_input,
 	.direction_output	= rockchip_gpio_direction_output,
 	.get_value		= rockchip_gpio_get_value,
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (7 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 08/10] gpio: rockchip: Add request() ops Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07 10:28   ` Quentin Schulz
  2024-08-09  9:38   ` Kever Yang
  2024-08-02 22:56 ` [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases Jonas Karlman
  2024-08-12  6:30 ` [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Kever Yang
  10 siblings, 2 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini
  Cc: u-boot, Jonas Karlman, Johan Jonker

Add gpio-ranges props to supported SoCs based on the following Linux
patches:

ARM: dts: rockchip: add gpio-ranges property to gpio nodes
https://lore.kernel.org/all/26007385-81dc-9961-05d5-8b9a0969d0b6@gmail.com/

arm64: dts: rockchip: add gpio-ranges property to gpio nodes
https://lore.kernel.org/all/18c8c89a-9962-40f0-814f-81e2c420c957@gmail.com/

For RK3066 and RK3288 the gpio-ranges props is adjusted to match
https://lore.kernel.org/all/541b7633-af3b-4392-ac29-7ee1f2c6f943@kwiboo.se/

Re-enable gpio6 on RK3066 now that the pinctrl pin offset is used with
get_gpio_mux().

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Collect r-b tag

Cc: Johan Jonker <jbx6244@gmail.com>
---
 arch/arm/dts/rk3036-u-boot.dtsi  | 12 ++++++++++++
 arch/arm/dts/rk3066a-u-boot.dtsi |  3 +--
 arch/arm/dts/rk3128-u-boot.dtsi  | 16 ++++++++++++++++
 arch/arm/dts/rk322x-u-boot.dtsi  | 16 ++++++++++++++++
 arch/arm/dts/rk3288-u-boot.dtsi  | 33 ++++++++++++++++++++++++++++++++
 arch/arm/dts/rk3308-u-boot.dtsi  | 20 +++++++++++++++++++
 arch/arm/dts/rk3328-u-boot.dtsi  | 13 +++++++++++++
 arch/arm/dts/rk3368-u-boot.dtsi  | 16 ++++++++++++++++
 arch/arm/dts/rk3399-u-boot.dtsi  | 20 +++++++++++++++++++
 arch/arm/dts/rv1108-u-boot.dtsi  | 16 ++++++++++++++++
 arch/arm/dts/rv1126-u-boot.dtsi  | 14 ++++++++++++++
 11 files changed, 177 insertions(+), 2 deletions(-)

diff --git a/arch/arm/dts/rk3036-u-boot.dtsi b/arch/arm/dts/rk3036-u-boot.dtsi
index 41ac054b81e8..3e788187f630 100644
--- a/arch/arm/dts/rk3036-u-boot.dtsi
+++ b/arch/arm/dts/rk3036-u-boot.dtsi
@@ -4,3 +4,15 @@
  */
 
 #include "rockchip-u-boot.dtsi"
+
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
diff --git a/arch/arm/dts/rk3066a-u-boot.dtsi b/arch/arm/dts/rk3066a-u-boot.dtsi
index 06f405ca2c5e..35b52d6fb7f3 100644
--- a/arch/arm/dts/rk3066a-u-boot.dtsi
+++ b/arch/arm/dts/rk3066a-u-boot.dtsi
@@ -24,6 +24,5 @@
 };
 
 &gpio6 {
-	status = "disabled";
+	gpio-ranges = <&pinctrl 0 160 16>;
 };
-
diff --git a/arch/arm/dts/rk3128-u-boot.dtsi b/arch/arm/dts/rk3128-u-boot.dtsi
index 6d1965e6b520..dd1208e7cf40 100644
--- a/arch/arm/dts/rk3128-u-boot.dtsi
+++ b/arch/arm/dts/rk3128-u-boot.dtsi
@@ -14,6 +14,22 @@
 	bootph-all;
 };
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
 &grf {
 	bootph-all;
 };
diff --git a/arch/arm/dts/rk322x-u-boot.dtsi b/arch/arm/dts/rk322x-u-boot.dtsi
index aea917544b1c..f0e2a1f95aa0 100644
--- a/arch/arm/dts/rk322x-u-boot.dtsi
+++ b/arch/arm/dts/rk322x-u-boot.dtsi
@@ -47,6 +47,22 @@
 	max-frequency = <150000000>;
 };
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
 &grf {
 	bootph-all;
 };
diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
index a43d320ade7b..0f8053a8b690 100644
--- a/arch/arm/dts/rk3288-u-boot.dtsi
+++ b/arch/arm/dts/rk3288-u-boot.dtsi
@@ -95,8 +95,41 @@
 	clock-names = "clk_edp", "clk_edp_24m", "pclk_edp";
 };
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 24>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 24 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 56 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 88 32>;
+};
+
+&gpio4 {
+	gpio-ranges = <&pinctrl 0 120 32>;
+};
+
+&gpio5 {
+	gpio-ranges = <&pinctrl 0 152 32>;
+};
+
+&gpio6 {
+	gpio-ranges = <&pinctrl 0 184 32>;
+};
+
 &gpio7 {
 	bootph-all;
+	gpio-ranges = <&pinctrl 0 216 32>;
+};
+
+&gpio8 {
+	gpio-ranges = <&pinctrl 0 248 16>;
 };
 
 &grf {
diff --git a/arch/arm/dts/rk3308-u-boot.dtsi b/arch/arm/dts/rk3308-u-boot.dtsi
index b7964e2756f3..c2d56b532f80 100644
--- a/arch/arm/dts/rk3308-u-boot.dtsi
+++ b/arch/arm/dts/rk3308-u-boot.dtsi
@@ -54,6 +54,26 @@
 	bootph-some-ram;
 };
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
+&gpio4 {
+	gpio-ranges = <&pinctrl 0 128 32>;
+};
+
 &grf {
 	bootph-all;
 };
diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi
index 0135bc08d491..3bc776146a82 100644
--- a/arch/arm/dts/rk3328-u-boot.dtsi
+++ b/arch/arm/dts/rk3328-u-boot.dtsi
@@ -57,6 +57,19 @@
 
 &gpio0 {
 	bootph-pre-ram;
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
 };
 
 &grf {
diff --git a/arch/arm/dts/rk3368-u-boot.dtsi b/arch/arm/dts/rk3368-u-boot.dtsi
index 811d59ac346e..be2ebda83529 100644
--- a/arch/arm/dts/rk3368-u-boot.dtsi
+++ b/arch/arm/dts/rk3368-u-boot.dtsi
@@ -26,3 +26,19 @@
 		reg = <0x0 0xff740000 0x0 0x1000>;
 	};
 };
+
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index c4c8bb1401ea..cead23ea7c20 100644
--- a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -91,6 +91,26 @@
 	bootph-some-ram;
 };
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
+&gpio4 {
+	gpio-ranges = <&pinctrl 0 128 32>;
+};
+
 &grf {
 	bootph-all;
 };
diff --git a/arch/arm/dts/rv1108-u-boot.dtsi b/arch/arm/dts/rv1108-u-boot.dtsi
index ccf2d8bd83ec..f772d618bd1d 100644
--- a/arch/arm/dts/rv1108-u-boot.dtsi
+++ b/arch/arm/dts/rv1108-u-boot.dtsi
@@ -5,6 +5,22 @@
 
 #include "rockchip-u-boot.dtsi"
 
+&gpio0 {
+	gpio-ranges = <&pinctrl 0 0 32>;
+};
+
+&gpio1 {
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
 &grf {
 	bootph-all;
 };
diff --git a/arch/arm/dts/rv1126-u-boot.dtsi b/arch/arm/dts/rv1126-u-boot.dtsi
index 448598013578..3e6df1e433db 100644
--- a/arch/arm/dts/rv1126-u-boot.dtsi
+++ b/arch/arm/dts/rv1126-u-boot.dtsi
@@ -31,10 +31,24 @@
 
 &gpio0 {
 	bootph-pre-ram;
+	gpio-ranges = <&pinctrl 0 0 32>;
 };
 
 &gpio1 {
 	bootph-pre-ram;
+	gpio-ranges = <&pinctrl 0 32 32>;
+};
+
+&gpio2 {
+	gpio-ranges = <&pinctrl 0 64 32>;
+};
+
+&gpio3 {
+	gpio-ranges = <&pinctrl 0 96 32>;
+};
+
+&gpio4 {
+	gpio-ranges = <&pinctrl 0 128 2>;
 };
 
 &grf {
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (8 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props Jonas Karlman
@ 2024-08-02 22:56 ` Jonas Karlman
  2024-08-07 10:47   ` Quentin Schulz
  2024-08-09  9:39   ` Kever Yang
  2024-08-12  6:30 ` [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Kever Yang
  10 siblings, 2 replies; 26+ messages in thread
From: Jonas Karlman @ 2024-08-02 22:56 UTC (permalink / raw)
  To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman

Add aliases for gpio controllers to soc u-boot dtsi files that are
missing aliases in soc dtsi files to ensure dev_seq() return the
expected number when a gpio controller is included in SPL.

Also drop the aliases from rk3288-u-boot.dtsi, they are already part of
rk3288.dtsi.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch
---
 arch/arm/dts/px30-u-boot.dtsi    | 4 ++++
 arch/arm/dts/rk3066a-u-boot.dtsi | 7 +++++++
 arch/arm/dts/rk3288-u-boot.dtsi  | 9 ---------
 arch/arm/dts/rk3xxx-u-boot.dtsi  | 7 +++++++
 arch/arm/dts/rv1108-u-boot.dtsi  | 9 +++++++++
 arch/arm/dts/rv1126-u-boot.dtsi  | 8 ++++++++
 6 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/arch/arm/dts/px30-u-boot.dtsi b/arch/arm/dts/px30-u-boot.dtsi
index abc6b49e6663..3dc70d4e432b 100644
--- a/arch/arm/dts/px30-u-boot.dtsi
+++ b/arch/arm/dts/px30-u-boot.dtsi
@@ -7,6 +7,10 @@
 
 / {
 	aliases {
+		gpio0 = &gpio0;
+		gpio1 = &gpio1;
+		gpio2 = &gpio2;
+		gpio3 = &gpio3;
 		mmc0 = &emmc;
 		mmc1 = &sdmmc;
 	};
diff --git a/arch/arm/dts/rk3066a-u-boot.dtsi b/arch/arm/dts/rk3066a-u-boot.dtsi
index 35b52d6fb7f3..60d18d2daeac 100644
--- a/arch/arm/dts/rk3066a-u-boot.dtsi
+++ b/arch/arm/dts/rk3066a-u-boot.dtsi
@@ -3,6 +3,13 @@
 #include "rockchip-u-boot.dtsi"
 #include "rk3xxx-u-boot.dtsi"
 
+/ {
+	aliases {
+		gpio4 = &gpio4;
+		gpio6 = &gpio6;
+	};
+};
+
 &gpio0 {
 	gpio-ranges = <&pinctrl 0 0 32>;
 };
diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
index 0f8053a8b690..379d9413adee 100644
--- a/arch/arm/dts/rk3288-u-boot.dtsi
+++ b/arch/arm/dts/rk3288-u-boot.dtsi
@@ -7,15 +7,6 @@
 
 / {
 	aliases {
-		gpio0 = &gpio0;
-		gpio1 = &gpio1;
-		gpio2 = &gpio2;
-		gpio3 = &gpio3;
-		gpio4 = &gpio4;
-		gpio5 = &gpio5;
-		gpio6 = &gpio6;
-		gpio7 = &gpio7;
-		gpio8 = &gpio8;
 		mmc0 = &emmc;
 		mmc1 = &sdmmc;
 		mmc2 = &sdio0;
diff --git a/arch/arm/dts/rk3xxx-u-boot.dtsi b/arch/arm/dts/rk3xxx-u-boot.dtsi
index 6af6a451ea78..097407ca72dc 100644
--- a/arch/arm/dts/rk3xxx-u-boot.dtsi
+++ b/arch/arm/dts/rk3xxx-u-boot.dtsi
@@ -1,6 +1,13 @@
 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 
 / {
+	aliases {
+		gpio0 = &gpio0;
+		gpio1 = &gpio1;
+		gpio2 = &gpio2;
+		gpio3 = &gpio3;
+	};
+
 	noc: syscon@10128000 {
 		compatible = "rockchip,rk3188-noc", "syscon";
 		reg = <0x10128000 0x2000>;
diff --git a/arch/arm/dts/rv1108-u-boot.dtsi b/arch/arm/dts/rv1108-u-boot.dtsi
index f772d618bd1d..58711e8b2f8a 100644
--- a/arch/arm/dts/rv1108-u-boot.dtsi
+++ b/arch/arm/dts/rv1108-u-boot.dtsi
@@ -5,6 +5,15 @@
 
 #include "rockchip-u-boot.dtsi"
 
+/ {
+	aliases {
+		gpio0 = &gpio0;
+		gpio1 = &gpio1;
+		gpio2 = &gpio2;
+		gpio3 = &gpio3;
+	};
+};
+
 &gpio0 {
 	gpio-ranges = <&pinctrl 0 0 32>;
 };
diff --git a/arch/arm/dts/rv1126-u-boot.dtsi b/arch/arm/dts/rv1126-u-boot.dtsi
index 3e6df1e433db..05b5f5260dd5 100644
--- a/arch/arm/dts/rv1126-u-boot.dtsi
+++ b/arch/arm/dts/rv1126-u-boot.dtsi
@@ -6,6 +6,14 @@
 #include "rockchip-u-boot.dtsi"
 
 / {
+	aliases {
+		gpio0 = &gpio0;
+		gpio1 = &gpio1;
+		gpio2 = &gpio2;
+		gpio3 = &gpio3;
+		gpio4 = &gpio4;
+	};
+
 	chosen {
 		u-boot,spl-boot-order = \
 			"same-as-spl", &emmc, &sdmmc;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle()
  2024-08-02 22:56 ` [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle() Jonas Karlman
@ 2024-08-06 15:12   ` Quentin Schulz
  0 siblings, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-06 15:12 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Use syscon_regmap_lookup_by_phandle() to simplify the code.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>

Thanks!
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper
  2024-08-02 22:56 ` [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper Jonas Karlman
@ 2024-08-06 15:36   ` Quentin Schulz
  2024-08-09  9:35   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-06 15:36 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Add a pin_to_bank() helper that can locate a pin bank based on the pin
> offset, to be used in get_gpio_mux() and gpio_request_enable() ops.
> 
> Reset ctrl->nr_pins to 0 so that pin_to_bank() can locate a bank after
> the second probe in U-Boot proper.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: New patch split from "pinctrl: rockchip: Add gpio_request_enable()
>      ops" of "rockchip: Add gpio request() ops" series
> ---
>   .../pinctrl/rockchip/pinctrl-rockchip-core.c   | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> index f6af22501c36..894ff74aee98 100644
> --- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> +++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> @@ -176,6 +176,23 @@ static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin)
>   	return ((val >> bit) & mask);
>   }
>   
> +static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
> +						      unsigned int pin)
> +{
> +	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
> +	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
> +	struct rockchip_pin_bank *bank = ctrl->pin_banks;
> +	int i;
> +
> +	for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
> +		if (pin >= bank->pin_base &&
> +		    pin < bank->pin_base + bank->nr_pins)
> +			return bank;
> +	}
> +
> +	return NULL;
> +}
> +
>   static int rockchip_pinctrl_get_gpio_mux(struct udevice *dev, int banknum,
>   					 int index)
>   {	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
> @@ -539,6 +556,7 @@ static struct rockchip_pin_ctrl *rockchip_pinctrl_get_soc_data(struct udevice *d
>   	drv_pmu_offs = ctrl->pmu_drv_offset;
>   	drv_grf_offs = ctrl->grf_drv_offset;
>   	bank = ctrl->pin_banks;
> +	ctrl->nr_pins = 0;
>   

Please in a separate commit, this seems to be an important bug to fix.

Now, I don't understand why we would probe twice in U-Boot proper. This 
seems very bad, shouldn't one probe be enough?

Further, I assume the issue is that we modify the static struct 
rockchip_pin_ctrl from within the pre-reloc probe and since the content 
won't have changed after relocation, whatever we modify in this struct 
will persist. This is.... bad. I would therefore suggest we migrate to 
const struct instead and have some kind of priv data that is allocated 
and initialized during probe and doesn't persist between probes (though 
I'm still perplexed by the double probe thingy).

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops
  2024-08-02 22:56 ` [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops Jonas Karlman
@ 2024-08-07  9:20   ` Quentin Schulz
  0 siblings, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07  9:20 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Add get_pins_count(), get_pin_name() and get_pin_muxing() ops to support
> the pinmux status cmd.
> 
>    => pinmux dev pinctrl
>    dev: pinctrl
>    => pinmux status
>    GPIO0_A0  : gpio
>    GPIO0_A1  : func-1
>    GPIO0_A2  : gpio
>    GPIO0_A3  : gpio
>    GPIO0_A4  : func-1
>    GPIO0_A5  : gpio
>    GPIO0_A6  : gpio
>    GPIO0_A7  : func-1
>    GPIO0_B0  : gpio
>    GPIO0_B1  : func-1
>    GPIO0_B2  : func-1
>    GPIO0_B3  : gpio
>    [...]
> 
> The change to use ENOENT for unrouted pins also help hide a "Error -22"
> message for unrouted pins using the gpio status -a cmd.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
> ---
> v2: Collect r-b tag
> ---
>   .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 50 ++++++++++++++++++-
>   1 file changed, 49 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> index 8ede74da40c9..345e0abdf5d1 100644
> --- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> +++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> @@ -126,7 +126,7 @@ static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin)
>   
>   	if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) {
>   		debug("pin %d is unrouted\n", pin);
> -		return -EINVAL;
> +		return -ENOENT;

Rather ENODEV or ENXIO according to the comments in 
https://elixir.bootlin.com/u-boot/v2024.07/source/include/linux/errno.h?

>   	}
>   
>   	if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY)
> @@ -193,6 +193,32 @@ static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
>   	return NULL;
>   }
>   
> +static int rockchip_pinctrl_get_pins_count(struct udevice *dev)
> +{
> +	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
> +	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
> +
> +	return ctrl->nr_pins;
> +}
> +
> +static const char *rockchip_pinctrl_get_pin_name(struct udevice *dev,
> +						 unsigned int selector)
> +{
> +	static char name[PINNAME_SIZE];
> +	struct rockchip_pin_bank *bank;
> +	unsigned int index;
> +
> +	bank = rockchip_pin_to_bank(dev, selector);
> +	if (!bank)
> +		return NULL;
> +
> +	index = selector - bank->pin_base;
> +	snprintf(name, sizeof(name), "GPIO%u_%c%u",
> +		 bank->bank_num, 'A' + (index / 8), index % 8);
> +

So before I forget, I think we have an issue on PX30 (unrelated to this 
patch) because GPIO0 is said to have 32 pins but it doesn't, it has 24, 
c.f. the TRM where GPIO0 doesn't have a D "sub-bank". I'll have to check 
the Linux kernel driver(s) too, but considering we've been using sysfs 
for setting GPIOs on PX30 for a while in the kernel, I assume somehow 
this is handled properly (or just luck).

I'm also wondering if the name shouldn't rather be the one coming from 
gpio-line-names too? This probably is more for the gpio command than the 
pinctrl one though I assume? I guess we could also tackle this in the 
future if someone would like to have this instead.

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops
  2024-08-02 22:56 ` [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops Jonas Karlman
@ 2024-08-07  9:25   ` Quentin Schulz
  2024-08-09  9:37   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07  9:25 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Implement gpio_request_enable() ops so that the gpio request() ops can
> be implemented and a gpio requested pin automatically is pinmuxed for
> gpio use, similar to Linux kernel.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>

Thanks!
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop
  2024-08-02 22:56 ` [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop Jonas Karlman
@ 2024-08-07  9:49   ` Quentin Schulz
  0 siblings, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07  9:49 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Get pinctrl device from gpio-ranges phandle when the property exists,
> fallback to get the first pinctrl device.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
> ---
> v2: Collect r-b tag
> ---
>   drivers/gpio/rk_gpio.c | 27 +++++++++++++++++++--------
>   1 file changed, 19 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
> index 24ba12dd820e..abece6409ae0 100644
> --- a/drivers/gpio/rk_gpio.c
> +++ b/drivers/gpio/rk_gpio.c
> @@ -181,12 +181,6 @@ static int rockchip_gpio_probe(struct udevice *dev)
>   
>   	priv->regs = dev_read_addr_ptr(dev);
>   
> -	if (CONFIG_IS_ENABLED(PINCTRL)) {
> -		ret = uclass_first_device_err(UCLASS_PINCTRL, &priv->pinctrl);
> -		if (ret)
> -			return ret;
> -	}
> -
>   	/*
>   	 * If "gpio-ranges" is present in the devicetree use it to parse
>   	 * the GPIO bank ID, otherwise use the legacy method.
> @@ -194,16 +188,33 @@ static int rockchip_gpio_probe(struct udevice *dev)
>   	ret = ofnode_parse_phandle_with_args(dev_ofnode(dev),
>   					     "gpio-ranges", NULL, 3,
>   					     0, &args);
> -	if (!ret || ret != -ENOENT) {
> +	if (!ret) {
>   		uc_priv->gpio_count = args.args[2];
>   		priv->bank = args.args[1] / ROCKCHIP_GPIOS_PER_BANK;

I assume this is broken if a bank has less than 32 GPIOs, e.g. rk3288 
and px30's GPIO0?

E.g. this would mean if gpio-ranges is proper in the DT (it isn't for 
PX30 today), GPIO1 would be detected as being GPIO0 because GPIO0 is 
only 24 pins?

I assume we could trick this by doing (base+nrpins-1)/32 which would 
make it much less likely to have overlaps (we would need multiple 
smaller banks to offset bank's bases enough).

> -	} else {
> +
> +		if (CONFIG_IS_ENABLED(PINCTRL)) {
> +			ret = uclass_get_device_by_ofnode(UCLASS_PINCTRL,
> +							  args.node,
> +							  &priv->pinctrl);

Could have been two separate commits here:
1) getting pinctrl from property
2) switching the order to save a call to uclass_first_device_err if we 
have a gpio-ranges property

> +			if (ret)
> +				return ret;
> +		}
> +	} else if (ret == -ENOENT || !CONFIG_IS_ENABLED(PINCTRL)) {
>   		uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;

Oof, another issue here wrt amount of gpios in a bank. Seems like I 
opened another can of worms :/

>   		ret = dev_read_alias_seq(dev, &priv->bank);
>   		if (ret) {
>   			end = strrchr(dev->name, '@');
>   			priv->bank = trailing_strtoln(dev->name, end);
>   		}
> +
> +		if (CONFIG_IS_ENABLED(PINCTRL)) {
> +			ret = uclass_first_device_err(UCLASS_PINCTRL,
> +						      &priv->pinctrl);
> +			if (ret)
> +				return ret;
> +		}
> +	} else {
> +		return ret;
>   	}

I'm getting a bit confused by the change of if conditions here...

Wouldn't it be much simpler to just do:

if (!priv->pinctrl && CONFIG_IS_ENABLED(PINCTRL)) {
     ret = uclass_first_device_err(UCLASS_PINCTRL, &priv->pinctrl);
     if (ret)
         return ret;
}

after the existing if-else and removing the uclass_first_device_err 
currently before it?

Also not sure to understand why we suddenly do not accept any error code 
(we used to accept everything but ENOENT).

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux()
  2024-08-02 22:56 ` [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux() Jonas Karlman
@ 2024-08-07 10:02   ` Quentin Schulz
  0 siblings, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07 10:02 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Use the pinctrl pin offset to get_gpio_mux() to remove the bank num
> dependency and instead only use the bank num to assign a bank name.
> 
> Most Rockchip SoCs use all 32 pins of each gpio controller, meaning the
> pinctrl pin offset typically is aligned to 32.
> 
> However, for gpio0 on RK3288 only 24 pins are used meaning the pinctrl
> pin offset start at pin 24 for gpio1. Use DIV_ROUND_UP to get the 32 pin
> aligned bank num.
> 

I now see that someone had already opened the can of worms :)

> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>

Thanks!
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 08/10] gpio: rockchip: Add request() ops
  2024-08-02 22:56 ` [PATCH v2 08/10] gpio: rockchip: Add request() ops Jonas Karlman
@ 2024-08-07 10:12   ` Quentin Schulz
  2024-08-09  9:38   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07 10:12 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Add a request() ops that call pinctrl_gpio_request() when the required
> gpio-ranges prop has been defined to signal pinctrl driver to use gpio
> pinmux.
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: New patch from "rockchip: Add gpio request() ops" series
> ---
>   drivers/gpio/rk_gpio.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
> index 5972f7f8612d..65811dbc78d6 100644
> --- a/drivers/gpio/rk_gpio.c
> +++ b/drivers/gpio/rk_gpio.c
> @@ -126,6 +126,15 @@ static int rockchip_gpio_get_function(struct udevice *dev, unsigned offset)
>   	return (data & mask) ? GPIOF_OUTPUT : GPIOF_INPUT;
>   }
>   
> +static int rockchip_gpio_request(struct udevice *dev, unsigned offset,
> +				 const char *label)
> +{
> +	if (CONFIG_IS_ENABLED(PINCTRL) && dev_read_bool(dev, "gpio-ranges"))

I assume we check for gpio-ranges property because 
pinctrl_gpio_get_pinctrl_and_offset called by pinctrl_gpio_request will 
return an error if the property isn't there?

I see that you're adding the gpio-ranges to Rockchip SoCs that are 
missing them (as well as the aliases), wouldn't it make more sense to 
move this commit after that commit and remove the dependency on 
gpio-ranges property and let pinctrl_gpio_request fail if it isn't there?

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props
  2024-08-02 22:56 ` [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props Jonas Karlman
@ 2024-08-07 10:28   ` Quentin Schulz
  2024-08-09  9:38   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07 10:28 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini
  Cc: u-boot, Johan Jonker

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Add gpio-ranges props to supported SoCs based on the following Linux
> patches:
> 
> ARM: dts: rockchip: add gpio-ranges property to gpio nodes
> https://lore.kernel.org/all/26007385-81dc-9961-05d5-8b9a0969d0b6@gmail.com/
> 
> arm64: dts: rockchip: add gpio-ranges property to gpio nodes
> https://lore.kernel.org/all/18c8c89a-9962-40f0-814f-81e2c420c957@gmail.com/
> 
> For RK3066 and RK3288 the gpio-ranges props is adjusted to match
> https://lore.kernel.org/all/541b7633-af3b-4392-ac29-7ee1f2c6f943@kwiboo.se/
> 
> Re-enable gpio6 on RK3066 now that the pinctrl pin offset is used with
> get_gpio_mux().
> 
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
> ---
> v2: Collect r-b tag
> 
> Cc: Johan Jonker <jbx6244@gmail.com>
> ---
>   arch/arm/dts/rk3036-u-boot.dtsi  | 12 ++++++++++++
>   arch/arm/dts/rk3066a-u-boot.dtsi |  3 +--
>   arch/arm/dts/rk3128-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk322x-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk3288-u-boot.dtsi  | 33 ++++++++++++++++++++++++++++++++
>   arch/arm/dts/rk3308-u-boot.dtsi  | 20 +++++++++++++++++++
>   arch/arm/dts/rk3328-u-boot.dtsi  | 13 +++++++++++++
>   arch/arm/dts/rk3368-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk3399-u-boot.dtsi  | 20 +++++++++++++++++++
>   arch/arm/dts/rv1108-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rv1126-u-boot.dtsi  | 14 ++++++++++++++
>   11 files changed, 177 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/dts/rk3036-u-boot.dtsi b/arch/arm/dts/rk3036-u-boot.dtsi
> index 41ac054b81e8..3e788187f630 100644
> --- a/arch/arm/dts/rk3036-u-boot.dtsi
> +++ b/arch/arm/dts/rk3036-u-boot.dtsi
> @@ -4,3 +4,15 @@
>    */
>   
>   #include "rockchip-u-boot.dtsi"
> +
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> diff --git a/arch/arm/dts/rk3066a-u-boot.dtsi b/arch/arm/dts/rk3066a-u-boot.dtsi
> index 06f405ca2c5e..35b52d6fb7f3 100644
> --- a/arch/arm/dts/rk3066a-u-boot.dtsi
> +++ b/arch/arm/dts/rk3066a-u-boot.dtsi
> @@ -24,6 +24,5 @@
>   };
>   
>   &gpio6 {
> -	status = "disabled";
> +	gpio-ranges = <&pinctrl 0 160 16>;
>   };
> -
> diff --git a/arch/arm/dts/rk3128-u-boot.dtsi b/arch/arm/dts/rk3128-u-boot.dtsi
> index 6d1965e6b520..dd1208e7cf40 100644
> --- a/arch/arm/dts/rk3128-u-boot.dtsi
> +++ b/arch/arm/dts/rk3128-u-boot.dtsi
> @@ -14,6 +14,22 @@
>   	bootph-all;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk322x-u-boot.dtsi b/arch/arm/dts/rk322x-u-boot.dtsi
> index aea917544b1c..f0e2a1f95aa0 100644
> --- a/arch/arm/dts/rk322x-u-boot.dtsi
> +++ b/arch/arm/dts/rk322x-u-boot.dtsi
> @@ -47,6 +47,22 @@
>   	max-frequency = <150000000>;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
> index a43d320ade7b..0f8053a8b690 100644
> --- a/arch/arm/dts/rk3288-u-boot.dtsi
> +++ b/arch/arm/dts/rk3288-u-boot.dtsi
> @@ -95,8 +95,41 @@
>   	clock-names = "clk_edp", "clk_edp_24m", "pclk_edp";
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 24>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 24 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 56 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 88 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 120 32>;
> +};
> +
> +&gpio5 {
> +	gpio-ranges = <&pinctrl 0 152 32>;
> +};
> +
> +&gpio6 {
> +	gpio-ranges = <&pinctrl 0 184 32>;
> +};
> +
>   &gpio7 {
>   	bootph-all;
> +	gpio-ranges = <&pinctrl 0 216 32>;
> +};
> +
> +&gpio8 {
> +	gpio-ranges = <&pinctrl 0 248 16>;
>   };
>   
>   &grf {
> diff --git a/arch/arm/dts/rk3308-u-boot.dtsi b/arch/arm/dts/rk3308-u-boot.dtsi
> index b7964e2756f3..c2d56b532f80 100644
> --- a/arch/arm/dts/rk3308-u-boot.dtsi
> +++ b/arch/arm/dts/rk3308-u-boot.dtsi
> @@ -54,6 +54,26 @@
>   	bootph-some-ram;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 128 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi
> index 0135bc08d491..3bc776146a82 100644
> --- a/arch/arm/dts/rk3328-u-boot.dtsi
> +++ b/arch/arm/dts/rk3328-u-boot.dtsi
> @@ -57,6 +57,19 @@
>   
>   &gpio0 {
>   	bootph-pre-ram;
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
>   };
>   
>   &grf {
> diff --git a/arch/arm/dts/rk3368-u-boot.dtsi b/arch/arm/dts/rk3368-u-boot.dtsi
> index 811d59ac346e..be2ebda83529 100644
> --- a/arch/arm/dts/rk3368-u-boot.dtsi
> +++ b/arch/arm/dts/rk3368-u-boot.dtsi
> @@ -26,3 +26,19 @@
>   		reg = <0x0 0xff740000 0x0 0x1000>;
>   	};
>   };
> +
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
> index c4c8bb1401ea..cead23ea7c20 100644
> --- a/arch/arm/dts/rk3399-u-boot.dtsi
> +++ b/arch/arm/dts/rk3399-u-boot.dtsi
> @@ -91,6 +91,26 @@
>   	bootph-some-ram;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;

Only 15 available here... /me sobs

TRM part 1:
GPIO0_A[7:0]
GPIO0_B[6:0]

no GPIO0_C or D it seems (though the TRM somehow mentions GPIO0_C but 
nothing to configure it and the Linux kernel driver says bank0 is 16 
pins (which is also incorrect as there's no GPIO0_B7)...

> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;

This also is incorrect, GPIO1_D only has one pin.

> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;

This also is incorrect...

GPIO2_B stops at pin4, no 5,6,7.

Same for GPIO2_D.

> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;

This also is incorrect..........

GPIO3_C stops at pin1.
GPIO3_D stops at pin

> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 128 32>;

This also is incorrect.................. (the number of dots matches the 
number of tears rolling down my face).

GPIO4_B stops at pin5.
GPIO4_D stops at pin1.

I only checked for the SoC I personally care (RK3399).

Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases
  2024-08-02 22:56 ` [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases Jonas Karlman
@ 2024-08-07 10:47   ` Quentin Schulz
  2024-08-09  9:39   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Quentin Schulz @ 2024-08-07 10:47 UTC (permalink / raw)
  To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 8/3/24 12:56 AM, Jonas Karlman wrote:
> Add aliases for gpio controllers to soc u-boot dtsi files that are
> missing aliases in soc dtsi files to ensure dev_seq() return the
> expected number when a gpio controller is included in SPL.
> 
> Also drop the aliases from rk3288-u-boot.dtsi, they are already part of
> rk3288.dtsi.
> 

I know that dt-bindings folks usually complain about those aliases in 
dtsi, but for Rockchip Heiko merges those usually, c.f. RK3399 for 
example. So I would suggest to send those patches upstream so we don't 
keep those forever in U-Boot?

The changes themselves look good to me though.

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper
  2024-08-02 22:56 ` [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper Jonas Karlman
  2024-08-06 15:36   ` Quentin Schulz
@ 2024-08-09  9:35   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-09  9:35 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot


On 2024/8/3 06:56, Jonas Karlman wrote:
> Add a pin_to_bank() helper that can locate a pin bank based on the pin
> offset, to be used in get_gpio_mux() and gpio_request_enable() ops.
>
> Reset ctrl->nr_pins to 0 so that pin_to_bank() can locate a bank after
> the second probe in U-Boot proper.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: New patch split from "pinctrl: rockchip: Add gpio_request_enable()
>      ops" of "rockchip: Add gpio request() ops" series
> ---
>   .../pinctrl/rockchip/pinctrl-rockchip-core.c   | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
>
> diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> index f6af22501c36..894ff74aee98 100644
> --- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> +++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> @@ -176,6 +176,23 @@ static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin)
>   	return ((val >> bit) & mask);
>   }
>   
> +static struct rockchip_pin_bank *rockchip_pin_to_bank(struct udevice *dev,
> +						      unsigned int pin)
> +{
> +	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
> +	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
> +	struct rockchip_pin_bank *bank = ctrl->pin_banks;
> +	int i;
> +
> +	for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
> +		if (pin >= bank->pin_base &&
> +		    pin < bank->pin_base + bank->nr_pins)
> +			return bank;
> +	}
> +
> +	return NULL;
> +}
> +
>   static int rockchip_pinctrl_get_gpio_mux(struct udevice *dev, int banknum,
>   					 int index)
>   {	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
> @@ -539,6 +556,7 @@ static struct rockchip_pin_ctrl *rockchip_pinctrl_get_soc_data(struct udevice *d
>   	drv_pmu_offs = ctrl->pmu_drv_offset;
>   	drv_grf_offs = ctrl->grf_drv_offset;
>   	bank = ctrl->pin_banks;
> +	ctrl->nr_pins = 0;
>   
>   	for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
>   		int bank_pins = 0;

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops
  2024-08-02 22:56 ` [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops Jonas Karlman
  2024-08-07  9:25   ` Quentin Schulz
@ 2024-08-09  9:37   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-09  9:37 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot


On 2024/8/3 06:56, Jonas Karlman wrote:
> Implement gpio_request_enable() ops so that the gpio request() ops can
> be implemented and a gpio requested pin automatically is pinmuxed for
> gpio use, similar to Linux kernel.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: New patch from "rockchip: Add gpio request() ops" series
> ---
>   drivers/pinctrl/rockchip/pinctrl-rockchip-core.c | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> index 345e0abdf5d1..e164af0d8f61 100644
> --- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> +++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
> @@ -358,6 +358,18 @@ static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux)
>   	return 0;
>   }
>   
> +static int rockchip_pinctrl_gpio_request_enable(struct udevice *dev,
> +						unsigned int selector)
> +{
> +	struct rockchip_pin_bank *bank;
> +
> +	bank = rockchip_pin_to_bank(dev, selector);
> +	if (!bank)
> +		return -EINVAL;
> +
> +	return rockchip_set_mux(bank, selector - bank->pin_base, RK_FUNC_GPIO);
> +}
> +
>   static int rockchip_perpin_drv_list[DRV_TYPE_MAX][8] = {
>   	{ 2, 4, 8, 12, -1, -1, -1, -1 },
>   	{ 3, 6, 9, 12, -1, -1, -1, -1 },
> @@ -608,6 +620,7 @@ const struct pinctrl_ops rockchip_pinctrl_ops = {
>   	.set_state			= rockchip_pinctrl_set_state,
>   	.get_gpio_mux			= rockchip_pinctrl_get_gpio_mux,
>   	.get_pin_muxing			= rockchip_pinctrl_get_pin_muxing,
> +	.gpio_request_enable		= rockchip_pinctrl_gpio_request_enable,
>   };
>   
>   /* retrieve the soc specific data */

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 08/10] gpio: rockchip: Add request() ops
  2024-08-02 22:56 ` [PATCH v2 08/10] gpio: rockchip: Add request() ops Jonas Karlman
  2024-08-07 10:12   ` Quentin Schulz
@ 2024-08-09  9:38   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-09  9:38 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot


On 2024/8/3 06:56, Jonas Karlman wrote:
> Add a request() ops that call pinctrl_gpio_request() when the required
> gpio-ranges prop has been defined to signal pinctrl driver to use gpio
> pinmux.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: New patch from "rockchip: Add gpio request() ops" series
> ---
>   drivers/gpio/rk_gpio.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
>
> diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
> index 5972f7f8612d..65811dbc78d6 100644
> --- a/drivers/gpio/rk_gpio.c
> +++ b/drivers/gpio/rk_gpio.c
> @@ -126,6 +126,15 @@ static int rockchip_gpio_get_function(struct udevice *dev, unsigned offset)
>   	return (data & mask) ? GPIOF_OUTPUT : GPIOF_INPUT;
>   }
>   
> +static int rockchip_gpio_request(struct udevice *dev, unsigned offset,
> +				 const char *label)
> +{
> +	if (CONFIG_IS_ENABLED(PINCTRL) && dev_read_bool(dev, "gpio-ranges"))
> +		return pinctrl_gpio_request(dev, offset, label);
> +
> +	return 0;
> +}
> +
>   /* Simple SPL interface to GPIOs */
>   #ifdef CONFIG_SPL_BUILD
>   
> @@ -229,6 +238,7 @@ static int rockchip_gpio_probe(struct udevice *dev)
>   }
>   
>   static const struct dm_gpio_ops gpio_rockchip_ops = {
> +	.request		= rockchip_gpio_request,
>   	.direction_input	= rockchip_gpio_direction_input,
>   	.direction_output	= rockchip_gpio_direction_output,
>   	.get_value		= rockchip_gpio_get_value,

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props
  2024-08-02 22:56 ` [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props Jonas Karlman
  2024-08-07 10:28   ` Quentin Schulz
@ 2024-08-09  9:38   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-09  9:38 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini
  Cc: u-boot, Johan Jonker


On 2024/8/3 06:56, Jonas Karlman wrote:
> Add gpio-ranges props to supported SoCs based on the following Linux
> patches:
>
> ARM: dts: rockchip: add gpio-ranges property to gpio nodes
> https://lore.kernel.org/all/26007385-81dc-9961-05d5-8b9a0969d0b6@gmail.com/
>
> arm64: dts: rockchip: add gpio-ranges property to gpio nodes
> https://lore.kernel.org/all/18c8c89a-9962-40f0-814f-81e2c420c957@gmail.com/
>
> For RK3066 and RK3288 the gpio-ranges props is adjusted to match
> https://lore.kernel.org/all/541b7633-af3b-4392-ac29-7ee1f2c6f943@kwiboo.se/
>
> Re-enable gpio6 on RK3066 now that the pinctrl pin offset is used with
> get_gpio_mux().
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: Collect r-b tag
>
> Cc: Johan Jonker <jbx6244@gmail.com>
> ---
>   arch/arm/dts/rk3036-u-boot.dtsi  | 12 ++++++++++++
>   arch/arm/dts/rk3066a-u-boot.dtsi |  3 +--
>   arch/arm/dts/rk3128-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk322x-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk3288-u-boot.dtsi  | 33 ++++++++++++++++++++++++++++++++
>   arch/arm/dts/rk3308-u-boot.dtsi  | 20 +++++++++++++++++++
>   arch/arm/dts/rk3328-u-boot.dtsi  | 13 +++++++++++++
>   arch/arm/dts/rk3368-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rk3399-u-boot.dtsi  | 20 +++++++++++++++++++
>   arch/arm/dts/rv1108-u-boot.dtsi  | 16 ++++++++++++++++
>   arch/arm/dts/rv1126-u-boot.dtsi  | 14 ++++++++++++++
>   11 files changed, 177 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/dts/rk3036-u-boot.dtsi b/arch/arm/dts/rk3036-u-boot.dtsi
> index 41ac054b81e8..3e788187f630 100644
> --- a/arch/arm/dts/rk3036-u-boot.dtsi
> +++ b/arch/arm/dts/rk3036-u-boot.dtsi
> @@ -4,3 +4,15 @@
>    */
>   
>   #include "rockchip-u-boot.dtsi"
> +
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> diff --git a/arch/arm/dts/rk3066a-u-boot.dtsi b/arch/arm/dts/rk3066a-u-boot.dtsi
> index 06f405ca2c5e..35b52d6fb7f3 100644
> --- a/arch/arm/dts/rk3066a-u-boot.dtsi
> +++ b/arch/arm/dts/rk3066a-u-boot.dtsi
> @@ -24,6 +24,5 @@
>   };
>   
>   &gpio6 {
> -	status = "disabled";
> +	gpio-ranges = <&pinctrl 0 160 16>;
>   };
> -
> diff --git a/arch/arm/dts/rk3128-u-boot.dtsi b/arch/arm/dts/rk3128-u-boot.dtsi
> index 6d1965e6b520..dd1208e7cf40 100644
> --- a/arch/arm/dts/rk3128-u-boot.dtsi
> +++ b/arch/arm/dts/rk3128-u-boot.dtsi
> @@ -14,6 +14,22 @@
>   	bootph-all;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk322x-u-boot.dtsi b/arch/arm/dts/rk322x-u-boot.dtsi
> index aea917544b1c..f0e2a1f95aa0 100644
> --- a/arch/arm/dts/rk322x-u-boot.dtsi
> +++ b/arch/arm/dts/rk322x-u-boot.dtsi
> @@ -47,6 +47,22 @@
>   	max-frequency = <150000000>;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
> index a43d320ade7b..0f8053a8b690 100644
> --- a/arch/arm/dts/rk3288-u-boot.dtsi
> +++ b/arch/arm/dts/rk3288-u-boot.dtsi
> @@ -95,8 +95,41 @@
>   	clock-names = "clk_edp", "clk_edp_24m", "pclk_edp";
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 24>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 24 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 56 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 88 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 120 32>;
> +};
> +
> +&gpio5 {
> +	gpio-ranges = <&pinctrl 0 152 32>;
> +};
> +
> +&gpio6 {
> +	gpio-ranges = <&pinctrl 0 184 32>;
> +};
> +
>   &gpio7 {
>   	bootph-all;
> +	gpio-ranges = <&pinctrl 0 216 32>;
> +};
> +
> +&gpio8 {
> +	gpio-ranges = <&pinctrl 0 248 16>;
>   };
>   
>   &grf {
> diff --git a/arch/arm/dts/rk3308-u-boot.dtsi b/arch/arm/dts/rk3308-u-boot.dtsi
> index b7964e2756f3..c2d56b532f80 100644
> --- a/arch/arm/dts/rk3308-u-boot.dtsi
> +++ b/arch/arm/dts/rk3308-u-boot.dtsi
> @@ -54,6 +54,26 @@
>   	bootph-some-ram;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 128 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi
> index 0135bc08d491..3bc776146a82 100644
> --- a/arch/arm/dts/rk3328-u-boot.dtsi
> +++ b/arch/arm/dts/rk3328-u-boot.dtsi
> @@ -57,6 +57,19 @@
>   
>   &gpio0 {
>   	bootph-pre-ram;
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
>   };
>   
>   &grf {
> diff --git a/arch/arm/dts/rk3368-u-boot.dtsi b/arch/arm/dts/rk3368-u-boot.dtsi
> index 811d59ac346e..be2ebda83529 100644
> --- a/arch/arm/dts/rk3368-u-boot.dtsi
> +++ b/arch/arm/dts/rk3368-u-boot.dtsi
> @@ -26,3 +26,19 @@
>   		reg = <0x0 0xff740000 0x0 0x1000>;
>   	};
>   };
> +
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
> index c4c8bb1401ea..cead23ea7c20 100644
> --- a/arch/arm/dts/rk3399-u-boot.dtsi
> +++ b/arch/arm/dts/rk3399-u-boot.dtsi
> @@ -91,6 +91,26 @@
>   	bootph-some-ram;
>   };
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 128 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rv1108-u-boot.dtsi b/arch/arm/dts/rv1108-u-boot.dtsi
> index ccf2d8bd83ec..f772d618bd1d 100644
> --- a/arch/arm/dts/rv1108-u-boot.dtsi
> +++ b/arch/arm/dts/rv1108-u-boot.dtsi
> @@ -5,6 +5,22 @@
>   
>   #include "rockchip-u-boot.dtsi"
>   
> +&gpio0 {
> +	gpio-ranges = <&pinctrl 0 0 32>;
> +};
> +
> +&gpio1 {
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
>   &grf {
>   	bootph-all;
>   };
> diff --git a/arch/arm/dts/rv1126-u-boot.dtsi b/arch/arm/dts/rv1126-u-boot.dtsi
> index 448598013578..3e6df1e433db 100644
> --- a/arch/arm/dts/rv1126-u-boot.dtsi
> +++ b/arch/arm/dts/rv1126-u-boot.dtsi
> @@ -31,10 +31,24 @@
>   
>   &gpio0 {
>   	bootph-pre-ram;
> +	gpio-ranges = <&pinctrl 0 0 32>;
>   };
>   
>   &gpio1 {
>   	bootph-pre-ram;
> +	gpio-ranges = <&pinctrl 0 32 32>;
> +};
> +
> +&gpio2 {
> +	gpio-ranges = <&pinctrl 0 64 32>;
> +};
> +
> +&gpio3 {
> +	gpio-ranges = <&pinctrl 0 96 32>;
> +};
> +
> +&gpio4 {
> +	gpio-ranges = <&pinctrl 0 128 2>;
>   };
>   
>   &grf {

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases
  2024-08-02 22:56 ` [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases Jonas Karlman
  2024-08-07 10:47   ` Quentin Schulz
@ 2024-08-09  9:39   ` Kever Yang
  1 sibling, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-09  9:39 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot


On 2024/8/3 06:56, Jonas Karlman wrote:
> Add aliases for gpio controllers to soc u-boot dtsi files that are
> missing aliases in soc dtsi files to ensure dev_seq() return the
> expected number when a gpio controller is included in SPL.
>
> Also drop the aliases from rk3288-u-boot.dtsi, they are already part of
> rk3288.dtsi.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: New patch
> ---
>   arch/arm/dts/px30-u-boot.dtsi    | 4 ++++
>   arch/arm/dts/rk3066a-u-boot.dtsi | 7 +++++++
>   arch/arm/dts/rk3288-u-boot.dtsi  | 9 ---------
>   arch/arm/dts/rk3xxx-u-boot.dtsi  | 7 +++++++
>   arch/arm/dts/rv1108-u-boot.dtsi  | 9 +++++++++
>   arch/arm/dts/rv1126-u-boot.dtsi  | 8 ++++++++
>   6 files changed, 35 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/dts/px30-u-boot.dtsi b/arch/arm/dts/px30-u-boot.dtsi
> index abc6b49e6663..3dc70d4e432b 100644
> --- a/arch/arm/dts/px30-u-boot.dtsi
> +++ b/arch/arm/dts/px30-u-boot.dtsi
> @@ -7,6 +7,10 @@
>   
>   / {
>   	aliases {
> +		gpio0 = &gpio0;
> +		gpio1 = &gpio1;
> +		gpio2 = &gpio2;
> +		gpio3 = &gpio3;
>   		mmc0 = &emmc;
>   		mmc1 = &sdmmc;
>   	};
> diff --git a/arch/arm/dts/rk3066a-u-boot.dtsi b/arch/arm/dts/rk3066a-u-boot.dtsi
> index 35b52d6fb7f3..60d18d2daeac 100644
> --- a/arch/arm/dts/rk3066a-u-boot.dtsi
> +++ b/arch/arm/dts/rk3066a-u-boot.dtsi
> @@ -3,6 +3,13 @@
>   #include "rockchip-u-boot.dtsi"
>   #include "rk3xxx-u-boot.dtsi"
>   
> +/ {
> +	aliases {
> +		gpio4 = &gpio4;
> +		gpio6 = &gpio6;
> +	};
> +};
> +
>   &gpio0 {
>   	gpio-ranges = <&pinctrl 0 0 32>;
>   };
> diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
> index 0f8053a8b690..379d9413adee 100644
> --- a/arch/arm/dts/rk3288-u-boot.dtsi
> +++ b/arch/arm/dts/rk3288-u-boot.dtsi
> @@ -7,15 +7,6 @@
>   
>   / {
>   	aliases {
> -		gpio0 = &gpio0;
> -		gpio1 = &gpio1;
> -		gpio2 = &gpio2;
> -		gpio3 = &gpio3;
> -		gpio4 = &gpio4;
> -		gpio5 = &gpio5;
> -		gpio6 = &gpio6;
> -		gpio7 = &gpio7;
> -		gpio8 = &gpio8;
>   		mmc0 = &emmc;
>   		mmc1 = &sdmmc;
>   		mmc2 = &sdio0;
> diff --git a/arch/arm/dts/rk3xxx-u-boot.dtsi b/arch/arm/dts/rk3xxx-u-boot.dtsi
> index 6af6a451ea78..097407ca72dc 100644
> --- a/arch/arm/dts/rk3xxx-u-boot.dtsi
> +++ b/arch/arm/dts/rk3xxx-u-boot.dtsi
> @@ -1,6 +1,13 @@
>   // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>   
>   / {
> +	aliases {
> +		gpio0 = &gpio0;
> +		gpio1 = &gpio1;
> +		gpio2 = &gpio2;
> +		gpio3 = &gpio3;
> +	};
> +
>   	noc: syscon@10128000 {
>   		compatible = "rockchip,rk3188-noc", "syscon";
>   		reg = <0x10128000 0x2000>;
> diff --git a/arch/arm/dts/rv1108-u-boot.dtsi b/arch/arm/dts/rv1108-u-boot.dtsi
> index f772d618bd1d..58711e8b2f8a 100644
> --- a/arch/arm/dts/rv1108-u-boot.dtsi
> +++ b/arch/arm/dts/rv1108-u-boot.dtsi
> @@ -5,6 +5,15 @@
>   
>   #include "rockchip-u-boot.dtsi"
>   
> +/ {
> +	aliases {
> +		gpio0 = &gpio0;
> +		gpio1 = &gpio1;
> +		gpio2 = &gpio2;
> +		gpio3 = &gpio3;
> +	};
> +};
> +
>   &gpio0 {
>   	gpio-ranges = <&pinctrl 0 0 32>;
>   };
> diff --git a/arch/arm/dts/rv1126-u-boot.dtsi b/arch/arm/dts/rv1126-u-boot.dtsi
> index 3e6df1e433db..05b5f5260dd5 100644
> --- a/arch/arm/dts/rv1126-u-boot.dtsi
> +++ b/arch/arm/dts/rv1126-u-boot.dtsi
> @@ -6,6 +6,14 @@
>   #include "rockchip-u-boot.dtsi"
>   
>   / {
> +	aliases {
> +		gpio0 = &gpio0;
> +		gpio1 = &gpio1;
> +		gpio2 = &gpio2;
> +		gpio3 = &gpio3;
> +		gpio4 = &gpio4;
> +	};
> +
>   	chosen {
>   		u-boot,spl-boot-order = \
>   			"same-as-spl", &emmc, &sdmmc;

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd
  2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
                   ` (9 preceding siblings ...)
  2024-08-02 22:56 ` [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases Jonas Karlman
@ 2024-08-12  6:30 ` Kever Yang
  10 siblings, 0 replies; 26+ messages in thread
From: Kever Yang @ 2024-08-12  6:30 UTC (permalink / raw)
  To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot

Hi Jonas,

On 2024/8/3 06:56, Jonas Karlman wrote:
> This series includes some cleanup, add support for using the pinmux
> status cmd and add support for the gpio request ops.
>
> Following is an example on a Radxa ROCK 5A (RK3588S):
>
>    => pinmux dev pinctrl
>    dev: pinctrl
>    => pinmux status
>    GPIO0_A0  : gpio
>    GPIO0_A1  : func-2
>    GPIO0_A2  : gpio
>    GPIO0_A3  : gpio
>    GPIO0_A4  : func-1
>    GPIO0_A5  : func-2
>    GPIO0_A6  : gpio
>    GPIO0_A7  : gpio
>    GPIO0_B0  : gpio
>    GPIO0_B1  : gpio
>    GPIO0_B2  : gpio
>    GPIO0_B3  : gpio
>    GPIO0_B4  : gpio
>    GPIO0_B5  : func-10
>    GPIO0_B6  : func-10
>    GPIO0_B7  : gpio
>    [...]
>
> and on a ASUS TinkerBoard R2.0 (RK3288W):
>
>    => pinmux dev pinctrl
>    dev: pinctrl
>    => pinmux status
>    [...]
>    GPIO2_C6  : gpio
>    GPIO2_C7  : gpio
>    GPIO2_D0  : unrouted
>    GPIO2_D1  : unrouted
>    GPIO2_D2  : unrouted
>    GPIO2_D3  : unrouted
>    GPIO2_D4  : unrouted
>    GPIO2_D5  : unrouted
>    GPIO2_D6  : unrouted
>    GPIO2_D7  : unrouted
>    GPIO3_A0  : func-2
>    GPIO3_A1  : func-2
>    [...]
>
> Patch 1 refactor to use syscon_regmap_lookup_by_phandle() helper.
> Patch 6 refactor to get pinctrl device from gpio-ranges prop.
>
> Patch 2, 3 and 7 change to use pinctrl pin offset instead of bank num to
> get current pinmux.
> Patch 4 add required ops for use of the pinmux status cmd.
>
> Patch 5 and 8 add gpio_request_enable() and request() ops.
>
> Patch 9 add gpio-ranges props for remaining RK SoCs, this is strictly
> not needed for pinmux status cmd to function. However, the change to not
> require the pin controller offset to be 32 aligned was required to add
> gpio-ranges props for RK3288.
>
> Patch 10 add gpio aliases for RK SoCs that is missing alias for gpio
> controllers.
>
> Changes in v2:
> - Drop fixes patches already applied
> - Split adding pin_to_bank() helper into own patch
> - Add gpio_request_enable() and request() ops patch from the "rockchip:
>    Add gpio request() ops" series
> - Add missing gpio aliases
> - Collect r-b tags
>
> Jonas Karlman (10):
>    pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle()
>    pinctrl: rockchip: Add a pin_to_bank() helper
>    pinctrl: rockchip: Update get_gpio_mux() ops
>    pinctrl: rockchip: Add pinmux status related ops
>    pinctrl: rockchip: Add gpio_request_enable() ops
>    gpio: rockchip: Get pinctrl device from gpio-ranges prop
>    gpio: rockchip: Use pinctrl pin offset to get_gpio_mux()
>    gpio: rockchip: Add request() ops
>    rockchip: gpio: Add gpio-ranges props
>    rockchip: gpio: Add missing gpio aliases
>
>   arch/arm/dts/px30-u-boot.dtsi                 |   4 +
>   arch/arm/dts/rk3036-u-boot.dtsi               |  12 ++
>   arch/arm/dts/rk3066a-u-boot.dtsi              |  10 +-
>   arch/arm/dts/rk3128-u-boot.dtsi               |  16 ++
>   arch/arm/dts/rk322x-u-boot.dtsi               |  16 ++
>   arch/arm/dts/rk3288-u-boot.dtsi               |  42 ++++--

This series extend the pinctrl driver size and cause a board 
"miqi-rk3288" build fail:

binman: Error 1 running 'mkimage -d 
./mkimage-in-simple-bin.mkimage-u-boot-spl -n rk3288 -T rksd 
./idbloader.img': Error: SPL image is too large (size 0x8800 than 0x8000)

We use to met this kind of issue very frequently, and add 
"CONFIG_SPL_BUILD" to limit the SPL size in driver, we may need to do 
this again for this feature.


Thanks,

- Kever

>   arch/arm/dts/rk3308-u-boot.dtsi               |  20 +++
>   arch/arm/dts/rk3328-u-boot.dtsi               |  13 ++
>   arch/arm/dts/rk3368-u-boot.dtsi               |  16 ++
>   arch/arm/dts/rk3399-u-boot.dtsi               |  20 +++
>   arch/arm/dts/rk3xxx-u-boot.dtsi               |   7 +
>   arch/arm/dts/rv1108-u-boot.dtsi               |  25 +++
>   arch/arm/dts/rv1126-u-boot.dtsi               |  22 +++
>   drivers/gpio/rk_gpio.c                        |  54 +++++--
>   .../pinctrl/rockchip/pinctrl-rockchip-core.c  | 142 ++++++++++++++----
>   15 files changed, 364 insertions(+), 55 deletions(-)
>

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2024-08-12  6:30 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-02 22:56 [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Jonas Karlman
2024-08-02 22:56 ` [PATCH v2 01/10] pinctrl: rockchip: Use syscon_regmap_lookup_by_phandle() Jonas Karlman
2024-08-06 15:12   ` Quentin Schulz
2024-08-02 22:56 ` [PATCH v2 02/10] pinctrl: rockchip: Add a pin_to_bank() helper Jonas Karlman
2024-08-06 15:36   ` Quentin Schulz
2024-08-09  9:35   ` Kever Yang
2024-08-02 22:56 ` [PATCH v2 03/10] pinctrl: rockchip: Update get_gpio_mux() ops Jonas Karlman
2024-08-02 22:56 ` [PATCH v2 04/10] pinctrl: rockchip: Add pinmux status related ops Jonas Karlman
2024-08-07  9:20   ` Quentin Schulz
2024-08-02 22:56 ` [PATCH v2 05/10] pinctrl: rockchip: Add gpio_request_enable() ops Jonas Karlman
2024-08-07  9:25   ` Quentin Schulz
2024-08-09  9:37   ` Kever Yang
2024-08-02 22:56 ` [PATCH v2 06/10] gpio: rockchip: Get pinctrl device from gpio-ranges prop Jonas Karlman
2024-08-07  9:49   ` Quentin Schulz
2024-08-02 22:56 ` [PATCH v2 07/10] gpio: rockchip: Use pinctrl pin offset to get_gpio_mux() Jonas Karlman
2024-08-07 10:02   ` Quentin Schulz
2024-08-02 22:56 ` [PATCH v2 08/10] gpio: rockchip: Add request() ops Jonas Karlman
2024-08-07 10:12   ` Quentin Schulz
2024-08-09  9:38   ` Kever Yang
2024-08-02 22:56 ` [PATCH v2 09/10] rockchip: gpio: Add gpio-ranges props Jonas Karlman
2024-08-07 10:28   ` Quentin Schulz
2024-08-09  9:38   ` Kever Yang
2024-08-02 22:56 ` [PATCH v2 10/10] rockchip: gpio: Add missing gpio aliases Jonas Karlman
2024-08-07 10:47   ` Quentin Schulz
2024-08-09  9:39   ` Kever Yang
2024-08-12  6:30 ` [PATCH v2 00/10] rockchip: pinctrl: Add support for pinmux status cmd Kever Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox