Re: [PATCH] arm64: dts: ti: k3-pinctrl: Add virtual GPIO select mux macros

From: Akashdeep Kaur

Date: Mon Sep 21 2026 - 02:46:41 EST


Hi Vignesh,

On 18/09/26 13:57, Vignesh Raghavendra wrote:


On 17/09/26 16:45, Akashdeep Kaur wrote:
Add virtual GPIO select mux macros to allow users to select GPIO
controller bank for pins. The two GPIO controller instances in the
MAIN domain share physical pins, and the vgpio_sel field routes each
...
+#define VGPIO_SEL_SHIFT (4)
#define WKUP_LVL_EN_SHIFT (7)
#define WKUP_LVL_POL_SHIFT (8)
#define DEBOUNCE_SHIFT (11)
@@ -111,6 +112,9 @@
#define PIN_WKUP_EN_LEVEL_HIGH (WKUP_ENABLE | WKUP_ON_LEVEL | WKUP_LEVEL_HIGH)
#define PIN_WKUP_EN (WKUP_ENABLE | WKUP_ON_EDGE)
+#define PIN_VGPIO_SEL0 (0 << VGPIO_SEL_SHIFT)
+#define PIN_VGPIO_SEL2 (1 << VGPIO_SEL_SHIFT)
+

Unfortunately, this field has different meaning in different SoCs. Here
is the definition from J784s4:

Note this field is irrelevant when Muxmode is not 7.
for MAIN GPIO
00 = GPIO0 or 1 depending on the specific pin (meaning if mode 7 has
GPIO0.x then it is GPIO0 and if GPIO1.x then GPIO1)
01 - GPIO2 or 3 depending on the specific pin (meaning if mode 7 has
GPIO0.x then it is GPIO2 and if GPIO1.x then GPIO3)
10 - GPIO4 or 5 depending on the specific pin (meaning if mode 7 has
GPIO0.x then it is GPIO4 and if GPIO1.x then GPIO5)
11 - GPIO6 or 7 depending on the specific pin (meaning if mode 7 has
GPIO0.x then it is GPIO6 and if GPIO1.x then GPIO7)
Note this field is irrelevant when Muxmode is not 7.

Thus, macros need to be generic or it should just open code the constant.

Thank you for the feedback and the detailed J784S4 example. You're
absolutely right that the naming was too AM62L-specific. I've addressed this in v2 by using generic value-based naming (PIN_VGPIO_SEL0/1/2/3) and adding all four values. The commit message now clarifies that the meaning is SoC-specific.

Thanks and Regards,
Akashdeep Kaur

/* Default mux configuration for gpio-ranges to use with pinctrl */
#define PIN_GPIO_RANGE_IOPAD (PIN_INPUT | 7)