[PATCH 1/7] ARM: orion: register software nodes for GPIO chips

Dmitry Torokhov dmitry.torokhov at gmail.com
Sun Jul 5 18:29:18 PDT 2026


Register static software nodes (orion_gpio_swnodes) for Orion GPIO chips
during gpiochip registration in orion_gpio_init(). This enables board
setup files to reference GPIO controllers using PROPERTY_ENTRY_GPIO()
when converting legacy platform data to software nodes.

Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
---
 arch/arm/plat-orion/gpio.c                    | 10 ++++++++++
 arch/arm/plat-orion/include/plat/orion-gpio.h |  3 +++
 2 files changed, 13 insertions(+)

diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index 49e29b7894a3..7e3e755cb85f 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -24,6 +24,7 @@
 #include <linux/of.h>
 #include <linux/of_irq.h>
 #include <linux/of_address.h>
+#include <linux/property.h>
 #include <plat/orion-gpio.h>
 
 /*
@@ -93,6 +94,11 @@ static void __iomem *GPIO_LEVEL_MASK(struct orion_gpio_chip *ochip)
 static struct orion_gpio_chip orion_gpio_chips[2];
 static int orion_gpio_chip_count;
 
+const struct software_node orion_gpio_swnodes[2] = {
+	{ .name = "orion_gpio0" },
+	{ .name = "orion_gpio1" },
+};
+
 static inline void
 __set_direction(struct orion_gpio_chip *ochip, unsigned pin, int input)
 {
@@ -522,6 +528,7 @@ void __init orion_gpio_init(int gpio_base, int ngpio,
 			    int secondary_irq_base,
 			    int irqs[4])
 {
+	const struct software_node *swnode = &orion_gpio_swnodes[orion_gpio_chip_count];
 	struct orion_gpio_chip *ochip;
 	struct irq_chip_generic *gc;
 	struct irq_chip_type *ct;
@@ -554,6 +561,9 @@ void __init orion_gpio_init(int gpio_base, int ngpio,
 	ochip->mask_offset = mask_offset;
 	ochip->secondary_irq_base = secondary_irq_base;
 
+	software_node_register(swnode);
+	ochip->chip.fwnode = software_node_fwnode(swnode);
+
 	gpiochip_add_data(&ochip->chip, ochip);
 
 	/*
diff --git a/arch/arm/plat-orion/include/plat/orion-gpio.h b/arch/arm/plat-orion/include/plat/orion-gpio.h
index 25a2963e0e0f..e3dac6e8a1b7 100644
--- a/arch/arm/plat-orion/include/plat/orion-gpio.h
+++ b/arch/arm/plat-orion/include/plat/orion-gpio.h
@@ -16,6 +16,9 @@
 #include <linux/irqdomain.h>
 
 struct gpio_desc;
+struct software_node;
+
+extern const struct software_node orion_gpio_swnodes[2];
 
 /*
  * Orion-specific GPIO API extensions.

-- 
2.55.0.rc0.799.gd6f94ed593-goog




More information about the linux-arm-kernel mailing list