From nobody Fri Sep 25 11:08:08 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010045.outbound.protection.outlook.com [52.101.228.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 903B03F9F25; Sun, 13 Sep 2026 19:58:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329485; cv=fail; b=MsfD7tbRo+xqHZuwJR06nJF6qcvo4Loo6/2aa/ylyJdVIAchC6kNv90voXoXmEt+J3SLI7ggJlXv5X4zZvzUXpkHD4EWwMM3jgeYvb8DBTc6xfymwSdVXpJEp/vYPBuwgLEe5ncMpnlUuX510l9+g4p2PHfU39p4mAykIxjXZ0o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329485; c=relaxed/simple; bh=I0I2ZvqYScArgU8tOYR5vtkDlwSdUsukUEy08RgYp7c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=V7HedZLFH6xN0LxDjO2g0iXMo0yJoW332nswgHAYTFPnOJqXozhOHj1hVuW8pwABsBrnksOKxLYakC+63B5rEeusbwH2Soz1q3vqapIFMo9gngwSqqH5s0cYvtKP8uXMIER4Hc7asxw6P37kpO7CfTW/AzpxNrKdFwEfFamMY4A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=ZtI+tTwR; arc=fail smtp.client-ip=52.101.228.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="ZtI+tTwR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AfPO6EuF/ozS1OmKtU/g9aWiIeM3p9t/EJ8UTioYUb9JmpQNZFQ9u/vSUZwZn/brW2zJ1FLs+csubjoP9CxbuGHqO0Y0gPukdNsg57HHGX1ql9h2Y8JdJ9Cy5joWk4j3UrTMCL+grK1q3igUI36KqM2+m/HGFKap3TluDAf7AcchbYv1kYOkedLD75fAiGf6ZE9lyig5IGS9cpfOvbaJBb/+MHsOxc2d4vHyKUWlLjV3nLZ1IF8PKdqHWn4IDiokHX642ObLRVXNIo+9yjNfR3Ohq12xy5pEeALLZwdYc7YAToDhRfmfDqwYPthoMxBQxU3G6zhcxioqgHeuZI1W2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oHH/udZ/YKkVrvFyl+xKIZHiYYQDUnGB3h/WRWO7oEU=; b=NQXqWZmsDQNgPcaZZg282F0j/SwlSwD4DtWFjMah0s3sac+j71DK0tNL8746pOFXFCPVsMWXro112gld5MNCZ96iB+VzA1Yq9aOX7GmIVm3ssMf8vtK/RsnA29zY/VYf+/22cMV3aLGe1lCZmgrWcraxe8OD5UT5S9LuCWTI/hHqtPF38GL9OughzA0ves5jn4WreRXC3WtJolJF1JjVIoEPiMXLkv6bIbm9mho1DlfgqMTV2sp91Eo3spF/XhGoS/FGn9FC0HZVyCluFcExvlXuldodbX/XmPUur8d3TAJraGDcNVW87fHXNYn66nfrvDlWQDAZH/pLlHjHtSEsRw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=glider.be smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oHH/udZ/YKkVrvFyl+xKIZHiYYQDUnGB3h/WRWO7oEU=; b=ZtI+tTwR1TL6s4ofun2eZOV/DdwkGaf17fGTfzPNdxJ30ZL9ipXAwQ/DJG81kK/VwpQvoWDQKLsEz9Do/kUfdtwahVKHsBGqYsYz/z0yTycnANcq32hxLI0Ylb4K1fVmjFFofIIY7n9L++8g1Dc4IArnLmR5g9u7HMjJSjmsL0Q= Received: from OS7PR01CA0141.jpnprd01.prod.outlook.com (2603:1096:604:25c::10) by OS3PR01MB6742.jpnprd01.prod.outlook.com (2603:1096:604:115::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 19:57:55 +0000 Received: from OS1PEPF0000D20D.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:25c:cafe::30) by OS7PR01CA0141.outlook.office365.com (2603:1096:604:25c::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Sun, 13 Sep 2026 19:57:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D20D.mail.protection.outlook.com (10.167.240.36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Sun, 13 Sep 2026 19:57:54 +0000 Received: from demon-pc.localdomain (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.2]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 8EC44300009E; Mon, 14 Sep 2026 04:57:51 +0900 (JST) From: Cosmin Tanislav To: Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Cosmin Tanislav Cc: linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, stable@kernel.org Subject: [PATCH v3 1/5] pinctrl: renesas: rzt2h: restore correct pin mode on IRQ free Date: Sun, 13 Sep 2026 22:56:50 +0300 Message-ID: <20260913195654.3371385-2-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D20D:EE_|OS3PR01MB6742:EE_ X-MS-Office365-Filtering-Correlation-Id: aff79f2e-5bad-416b-d65d-08df11d14cd8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|23010399003|1800799024|36860700016|6133799003|22082099003|18002099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: xNwpTHRT/0hzjQxuKGGqbI0DgYmG0PvmDgI7PnR2Wdi7DbaM6/F6ny1lKSYSkzd+x1W/eYVY+YXuye6a+avdk2Eyfx8cRGncNDEWMNHmP91Zzr4A5NbTYpWUIe3WjZioh11P1K8JLBpcIDjHMkI1+9PSmeUEaIxwKDC95rrjzP/GdtSmk3ESp5TERX/EDq1h2WBJp1BnAxssFd5zsTzwBpzsXu70BpVlvfPlJL1XIFt5mHS6mplnEgF1PGLPOphU0lkmY8tM9XhKdgnu88Ses0p0/yBy6pkCqvewFI0Y67eDv18AIU0MNQLaLwugujW6jYUZwxR0JV5A6g7i3UdYzV32c8M0kUnDr/TI2k2ceZO3FZEgarafJwvZq7c7MoT8HO6TwTk8hB4oFZy1ik9gU3rZOjhUWmXu8q7ZNumwcegm3eq6eJI2c+SLH4kB9sPM05tzDLr5iH7YpS1SN/ZjCpdj54DxMdByJcMA0We0Yh45yxgwMtqSVK+wKqfpYv8+n5Q7TYBZdoOUS2lKbTBuqWrJl/1BUeE3KeKPEIjXNFhGszOpLqqNyvVHtgi388OisQzJ2rNUsbhEZRdJjElZfV3UWltHDe6nL+LPLvPd9seUwob0L+00RG+aferWehI3LsHiQ52/ZNM/jLdcFywRRdGdJQyu3d70FUH45WLYirgKtmTsbukMkALamSpndck1oAQgvh8a2jw+irSFhEX0Rg== X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(23010399003)(1800799024)(36860700016)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1x07K2NY+A/l6T9sDAtYoL4j1mtPwvpqPaq0mwQtdbynedBbS0IiegOSVV54l/M7rDrOWgMkYeyUwRMnj4DloUlHhmwE+TvtjRyRdq1QB9758fNf42jcVmLDPS2XQaRwH1n7bMOlQGwPaZt40pvS81WG9W5Dt4DSRUmGy/GNRb1v7QPdwCD/glvhAUx3gu1mGLsOwo6UhUD0ZeUvf7M0UkfJ8nPnu+A7ViYmkUywC3e5kniFetPFK5iWYHhLPWFDx4o0zr30gvRPp4l4bgwlhXR0wcdZNuq6IXHFmKDhZu3QB2N1d8kF3S4V3g7VXUiDQpp+5tL3sajmYe2HWgm8d3zD4PqBXdkt2KIKwSSm6k1q2sNFwTcvat1GuNsHPiQLYdRvxa80Zj3/j/pSs15E+nyAKnji1yIxAD/zOMJJR7sbVt28LmdUUbconyEABunt X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 19:57:54.4384 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aff79f2e-5bad-416b-d65d-08df11d14cd8 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D20D.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB6742 Content-Type: text/plain; charset="utf-8" rzt2h_gpio_irq_domain_free() calls rzt2h_pinctrl_set_gpio_en() with false leaving the pin in interrupt function instead of returning it to GPIO mode. Pass true to rzt2h_pinctrl_set_gpio_en() to take the pin out of interrupt function after we're done using it as an IRQ. rzt2h_pinctrl_set_pfc_mode() switches the pin to Hi-Z, losing the previous PM value. Save the PM value before switching to Hi-Z, and restore it after the IRQ is freed. Cc: stable@kernel.org Fixes: 829dde3369a9 ("pinctrl: renesas: rzt2h: Add GPIO IRQ chip to handle = interrupts") Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven --- V3: * no changes V2: * switch pm parameter in rzt2h_pin_write_pm() to unsigned int and remove the u16 cast drivers/pinctrl/renesas/pinctrl-rzt2h.c | 43 +++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index d29ef107c2c1..9c1ac836ffa6 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -95,6 +95,7 @@ struct rzt2h_pinctrl { struct device *dev; struct gpio_chip gpio_chip; DECLARE_BITMAP(used_irqs, RZT2H_INTERRUPTS_NUM); + u8 saved_pm[RZT2H_INTERRUPTS_NUM]; raw_spinlock_t lock; /* lock read/write registers */ struct mutex mutex; /* serialize adding groups and functions */ bool safety_port_enabled; @@ -169,6 +170,26 @@ static int rzt2h_validate_pin(struct rzt2h_pinctrl *pc= trl, unsigned int offset) return (pincfg & BIT(pin)) ? 0 : -EINVAL; } =20 +static u8 rzt2h_pin_read_pm(struct rzt2h_pinctrl *pctrl, u8 port, u8 pin) +{ + u16 reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); + + return field_get(PM_PIN_MASK(pin), reg); +} + +static void rzt2h_pin_write_pm(struct rzt2h_pinctrl *pctrl, u8 port, u8 pi= n, + unsigned int pm) +{ + u16 reg; + + guard(raw_spinlock_irqsave)(&pctrl->lock); + + reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); + reg &=3D ~PM_PIN_MASK(pin); + reg |=3D pm << (pin * 2); + rzt2h_pinctrl_writew(pctrl, port, reg, PM(port)); +} + static void rzt2h_pinctrl_set_gpio_en(struct rzt2h_pinctrl *pctrl, u8 port, u8 pin, bool en) { @@ -1022,16 +1043,23 @@ static int rzt2h_gpio_child_to_parent_hwirq(struct = gpio_chip *gc, struct rzt2h_pinctrl *pctrl =3D gpiochip_get_data(gc); u8 port =3D RZT2H_PIN_ID_TO_PORT(child); u8 pin =3D RZT2H_PIN_ID_TO_PIN(child); - u8 parent_irq; + u8 parent_irq, irq_idx; =20 parent_irq =3D rzt2h_gpio_irq_map[child]; if (parent_irq < RZT2H_INTERRUPTS_START) return -EINVAL; =20 - if (test_and_set_bit(parent_irq - RZT2H_INTERRUPTS_START, - pctrl->used_irqs)) + irq_idx =3D parent_irq - RZT2H_INTERRUPTS_START; + if (test_and_set_bit(irq_idx, pctrl->used_irqs)) return -EBUSY; =20 + /* + * rzt2h_pinctrl_set_pfc_mode() sets PM to Hi-Z before switching to the + * interrupt function, losing the previous PM value. + * Save it so it can be restored when the IRQ is freed. + */ + pctrl->saved_pm[irq_idx] =3D rzt2h_pin_read_pm(pctrl, port, pin); + rzt2h_pinctrl_set_pfc_mode(pctrl, port, pin, PFC_FUNC_INTERRUPT); =20 *parent =3D parent_irq; @@ -1049,14 +1077,17 @@ static void rzt2h_gpio_irq_domain_free(struct irq_d= omain *domain, unsigned int v irq_hw_number_t hwirq =3D irqd_to_hwirq(d); u8 port =3D RZT2H_PIN_ID_TO_PORT(hwirq); u8 pin =3D RZT2H_PIN_ID_TO_PIN(hwirq); - u8 parent_irq; + u8 parent_irq, irq_idx; =20 parent_irq =3D rzt2h_gpio_irq_map[hwirq]; if (parent_irq < RZT2H_INTERRUPTS_START) return; =20 - if (test_and_clear_bit(parent_irq - RZT2H_INTERRUPTS_START, pctrl->used_i= rqs)) - rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, false); + irq_idx =3D parent_irq - RZT2H_INTERRUPTS_START; + if (test_and_clear_bit(irq_idx, pctrl->used_irqs)) { + rzt2h_pin_write_pm(pctrl, port, pin, pctrl->saved_pm[irq_idx]); + rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, true); + } =20 irq_domain_free_irqs_common(domain, virq, nr_irqs); } --=20 2.55.0 From nobody Fri Sep 25 11:08:08 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010032.outbound.protection.outlook.com [52.101.229.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68E2D36E484; Sun, 13 Sep 2026 19:58:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329491; cv=fail; b=pG3RjRtTRcy8l2DHHDPxHIpfAUA27BiS726UTPuwcc4Pi0ZqOBKFmBvvHdSi4x2s1ttnQe8xD0jnu5yksAdzAz+/Y4P0mC/hB3Ml2JH6t+WRe2zhJhwQWE/3/ePD0BLKP+HK3NIgD8brYw/DyONsqB58bxXFg7hC9H3MEv3C3zE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329491; c=relaxed/simple; bh=WdG0HYEa6LdjB9bNA8lPEB4vVt64IpaicGt/GWDPtoo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WzbUss56YbY+eJpXo0wTPnjfKTgnH9ZXo68lHVsAQmkWDwW7wN0qzamPNOHg5UTe+MH44AGs53YfZ11uisAMG/booVxaYp7qh5qtVkzfuzgmzyfPJjS+GgF9ynasz2oraPXIssD3V6eCEnZAK4O8C7D4PFvK4gIxNED+KJXj+qs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=REzXII4D; arc=fail smtp.client-ip=52.101.229.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="REzXII4D" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CgHfpTSRQ5pS/cG1PRQ3fYaqfRCMIrmwib9mYq5QtlxkT8105byCBeMq0Wo4Uo7Xbyy0RLFWIQ+yUF46DY/xe9BvqWfLQQJjBbSWW+RaEXJmLU4tAf/I9lK82HNxZhxP50lPdWTQi5TRzQ/gMiqF+ntHP1T1a+P4pz/EFjpAQN+X7lHMvqv570aPu8MLetlz/twlLz6Amv4opDmmAfxLh8rnLes1LDmjTpXg6b5evM2/EPPoHnSjimVoxShi8NCadZMChAqfJIKloUEIjbIUJ4uB2VVnSPPQavVY/JhrVQpBSGisu/1nnWY/DZsw25j/lPbRRyeMGcznarmuLre3Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6ALvPzfPAGABPwL+xa5E8850zKtjfLbhnjj/uj/i/cg=; b=k6QDwcBGqlF1+tioq836HKxQIPme5CLopI81o7o9ClPCaHSMcrSuw3zftp67u6X0t4k4VEH9p9MAW8ZvrGjI1bApcRIgeyftMLiJmh8uQTk5GFyYOMaQnTcS7YbwPj7r8w3XH2bZO/Y196BoeqQlmpaUE4GZ0EuY17ttwrhuNEUGlLAIHBcZaGOuUV8Iejh+Od5MNrxeIOzCWsekgWiEAM+oqcmA5tqTaeZQUjQMl6z9Z1mcUGo6VRGPnTVJAtpy0G0TWP58+dLpnwk3JXrNa/dcD6gjlz9aqq5I2fsNJv+nf1wlJ6lejliRCyqVvD5mJ6RqrKviXAdzS2+GQoVMsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=glider.be smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ALvPzfPAGABPwL+xa5E8850zKtjfLbhnjj/uj/i/cg=; b=REzXII4DMkPZNgq2hoU/JsgXWjATG24zOL+LJUP+0ksk+2n1ZaoG9l067DFmqmmSSN0nwUJ0DWaAjJ4KS2IIeezs5p4KeGjvYvGeA1r+cYuBhuqr8cQMLunrgJ9TH14XGMisDToCDo6OPFxy30biVjXqVFM0gQpP/1goaC8nOPU= Received: from OS3PR01CA0085.jpnprd01.prod.outlook.com (2603:1096:604:da::18) by TY3PR01MB10400.jpnprd01.prod.outlook.com (2603:1096:400:251::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 19:57:59 +0000 Received: from OS1PEPF0000D213.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:da::4) by OS3PR01CA0085.outlook.office365.com (2603:1096:604:da::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Sun, 13 Sep 2026 19:57:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D213.mail.protection.outlook.com (10.167.240.20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Sun, 13 Sep 2026 19:57:57 +0000 Received: from demon-pc.localdomain (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.2]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 43F2D30000A8; Mon, 14 Sep 2026 04:57:55 +0900 (JST) From: Cosmin Tanislav To: Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Cosmin Tanislav Cc: linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, stable@kernel.org Subject: [PATCH v3 2/5] pinctrl: renesas: rzt2h: setup IRQ in .irq_{request,release}_resources() Date: Sun, 13 Sep 2026 22:56:51 +0300 Message-ID: <20260913195654.3371385-3-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D213:EE_|TY3PR01MB10400:EE_ X-MS-Office365-Filtering-Correlation-Id: 9268e796-ef69-4a76-8c29-08df11d14ee0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|23010399003|1800799024|82310400026|10067099003|56012099006|5023799004|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 1LFp22Oggp/ijmoqlRGA4LHegEf4u00CIxd3/KGw+u/Gnx758pJupPkFdBXwsu95fssY/Bj/hGtqoZKG7ydFUqjj38fBd1Rz9s63GugIHAJaxdj3Fnkjzx6rd+aoL7n407rjZtULPshGnP4qecOP7+DcNhjvtM99P3uTTGJFJfHLRuRE0jkiJf3fL/8kwFKRXRfq26FeXGzrvZzJFdTNTLj6HK9eDxb1V+JF5LEHMvFTnI3wrzj9PS/Htde71PMsaZMfkT/a3jcXMNrQvCIjz9njYAewHDwipgNEopcA3Fp10nc7DtgzVHKSfY+ZFOylkeOF6yj/CCGa76a75l8Z/wGoSsRnFOx0VmuOmHRgOEDptKfXuUXjTbpNZF+DWwyr9RzO7dGcKfKWEDWHcCtHYgb4ced6YuYwAJ8tqqjBZVqjg+VYiFDa+Geo/ZyPl6WjtpMXi7w6AzTqCD3MA1YyIAIWgatJlRz8sZ55ikunSGn6Lqa+ja0qOL/0ei3SdtMzxnE37gVOwdRz2eShaCYhbDsZpiaYq40cYfLQgDoA2HYwArIwzOGLZ872k8YnOeVmE677mtgNlSljuQnpCXNYhTFqBm58wlAHflDqDg/WlIa4RxzP12OPj2tjB4MmDA7uXodz+fN/nDVF4mVAj3R520Go/VOSizuCDGUJDlVx8mEzqa5cvHGW2st1GtFFTaqEUdqTCLOwlqZghdWvFamO3w== X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(23010399003)(1800799024)(82310400026)(10067099003)(56012099006)(5023799004)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QtqsK7i8B1h1f7rVuhQLKQTs9LfrhVqtJ7xhLRjNfF4SDUeZWYGDwlik78YbYGxgU8M4l0Bw4yDGGZL2Mf5QPK0pzdhn6SWyGdk3QmSQS3DCUrqu1k49+1QLQImv6Akn8+/YX5bAOgZ5m72xJiuc15TvU9fGU6MM+LWjbhSdQZz598F25EymEbGpCPQrC+9C8Rwsy1xBX2QPHKQM4KNoU8hid29Ty1PeN3xc/TDSzLDB0ErEs09nAegfHEElT0MQRCTEWMKOLVokJdO9qgi+JOMLwR975YeZkiLiEB/b5EgmRwRznFFr7KydZLGm2isXyKydLRCxjr2mJ16TW+Qc1vv8K8fSuLqjCOQRFpE9dpSDNKao8wdfT1TSt3OZzKzv7INg9RTr/qjq36zCT5Tvsa8eIktA0Hp6ipwd1R8JGUuocV8bMYDnEW6SBrOkQEFA X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 19:57:57.8448 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9268e796-ef69-4a76-8c29-08df11d14ee0 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D213.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB10400 Content-Type: text/plain; charset="utf-8" When exporting a GPIO using the deprecated sysfs GPIO API, gpio_is_visible() calls gpiod_to_irq() to determine whether a GPIO is IRQ-capable, which ends up using struct gpio_irq_chip::child_to_parent_hwirq(). When using the GPIO character device, it is possible to request a line and to dynamically switch between using it as an IRQ or as a GPIO, by updating the edge detector. The current struct gpio_irq_chip::child_to_parent_hwirq() implementation makes the assumption that it will only be called with the intention of setting up the IRQ permanently, and that it will only be released when the IRQ domain is freed. Since we now know that this is not the case, take the following steps in order to properly handle that case. Implement struct irq_chip::irq_{request,release}_resources() based on the default GPIOCHIP_IRQ_RESOURCE_HELPERS implementations. Move the IRQ setup and release logic inside them. Keep the mapping logic inside ::child_to_parent_hwirq() to be able to provide a proper HW IRQ number, but do not actually setup the IRQ. Remove rzt2h_gpio_irq_domain_free() as its only purpose was to free the acquired IRQs. irq_domain_free_irqs_common() will still be set up as struct gpio_irq_chip::child_irq_domain_ops::free by gpiochip_hierarchy_setup_domain_ops(). Cc: stable@kernel.org Fixes: 829dde3369a9 ("pinctrl: renesas: rzt2h: Add GPIO IRQ chip to handle = interrupts") Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven --- V3: * no changes V2: * reuse irq_idx in rzt2h_gpio_irq_request_resources() * mention that irq_domain_free_irqs_common() is still wired up drivers/pinctrl/renesas/pinctrl-rzt2h.c | 79 +++++++++++++++---------- 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 9c1ac836ffa6..796120e70bc4 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -1020,32 +1020,17 @@ static int rzt2h_gpio_irq_set_wake(struct irq_data = *d, unsigned int on) return 0; } =20 -static const struct irq_chip rzt2h_gpio_irqchip =3D { - .name =3D "rzt2h-gpio", - .irq_disable =3D rzt2h_gpio_irq_disable, - .irq_enable =3D rzt2h_gpio_irq_enable, - .irq_mask =3D irq_chip_mask_parent, - .irq_unmask =3D irq_chip_unmask_parent, - .irq_set_type =3D irq_chip_set_type_parent, - .irq_set_wake =3D rzt2h_gpio_irq_set_wake, - .irq_eoi =3D irq_chip_eoi_parent, - .irq_set_affinity =3D irq_chip_set_affinity_parent, - .flags =3D IRQCHIP_IMMUTABLE, - GPIOCHIP_IRQ_RESOURCE_HELPERS, -}; - -static int rzt2h_gpio_child_to_parent_hwirq(struct gpio_chip *gc, - unsigned int child, - unsigned int child_type, - unsigned int *parent, - unsigned int *parent_type) +static int rzt2h_gpio_irq_request_resources(struct irq_data *d) { + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); struct rzt2h_pinctrl *pctrl =3D gpiochip_get_data(gc); - u8 port =3D RZT2H_PIN_ID_TO_PORT(child); - u8 pin =3D RZT2H_PIN_ID_TO_PIN(child); + irq_hw_number_t hwirq =3D irqd_to_hwirq(d); + u8 port =3D RZT2H_PIN_ID_TO_PORT(hwirq); + u8 pin =3D RZT2H_PIN_ID_TO_PIN(hwirq); u8 parent_irq, irq_idx; + int ret; =20 - parent_irq =3D rzt2h_gpio_irq_map[child]; + parent_irq =3D rzt2h_gpio_irq_map[hwirq]; if (parent_irq < RZT2H_INTERRUPTS_START) return -EINVAL; =20 @@ -1062,18 +1047,21 @@ static int rzt2h_gpio_child_to_parent_hwirq(struct = gpio_chip *gc, =20 rzt2h_pinctrl_set_pfc_mode(pctrl, port, pin, PFC_FUNC_INTERRUPT); =20 - *parent =3D parent_irq; - *parent_type =3D child_type; + ret =3D gpiochip_lock_as_irq(gc, hwirq); + if (ret) { + clear_bit(irq_idx, pctrl->used_irqs); + rzt2h_pin_write_pm(pctrl, port, pin, pctrl->saved_pm[irq_idx]); + rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, true); + return ret; + } =20 return 0; } =20 -static void rzt2h_gpio_irq_domain_free(struct irq_domain *domain, unsigned= int virq, - unsigned int nr_irqs) +static void rzt2h_gpio_irq_release_resources(struct irq_data *d) { - struct irq_data *d =3D irq_domain_get_irq_data(domain, virq); struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); - struct rzt2h_pinctrl *pctrl =3D container_of(gc, struct rzt2h_pinctrl, gp= io_chip); + struct rzt2h_pinctrl *pctrl =3D gpiochip_get_data(gc); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); u8 port =3D RZT2H_PIN_ID_TO_PORT(hwirq); u8 pin =3D RZT2H_PIN_ID_TO_PIN(hwirq); @@ -1089,7 +1077,39 @@ static void rzt2h_gpio_irq_domain_free(struct irq_do= main *domain, unsigned int v rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, true); } =20 - irq_domain_free_irqs_common(domain, virq, nr_irqs); + gpiochip_unlock_as_irq(gc, hwirq); +} + +static const struct irq_chip rzt2h_gpio_irqchip =3D { + .name =3D "rzt2h-gpio", + .irq_disable =3D rzt2h_gpio_irq_disable, + .irq_enable =3D rzt2h_gpio_irq_enable, + .irq_mask =3D irq_chip_mask_parent, + .irq_unmask =3D irq_chip_unmask_parent, + .irq_set_type =3D irq_chip_set_type_parent, + .irq_set_wake =3D rzt2h_gpio_irq_set_wake, + .irq_eoi =3D irq_chip_eoi_parent, + .irq_request_resources =3D rzt2h_gpio_irq_request_resources, + .irq_release_resources =3D rzt2h_gpio_irq_release_resources, + .irq_set_affinity =3D irq_chip_set_affinity_parent, + .flags =3D IRQCHIP_IMMUTABLE, +}; + +static int rzt2h_gpio_child_to_parent_hwirq(struct gpio_chip *gc, + unsigned int child, + unsigned int child_type, + unsigned int *parent, + unsigned int *parent_type) +{ + u8 parent_irq =3D rzt2h_gpio_irq_map[child]; + + if (parent_irq < RZT2H_INTERRUPTS_START) + return -EINVAL; + + *parent =3D parent_irq; + *parent_type =3D child_type; + + return 0; } =20 static void rzt2h_gpio_init_irq_valid_mask(struct gpio_chip *gc, @@ -1157,7 +1177,6 @@ static int rzt2h_gpio_register(struct rzt2h_pinctrl *= pctrl) girq->parent_domain =3D parent_domain; girq->child_to_parent_hwirq =3D rzt2h_gpio_child_to_parent_hwirq; girq->populate_parent_alloc_arg =3D gpiochip_populate_parent_fwspec_twoc= ell; - girq->child_irq_domain_ops.free =3D rzt2h_gpio_irq_domain_free; girq->init_valid_mask =3D rzt2h_gpio_init_irq_valid_mask; } =20 --=20 2.55.0 From nobody Fri Sep 25 11:08:08 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011036.outbound.protection.outlook.com [52.101.125.36]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 156123FA5CC; Sun, 13 Sep 2026 19:58:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.36 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329492; cv=fail; b=lFHaO0K8gu3M5GBnRLLsj+dExOa8HZjLZgc5oiNJ8lwBB9+1qOBjkDJYAcJLRmG32MFx1PBL80sQDySPpQMAGHyQxBnK/c57pWAXMcl3EJ3JYtUvZZ5g/Ro0f1CFIBWoY0+7rjSuh1yiAomSwCDLYcHvkrMlMaK2QoRQ03/OGVQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329492; c=relaxed/simple; bh=oJCawKN+rZnQuOtLMeXqpzntcFlGU41wHhVjC1+pdW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ZrE2+xMf3ROdaXQSlkDZWUn1OOk8PGXQG+CbRU5GVevIbgW+7o3FlnE2mhyMPr+57rMEjnUdxm3lBWbQWoLwV4ugUUDrpslUwb1gsLOdYIWFzBxRAXrZEhoiQ6FxR4a3cLXnLXuoT+3yKllQy/svLpVPrUR8kmEJer7++jbT6Gk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=kADqq1pS; arc=fail smtp.client-ip=52.101.125.36 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="kADqq1pS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JysfP1lShxPbYyVE7mFLiWcX14sMCOJ58lmmwRIbJ8jHzKUX8yNQep+4w43qhcC1jW4bSSUxNbto9auaSQlSgoM3+pruSmwc7GXQ9Hl+y3tFEp2Q62BrQbqnNFX9ehmRrJr6JcH0k3t5M1c0CiXJaxCGS8/OwmZK36mVKqaXdmfNEycLcAseb+41/FdFIOKoVmBLMpRn3Rdi+Y2YqvXVogE4nKBf4P8h/jQCB2gmmmAW7M/03yFmIDtfcNmiC43UE5WsJy7TYVqL630evpAtERnKR300oE7OTQGQLONXCatfM3leUGdWkazC5tE3IBDkdZJF1TZ4cwY4Vsng/xU4fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7i3Iy4rnjgAdr7LWyaNPjeIa4ai9aI+2XsE2M9eL0PM=; b=Av87LRoe1OmME4AJBnVVKhG+fWvhxaHBWgFYVxRsercI5I/BR3FbT+Vw35wFrftpwqpffx46tqQBaotFnPYss9DDy1aFp7zAwGlD7q196aRqfyOIpGNcsAcQMu1kpfEEMp/bW4CpEcBuaezO0bSdRkwQKCltSKO5wfMw59u491TKzC4Fy+M4b7myaw90wwgn+gPqPEASa9zZuUuD+mpssjYoCESLix9KSduZiPL5sHSou2Gm/3h7KqYTPhx2JDwAhR07ak533UaIPRWUY37OyVVzw3dZjGPYooE2h2HcS8aCbHQC/UVT3KXXBRg7gFsEOp5OFZG6hEt/aynM2AwZWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=glider.be smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7i3Iy4rnjgAdr7LWyaNPjeIa4ai9aI+2XsE2M9eL0PM=; b=kADqq1pSeD/5B6mmwQnDCM38rNmjo1amNGmuG1PgLC1y8OyZ3KPjFGC5E/RprRiQ5hrsB8A6htIjGdB1IcmSfBB/uwyJ1mQyOcwRDm0IB2jbHYZSJckSwcy8bb2PXr7wQGTnr30siODY/p7GY7p0ygC/feFaAsIeQLeIi8GcWSU= Received: from OS3PR01CA0026.jpnprd01.prod.outlook.com (2603:1096:604:db::13) by TYCPR01MB9537.jpnprd01.prod.outlook.com (2603:1096:400:191::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 19:58:03 +0000 Received: from OS1PEPF0000D215.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:db:cafe::20) by OS3PR01CA0026.outlook.office365.com (2603:1096:604:db::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Sun, 13 Sep 2026 19:58:03 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D215.mail.protection.outlook.com (10.167.240.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Sun, 13 Sep 2026 19:58:01 +0000 Received: from demon-pc.localdomain (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.2]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 1CBFC3000245; Mon, 14 Sep 2026 04:57:58 +0900 (JST) From: Cosmin Tanislav To: Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Cosmin Tanislav Cc: linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, stable@kernel.org Subject: [PATCH v3 3/5] pinctrl: renesas: rzt2h: fix reading pin value in IRQ function Date: Sun, 13 Sep 2026 22:56:52 +0300 Message-ID: <20260913195654.3371385-4-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D215:EE_|TYCPR01MB9537:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e2b7769-07f5-4c1a-cdff-08df11d1512b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|23010399003|1800799024|82310400026|3023799007|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 9IjHbwaqXKBDCAyYolFyn/k4zsw5XlVnBpPse/En0MOGvrjXIlHMCVCaijrz6XuBY9m43yzvQL3Yr6Ifle5m3BZ2wVbGM/2AbOhIPNArvLqftV8QcIiPrlPB0h1T/S0BDLY7t/pK4icqVsD5mZgo+sKIEkt492Sx+7TywWIEwK9b5FH0YvkYXvFYZz952uHVf1dHAtv11ZItQbFBZzrWeb4f7ESopld1IKx8FYTToENHAU9dcrfUhuTMAPLz7goi+R0dh5DIbI4HOtQSw/oSE35C3NmVgoZXVAoh9TKrYR1uPlRUB4yvPZXhS+qkpAjRohw8kOk7BZj+v6ZdMJiH7K+iX0aTd8qdCnfBDl9ka+gn0u+Bl9ecpc4mWRSJcCtTZOeGPuswuYi4/l9degdhd+ADhyF9gEtyilBbd35JHfyrpus/mZQgbtYI5xo42OjIcZ6f8lulegvAXB1jjT++Ow2umn5hgDwCBAqoKcJxodDZwJmmejg4+fHmcMjlihcVimaCfiBK9dRsX/iypWOsnRSCR5QSNb4z3vyA7rCoVx/YgfS5uNhageFFOhtFrG/VUCJ6sAI/PHXxOgOFpHBSrllvEEsNVD65tkyopdE2rtTkTaTWFeC6oAM5+EoSmLSbJbMkewo3FcTcj6WbOpl3yFOJXZSRmtsVsFMRnHRamknH6CO62S4eh3Ap2GjDiSLoiGdkpsdINcW9gMuitipQOg== X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(23010399003)(1800799024)(82310400026)(3023799007)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PyxsCwI0r6DPfanQp95H8pHuQ030+rSGgx1Wxy8peDx4GMBpz2M6nh7VI/7TCbxV/OvytabEY7Jd8Ww8cxmOhlCz3osvzI16e0mN8hMtbBZCdOwd2kAMY0LI6wcasOdfIu9+Y3J1FfUFOctMaHVkUlC6BWwH8zMlb06w92LOlNFhwQXK9DYxfL/pNCUTjdtuKBVpETC1eTlXiC6ATV5bAj4UP3UThUxD1RkLwgGIt+7q8GP2NwmkbuaPHZg/qhRFuo9wi1vsAXYvcyNxFt4gw9bFv52bv6+YSvdVG1LOO3AgE35cCG5PV3xj0m70SlEGHUm9W807I9rFP5WXBlvQZcAV4rlWS8zoj1uku0GMvrffqCZ+9k5P+P1S/pO2aFY43pwyhTH1q36sZjmI/BAFi+VLJzvomHD8nMhmXOyZqFqFStH3Ve84bKOJkZa/axaF X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 19:58:01.6919 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e2b7769-07f5-4c1a-cdff-08df11d1512b X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D215.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9537 Content-Type: text/plain; charset="utf-8" rzt2h_gpio_get() only reports a level for pins in input or output mode and returns -EINVAL otherwise. When a pin is requested as an interrupt it is switched to IRQ function and its I/O mode is set to Hi-Z, so its value can no longer be read. gpiolib calls gpiod_get_value_cansleep() to determine the edge's direction when a line is watched with GPIO_V2_LINE_FLAG_EDGE_BOTH. Non-zero values are translated to a rising edge, zero to a falling edge. Since gpiod_get_value_cansleep() ends up calling rzt2h_gpio_get() which returns -EINVAL when the pin is in IRQ function, every edge is reported as rising. When using the IRQ function, the input buffers are enabled and the PINm registers reflect the live state of the input. Report the input level even when the pin is used as an IRQ. Cc: stable@kernel.org Fixes: 829dde3369a9 ("pinctrl: renesas: rzt2h: Add GPIO IRQ chip to handle = interrupts") Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven --- V3: * move leftover unused function to a later patch V2: * remove the PFC_FUNC_INTERRUPT check in rzt2h_gpio_get() drivers/pinctrl/renesas/pinctrl-rzt2h.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 796120e70bc4..9d7e4cba85c9 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -170,6 +170,16 @@ static int rzt2h_validate_pin(struct rzt2h_pinctrl *pc= trl, unsigned int offset) return (pincfg & BIT(pin)) ? 0 : -EINVAL; } =20 +static bool rzt2h_pin_mode_is_peripheral(struct rzt2h_pinctrl *pctrl, u8 p= ort, u8 bit) +{ + return rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(bit); +} + +static bool rzt2h_pin_read_input(struct rzt2h_pinctrl *pctrl, u8 port, u8 = bit) +{ + return rzt2h_pinctrl_readb(pctrl, port, PIN(port)) & BIT(bit); +} + static u8 rzt2h_pin_read_pm(struct rzt2h_pinctrl *pctrl, u8 port, u8 pin) { u16 reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); @@ -847,6 +857,9 @@ static int rzt2h_gpio_get(struct gpio_chip *chip, unsig= ned int offset) u8 bit =3D RZT2H_PIN_ID_TO_PIN(offset); u16 reg; =20 + if (rzt2h_pin_mode_is_peripheral(pctrl, port, bit)) + return rzt2h_pin_read_input(pctrl, port, bit); + reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); reg =3D (reg >> (bit * 2)) & PM_MASK; if (reg & PM_INPUT) --=20 2.55.0 From nobody Fri Sep 25 11:08:08 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010029.outbound.protection.outlook.com [52.101.228.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46C9A3F9F3B; Sun, 13 Sep 2026 19:58:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329497; cv=fail; b=b6ARvcLhLHwvLC4W6qN6yemcp9mCqFY7rBSUG5fHtCZXH10mriR4EJZcYjJvML+0RiXfMQWoVAtzRAhUnpX2e3V9T3S70zDlirpe4r1TXxCB20JVP9l3k0k87nWl1BjOgikiGD+HRajwHsBUjV197klpJEzfZ0WqoYx8AwI3A8I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329497; c=relaxed/simple; bh=16rVZZFKH0FtNaQsPENJFgXGWs/qvJX9bF8ItOiu/Og=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AONMy28RMZURZDV24LfMiUMC/AoAheXJPXGOLgv2mwUmyq43nph0eniod5ncKPioLzjosHfV6+U4EsZOaJJyrBbdt/BrQ977gqIJlL8qK1TR9G0nXLTn7vg0R6I985/QzmZhcQgAC9Rmh73qaXnPegSzGN6DIRFjLuKz1tYPWV0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=hlks9dEx; arc=fail smtp.client-ip=52.101.228.29 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="hlks9dEx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ESr4UDNYY1OlKwe+md3HG4c9ylkXdXtjZyP+EWdP3ItGwyWnzTWFUIT/BEmuR5NKjGNVrEnPufCrVrpsvrOjcfqHYO0MnykkhCeivFjghpPgsIJW4pKN4zqK5ng3oh4UsQ4E4HsxWWKPX9pqqU5ea6aLqIsp8b9zYx+lFWbGqzQhP9Bw5xYVNuqdx3z59C1rA2Yws2SuSJmHUAt6dtFuKqGDW/UYTFWIdIwXg6xN+HUrE/9ysE2miF6Atw2JDd24e/cbxVAe1Y4b0SPZcuGIuCP6O0G6SlEFPI3iOF6Tmzzfwl+jS7VvKZYbe3RSMn8oFeQDRTu+17y4M8nTaQ041A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BHYjWSJPgfb4vu0RnSY5OkJRD31g93tK8aA1IYsDMB8=; b=B390fmZiAR5aQWuFtSpBXQ7IKUP0DiCA2cD53uHAyFelwSgUw9ChZ1lpTLTlex8NUBLwgw+BdEC7n6hRMX6On6ihwM2j/uRMoS7rInA0uHKJUgSudQ+i+/nI4A74UWySr7Qm44AbkvRZn76sgZRtGk5W+6RZndOO0pLO+jNENoxLxosC0T8M+3EC7rHVmdduySNB1ibAihaQH5v0UrxY7e/PqZm8JIeKAgQIlB1/UQ+gMnDyVkhN7Y9HLrdurkkvUrJgmeuV8qzx6a30i/tMo2NwPc0uiyTE8ngGOxMG0kYTwq9/HFArPjIAFhaE8Y8KhsIlK2D5arc9lrc2aGNkeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=glider.be smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BHYjWSJPgfb4vu0RnSY5OkJRD31g93tK8aA1IYsDMB8=; b=hlks9dEx+dLNEdNnVYG7e5gKYte9SzVcUeUDLWjs74PAbHQgOIpilI+YSVTyTIeQJEcBbH1vGFT/UkCgvny5ioJYCnakcvlBPm75kJdwcRwmHnwm3mChFnxQoyayufITUu+XZ5fAMdxIBuhw9oM0sGx58+/G20xQpkxyB847Okg= Received: from TYCP286CA0209.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385::12) by OS9PR01MB15774.jpnprd01.prod.outlook.com (2603:1096:604:3d5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 19:58:06 +0000 Received: from TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385:cafe::23) by TYCP286CA0209.outlook.office365.com (2603:1096:400:385::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Sun, 13 Sep 2026 19:58:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005026.mail.protection.outlook.com (10.167.240.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Sun, 13 Sep 2026 19:58:05 +0000 Received: from demon-pc.localdomain (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.2]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id E2091300009E; Mon, 14 Sep 2026 04:58:02 +0900 (JST) From: Cosmin Tanislav To: Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Cosmin Tanislav Cc: linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/5] pinctrl: renesas: rzt2h: reuse helpers Date: Sun, 13 Sep 2026 22:56:53 +0300 Message-ID: <20260913195654.3371385-5-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005026:EE_|OS9PR01MB15774:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b577319-83d1-47e7-b4af-08df11d1535a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|23010399003|36860700016|376014|10067099003|3023799007|22082099003|18002099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: EIWUK1mU3JwJjb8DCL7li4dtMo9TYarkY+NtXBQr6j/Cl7W2einuCdOvu08vFJaMcJkJXolydn8k2QVnz4mts+GuljZsk57kE0VwteuW7YIxZ8gpp4gTtbVx0f77bJ2/6x7Kk08UAQK9CqBFTyWqzaQbtmqmEGPFZeFJJ/qyCoHPU/xvE2fLxwr3Jf4g2pZO0UG1oUoVm95XB0ZvM0IkCYlt76erdoHFx7zH/i1umk4lbVtAyx1tVFah1VhdjqyFrMTsFtJ2nUy686Z3tmD4T8/DalEYhPpWOHvOzNthC1shXjQpePn2i1qdllyEjjnD5EG1wjZYWyTUBRbpV4VqFbgwLD4tGtVsB5JwBkmR52oxWSeOBtQrQYtaSSDzqL0eJoVQzSYNynTS2ci8/zCznW2zVcc3GJsP+Zm1d+ppbrvc85H8iwVsAzybFdo9LehspQAcyg/75ffqfUZZ2ucFGhBSqZWJEnui1d6uSqLfnEWpNXcJX0dWhdNv6vmbwjGg42JjyP+gn8DgRQxDMsLTdu9NehtJDDsJslEmymaH9yEnTZeAkzQyb6DgXzG5XPqx/9Nt/wmaTKcEFKrkiZ5h4B8z8FZL8GOLLPN583inzFW6JQC8O0vmz3mmE7d6P4tN3XtSbGCKHszGB/3lnm/J3VJiMzES8bB3pzE4oah0himH/dX8ziSysYk/Bc9tdGHTOiZs3d2pMYhFychOJfKEyw== X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(23010399003)(36860700016)(376014)(10067099003)(3023799007)(22082099003)(18002099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ewmODWTaQH6qf0EBr8daGb9V1oCUaqTXY3r0jLdZFtxnIhWijP1ynTYYUfYWw86YVXku74y83Ifz70QgEpCIpKAT7kvdjSF5tPzqtfliGZOd2aXGdMnAgXCHteVdqFu3kxouyT2vi37XeQs7hFXFhsnnasQCSmLKFoMlp5l0fTQa8urxjOtDbInWMneVKMC4L57DLxa/lKqRKoE+LZLLqC/LLlEGD2rXhGaDV4qsjCEMP5x0Xb+jJHTA00spC31f3mm7FeT5ikGk1nv3UBrMiPQUjEjr84WMu6HbtvimKKBw9TuClVjZX8wSHrk9w9jid4xYK396cGSyxrk1i+QfgEaR9IsQh0Tv3aGNcbdPXKf5DDL2Z6aC+th6ifbj83BqF9WZ8MkJJZQz+04EuoXI8iedBytisVUFqLg61yWIEGg/Xk2+9G7EtfOQVvjSYQiA X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 19:58:05.3698 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7b577319-83d1-47e7-b4af-08df11d1535a X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9PR01MB15774 Content-Type: text/plain; charset="utf-8" The PMCm peripheral-mode test, the PINm input read, the PMm write, and the PMm read are open-coded in several places. Reuse the already existing helpers. Reviewed-by: Geert Uytterhoeven Signed-off-by: Cosmin Tanislav --- V3: * move the PFC read helper reusal to a later patch V2: * pick up Geert's Reviewed-by drivers/pinctrl/renesas/pinctrl-rzt2h.c | 34 +++++++++---------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 9d7e4cba85c9..80a581fdef37 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -223,7 +223,7 @@ static void rzt2h_pinctrl_set_pfc_mode(struct rzt2h_pin= ctrl *pctrl, =20 reg64 =3D rzt2h_pinctrl_readq(pctrl, port, PFC(port)); /* Check if pin is already configured to the desired function */ - if ((rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(pin)) && + if (rzt2h_pin_mode_is_peripheral(pctrl, port, pin) && field_get(PFC_PIN_MASK(pin), reg64) =3D=3D func) return; =20 @@ -777,15 +777,7 @@ static int rzt2h_gpio_request(struct gpio_chip *chip, = unsigned int offset) static void rzt2h_gpio_set_direction(struct rzt2h_pinctrl *pctrl, u32 port, u8 bit, bool output) { - u16 reg; - - guard(raw_spinlock_irqsave)(&pctrl->lock); - - reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); - reg &=3D ~PM_PIN_MASK(bit); - - reg |=3D (output ? PM_OUTPUT : PM_INPUT) << (bit * 2); - rzt2h_pinctrl_writew(pctrl, port, reg, PM(port)); + rzt2h_pin_write_pm(pctrl, port, bit, output ? PM_OUTPUT : PM_INPUT); } =20 static int rzt2h_gpio_get_direction(struct gpio_chip *chip, unsigned int o= ffset) @@ -794,8 +786,8 @@ static int rzt2h_gpio_get_direction(struct gpio_chip *c= hip, unsigned int offset) u8 port =3D RZT2H_PIN_ID_TO_PORT(offset); u8 bit =3D RZT2H_PIN_ID_TO_PIN(offset); u64 reg64; - u16 reg; int ret; + u8 pm; =20 ret =3D rzt2h_validate_pin(pctrl, offset); if (ret) @@ -803,7 +795,7 @@ static int rzt2h_gpio_get_direction(struct gpio_chip *c= hip, unsigned int offset) =20 guard(raw_spinlock_irqsave)(&pctrl->lock); =20 - if (rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(bit)) { + if (rzt2h_pin_mode_is_peripheral(pctrl, port, bit)) { /* * When a GPIO is being requested as an IRQ, the pinctrl * framework expects to be able to read the GPIO's direction. @@ -821,11 +813,10 @@ static int rzt2h_gpio_get_direction(struct gpio_chip = *chip, unsigned int offset) return -EINVAL; } =20 - reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); - reg =3D (reg >> (bit * 2)) & PM_MASK; - if (reg & PM_OUTPUT) + pm =3D rzt2h_pin_read_pm(pctrl, port, bit); + if (pm & PM_OUTPUT) return GPIO_LINE_DIRECTION_OUT; - if (reg & PM_INPUT) + if (pm & PM_INPUT) return GPIO_LINE_DIRECTION_IN; =20 return -EINVAL; @@ -855,16 +846,15 @@ static int rzt2h_gpio_get(struct gpio_chip *chip, uns= igned int offset) struct rzt2h_pinctrl *pctrl =3D gpiochip_get_data(chip); u8 port =3D RZT2H_PIN_ID_TO_PORT(offset); u8 bit =3D RZT2H_PIN_ID_TO_PIN(offset); - u16 reg; + u8 pm; =20 if (rzt2h_pin_mode_is_peripheral(pctrl, port, bit)) return rzt2h_pin_read_input(pctrl, port, bit); =20 - reg =3D rzt2h_pinctrl_readw(pctrl, port, PM(port)); - reg =3D (reg >> (bit * 2)) & PM_MASK; - if (reg & PM_INPUT) - return !!(rzt2h_pinctrl_readb(pctrl, port, PIN(port)) & BIT(bit)); - if (reg & PM_OUTPUT) + pm =3D rzt2h_pin_read_pm(pctrl, port, bit); + if (pm & PM_INPUT) + return rzt2h_pin_read_input(pctrl, port, bit); + if (pm & PM_OUTPUT) return !!(rzt2h_pinctrl_readb(pctrl, port, P(port)) & BIT(bit)); =20 return -EINVAL; --=20 2.55.0 From nobody Fri Sep 25 11:08:08 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011000.outbound.protection.outlook.com [40.107.74.0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 735D4371D1F; Sun, 13 Sep 2026 19:58:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.0 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329500; cv=fail; b=JiGBwRJhGHUXY29Khr6eBm8IVFCAAo7/7+0XiP8OXVUK3Eq1e+oq0k1lMhf+/yRnwPq6Sx4+YyyAG7WMPH0tN5py2QKPFR/mi019ke9Jo6BA/jV664LmdHZY9kAWaARhK5YGjqsZ6n+13bspPgo3TzE1w0N7NSbGaGh9RCuynnU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789329500; c=relaxed/simple; bh=4pxzAZlZHnbJ3Mg3iGhMnv9OwVtTV3SQAymDSaeYbOI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=U4gZJhzzlCsr3bgNKOS/u8OSHP+P7UCm4oBwqQYWQ2ELoR4cHiEJcfxUfq1wCQ8SgqzfE6ZjchqYQPnMfCPD3M4FsGsvqXG8zulSUq9L9okw73SHuIlNI0B6UTmQTOvNLglE9EbWtxDe5mMBsWBjFNg802euSKtU3k+1OcKZ+0c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=h4/Jgy8a; arc=fail smtp.client-ip=40.107.74.0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="h4/Jgy8a" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oG2yRz5s0w9DX1baqkSWLs1NdtIjauk8mRoz3xSXFDdfbZfnOthdSVnWqzNOcwFWujhSgFthn9uzOEu6vfMf7eAtVZ23OwAfn2n9dipgRjQkWmyXGqXQlCWBKT9hvbppeLSZGcp22TwM9qQ1heoMugWTmIKJs/PrDG6Qa0xbnviLYELF0v68FV5+d0e6zu55Kx39/AUgOciSusE/aS99TlVI4zrmoIhPabhEJjkWCqtP9ex9mClWiiwUc3aDTiAfYtByzvv2BxUJvHmL11ljxR5YjOuXSYsJGX3vkbDio6qj1rxFOu83zBmTGF0u3DFhNJ/EJJHwjx2BfJNSBBFJsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7cqXP860+wwnRl4zPm2QtmsbhfhTPbASOgWabWGvyXw=; b=Ypc0VNDXMgPa8XlGhU7PEkn8CkACU4GC8NF9Sb2wyb7p1CqxjSx2w+nnNH82cepEcI/xeUUBZd9pNT2E+Zv+CSSr6Y/8u9Xyx1iFZLZ3Sah8TpnpwXRtessSV8VqSNhtCMI9+e+DQqo4VWHYrKa4yzUGibfIanT4vZ/R7qC3yamBCoCm5d8jofo8KL8Hm+urfkBUu92ips0ufNxhZNTvjilMXQZLbYtIXqT+I1GTtxVBoL6jEjX4bbD3TXtOay4pVdjPLriy+ACwP4QmbuOGvYvxqpU113h1dnl5eTyqSVh96tBwWsQfSgBrCtWFpW+B7yVyuUfEOANH6rhefjO/kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=glider.be smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7cqXP860+wwnRl4zPm2QtmsbhfhTPbASOgWabWGvyXw=; b=h4/Jgy8aPVSEF1wEmyllci2utaQJhJxpN8vJULtiP81fNjltGFbwva7iXxrH98uZNXPqIoA5UP02tzJNrzCEx/G9YYkf0khDtFNbjQomZXGlEZkqnbAyE5Hs8+GMnQjSp15Tzg9a9Yf9E6Vkb52nsuQQux8P0UzfROah8KQNx4Y= Received: from TYCP286CA0200.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385::6) by TYYPR01MB13055.jpnprd01.prod.outlook.com (2603:1096:405:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 19:58:08 +0000 Received: from TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:385:cafe::43) by TYCP286CA0200.outlook.office365.com (2603:1096:400:385::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Sun, 13 Sep 2026 19:58:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005026.mail.protection.outlook.com (10.167.240.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Sun, 13 Sep 2026 19:58:08 +0000 Received: from demon-pc.localdomain (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.2]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 8336530000A8; Mon, 14 Sep 2026 04:58:06 +0900 (JST) From: Cosmin Tanislav To: Geert Uytterhoeven , Linus Walleij , Bartosz Golaszewski , Cosmin Tanislav Cc: linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/5] pinctrl: renesas: rzt2h: add a helper for reading PFC Date: Sun, 13 Sep 2026 22:56:54 +0300 Message-ID: <20260913195654.3371385-6-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260913195654.3371385-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005026:EE_|TYYPR01MB13055:EE_ X-MS-Office365-Filtering-Correlation-Id: 98739d7e-bd60-4398-a966-08df11d15564 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|82310400026|1800799024|376014|36860700016|10067099003|22082099003|18002099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: GfOZqMC1dv1gE0l34fOWjGX1MpuzHiTgwXHhYl3IYXmiJVg8d5xn5nUeZ6vm35bHomvHfi+DUdfCpNd86fyze1b79N/zYL7fu0QSLB8boOVPp4Qzg5crL1qaQt6FKAqbbH3tG93gebQS4cTKrvTi8QwLi48Zthze+q4Y2JAZtAZcjQtoOsPiEPNVFylaDo38lGorp9YtsXPNx30j0AMCe8/ZU1VPj8LgoKVPUJJVxvmyOiCtMsj04zi3XfpD2jGJ01hwteLToyFGwBojJFi6bKjsOVGTX4Tf/qi+NZ9DxgiJ2YTFEb6w5VnzAbk7dqQvn94FxJ82fhphYEgjJX5+l2jS/jXX8VlQ38zuly1gHbVtglkaLsbQC8NVH/cst68vXaSduWblM6SuZZatUpHgLhtUVf5MOYxzW53tSzGvacL93ZuNH0yXvXU7bsh4hU1cEF4zWqHt2OTR8J+EADWh9F4u5NOEPHItyLMEN9oSdKh4cx9pSq6S4LpAOTCeTkN0jPV0YKcwic+hQaP2kSEODYLdq4FrgRc3tciHglfuli29X8csbFIn8SUDHzFZJPcFYy5lPfpCZ1k6RHW/bhX4yGn7jkSkodpMl079dGnODi+d9w6Nv+5jIuMXmmA1hXoSULiFNTEnlE2dOeAenZTQg6gBFHSX4rnsd4XKwueLYzE2vXM7gluYKoZ9GkvBN47pp6Olrq3/+Z0Qf+iS/Dg/YQ== X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(82310400026)(1800799024)(376014)(36860700016)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: a9o3OPyZmarRXhNH7vZINv7p3w0gstOmGr2zeA14E+yJzkfRynLXHz1FNfeB+uBGDUNDmVHCA0WIE0KtMFfaU61Hv7uv7+jWZWoN+pmTSAkurlW/8pbkyppTFJuR/IdAewQ4+prBQLmu1IFRPL1JFkuKqZhMSzQwJJn0W/tI5Lxjd3VUMr0I2dtBkqBmah6uDJRWtYI81pNVhvKiDgd3bBiO2Oja6GOYPPEDhv89gM/jZ2/WFsAVdF3IwRkjKKSQClEbJOP28FVYzHVZfDX51rhTBXI1BkzmAuXMIubtqRuATq50lo8BoV40ku8jUtHqhHzQUpHMsYtce3UbkrJQ4mtDP5Zt2RwQ1POdqHj4Tdi0kyWYwfD5p6tIulD4sfx1UTSN53z5Ssk1j5yBlrGk5hky37QrFFDX7QRrqevLhm6d+ymCOGLHrqAbcmV+tqu1 X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 19:58:08.7903 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 98739d7e-bd60-4398-a966-08df11d15564 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB13055 Content-Type: text/plain; charset="utf-8" Introduce a rzt2h_pin_read_pfc() helper and replace the open-coded implementation inside rzt2h_gpio_get_direction() to simplify the code. While at it, use field_get() with PFC_PIN_MASK to avoid the manual shift and mask. Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven --- V3: * new patch drivers/pinctrl/renesas/pinctrl-rzt2h.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 80a581fdef37..4872a208e0c3 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -175,6 +175,13 @@ static bool rzt2h_pin_mode_is_peripheral(struct rzt2h_= pinctrl *pctrl, u8 port, u return rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(bit); } =20 +static u8 rzt2h_pin_read_pfc(struct rzt2h_pinctrl *pctrl, u8 port, u8 pin) +{ + u64 reg64 =3D rzt2h_pinctrl_readq(pctrl, port, PFC(port)); + + return field_get(PFC_PIN_MASK(pin), reg64); +} + static bool rzt2h_pin_read_input(struct rzt2h_pinctrl *pctrl, u8 port, u8 = bit) { return rzt2h_pinctrl_readb(pctrl, port, PIN(port)) & BIT(bit); @@ -785,7 +792,6 @@ static int rzt2h_gpio_get_direction(struct gpio_chip *c= hip, unsigned int offset) struct rzt2h_pinctrl *pctrl =3D gpiochip_get_data(chip); u8 port =3D RZT2H_PIN_ID_TO_PORT(offset); u8 bit =3D RZT2H_PIN_ID_TO_PIN(offset); - u64 reg64; int ret; u8 pm; =20 @@ -805,9 +811,7 @@ static int rzt2h_gpio_get_direction(struct gpio_chip *c= hip, unsigned int offset) * called to enable the IRQ function. * Default to input direction for IRQ function. */ - reg64 =3D rzt2h_pinctrl_readq(pctrl, port, PFC(port)); - reg64 =3D (reg64 >> (bit * 8)) & PFC_MASK; - if (reg64 =3D=3D PFC_FUNC_INTERRUPT) + if (rzt2h_pin_read_pfc(pctrl, port, bit) =3D=3D PFC_FUNC_INTERRUPT) return GPIO_LINE_DIRECTION_IN; =20 return -EINVAL; --=20 2.55.0