From nobody Fri Sep 25 16:04:05 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011033.outbound.protection.outlook.com [52.101.125.33]) (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 0AD5D4B4891; Thu, 10 Sep 2026 16:03:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.33 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056222; cv=fail; b=BFjfhC6q5JkAVIBJDE4yZEpuCqm7uK69JBWGwS/I9rKCJ4HQ0LzoC7POZauDLtVhh0EvrkzjTrnWSQxGQbVtnp6oXkJALRPxsOa9/uaLCxj4ABsO64eu3PxeL4XC4kcdKKQKIBCs8Kwb07JiFiOOVtUcvOEvInB5Lm86aYacKaY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056222; c=relaxed/simple; bh=k+eucumxkyGqavrg45lzb2d/hUm1izAJGJlItjVp8Hw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AZIzNnNlqCiWs1axi2btMwEkPmFKSFwoZHuna7UCgzkqw7o9S6ZYqZgpOn5g5GkKkOY2s3/ijSRFPivLPNuI+1/ouRADQoeuBZyPAxLYQpusLHr9acrwWhYKQ7k6i7esZLlr2zPhQ0M7BJuuxnD0fKJ7eZirLc0RGNP832cs1i8= 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=ksEdWKNN; arc=fail smtp.client-ip=52.101.125.33 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="ksEdWKNN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ztarz8U0u22j6wg/q/NtswZ5pQJKE2LL6Ya/7vLK7rA6zK98z51Zsq+DsY71JoM68dQztULtIa7K9y7fkcM2kS4z4lJoHSJemThMZ5hpOpcZDdNQJJSAyKvBXdAwLXW69Bgw3RLF3mJUwTXSukPGXio0MeSCmw+xIajOrhY1tpxV5tqofVjsrguqYTq2UuNgTbgx/dV0kU4Co1ox1CZi/m6AUuSBUDLgZ4VccO7NPb+h9bgRgMlbAmBK+zhBaZeAA9MdB0pl5/TsXGxKruYgAwp+XZx5YclZyo0Jj9RMm3x8O0ZEBk4z5BwYXLPpqimiuCreomawnT4j61xv6Q+tUQ== 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=00UiDxAhvfMIyR4bgFi0HdCu7qXuEJWr4hPbbTB+QA0=; b=h4QrW4lTtTit3g58oMLxJmybNC6xy8DtS/JiVuNJ02l8n8qebVqgqTWAJFCRgfiNueypCf/ZRf6LSUfVI6MIzhVQ2OwciFsLHPDekOryyhMxakm9CFPJruhd6GmjQaIUMG+dQP1Rv2LqrgC2zR9/sn3j5CUOHf4j+DCsgd2mAyQ3UbEJ+3VOiVfgSraAJJq/dhn+APSQyfEPj0ZA6VxTyMBFxbP89JmiBvthvV9dT7aSgq5gWoJTWVM2UCcgpeDsjBofnXTYgJpmsPIvYd8n6aptE9oZ0ml6fwzvsM7kKwIVc+a+bgfRtBtA9I5aiUYOjo9MYUvui1jkNGqwdwiUVQ== 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=00UiDxAhvfMIyR4bgFi0HdCu7qXuEJWr4hPbbTB+QA0=; b=ksEdWKNNSB8LgUzY+ma24p9wwBflpYJV92TW/IRaQ/U5OtTyFsinGDNKVk7Cwc5BoeRO8+W/vT3mdhYx4ngahVPqgtl/nuWvTYzi2/E2gspNrDmLxPBCUC4OLRU8KNEcZtFUD9B77v7db1BWtFwRpmqoAZJLNBwT9bpJLKQU6yc= Received: from TY4PR01CA0066.jpnprd01.prod.outlook.com (2603:1096:405:370::7) by OS7PR01MB14969.jpnprd01.prod.outlook.com (2603:1096:604:399::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 16:03:34 +0000 Received: from TY2PEPF00005622.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:370:cafe::8a) by TY4PR01CA0066.outlook.office365.com (2603:1096:405:370::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 16:03:34 +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 TY2PEPF00005622.mail.protection.outlook.com (10.167.240.53) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 16:03:33 +0000 Received: from demon-pc (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.160]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 388F730083C7; Fri, 11 Sep 2026 01:03:30 +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 v2 1/4] pinctrl: renesas: rzt2h: restore correct pin mode on IRQ free Date: Thu, 10 Sep 2026 19:02:23 +0300 Message-ID: <20260910160226.489183-2-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910160226.489183-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260910160226.489183-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: TY2PEPF00005622:EE_|OS7PR01MB14969:EE_ X-MS-Office365-Filtering-Correlation-Id: aab0d646-e1a6-4db9-2c9a-08df0f5510c9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700016|376014|23010399003|6133799003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: f8nw1e1UMbbWFc6tO1PtmaBGgpZD1DplwrSL3irErzGNQIqpCk7RPbgbK0p5uSLZa6G9RVEpr1RU09pq8LdH5643Ay+2xdtxglF6HtuA3dct6zHazglNr2o00ZaGVusaxyXUcdSPfEvACw3bvb3eFRuNGslP654h0El95yw3QJCt+pZ8qCMhNzRSxRJY+v0g0tIblsbcQ4WK6YV12Ma+tcWQZciBU+sVMZDWAAsBk6mt1mjJvoJ4TqORJ4K8P13a8MeZC8WsdgxvMdFX/k9hHEDnosGjC3GmmzQjkB6kPwnRB3JT25JJCaT8us2kW7EHxZPj6v7X3XPOC7gv0/FJnSIrAlJ+Tku5wT8v5K1kJh4hqrdYA/HjU70q5jzans357tVE3qCiprUD3yppiW3NMwCsHyg/8FgSraWDDcdAwFDad7h4Dcqhi/MD6xHkjVkN0NqJ9zcA2OhNtkbKwVM6BlWlQyv6i7CYaz5rIjm8nrvwPN8+J/ObGjyKzniakYNrP2p9licMbn/xEKCH3tuPexuAb89GEuZiNOokb2PvfSM+4zJEKWnqfJqi8MNRudzJXYpZqMc1RnofoBUy7B/jPe2Ta3CDLqbMTvfCNXud+VSUyXTpB4HIhnVUXHluM5qTQDemwIzS1lCzRIIpdwypU659rqQVdk8OnhvpgqeuEjexAEPssnE6FpYVNJmEjC2NIs1H3uAAtRhSkUwMavhmew== 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)(36860700016)(376014)(23010399003)(6133799003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4sOQrQycfEHa2O5GQcxnyAl78mnAAQ7nTLdIB2n8VPa/nduIAQ3ZxDM17xrpOps63u+hEKvPXxPhlbSNaTVwpuxgtPbSNXFeM7N46OMy42XeGigWd8GWtAoa15NhZNcNJK/X6h2NAslHAtAj96nOsdSt5tPG4HCL1o/MUgmGty+49GtBFpILuvjTXtK0ijFdLz9O28FXKlG8v+cWTur0iWkdhxyqL37wTjCam6Swvkll312Dda/+XRsOF+B+K7EJI011OcCJsrhyGKHGtcfAgLxlo8pPjJ11C7QcnoH2QFtRIPoqpW33sBbYGsCQLqwG6n7nqraEVpzyGI4tO0NeUJEvEZzXoeTxY86B1bkgyMyFHvgWRsgOKJRljvNCdYjKLXTTACf70Dgo/51NrRGIv8dNmbSE/dfhQT+YvtosAvkj1Z8eMhN2b5+3ym9PuvCp X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 16:03:33.7663 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aab0d646-e1a6-4db9-2c9a-08df0f5510c9 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: TY2PEPF00005622.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7PR01MB14969 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 --- 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 16:04:05 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010029.outbound.protection.outlook.com [52.101.229.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 5BE1A4AB1BC; Thu, 10 Sep 2026 16:03:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056224; cv=fail; b=IatKv99ZSGDeRX6/5inmZ6YCUmM86/wDoT79EtE3PcAlNctcNV3OyfbKwIYCABsZJhs3j+XuGMo52IMyryYlJWp6t/fFix7oCeO2O9e/63e4k1oeHeFc8guHVlP14s8T5mnGDmZpG76xN/QQShoH71IFETdtoR6NMfUmgezZ4r8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056224; c=relaxed/simple; bh=K7vRPs+dbd9UDpmIIgXr4BU2dJMIC0sHAC8GoEY/EvE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=baZX0vyz3p0ftE0+dGB7o6Y9ABexly6N9B+akVbmrj8oT6Xr+7MPiyOlbH/mN4HAEpuZ9LtKD2z76ldbiuU4IcfPm9VQcqhgbGhBUTJBmB+2vucC/TyG7phf1YZRI+2dOfNvbyw/119WDhYRVspYd+LGuLni9+9LtCIHrW+i0eU= 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=pmTNq/PW; arc=fail smtp.client-ip=52.101.229.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="pmTNq/PW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bospEQ0ZOuDi+nUI+fXv9rBzmxBBY5b/SmsyZQe/ND+j/h5Kqk4iF+dtU/4l0QZkHyTpFxZGZBSa3wlQWolRyBzvhr5rCl+yWmE1AwPZcexal6j0Bh1I4ZtArto6ehbwp3rcShihHzJg8CD9GGLA053VhLiC4jlzWXBski3kG+6RAZ+n8sSM9+URoGrYZsJBKVfKwr3uOvzZOLqbZ+JQoqfPqvm+2Cwcp0t29KkvZznKSawCD/rIet/iRLaw42ByLy1lijL+L9H0TQoRMz2JH2leBh+x393eEtaR1Dz9aRMLOZOvJ/ieQUAM2xILBE5bUOY1m2M982RcXkWEVBhmkg== 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=5hvx1gIpOHvFYsfecgsjDxWMiKfzlisLGDtNQsgl2Oc=; b=Kb/dn/tpVCgHa20lvCl9SvEs07QGklFuBbyr2MsIdjdF4TUXfNYYWaLdSuwMxQ1DY1Fm22hy3NEV1lUU5PoQVxovc/dDRWyg8xhYS2aL+D77awuUTXGkdYNbFvI48DgkOq+PzdQEQ3/DYqYpuNv+dUqw7GK9ejiOY+Y5Ukn9OhaweOgGksp/TU6UbZSlSbPZsNObDqxrvB1cTmLupniHvisiPBPncSrqC56bdV4XQqkfAojihtKC2EEMlZpMmguFNLcILme8MfKYV+/9gOhgCOKNtIK5iK/1YvrarVtCAwxIbBVlTl47PqTDkFDZgL6B1B8GTMwHeapH53QjBfqAxQ== 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=5hvx1gIpOHvFYsfecgsjDxWMiKfzlisLGDtNQsgl2Oc=; b=pmTNq/PWl6pCsVCJhcXqUI2eIZzxl2g3ei1pPZE6drIls+5G13TrZkcL0Yq9vHUjlntF/Soj/05HCLYS/rWVIXza50Gl+0RH7P6jmVZkU73MyzIkFDtqLv0TU7jSZdVhkpumulS3Iz3zS5G81k6Wl6ZRyZggay8q8caQNTrlIQ8= Received: from TY4P286CA0106.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:380::10) by OSOPR01MB12361.jpnprd01.prod.outlook.com (2603:1096:604:2d9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 16:03:38 +0000 Received: from TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:380:cafe::2b) by TY4P286CA0106.outlook.office365.com (2603:1096:405:380::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 16:03:38 +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 TYO1EPF00005020.mail.protection.outlook.com (10.167.240.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 16:03:38 +0000 Received: from demon-pc (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.160]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 7D70B300044C; Fri, 11 Sep 2026 01:03:35 +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 v2 2/4] pinctrl: renesas: rzt2h: setup IRQ in .irq_{request,release}_resources() Date: Thu, 10 Sep 2026 19:02:24 +0300 Message-ID: <20260910160226.489183-3-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910160226.489183-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260910160226.489183-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: TYO1EPF00005020:EE_|OSOPR01MB12361:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fac0d1b-9e88-4e39-9952-08df0f55135a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|23010399003|36860700016|376014|22082099003|18002099003|56012099006|10067099003|11063799006|5023799004; X-Microsoft-Antispam-Message-Info: 2htT5fIvJt1dV2LegdYgBqGwyjjjRDseG2Aw/mmKH6Fb9RnrhdII5O/w5gzpEU5KWIIAbhfvu5gfqwrhNq7OgoDeujn+UmTHdVQ8VymKFfZLZn8tQgcx1CJ3RXb2hFyGYQqvZ7rsPpUWgGlucJKmssuXLLtuyWAcLX+t2znnwKxvndc4Sj5apQNfEKHWmegoGzvSYRjXmWWGmfJiY071NOEONrjimHVoucJOle9QQSmy7r/9p4iCsieollFvOedCX4zKmA9CL6SU3ADGeztjOhdurcZODlw1eF2VJaA184m4NJNGZUiJYnQstArkPQddtJ3Lngd9ghJBATtopFMNYLqPFAVTmBQsSoCk1zjfJ+1dUhmeewH6g7Nb+nKu5GCt0JNI7itji5Pjcqzp5/1AXdf/9ughZQqu16Vn8UOitAmHdW1kj6hfEfACAk4QpaHe7I5ZaYHCWxqSgQBQ+FD+ubIWdLRr3T0VUWD/M7Ek1Ibdu7xum0kP8yid3RGFLxGIVZuZ1GBpPI7rD/EjAYm4+RKVaNKMW5INq820JKYjjQW2px5DaaiDI05OQMLJCOeO4/VHUxqvRxBmVYrSHwqmhiAUQ9WbtGbZTHUZgLSsVK/5Pqb0w2nO2eAiYAWj/qecwfc3oeIISELUTRZwav4IAMdMWT7Jc4N9+Y4ROzfNv64NJiXm+aY76C4IjriaeqksIonW7+DRSTo00pG4gkJx5w== 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)(22082099003)(18002099003)(56012099006)(10067099003)(11063799006)(5023799004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sfPGbM2XDatuQin5gxUOzbVSlhKZgA5UYLXuRBEtyoDBYBjvlcbi2Rb1wRh1P/Vsly3E1t0A3Eg4sImLzH2FDeoDnxJiyjGbiSZ+2imOz1AiXCaLXHmtjtD5DsDLI3XIqFzAXpy9WYpt+fivvvDCcRDUjc+E9uuNF4ufLjz6Lw0FFmhpKEKVP2oXvHu1YgasmUH2iRpbLkFYoKS9NCEuOL9MlZip2dJyuHxkdZvy51IaFjuMd1ueToxzTaYTJNe/maC+uGy/CMZA5Yu4Fxb6UZZ75xHd+Ps2wMiM77Sug76aPnz7Dd22FEBGpQvVLdpEcN0qOP08V9O0N5NkBZ51eFbgakOms/Jtueda0XBsOuQ51VrpUjGL43fiwxVK47hQJc8sZCKKARVLuV2unOckUSPi2kus9bqk6Xzl7UJN5CmalTELCcyiCggeZkeKOzaI X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 16:03:38.0743 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1fac0d1b-9e88-4e39-9952-08df0f55135a 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: TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSOPR01MB12361 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 --- 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 16:04:05 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010026.outbound.protection.outlook.com [52.101.228.26]) (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 612E14BB276; Thu, 10 Sep 2026 16:03:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.26 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056228; cv=fail; b=Wv8d/2F4S6VFmREVl5SSOfpeASV9ppnNoKE1CE8NUvSiFSwecM1WfUL4N+J92xBu4NNaEjsXLuzXLHJqCGjP7NBDRW+Qunnbr+O3GTmwK0aWV/FI+PotNXjtdIsQZPmuiITI47HqhXBh/wTHPBrpy+WrIaK3z6mdAIhNHa3GlVI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056228; c=relaxed/simple; bh=WBNtttzHmW4zLItWuIc/heM4f0W5p264VFrp6TsJwwc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=B5cPhHLyXUzBxu+3R0XNnYiEqwJtz9b4RqXbKGQgRxMAzaBjrZSUywh9X5KySRWrhgg3q9Mn2bKd3+zPMNPNFFOxLkRBy2p6PhpOzCWwa4/014J6uClVa7mZvJ065qDwWMcjLtX0gYIwA78QpcpRvGgmL5dZeodH73q4ChSRwYM= 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=C8aUX7/N; arc=fail smtp.client-ip=52.101.228.26 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="C8aUX7/N" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TEcycFBCYPhZLvU5WDntwZKcdyNIOlfuGJKvuTnSnnFnGrCjKGgxGqgYNflcOZ3KOSEyk48YUlENwcP6VbOzupqT1hg/Vpg6GeZ8alvkYzjgc+yGKJckPsWCHWBRkUbo8AvFMW5jGDFdbb096cGi3+GYUdQPu4wafrWNz8i75Em0uZdDEyn+04MyrQsOzBB8J3SQpCfXrAJp7k7v59WoWsR3whJwiLXV03zNya1E924qx72mZznHgWUtAQBXWOthGnsO+3Ewi8dkxv8MBVLN4TJncoWMFVzNxmL+Y/bM3S0dfdJ03I151SvM831b908D8o5PZEX67PVp6aPuWb+kaw== 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=XhHVKQhud0dOH012E6ym0ZZI26SlP/gDpNFlzzDP9YE=; b=X4OyAjSQASSRabciaYrDSWhDwsxCTL4bYoNzXe35sI8gT2OcsYh6LZGDh29y3GJl180gHNOzEAEm+f0+DSrGNpr43/zirmNEqzVPHoTSDaTTMHtXSg6bRcDsYrBe+Oe45UGpnMoYyddBIfgvlCbymoB/zaeq30UjR80MZlidDf5JGKNR7cWHan6AYeCGeZf+SgY3Kpx8tlCMn5Y+u+fi/CLKfQEXypYfO6svFx191jWBoTQDYhK+u/HsDxHxAU+QCBGIOU+YYvZArJTITxen7rM5qIjwzvfPco2WJhO+uIAfaFEoByfqYek2SLKIyHlkrHiMhiyTs2s346kyS4d5FQ== 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=XhHVKQhud0dOH012E6ym0ZZI26SlP/gDpNFlzzDP9YE=; b=C8aUX7/N8HadNWINYxh+Ib/ZygFt/YIoPASqUscLwVLLlH6mDsvR1dIMGy0YTYtgAHsNsqLuZJpvzeF4tCcpvwfLB87xYfFlVJ5AOxqEd8dxVrF+KhNVMddMPh9+XJHxzeWubNV6Spx83Wj3pKZlVgfVCSL0PucVthTx6zJmvTo= Received: from TYCP286CA0168.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::18) by TYYPR01MB10610.jpnprd01.prod.outlook.com (2603:1096:400:2f4::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 16:03:42 +0000 Received: from TY2PEPF00005621.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6:cafe::5d) by TYCP286CA0168.outlook.office365.com (2603:1096:400:3c6::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 16:03:42 +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 TY2PEPF00005621.mail.protection.outlook.com (10.167.240.52) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 16:03:41 +0000 Received: from demon-pc (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.160]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 40627300044C; Fri, 11 Sep 2026 01:03:38 +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 v2 3/4] pinctrl: renesas: rzt2h: fix reading pin value in IRQ function Date: Thu, 10 Sep 2026 19:02:25 +0300 Message-ID: <20260910160226.489183-4-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910160226.489183-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260910160226.489183-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: TY2PEPF00005621:EE_|TYYPR01MB10610:EE_ X-MS-Office365-Filtering-Correlation-Id: 84c3febf-7df0-4360-ecb0-08df0f551594 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|1800799024|82310400026|23010399003|56012099006|11063799006|10067099003|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: 7lwAbteVuCHOhV+yg2JY25Ah9tv6oFLn6JzJtzUnmL31qotQGSciGdSZhIrs32Y1nPWMEVPkmv4Sm02tCKVSw0/0hfKKGFLqyC3TEdXg3TOAEJEx/t5IbEKC8OXFoAcT1dv/rTv1SwGoVdaDouGYZ2siu8suaL1rZlt+H4s1iLQtHbd3OzxAZOLjarLO9Rg7opYNGhw9fqeLqy3jpc5dxhD149mvD8kwFIY3/y5zP/H+agtWVV9INOxjmDHQwQRm/wQU0/JI+AsbpRay47jcE8kbaFUxvV4g8Q1c1pSkoRETvLjyaqxjgKuyx5U3br6mKNO0usgfmyd/+DNmg5ahQ66XHq0BaGfiOHhR+/eCoxgj3HdAhG2IlDlLT1WuymjgaeDwXVyJBdDVbBDJppwBZMmdJ6g7tP9JTWhjGZkHwC/sTf1zlawOpPWl9o2SB/Q+P2xleNiyq6F+WTaC1wHmQiPbEzumoIZO5TpSjDJGceCjKgDyqaLy3oJt230cjupM9xxsYbNiITZ9U6NIbSMU1Jd57ZpjWVdBbyZa4wr5f+B8MsxhRdiRE9uJRDcbk+RWYHClFPGFrE763P9EWDqdQu7LwUk26LXaV1/Q13gOSzYCrBkw9wKYtmBX2/U2v6xMEokA4oxUhPzg6cW4ngG/uh6WETr2P09Ev75+iBT91zZJM/xfdVZTqWnYb93ZUhBYvgfV/dSAyNWIlRi35uvFlQ== 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)(1800799024)(82310400026)(23010399003)(56012099006)(11063799006)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KzjeLaZPIui/+pkTUKgVQGXwZmDdaUpS2QJSUsWbjFBuV/WfjCikRb3nOwX98P1w1UFCoxrmvdjFD3fmeU2oIZ3T2OvIrch43JMAToBaIFJBUjbH9j1MMQzBcS74PKjkio0Y/LmSa77252mG5sPAlchvBPW2/apl+0C77byrL5SHfFbjKsFvy4AisZpZDNZ25KZ/Xdb9IMOH6VmWgZNrO0yB/+TaVWv1FZH8+1OoPIRQ+zye9LH7dv6z9xHUOIJobURPd0j8bNKvZXWjnEelfwtCf04mIuoFGWIbNnZBXnDz7lG0dE+PE/cIX7Yp+oT9AHWMGKNqQrsrNPl/UjBRsNw6aDVaER2O8PIGtJZFOaAZoZUudzgkuppNa9iAYq5oyeEy0WeAMNdUmd+rzK8w1q9K7MMQw6YGzW91IzTI5qbNcgCNLcQ3mxdd8gSg8X9P X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 16:03:41.8113 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 84c3febf-7df0-4360-ecb0-08df0f551594 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: TY2PEPF00005621.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB10610 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 --- V2: * remove the PFC_FUNC_INTERRUPT check in rzt2h_gpio_get() drivers/pinctrl/renesas/pinctrl-rzt2h.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 796120e70bc4..8cf4b7f48e7e 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -170,6 +170,23 @@ 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 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); +} + 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 +864,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 16:04:05 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010038.outbound.protection.outlook.com [52.101.228.38]) (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 17AE42EB5A6; Thu, 10 Sep 2026 16:03:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.38 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056233; cv=fail; b=NRBB7VuyF3K4KKBVLYGXQt6TeSCLVDbyuNpIk6R4pLzOz/FTO3R2tXWt7cXIVQ5hAeIt7X1OSuio9SY/kUYs+wKeeR2lCndvspiduwDeyVJsIMH7zVSlf7Ojc7olsFZeEcZN70r23ZKinnZUBfJrpbaPEze8igWhe4osRGRgqpU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789056233; c=relaxed/simple; bh=rpR60oG9pCtDqqYRsH37aCAXxhNxb/+ywveDqx1hh+w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I6QAcFhikxPpgjQzUrIhS966TeolE4QvMzRJC6pmP0ChOlwdSWjcsyxUQ3469XThMoZkYvWnsJXFt8pBwA7eejkYWksVgzIrHdAvtaAiVI+VRgmXuZOpduSpHGlEsBThwkvau6zNhWQRxWlZMGxtO5L+s/oS7cM+Qd4s5Nq70fc= 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=f8/bDxEw; arc=fail smtp.client-ip=52.101.228.38 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="f8/bDxEw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oXUEEcnFV2d70XGb2Z/NInSxgrODAQ9m69iERoEtZhr42S8eLb5nLp3gI4WMlrkSY8Yh2GuW4xyv+PZ67Q3Fu9Y2bep8iA6Z2u7QbgfY5mQo1pNDcdeteQof4WyVLBSl6HN4y8+8oMQke1ZjvRlNNsmGRmt8yyxUcdiczfRYVSTD/00jsxsiXy4CBMgY1nep/v6LsZcnGv7N8sQ3E58wk3Yse6qymVw3K+v49vTYPfuTZjYa5UeF3YNsQZDNt9nKNxQUsynhCBGZXN8yo7huFVVAZkeQNfezt35skaIZXknpaY5eXiGaM0IAqAUuTTfAAI/qa6IUfsvhojzQQj1rrA== 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=3vzucJ3+1m8wzjgnGHs0+KTlzU+0pSFkZaZgxgZwCe8=; b=wZYltWUulcdmxqHyQ4Lcw2jJzQ7OmoTaonnNteDNS2WfieF47WBFTPkKwfNCQ/v94ykzBAVYW77OxES8P40gExK/Ejp+xOieJ49qlWAIBDfaKnoOYtZk86dvNqok9lbXm8RuxVRnUGNe9fYupwUIwrdvSJspKCBUkTHV8/7gIlNXo9lK2FzGSbK05W9yBIprSQSQWDdZg4bnaR8Vz9GvcI5pME3tr3ZUYDmSwcgcD8iFDzEBf2mviqN/T9wdUEHvC/b+Ay6sixGzaCx/t19ZjaQBrScdwkbykcF6QX1zP9WKAncOEQVkhX+cwhwo6U1xsw+DgRkQ2TKEyrwZhzriQA== 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=3vzucJ3+1m8wzjgnGHs0+KTlzU+0pSFkZaZgxgZwCe8=; b=f8/bDxEwhMi8Tp9O8rgOktmQN1C5AWQfycDilNXLC2rzkt8vfwrImzURbm4X9fn59AqvtQdRgSfNh8QCYcv4m44AUWBliB3m0na/tkyVZ34ULaQVdmlgPh4/0zb2mv5TyMRb6OrDQB93Ln6d7HSMWUvFA8905xsLQjDIkokUs7A= Received: from TYCP286CA0022.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:263::8) by TY7PR01MB17246.jpnprd01.prod.outlook.com (2603:1096:405:32b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 16:03:48 +0000 Received: from TY1PEPF0000BADA.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:263:cafe::45) by TYCP286CA0022.outlook.office365.com (2603:1096:400:263::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 16:03:48 +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 TY1PEPF0000BADA.mail.protection.outlook.com (10.167.240.39) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 16:03:47 +0000 Received: from demon-pc (DEU-5CG5050QD0.adwin.renesas.com [10.226.92.160]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 451D430083C7; Fri, 11 Sep 2026 01:03:45 +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 v2 4/4] pinctrl: renesas: rzt2h: reuse helpers Date: Thu, 10 Sep 2026 19:02:26 +0300 Message-ID: <20260910160226.489183-5-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910160226.489183-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20260910160226.489183-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: TY1PEPF0000BADA:EE_|TY7PR01MB17246:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e92d28d-e30c-4e08-af98-08df0f5518ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|82310400026|1800799024|36860700016|376014|10067099003|3023799007|56012099006|22082099003|18002099003|11063799006; X-Microsoft-Antispam-Message-Info: HpUY+M0FQb4JWRDLFt5rtsX6Fl0PTgwf67sMIBuvjyYZ+Jw9Zkxxn8JVh1ewNXwkTQ5LrorA0MH5LcIgD455Jd3hYAfWTb7ZCWuojlk/DRGYuBYeX7FFPqrgKOGvBuBpJM2kkao1/ix/y1wl2yMYZDLHkuBaitI28KeFRMuY1nRnDO9BCd0+sBtsFkahD5ItCX0LYatuexqLlpNiyX+adV3L+I49emmSmsh1oLBw+7axNnIYLTbblCjmRwwpb8joS7oJ0OpCBNxGavqj2OCo9qbwBUxs7EjMnnX6exTJN3S2m2Q/DlM79wphRFhYtVYmCfCMG86d1EQ8TORnKa4ESS7l5k6AC1CN3lTJFYDRgoq/F40DNLXDkJiGvSyZffYRPTyXy5muEBKsKZKwv1H/acxjmyreQu7PFuzO1/QqDu2sXS3WTNH60U0Aijd3dMN2Rm4hYBx/rOSDyj8kwJNg/BXm2GCyFtlLVU3bTjFHV7TrABfw8DyEqyp5L97XspPOw+h3p3TuJscBjgqeJFehX7QEXkFHL2ZO7zgnAOfV4NLLdcU6Z+yb/5oX2e3Ew7y+8k8Sifi6UdBKsU1soSvPZBeTQkYeQJ/dk9eogObqJmCNyhR2MnU6ezvCzraPjFD0840DLafVxUGK0ydT5QE0hVuPvfOkK6YVukxezmMYY4tpAt6YD7HjmCZ4Pw6NPUXDtpCchJAerk0IF6hy5PnOsg== 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)(36860700016)(376014)(10067099003)(3023799007)(56012099006)(22082099003)(18002099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: az18aeV1anxaI+gT+alvhWuY7MK+Lv1iBIds7ZC+4E1O7765H4jxYKXSor3nXEg+RHrJfkFDT6swlxF4pPZrcT3kBJ3qIec0FM8UEEherv/08uXw97ZJoKAsxOzQd7MBAxmr7R8iQfUUoyTzixgsIfUstpPwFPMIPb9ZmXz1sY65zzmDW+mNRPhKhct6hBMrZTeCqYJMkpqNIvQonSNsKg8FX2TU74JGuLJsRMnPBCCSIskxd0EC3XY19yaYLo0B7LGnzci95UShmTTwg2G8W+DLvuLVL1/pQOELr19ZsEX9L4iPGdUXa/6k6UV6ib4Q0PWueyPuzJhjieD8bDoWbb4fwRanEucdmFKG8XlXM2rO6oY1Zt51uVXq6rdBK+piXb6N1FhUi1OjaRZDZiSrDB38Vo857t9nCIPZKdJ0pDWXeD2rvF7QpWg6KZxjcqVo X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 16:03:47.5454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6e92d28d-e30c-4e08-af98-08df0f5518ff 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: TY1PEPF0000BADA.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7PR01MB17246 Content-Type: text/plain; charset="utf-8" The PMCm peripheral-mode test, the PFCm function read, 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 --- V2: * pick up Geert's Reviewed-by drivers/pinctrl/renesas/pinctrl-rzt2h.c | 39 +++++++++---------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/rene= sas/pinctrl-rzt2h.c index 8cf4b7f48e7e..4872a208e0c3 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c +++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c @@ -230,7 +230,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 @@ -784,15 +784,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) @@ -800,9 +792,8 @@ 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; - u16 reg; int ret; + u8 pm; =20 ret =3D rzt2h_validate_pin(pctrl, offset); if (ret) @@ -810,7 +801,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. @@ -820,19 +811,16 @@ static int rzt2h_gpio_get_direction(struct gpio_chip = *chip, 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 - 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; @@ -862,16 +850,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