* [PATCH 0/7] ARM: orion: convert legacy gpio-keys to software nodes
@ 2026-07-06 1:29 Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 1/7] ARM: orion: register software nodes for GPIO chips Dmitry Torokhov
` (8 more replies)
0 siblings, 9 replies; 12+ 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
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* [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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ messages in thread
end of thread, other threads:[~2026-07-06 22:08 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH 3/7] ARM: orion5x: dns323: " Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 4/7] ARM: orion5x: mv2120: " Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 5/7] ARM: orion5x: net2big: " Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 6/7] ARM: orion5x: ts209: " Dmitry Torokhov
2026-07-06 1:29 ` [PATCH 7/7] ARM: orion5x: ts409: " Dmitry Torokhov
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-06 10:00 ` Bartosz Golaszewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox