* [PATCH 1/7] ARM: orion: register software nodes for GPIO chips
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 2/7] ARM: mv78xx0: buffalo-wxl: convert gpio-keys to use software nodes Dmitry Torokhov
` (7 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
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@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
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 2/7] ARM: mv78xx0: buffalo-wxl: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 1/7] ARM: orion: register software nodes for GPIO chips Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 3/7] ARM: orion5x: dns323: " Dmitry Torokhov
` (6 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the Buffalo WXL board setup from legacy gpio_keys_platform_data
to software nodes. The gpio-keys platform device is registered with
static software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-mv78xx0/buffalo-wxl-setup.c | 50 +++++++++++++++++++------------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
index 62e982f74bc2..0c15dd25e966 100644
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
@@ -15,8 +15,10 @@
#include <linux/ethtool.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
-#include <linux/gpio_keys.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/input.h>
+#include <plat/orion-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include "mv78xx0.h"
@@ -105,31 +107,39 @@ static unsigned int wxl_mpp_config[] __initdata = {
0
};
-static struct gpio_keys_button tswxl_buttons[] = {
- {
- .code = KEY_OPTION,
- .gpio = TSWXL_AUTO_SWITCH,
- .desc = "Power-auto Switch",
- .active_low = 1,
- }
+static const struct software_node tswxl_gpio_keys_node = {
+ .name = "tswxl-gpio-keys",
};
-static struct gpio_keys_platform_data tswxl_button_data = {
- .buttons = tswxl_buttons,
- .nbuttons = ARRAY_SIZE(tswxl_buttons),
+static const struct property_entry tswxl_auto_switch_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_OPTION),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ TSWXL_AUTO_SWITCH, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Power-auto Switch"),
+ { }
};
-static struct platform_device tswxl_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &tswxl_button_data,
- },
+static const struct software_node tswxl_auto_switch_node = {
+ .parent = &tswxl_gpio_keys_node,
+ .properties = tswxl_auto_switch_props,
+};
+
+static const struct software_node * const tswxl_gpio_keys_swnodes[] __initconst = {
+ &tswxl_gpio_keys_node,
+ &tswxl_auto_switch_node,
+ NULL
+};
+
+static const struct platform_device_info tswxl_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &tswxl_gpio_keys_node,
};
static void __init wxl_init(void)
{
+ int err;
+
/*
* Basic MV78xx0 setup. Needs to be called early.
*/
@@ -158,7 +168,9 @@ static void __init wxl_init(void)
gpio_direction_output(TSWXL_USB_POWER2, 1);
//enable rear switch
- platform_device_register(&tswxl_button_device);
+ err = software_node_register_node_group(tswxl_gpio_keys_swnodes);
+ if (!err)
+ platform_device_register_full(&tswxl_button_info);
}
static int __init wxl_pci_init(void)
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 3/7] ARM: orion5x: dns323: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 1/7] ARM: orion: register software nodes for GPIO chips Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 2/7] ARM: mv78xx0: buffalo-wxl: convert gpio-keys to use software nodes Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 4/7] ARM: orion5x: mv2120: " Dmitry Torokhov
` (5 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the DNS-323 board setup from legacy gpio_keys_platform_data to
software nodes. The gpio-keys platform device is registered with static
software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-orion5x/dns323-setup.c | 98 +++++++++++++++++++++++-------------
1 file changed, 63 insertions(+), 35 deletions(-)
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index fcd38ff7ca45..6dc7d2c0b64f 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -15,6 +15,8 @@
*/
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
@@ -24,12 +26,12 @@
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/leds.h>
-#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/ata_platform.h>
#include <linux/phy.h>
#include <linux/marvell_phy.h>
+#include <plat/orion-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/pci.h>
@@ -338,46 +340,66 @@ static struct platform_device dns323_gpio_leds = {
* GPIO Attached Keys
*/
-static struct gpio_keys_button dns323ab_buttons[] = {
- {
- .code = KEY_RESTART,
- .gpio = DNS323_GPIO_KEY_RESET,
- .desc = "Reset Button",
- .active_low = 1,
- }, {
- .code = KEY_POWER,
- .gpio = DNS323_GPIO_KEY_POWER,
- .desc = "Power Button",
- .active_low = 1,
- },
+static const struct software_node dns323_gpio_keys_node = {
+ .name = "dns323-gpio-keys",
};
-static struct gpio_keys_platform_data dns323ab_button_data = {
- .buttons = dns323ab_buttons,
- .nbuttons = ARRAY_SIZE(dns323ab_buttons),
+static const struct property_entry dns323ab_reset_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_RESTART),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ DNS323_GPIO_KEY_RESET, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Reset Button"),
+ { }
};
-static struct gpio_keys_button dns323c_buttons[] = {
- {
- .code = KEY_POWER,
- .gpio = DNS323C_GPIO_KEY_POWER,
- .desc = "Power Button",
- .active_low = 1,
- },
+static const struct software_node dns323ab_reset_key_node = {
+ .parent = &dns323_gpio_keys_node,
+ .properties = dns323ab_reset_key_props,
};
-static struct gpio_keys_platform_data dns323c_button_data = {
- .buttons = dns323c_buttons,
- .nbuttons = ARRAY_SIZE(dns323c_buttons),
+static const struct property_entry dns323ab_power_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ DNS323_GPIO_KEY_POWER, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Power Button"),
+ { }
};
-static struct platform_device dns323_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &dns323ab_button_data,
- },
+static const struct software_node dns323ab_power_key_node = {
+ .parent = &dns323_gpio_keys_node,
+ .properties = dns323ab_power_key_props,
+};
+
+static const struct software_node * const dns323ab_gpio_keys_swnodes[] __initconst = {
+ &dns323_gpio_keys_node,
+ &dns323ab_reset_key_node,
+ &dns323ab_power_key_node,
+ NULL
+};
+
+static const struct property_entry dns323c_power_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ DNS323C_GPIO_KEY_POWER, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Power Button"),
+ { }
+};
+
+static const struct software_node dns323c_power_key_node = {
+ .parent = &dns323_gpio_keys_node,
+ .properties = dns323c_power_key_props,
+};
+
+static const struct software_node * const dns323c_gpio_keys_swnodes[] __initconst = {
+ &dns323_gpio_keys_node,
+ &dns323c_power_key_node,
+ NULL
+};
+
+static const struct platform_device_info dns323_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &dns323_gpio_keys_node,
};
/*****************************************************************************
@@ -611,6 +633,9 @@ static int __init dns323_identify_rev(void)
static void __init dns323_init(void)
{
+ const struct software_node * const *keys_swnodes = dns323ab_gpio_keys_swnodes;
+ int err;
+
/* Setup basic Orion functions. Need to be called early. */
orion5x_init();
@@ -665,7 +690,7 @@ static void __init dns323_init(void)
/* Hookup LEDs & Buttons */
gpiod_add_lookup_table(&dns323c_leds_gpio_table);
dns323_gpio_leds.dev.platform_data = &dns323c_led_data;
- dns323_button_device.dev.platform_data = &dns323c_button_data;
+ keys_swnodes = dns323c_gpio_keys_swnodes;
/* Hookup i2c devices and fan driver */
i2c_register_board_info(0, dns323c_i2c_devices,
@@ -681,7 +706,10 @@ static void __init dns323_init(void)
}
platform_device_register(&dns323_gpio_leds);
- platform_device_register(&dns323_button_device);
+
+ err = software_node_register_node_group(keys_swnodes);
+ if (!err)
+ platform_device_register_full(&dns323_button_info);
/*
* Configure peripherals.
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 4/7] ARM: orion5x: mv2120: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (2 preceding siblings ...)
2026-07-06 1:29 ` [PATCH 3/7] ARM: orion5x: dns323: " Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 5/7] ARM: orion5x: net2big: " Dmitry Torokhov
` (4 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the MV2120 board setup from legacy gpio_keys_platform_data to
software nodes. The gpio-keys platform device is registered with static
software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-orion5x/mv2120-setup.c | 68 +++++++++++++++++++++++-------------
1 file changed, 44 insertions(+), 24 deletions(-)
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index 5b0249f109cd..07b8c34f6a79 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -9,6 +9,8 @@
*/
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -16,10 +18,10 @@
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/leds.h>
-#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/ata_platform.h>
+#include <plat/orion-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include "common.h"
@@ -76,34 +78,48 @@ static struct platform_device mv2120_nor_flash = {
.num_resources = 1,
};
-static struct gpio_keys_button mv2120_buttons[] = {
- {
- .code = KEY_RESTART,
- .gpio = MV2120_GPIO_KEY_RESET,
- .desc = "reset",
- .active_low = 1,
- }, {
- .code = KEY_POWER,
- .gpio = MV2120_GPIO_KEY_POWER,
- .desc = "power",
- .active_low = 1,
- },
+static const struct software_node mv2120_gpio_keys_node = {
+ .name = "mv2120-gpio-keys",
};
-static struct gpio_keys_platform_data mv2120_button_data = {
- .buttons = mv2120_buttons,
- .nbuttons = ARRAY_SIZE(mv2120_buttons),
+static const struct property_entry mv2120_reset_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_RESTART),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ MV2120_GPIO_KEY_RESET, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "reset"),
+ { }
};
-static struct platform_device mv2120_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &mv2120_button_data,
- },
+static const struct software_node mv2120_reset_key_node = {
+ .parent = &mv2120_gpio_keys_node,
+ .properties = mv2120_reset_key_props,
+};
+
+static const struct property_entry mv2120_power_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ MV2120_GPIO_KEY_POWER, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "power"),
+ { }
};
+static const struct software_node mv2120_power_key_node = {
+ .parent = &mv2120_gpio_keys_node,
+ .properties = mv2120_power_key_props,
+};
+
+static const struct software_node * const mv2120_gpio_keys_swnodes[] __initconst = {
+ &mv2120_gpio_keys_node,
+ &mv2120_reset_key_node,
+ &mv2120_power_key_node,
+ NULL
+};
+
+static const struct platform_device_info mv2120_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &mv2120_gpio_keys_node,
+};
/****************************************************************************
* General Setup
@@ -200,6 +216,8 @@ static void mv2120_power_off(void)
static void __init mv2120_init(void)
{
+ int err;
+
/* Setup basic Orion functions. Need to be called early. */
orion5x_init();
@@ -222,7 +240,9 @@ static void __init mv2120_init(void)
MV2120_NOR_BOOT_SIZE);
platform_device_register(&mv2120_nor_flash);
- platform_device_register(&mv2120_button_device);
+ err = software_node_register_node_group(mv2120_gpio_keys_swnodes);
+ if (!err)
+ platform_device_register_full(&mv2120_button_info);
if (gpio_request(MV2120_GPIO_RTC_IRQ, "rtc") == 0) {
if (gpio_direction_input(MV2120_GPIO_RTC_IRQ) == 0)
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 5/7] ARM: orion5x: net2big: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (3 preceding siblings ...)
2026-07-06 1:29 ` [PATCH 4/7] ARM: orion5x: mv2120: " Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 6/7] ARM: orion5x: ts209: " Dmitry Torokhov
` (3 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the Net2Big board setup from legacy gpio_keys_platform_data to
software nodes. The gpio-keys platform device is registered with static
software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-orion5x/net2big-setup.c | 94 +++++++++++++++++++++++------------
1 file changed, 61 insertions(+), 33 deletions(-)
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
index 4afd9b4c71a9..01eb453657c4 100644
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ b/arch/arm/mach-orion5x/net2big-setup.c
@@ -13,7 +13,8 @@
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/leds.h>
-#include <linux/gpio_keys.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/ata_platform.h>
@@ -309,41 +310,64 @@ static void __init net2big_gpio_leds_init(void)
#define NET2BIG_SWITCH_POWER_ON 0x1
#define NET2BIG_SWITCH_POWER_OFF 0x2
-static struct gpio_keys_button net2big_buttons[] = {
- {
- .type = EV_SW,
- .code = NET2BIG_SWITCH_POWER_OFF,
- .gpio = NET2BIG_GPIO_POWER_SWITCH_OFF,
- .desc = "Power rocker switch (auto|off)",
- .active_low = 0,
- },
- {
- .type = EV_SW,
- .code = NET2BIG_SWITCH_POWER_ON,
- .gpio = NET2BIG_GPIO_POWER_SWITCH_ON,
- .desc = "Power rocker switch (on|auto)",
- .active_low = 0,
- },
- {
- .type = EV_KEY,
- .code = KEY_POWER,
- .gpio = NET2BIG_GPIO_PUSH_BUTTON,
- .desc = "Front Push Button",
- .active_low = 0,
- },
+static const struct software_node net2big_gpio_keys_node = {
+ .name = "net2big-gpio-keys",
};
-static struct gpio_keys_platform_data net2big_button_data = {
- .buttons = net2big_buttons,
- .nbuttons = ARRAY_SIZE(net2big_buttons),
+static const struct property_entry net2big_power_sw_off_props[] = {
+ PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
+ PROPERTY_ENTRY_U32("linux,code", NET2BIG_SWITCH_POWER_OFF),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ NET2BIG_GPIO_POWER_SWITCH_OFF, GPIO_ACTIVE_HIGH),
+ PROPERTY_ENTRY_STRING("label", "Power rocker switch (auto|off)"),
+ { }
};
-static struct platform_device net2big_gpio_buttons = {
- .name = "gpio-keys",
- .id = -1,
- .dev = {
- .platform_data = &net2big_button_data,
- },
+static const struct software_node net2big_power_sw_off_node = {
+ .parent = &net2big_gpio_keys_node,
+ .properties = net2big_power_sw_off_props,
+};
+
+static const struct property_entry net2big_power_sw_on_props[] = {
+ PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
+ PROPERTY_ENTRY_U32("linux,code", NET2BIG_SWITCH_POWER_ON),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ NET2BIG_GPIO_POWER_SWITCH_ON, GPIO_ACTIVE_HIGH),
+ PROPERTY_ENTRY_STRING("label", "Power rocker switch (on|auto)"),
+ { }
+};
+
+static const struct software_node net2big_power_sw_on_node = {
+ .parent = &net2big_gpio_keys_node,
+ .properties = net2big_power_sw_on_props,
+};
+
+static const struct property_entry net2big_power_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,input-type", EV_KEY),
+ PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ NET2BIG_GPIO_PUSH_BUTTON, GPIO_ACTIVE_HIGH),
+ PROPERTY_ENTRY_STRING("label", "Front Push Button"),
+ { }
+};
+
+static const struct software_node net2big_power_key_node = {
+ .parent = &net2big_gpio_keys_node,
+ .properties = net2big_power_key_props,
+};
+
+static const struct software_node * const net2big_gpio_keys_swnodes[] __initconst = {
+ &net2big_gpio_keys_node,
+ &net2big_power_sw_off_node,
+ &net2big_power_sw_on_node,
+ &net2big_power_key_node,
+ NULL
+};
+
+static const struct platform_device_info net2big_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &net2big_gpio_keys_node,
};
/*****************************************************************************
@@ -387,6 +411,8 @@ static void net2big_power_off(void)
static void __init net2big_init(void)
{
+ int err;
+
/*
* Setup basic Orion functions. Need to be called early.
*/
@@ -413,7 +439,9 @@ static void __init net2big_init(void)
NET2BIG_NOR_BOOT_SIZE);
platform_device_register(&net2big_nor_flash);
- platform_device_register(&net2big_gpio_buttons);
+ err = software_node_register_node_group(net2big_gpio_keys_swnodes);
+ if (!err)
+ platform_device_register_full(&net2big_button_info);
net2big_gpio_leds_init();
i2c_register_board_info(0, net2big_i2c_devices,
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 6/7] ARM: orion5x: ts209: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (4 preceding siblings ...)
2026-07-06 1:29 ` [PATCH 5/7] ARM: orion5x: net2big: " Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 7/7] ARM: orion5x: ts409: " Dmitry Torokhov
` (2 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the QNAP TS-209 board setup from legacy gpio_keys_platform_data
to software nodes. The gpio-keys platform device is registered with
static software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-orion5x/ts209-setup.c | 70 ++++++++++++++++++++++++-------------
1 file changed, 46 insertions(+), 24 deletions(-)
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index de9092e992c5..321bfad8bce6 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -13,11 +13,14 @@
#include <linux/mtd/physmap.h>
#include <linux/mtd/rawnand.h>
#include <linux/mv643xx_eth.h>
-#include <linux/gpio_keys.h>
+#include <linux/gpio/machine.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/serial_reg.h>
#include <linux/ata_platform.h>
+#include <plat/orion-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/pci.h>
@@ -200,32 +203,47 @@ static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
#define QNAP_TS209_GPIO_KEY_MEDIA 1
#define QNAP_TS209_GPIO_KEY_RESET 2
-static struct gpio_keys_button qnap_ts209_buttons[] = {
- {
- .code = KEY_COPY,
- .gpio = QNAP_TS209_GPIO_KEY_MEDIA,
- .desc = "USB Copy Button",
- .active_low = 1,
- }, {
- .code = KEY_RESTART,
- .gpio = QNAP_TS209_GPIO_KEY_RESET,
- .desc = "Reset Button",
- .active_low = 1,
- },
+static const struct software_node qnap_ts209_gpio_keys_node = {
+ .name = "qnap-ts209-gpio-keys",
};
-static struct gpio_keys_platform_data qnap_ts209_button_data = {
- .buttons = qnap_ts209_buttons,
- .nbuttons = ARRAY_SIZE(qnap_ts209_buttons),
+static const struct property_entry qnap_ts209_copy_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_COPY),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ QNAP_TS209_GPIO_KEY_MEDIA, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "USB Copy Button"),
+ { }
};
-static struct platform_device qnap_ts209_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &qnap_ts209_button_data,
- },
+static const struct software_node qnap_ts209_copy_key_node = {
+ .parent = &qnap_ts209_gpio_keys_node,
+ .properties = qnap_ts209_copy_key_props,
+};
+
+static const struct property_entry qnap_ts209_reset_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_RESTART),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ QNAP_TS209_GPIO_KEY_RESET, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Reset Button"),
+ { }
+};
+
+static const struct software_node qnap_ts209_reset_key_node = {
+ .parent = &qnap_ts209_gpio_keys_node,
+ .properties = qnap_ts209_reset_key_props,
+};
+
+static const struct software_node * const qnap_ts209_gpio_keys_swnodes[] __initconst = {
+ &qnap_ts209_gpio_keys_node,
+ &qnap_ts209_copy_key_node,
+ &qnap_ts209_reset_key_node,
+ NULL
+};
+
+static const struct platform_device_info qnap_ts209_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &qnap_ts209_gpio_keys_node,
};
/*****************************************************************************
@@ -265,6 +283,8 @@ static unsigned int ts209_mpp_modes[] __initdata = {
static void __init qnap_ts209_init(void)
{
+ int err;
+
/*
* Setup basic Orion functions. Need to be called early.
*/
@@ -300,7 +320,9 @@ static void __init qnap_ts209_init(void)
orion5x_uart1_init();
orion5x_xor_init();
- platform_device_register(&qnap_ts209_button_device);
+ err = software_node_register_node_group(qnap_ts209_gpio_keys_swnodes);
+ if (!err)
+ platform_device_register_full(&qnap_ts209_button_info);
/* Get RTC IRQ and register the chip */
if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 7/7] ARM: orion5x: ts409: convert gpio-keys to use software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (5 preceding siblings ...)
2026-07-06 1:29 ` [PATCH 6/7] ARM: orion5x: ts209: " Dmitry Torokhov
@ 2026-07-06 1:29 ` Dmitry Torokhov
2026-07-06 6:50 ` [PATCH 0/7] ARM: orion: convert legacy gpio-keys to " Arnd Bergmann
2026-07-06 10:00 ` Bartosz Golaszewski
8 siblings, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 1:29 UTC (permalink / raw)
To: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel
Convert the QNAP TS-409 board setup from legacy gpio_keys_platform_data
to software nodes. The gpio-keys platform device is registered with
static software node properties and button configurations.
Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/arm/mach-orion5x/ts409-setup.c | 69 ++++++++++++++++++++++++-------------
1 file changed, 45 insertions(+), 24 deletions(-)
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index 725688aa5cba..6758aebd327b 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -17,10 +17,12 @@
#include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h>
#include <linux/leds.h>
-#include <linux/gpio_keys.h>
+#include <linux/gpio/property.h>
+#include <linux/property.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/serial_reg.h>
+#include <plat/orion-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/pci.h>
@@ -214,32 +216,47 @@ static struct platform_device ts409_leds = {
#define QNAP_TS409_GPIO_KEY_RESET 14
#define QNAP_TS409_GPIO_KEY_MEDIA 15
-static struct gpio_keys_button qnap_ts409_buttons[] = {
- {
- .code = KEY_RESTART,
- .gpio = QNAP_TS409_GPIO_KEY_RESET,
- .desc = "Reset Button",
- .active_low = 1,
- }, {
- .code = KEY_COPY,
- .gpio = QNAP_TS409_GPIO_KEY_MEDIA,
- .desc = "USB Copy Button",
- .active_low = 1,
- },
+static const struct software_node qnap_ts409_gpio_keys_node = {
+ .name = "qnap-ts409-gpio-keys",
};
-static struct gpio_keys_platform_data qnap_ts409_button_data = {
- .buttons = qnap_ts409_buttons,
- .nbuttons = ARRAY_SIZE(qnap_ts409_buttons),
+static const struct property_entry qnap_ts409_reset_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_RESTART),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ QNAP_TS409_GPIO_KEY_RESET, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "Reset Button"),
+ { }
};
-static struct platform_device qnap_ts409_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &qnap_ts409_button_data,
- },
+static const struct software_node qnap_ts409_reset_key_node = {
+ .parent = &qnap_ts409_gpio_keys_node,
+ .properties = qnap_ts409_reset_key_props,
+};
+
+static const struct property_entry qnap_ts409_copy_key_props[] = {
+ PROPERTY_ENTRY_U32("linux,code", KEY_COPY),
+ PROPERTY_ENTRY_GPIO("gpios", &orion_gpio_swnodes[0],
+ QNAP_TS409_GPIO_KEY_MEDIA, GPIO_ACTIVE_LOW),
+ PROPERTY_ENTRY_STRING("label", "USB Copy Button"),
+ { }
+};
+
+static const struct software_node qnap_ts409_copy_key_node = {
+ .parent = &qnap_ts409_gpio_keys_node,
+ .properties = qnap_ts409_copy_key_props,
+};
+
+static const struct software_node * const qnap_ts409_gpio_keys_swnodes[] __initconst = {
+ &qnap_ts409_gpio_keys_node,
+ &qnap_ts409_reset_key_node,
+ &qnap_ts409_copy_key_node,
+ NULL
+};
+
+static const struct platform_device_info qnap_ts409_button_info __initconst = {
+ .name = "gpio-keys",
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &qnap_ts409_gpio_keys_node,
};
/*****************************************************************************
@@ -271,6 +288,8 @@ static unsigned int ts409_mpp_modes[] __initdata = {
static void __init qnap_ts409_init(void)
{
+ int err;
+
/*
* Setup basic Orion functions. Need to be called early.
*/
@@ -296,7 +315,9 @@ static void __init qnap_ts409_init(void)
orion5x_uart0_init();
orion5x_uart1_init();
- platform_device_register(&qnap_ts409_button_device);
+ err = software_node_register_node_group(qnap_ts409_gpio_keys_swnodes);
+ if (!err)
+ platform_device_register_full(&qnap_ts409_button_info);
/* Get RTC IRQ and register the chip */
if (gpio_request(TS409_RTC_GPIO, "rtc") == 0) {
--
2.55.0.rc0.799.gd6f94ed593-goog
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (6 preceding siblings ...)
2026-07-06 1:29 ` [PATCH 7/7] ARM: orion5x: ts409: " Dmitry Torokhov
@ 2026-07-06 6:50 ` Arnd Bergmann
2026-07-06 10:36 ` Arnd Bergmann
2026-07-06 22:08 ` Dmitry Torokhov
2026-07-06 10:00 ` Bartosz Golaszewski
8 siblings, 2 replies; 13+ messages in thread
From: Arnd Bergmann @ 2026-07-06 6:50 UTC (permalink / raw)
To: Dmitry Torokhov, Andrew Lunn, Sebastian Hesselbarth,
Gregory Clement
Cc: Russell King, Bartosz Golaszewski, linux-arm-kernel, linux-kernel
On Mon, Jul 6, 2026, at 03:29, Dmitry Torokhov wrote:
> This patch series converts Marvell Orion and MV78xx0 board setup files
> from legacy platform data to software nodes with the eventual goal of
> dropping support for legacy gpio API and platform data from gpio-keys
> driver.
>
> The series registers static software nodes for Orion GPIO controllers
> during gpiochip registration in orion_gpio_init(), allowing board setups
> to reference GPIO controllers via PROPERTY_ENTRY_GPIO(). It then converts
> gpio-keys setups to software nodes across MV78xx0 and Orion5x boards
> (Buffalo WXL, DNS-323, MV2120, Net2Big, QNAP TS-209, and TS-409).
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Hi Dmitry,
These all look good to me. Unless there is an objection from the
platform maintainers, I'd suggest you can send them directly to
soc@lists.linux.dev for inclusion in 7.3, or alternatively
keep them together with any other gpio-keys patches you have in
the input tree if that lets you finish off the platform_data
support in the driver more quickly.
As you probably saw, I have sent the patches to mark all these
board files as deprecated in 7.3, with the plan to finally
remove them in 7.4. I don't think there are any users left,
so it probably doesn't matter either way.
Are you planning to also resend
https://lore.kernel.org/all/20240819045813.2154642-14-dmitry.torokhov@gmail.com/ ?
I think that is the only Arm board file we'll have left
in 7.4 using gpio_keys.
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
2026-07-06 6:50 ` [PATCH 0/7] ARM: orion: convert legacy gpio-keys to " Arnd Bergmann
@ 2026-07-06 10:36 ` Arnd Bergmann
2026-07-06 22:08 ` Dmitry Torokhov
1 sibling, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2026-07-06 10:36 UTC (permalink / raw)
To: Dmitry Torokhov, Andrew Lunn, Sebastian Hesselbarth,
Gregory Clement
Cc: Russell King, Bartosz Golaszewski, linux-arm-kernel, linux-kernel
On Mon, Jul 6, 2026, at 08:50, Arnd Bergmann wrote:
> On Mon, Jul 6, 2026, at 03:29, Dmitry Torokhov wrote:
>> This patch series converts Marvell Orion and MV78xx0 board setup files
>> from legacy platform data to software nodes with the eventual goal of
>> dropping support for legacy gpio API and platform data from gpio-keys
>> driver.
>>
>> The series registers static software nodes for Orion GPIO controllers
>> during gpiochip registration in orion_gpio_init(), allowing board setups
>> to reference GPIO controllers via PROPERTY_ENTRY_GPIO(). It then converts
>> gpio-keys setups to software nodes across MV78xx0 and Orion5x boards
>> (Buffalo WXL, DNS-323, MV2120, Net2Big, QNAP TS-209, and TS-409).
>>
>> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
> Hi Dmitry,
>
> These all look good to me. Unless there is an objection from the
> platform maintainers, I'd suggest you can send them directly to
> soc@lists.linux.dev for inclusion in 7.3, or alternatively
> keep them together with any other gpio-keys patches you have in
> the input tree if that lets you finish off the platform_data
> support in the driver more quickly.
I case this goes through the gpio or input tree:
Acked-by: Arnd Bergmann <arnd@arndb.de>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
2026-07-06 6:50 ` [PATCH 0/7] ARM: orion: convert legacy gpio-keys to " Arnd Bergmann
2026-07-06 10:36 ` Arnd Bergmann
@ 2026-07-06 22:08 ` Dmitry Torokhov
2026-07-07 14:57 ` Arnd Bergmann
1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2026-07-06 22:08 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement, Russell King,
Bartosz Golaszewski, linux-arm-kernel, linux-kernel
On Mon, Jul 06, 2026 at 08:50:36AM +0200, Arnd Bergmann wrote:
> On Mon, Jul 6, 2026, at 03:29, Dmitry Torokhov wrote:
> > This patch series converts Marvell Orion and MV78xx0 board setup files
> > from legacy platform data to software nodes with the eventual goal of
> > dropping support for legacy gpio API and platform data from gpio-keys
> > driver.
> >
> > The series registers static software nodes for Orion GPIO controllers
> > during gpiochip registration in orion_gpio_init(), allowing board setups
> > to reference GPIO controllers via PROPERTY_ENTRY_GPIO(). It then converts
> > gpio-keys setups to software nodes across MV78xx0 and Orion5x boards
> > (Buffalo WXL, DNS-323, MV2120, Net2Big, QNAP TS-209, and TS-409).
> >
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
> Hi Dmitry,
>
> These all look good to me. Unless there is an objection from the
> platform maintainers, I'd suggest you can send them directly to
> soc@lists.linux.dev for inclusion in 7.3, or alternatively
> keep them together with any other gpio-keys patches you have in
> the input tree if that lets you finish off the platform_data
> support in the driver more quickly.
Maybe I should create an immutable branch(es) for both myself and soc
tree to pull from?
I also have a few more converted drivers.
>
> As you probably saw, I have sent the patches to mark all these
> board files as deprecated in 7.3, with the plan to finally
> remove them in 7.4. I don't think there are any users left,
> so it probably doesn't matter either way.
>
> Are you planning to also resend
> https://lore.kernel.org/all/20240819045813.2154642-14-dmitry.torokhov@gmail.com/ ?
Yes, I need to rebase/refresh it.
>
> I think that is the only Arm board file we'll have left
> in 7.4 using gpio_keys.
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
2026-07-06 22:08 ` Dmitry Torokhov
@ 2026-07-07 14:57 ` Arnd Bergmann
0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2026-07-07 14:57 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andrew Lunn, Sebastian Hesselbarth, Gregory Clement, Russell King,
Bartosz Golaszewski, linux-arm-kernel, linux-kernel
On Tue, Jul 7, 2026, at 00:08, Dmitry Torokhov wrote:
> On Mon, Jul 06, 2026 at 08:50:36AM +0200, Arnd Bergmann wrote:
>>
>> These all look good to me. Unless there is an objection from the
>> platform maintainers, I'd suggest you can send them directly to
>> soc@lists.linux.dev for inclusion in 7.3, or alternatively
>> keep them together with any other gpio-keys patches you have in
>> the input tree if that lets you finish off the platform_data
>> support in the driver more quickly.
>
> Maybe I should create an immutable branch(es) for both myself and soc
> tree to pull from?
If you send a pull request for those to the soc tree,
I'll merge it, but I think it's also sufficient to only
have them in the gpiolib tree, as I don't expect any
conflicts for 7.3.
If the patches don't make 7.3, the files are likely all
gone though.
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
2026-07-06 1:29 [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes Dmitry Torokhov
` (7 preceding siblings ...)
2026-07-06 6:50 ` [PATCH 0/7] ARM: orion: convert legacy gpio-keys to " Arnd Bergmann
@ 2026-07-06 10:00 ` Bartosz Golaszewski
8 siblings, 0 replies; 13+ messages in thread
From: Bartosz Golaszewski @ 2026-07-06 10:00 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Russell King, Bartosz Golaszewski, Arnd Bergmann,
linux-arm-kernel, linux-kernel, Andrew Lunn,
Sebastian Hesselbarth, Gregory Clement
On Mon, 6 Jul 2026 03:29:17 +0200, Dmitry Torokhov
<dmitry.torokhov@gmail.com> said:
> This patch series converts Marvell Orion and MV78xx0 board setup files
> from legacy platform data to software nodes with the eventual goal of
> dropping support for legacy gpio API and platform data from gpio-keys
> driver.
>
> The series registers static software nodes for Orion GPIO controllers
> during gpiochip registration in orion_gpio_init(), allowing board setups
> to reference GPIO controllers via PROPERTY_ENTRY_GPIO(). It then converts
> gpio-keys setups to software nodes across MV78xx0 and Orion5x boards
> (Buffalo WXL, DNS-323, MV2120, Net2Big, QNAP TS-209, and TS-409).
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> Dmitry Torokhov (7):
> ARM: orion: register software nodes for GPIO chips
> ARM: mv78xx0: buffalo-wxl: convert gpio-keys to use software nodes
> ARM: orion5x: dns323: convert gpio-keys to use software nodes
> ARM: orion5x: mv2120: convert gpio-keys to use software nodes
> ARM: orion5x: net2big: convert gpio-keys to use software nodes
> ARM: orion5x: ts209: convert gpio-keys to use software nodes
> ARM: orion5x: ts409: convert gpio-keys to use software nodes
>
> arch/arm/mach-mv78xx0/buffalo-wxl-setup.c | 50 ++++++++------
> arch/arm/mach-orion5x/dns323-setup.c | 98 +++++++++++++++++----------
> arch/arm/mach-orion5x/mv2120-setup.c | 68 ++++++++++++-------
> arch/arm/mach-orion5x/net2big-setup.c | 94 ++++++++++++++++---------
> arch/arm/mach-orion5x/ts209-setup.c | 70 ++++++++++++-------
> arch/arm/mach-orion5x/ts409-setup.c | 69 ++++++++++++-------
> arch/arm/plat-orion/gpio.c | 10 +++
> arch/arm/plat-orion/include/plat/orion-gpio.h | 3 +
> 8 files changed, 303 insertions(+), 159 deletions(-)
> ---
> base-commit: 2b763db0c2763d6bf73d7d3e69665222d1f377cf
> change-id: 20260704-orion-mv78xx0-swnode-9e94ae913a21
>
> Thanks.
>
> --
> Dmitry
>
>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread