From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f45.google.com (mail-dl1-f45.google.com [74.125.82.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0A37346AC4 for ; Thu, 21 May 2026 05:13:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779340442; cv=none; b=VL2s+t2JG2umgVRJILtpFUbY9qVAIuM7eDtvcuOA1bbtPI0KVRZoTaHRioZKXNskf1ET5snauQsj85mz1VrbsUqNMGJ6WJ7OSp9Y3bMcHnowRnbDrBOYSlNQJ+kw53fEdJybwuz/vNIDEL8YSr+KtP1vBR1ifue8ioAh6Fj/lzg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779340442; c=relaxed/simple; bh=84IYOUDRqLdOZnUza+I5M9XOglV9RpLSILXCdsenQOo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jNTTJa+1BRVO1NrWo8tYgx9nnToC9K0e4JB3jCd6OZ4jsAW2fS1uekBl2U4VWE0NajSM4P9uw6A+HrXo+WcwVZYdy0NB8IyuPXgaMlcnvBuGIYTqA/JhaorbNp7n+pU8mgDihJl9UIj6cvi1AglJ9HoZEXMUXrPW/K6IaVYdhX4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gqgccGcL; arc=none smtp.client-ip=74.125.82.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gqgccGcL" Received: by mail-dl1-f45.google.com with SMTP id a92af1059eb24-1309f4ee97fso6577794c88.1 for ; Wed, 20 May 2026 22:13:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779340428; x=1779945228; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dC01VeKjcCopxQgK4IvKVGSUYqXlRoKtYIJqUaE3G8s=; b=gqgccGcL7ikNdfUlba6O0OKe01h8wGXTVdhJwTJjWMeGH+B/tPkwxhkSSNjmbONHn8 kG9VeCsGByrR0XeiCjydp+FaObjJbw1b4BHhbrrxHHlrN3cGrwYPCi8f2EA1Bl7WUzzL zHsCl6wMaAPHfHo/72B8i/Ia1VuLkfiuWoD22WMwrI0lhkGCtFnQ86uJ7hg28Xzs2ZDn X7WOiM4aWQg+ztNGr7t01adly3kMGAGAlPvkUNphStKMq1RCnGBCWKZ71vtmtHyunPes NSARwOfNTRxzmKH/EpRlufEPXTXYHNXN6QiQJ0XQW+uwZVoCpn+J87xs4XwOZMQZNtH1 KbJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779340428; x=1779945228; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dC01VeKjcCopxQgK4IvKVGSUYqXlRoKtYIJqUaE3G8s=; b=e1BmYPWv6NpcbU5uyVaGzFTeIJfknDV2YhcZDiMiKp2oMkKhWPtphOT5RIAhduWKFI doNZ9jVHeg3Vu1Cgv3hlzz5fJWE6oke4u0/CessbD3HXTHKgQzPTl91OK19xrUrR2z5M 4syF4J/RTAIch6O16DftgqvKxoixGiwDiF5Fmb1gK3tThqekBYDu00KSzAbNw1AZCPUZ eILjIJi4aU3aelWIt7Yk2zf9Fj63zoAFOzrjh1EPlwU3T9f+OrvezGLOIu0PD6e9NC3X qDul0w1QluiAqa4I/iNFAsqC+7Dh4DNUQOGtcQsnqUFkEbTBWN8wrA54fAX9v2qMAlEZ XHIw== X-Forwarded-Encrypted: i=1; AFNElJ9LxmpLQT8A2F38NtoFAPl3CuXJWDKE4AO3tJ2eYYrEp/o9uZFg3yzJDvTrOUbXyafZaRSLORLaYQ==@vger.kernel.org X-Gm-Message-State: AOJu0YydiU9raiUiPsQaY/FZOfsIbfbBjBaG2YIYgBduQC+GHDfwzzaB jnp6iqlR0JkerQd2CVRTDoQhu07Qwplazl4oVKyccuiD7R8aifS43KxG X-Gm-Gg: Acq92OGZV3Ud9h8SKZwVYB+3udkuJHuWExnvvXXjZESr+mMVzKls6zzabc1iElWjl5c JuB4qioOV/GQfKRJDRlrpcla351jwT+Ty896B02vh+Qu0U3d7iGQs+I3I92jfy48+9/KbZpP/e2 Kp8zZwy3NczBJfP4e/FSrqO9VDY4wQUU4zge0nQ6y3fNQ3CydZUTxpZCiDca14PP3ApNNWXaVZ2 1ZINCgx39hDp8+1qAr3DJJuFXiRx9XGwH1vWLJCG83ZaxEZ875gNb0dGjqmw6ke941OBq97YD9r wCd2saNGU1FkITHODOoPyLkKkZBb8elkd/Y76n3DA3SwM6xro/b37GRlNa3nYsDLG355MtCLVVv nnVzXBysIZN4e9AE9wz4a7qAp1+xR1RpO0BNTxxe2jkRR9P2evAfMRY0ykjldRATj+GfLVj35aX 6lgbk6sbE9Qu4wOkhxayThApjUDwbrEY27sKzjG6fSZkuknvUibbwdkqReNVUzihWYPXKy/+T5B tDdwZ6Z2nUrIQ== X-Received: by 2002:a05:7022:438c:b0:134:a6f0:6f08 with SMTP id a92af1059eb24-13632f60d3amr652796c88.39.1779340428152; Wed, 20 May 2026 22:13:48 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:d457:597:d576:1eb8]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-135e5c0a918sm6231360c88.14.2026.05.20.22.13.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 22:13:47 -0700 (PDT) From: Dmitry Torokhov Date: Wed, 20 May 2026 22:13:21 -0700 Subject: [PATCH v2 5/5] sh: mach-rsk: rsk7203: convert pin configuration to using software nodes Precedence: bulk X-Mailing-List: linux-sh@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260520-rsk7203-properties-v2-5-465f3308021b@gmail.com> References: <20260520-rsk7203-properties-v2-0-465f3308021b@gmail.com> In-Reply-To: <20260520-rsk7203-properties-v2-0-465f3308021b@gmail.com> To: Rich Felker , John Paul Adrian Glaubitz Cc: Yoshinori Sato , Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Arnd Bergmann , linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org X-Mailer: b4 0.16-dev-6911d Replace legacy gpio_request() calls used to configure function pins (SCIF0 TXD/RXD and LAN9118 IRQ) with software nodes describing GPIO hogs. These hogs are attached to the PFC gpiochip node, allowing the GPIO subsystem to automatically configure these pins when the driver is registered. Assisted-by: Gemini:gemini-3.1-pro Signed-off-by: Dmitry Torokhov --- arch/sh/boards/mach-rsk/devices-rsk7203.c | 97 +++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 12 deletions(-) diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c index f8760a91e2f1..e8a8fc1d2ca9 100644 --- a/arch/sh/boards/mach-rsk/devices-rsk7203.c +++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -131,6 +130,56 @@ static const struct software_node rsk7203_sw3_key_node = { }, }; +/* The base of the function GPIOs in the flat enum */ +#define SH7203_FN_BASE GPIO_FN_PINT7_PB + +static const struct software_node rsk7203_pfc_functions_node = { + .name = "functions", + .parent = &pfc_gpiochip_node, +}; + +static const struct software_node rsk7203_txd0_hog_node = { + .name = "txd0-hog", + .parent = &rsk7203_pfc_functions_node, + .properties = (const struct property_entry[]) { + PROPERTY_ENTRY_BOOL("gpio-hog"), + PROPERTY_ENTRY_U32_ARRAY("gpios", ((u32[]){ + GPIO_FN_TXD0 - SH7203_FN_BASE, GPIO_ACTIVE_HIGH + })), + PROPERTY_ENTRY_BOOL("input"), + PROPERTY_ENTRY_STRING("line-name", "TXD0"), + { } + }, +}; + +static const struct software_node rsk7203_rxd0_hog_node = { + .name = "rxd0-hog", + .parent = &rsk7203_pfc_functions_node, + .properties = (const struct property_entry[]) { + PROPERTY_ENTRY_BOOL("gpio-hog"), + PROPERTY_ENTRY_U32_ARRAY("gpios", ((u32[]){ + GPIO_FN_RXD0 - SH7203_FN_BASE, GPIO_ACTIVE_HIGH + })), + PROPERTY_ENTRY_BOOL("input"), + PROPERTY_ENTRY_STRING("line-name", "RXD0"), + { } + }, +}; + +static const struct software_node rsk7203_irq0_hog_node = { + .name = "irq0-hog", + .parent = &rsk7203_pfc_functions_node, + .properties = (const struct property_entry[]) { + PROPERTY_ENTRY_BOOL("gpio-hog"), + PROPERTY_ENTRY_U32_ARRAY("gpios", ((u32[]){ + GPIO_FN_IRQ0_PB - SH7203_FN_BASE, GPIO_ACTIVE_HIGH + })), + PROPERTY_ENTRY_BOOL("input"), + PROPERTY_ENTRY_STRING("line-name", "IRQ0_PB"), + { } + }, +}; + static const struct software_node * const rsk7203_swnodes[] __initconst = { &rsk7203_gpio_leds_node, &rsk7203_green_led_node, @@ -141,6 +190,10 @@ static const struct software_node * const rsk7203_swnodes[] __initconst = { &rsk7203_sw1_key_node, &rsk7203_sw2_key_node, &rsk7203_sw3_key_node, + &rsk7203_pfc_functions_node, + &rsk7203_txd0_hog_node, + &rsk7203_rxd0_hog_node, + &rsk7203_irq0_hog_node, NULL }; @@ -165,26 +218,46 @@ static const struct platform_device_info rsk7203_devices[] __initconst = { }, }; -static int __init rsk7203_devices_setup(void) +/* + * The pfc-sh7203 device is registered at arch_initcall level, and the + * sh-pfc driver (registered at postcore_initcall level) probes as soon + * as the device is created. + * + * We need to register our software nodes at postcore_initcall level so + * they are already present in the system when the driver probes and + * tries to apply GPIO hogs. + */ +static int __init rsk7203_sw_nodes_setup(void) { - struct platform_device *pd; int error; - int i; - /* Select pins for SCIF0 */ - gpio_request(GPIO_FN_TXD0, NULL); - gpio_request(GPIO_FN_RXD0, NULL); - - /* 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(&pfc_gpiochip_node); + if (error && error != -EEXIST) { + pr_err("RSK7203: failed to register PFC software node: %d\n", + error); + return error; + } error = software_node_register_node_group(rsk7203_swnodes); if (error) { - pr_err("failed to register software nodes: %d\n", error); + pr_err("RSK7203: failed to register board software nodes: %d\n", + error); return error; } + return 0; +} +postcore_initcall(rsk7203_sw_nodes_setup); + +static int __init rsk7203_devices_setup(void) +{ + struct platform_device *pd; + int error; + int i; + + /* Setup LAN9118: CS1 in 16-bit Big Endian Mode, IRQ0 at Port B */ + __raw_writel(0x36db0400, 0xfffc0008); /* CS1BCR */ + for (i = 0; i < ARRAY_SIZE(rsk7203_devices); i++) { pd = platform_device_register_full(&rsk7203_devices[i]); error = PTR_ERR_OR_ZERO(pd); -- 2.54.0.669.g59709faab0-goog