[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