Subject: Re: [PATCH v2 5/6] gpio: remove machine hogs

From: Dmitry Torokhov <[email-masked]>
Date: Tue, 19 May 2026 17:46:50 -0700

On Mon, Mar 09, 2026 at 01:42:41PM +0100, Bartosz Golaszewski wrote:
> With no more users, remove legacy machine hog API from the kernel.
> 
> Reviewed-by: Linus Walleij <[email-masked]>
> Reviewed-by: Andy Shevchenko <[email-masked]>
> Signed-off-by: Bartosz Golaszewski <[email-masked]>

Argh! What is the replacement for this? I have patches for rsk7203 to
use them to get rid of legacy gpio use, like this:

diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c
index f8760a91e2f1..5bbd3b31cffb 100644
--- a/arch/sh/boards/mach-rsk/devices-rsk7203.c
+++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c
@@ -12,7 +12,7 @@
 #include <linux/smsc911x.h>
 #include <linux/input.h>
 #include <linux/io.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/gpio/machine.h>
 #include <linux/gpio/property.h>
 #include <asm/machvec.h>
@@ -165,6 +165,19 @@ static const struct platform_device_info rsk7203_devices[] __initconst = {
 	},
 };
 
+/* The base of the function GPIOs in the flat enum */
+#define SH7203_FN_BASE GPIO_FN_PINT7_PB
+
+static struct gpiod_hog rsk7203_gpio_hogs[] = {
+	GPIO_HOG("sh7203_pfc-fn", GPIO_FN_TXD0 - SH7203_FN_BASE,
+		 "TXD0", GPIO_ACTIVE_HIGH, GPIOD_ASIS),
+	GPIO_HOG("sh7203_pfc-fn", GPIO_FN_RXD0 - SH7203_FN_BASE,
+		 "RXD0", GPIO_ACTIVE_HIGH, GPIOD_ASIS),
+	GPIO_HOG("sh7203_pfc-fn", GPIO_FN_IRQ0_PB - SH7203_FN_BASE,
+		 "IRQ0_PB", GPIO_ACTIVE_HIGH, GPIOD_ASIS),
+	{ }
+};
+
 static int __init rsk7203_devices_setup(void)
 {
 	struct platform_device *pd;
@@ -172,12 +185,10 @@ static int __init rsk7203_devices_setup(void)
 	int i;
 
 	/* Select pins for SCIF0 */
-	gpio_request(GPIO_FN_TXD0, NULL);
-	gpio_request(GPIO_FN_RXD0, NULL);
+	gpiod_add_hogs(rsk7203_gpio_hogs);
 
 	/* Setup LAN9118: CS1 in 16-bit Big Endian Mode, IRQ0 at Port B */
 	__raw_writel(0x36db0400, 0xfffc0008); /* CS1BCR */
-	gpio_request(GPIO_FN_IRQ0_PB, NULL);
 
 	error = software_node_register_node_group(rsk7203_swnodes);
 	if (error) {

If there is no replacement maybe we can resurrect this? Or shoudl we
have add swnode support for hogs?

Thanks.

-- 
Dmitry