From nobody Mon Jun 15 03:55:13 2026 Received: from ZRZP278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazon11021124.outbound.protection.outlook.com [40.107.167.124]) (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 E307F25A321; Tue, 7 Apr 2026 18:49:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.167.124 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587764; cv=fail; b=EiVtviG6LVwnexBk8JzdWfp048qmJzs1EPRT4GH6mz3W5mkusdmiaEoahGYeFZlyl9dwE+1LBsJ6LK0hr1L929wQ6k7beqIRk/R2Fg5TLRMsyWVHdaiG9DFX1u+B5wOvvATX1PEjxE3ZoxQRK1yoRxLo20g4fIOz3cnN2W7tFb4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587764; c=relaxed/simple; bh=GsLT9skqXxNqS8tdVC0hBa9a+AJGlUePwwj06cat+Y0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=B0VqG2lWcqSmPnCIiqZUUwKqWDLbeFIfZrAnYmCGSrb74PyVsOFYCi90f0VvBRvgwuIKkAvYIDEn7I55Fub/OmunpSdqT4lr+VeQkai/ZTKJa708I3KXO4kGdom/pgwU+U+CgQ5g1k6wXK0Ppeo1jE9Ljt8MmabYxRzI+9u7qqc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=YJapxY3N; arc=fail smtp.client-ip=40.107.167.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="YJapxY3N" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lJQWglIkhDFfvd+NAiV+QL8bOco0xeN8gfKG+kZy/MlhBkCv/Q/Py+84MOCqFetqgXPdhgcmoSaJumK6RxaLJfaDrFRkvr3WeE2YIAOXaWNngHGX8dyddDImW2todI6jk++ew/c9zB78+fGJ4NORiLMhLK513MhKA6o5hPNLtPwvdQG82UN/3FHshEivY9V9F8TNenRkw3LYC4Z1VGeemtaC5GE6VqKvynZ3rQoQPNzUAHE1v22C1LQFr+D0gR4m2cBlxre6fKQqyGygoMG0fTE29UDuPLvQY6kF1ovzPOWVZpi6B3CNB9UGefyP08qncxqPEQb9OYfPdIzibbAgCg== 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=5tSU0evtGs8EtidQCG5nZVpGaFPEmE7FKr4PzsVR8Vs=; b=p4SVdjgFpf3g2ClHL6OyaTlY4fBiaEqu1hj8sDXyJ7fU/E45od5YAAe7vg449+7jbhpJektpvKbmij+ajiTtvz+yKQjOYiAy8/XhK9e4C7D+qEB6pvzBNoxwKm9rKft5ovpfclZ3A7j5ZNkt4HVNorsxDsaSi1RyOUCZbcW15rcO1b/rrTpPEGtSIrIpZQvkPb7J1ViK40QAeM3I19SthtM93uB2wFRFn4CSTWBEzPPwicbTiCPfRuNhAmytumWvFJ7LW4SriQMuvIgg4PaDnqGIRrO6Z8AoalgqmZYyRb/XBTWDTa7FVD/RTm26qefdHVm6bWomMkgSzujnGN8E1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.4) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5tSU0evtGs8EtidQCG5nZVpGaFPEmE7FKr4PzsVR8Vs=; b=YJapxY3NW2ll/lxFlRLY8sL8SAmzexm2TKLO1cuPIEliWZsWtIBOuy3gsVPY6zN2KKAlznbQKdLMp/PNvh08xosL/UCOG9xvHLqZy/N4oVtNEYYJxlAwQPKDWZ2AfDRi6fqX/NcxRNjoNo+7eON1WueyCj2tPQNdtzkdVTnHHz8= Received: from DUZPR01CA0237.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b5::20) by ZR4P278MB2096.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b3::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Tue, 7 Apr 2026 18:49:19 +0000 Received: from DB1PEPF000509EE.eurprd03.prod.outlook.com (2603:10a6:10:4b5:cafe::57) by DUZPR01CA0237.outlook.office365.com (2603:10a6:10:4b5::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.35 via Frontend Transport; Tue, 7 Apr 2026 18:49:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.4) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.4 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.4; helo=ZRAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by DB1PEPF000509EE.mail.protection.outlook.com (2603:10a6:18:3::628) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via Frontend Transport; Tue, 7 Apr 2026 18:49:18 +0000 Received: from hz-glue01.de.seppmail.cloud (unknown [10.11.0.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGQ0pkhz4wfb; Tue, 7 Apr 2026 20:49:18 +0200 (CEST) Received: from hz-glue01.de.seppmail.cloud (unknown [172.18.0.3]) by hz-glue01.de.seppmail.cloud (Postfix) with ESMTP id 4fqwGQ0VYrz20hw; Tue, 7 Apr 2026 20:49:18 +0200 (CEST) X-SEPP-Suspect: 385a42524b254aafafe27cd15d8621e2 Received: from hz-scan09.de.seppmail.cloud (unknown [10.11.0.50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGP6xq9z20Qq; Tue, 7 Apr 2026 20:49:17 +0200 (CEST) Received: from hz-scan09 (localhost [127.0.0.1]) by hz-scan09.de.seppmail.cloud (Postfix) with SMTP id 4fqwGP6Fctz19fG; Tue, 07 Apr 2026 20:49:17 +0200 (CEST) Received: from hz-m365gate01.de.seppmail.cloud (unknown [10.11.0.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan09.de.seppmail.cloud (Postfix) with ESMTPS; Tue, 07 Apr 2026 20:49:16 +0200 (CEST) Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazlp17010004.outbound.protection.outlook.com [40.93.85.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGM6mctz2xLQ; Tue, 7 Apr 2026 20:49:15 +0200 (CEST) Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by GV0P278MB0162.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:2d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:13 +0000 Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026 18:49:13 +0000 From: Jose Javier Rodriguez Barbarin To: linusw@kernel.org, brgl@kernel.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jose Javier Rodriguez Barbarin Subject: [RFC PATCH 1/5] gpio: generic: add a generic register wrapper for MMIO and PMIO Date: Tue, 7 Apr 2026 20:48:01 +0200 Message-ID: <20260407184805.807328-2-dev-josejavier.rodriguez@duagon.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> References: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0072.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:49::17) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB0523:EE_|GV0P278MB0162:EE_|DB1PEPF000509EE:EE_|ZR4P278MB2096:EE_ X-MS-Office365-Filtering-Correlation-Id: bcb99e0a-195d-4ff6-fada-08de94d65fff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014|52116014|56012099003|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info-Original: w5jmIdVlO0mf5x6iOaQh8lrEWPYFTKFYmHIwXL4C5XiYNza9syIqT1ASk7A5I7usYlqDkdFFfwX2Mxmlxjo79i4t3F2Kcrb3iPD/bb1az3SHtiEQgPj2NeDf3ner+yUDuVkFeY7if4jMGLiT4AffdE9VeowBbW05PA2LTJXBqldLbgXPk65XVmA899x2EVz38RLk85EgE6npzBG3vA3e5/FLiVpQSfBiLsSDXvd2b043E/GXvV2hB/QwfJZkHsLovtg0dcqsJtHdBZeHwYZgcMuSz5zZl7tsJAjGcSwNgIta/ManleEpj6MTj/NQ8UBDGUlMxHkZmkaulnU8UOR7iTzopwt6fFFAP2wiFHYPMpN1Hyq2HiD3xmzizurNM/K2YyncUuBZZ0dvdfr/41+90Pg/0Tp6hEOayxme9JYJ36ZrxFwl8tu8iK8IKXV+Q0TQcOspS37dmDVanw8qvzkHREbks2KYOcZ53RCzgnwjvQJvwr0qlVDJVTbnCEa88R0aoxbSkwkmZy3Fvy6BRM9cqcpdXStQAyRaXV56QSMMS2ADqNYb9PSoTrC7Zw/lLkdF5T1XMHT3dxjhkm6DzwoNrJpUX+fV6Ch/JwIUgxBJF4zKX83yBEETXJstCU5pFxLXy4AxVeLKF1MyxrPCvT0PlsdNOkeGmIfRoW1hNr2C3aF5ZCh6n5VF5yHSEy4Irs+h+u4pSY2BQKUaP5XZknGDTe01i+eM34/9YuHQObmZVfrgGko45CSnJqE8P4ThYpUYooT6cxaY5rIUb5QwTNCFXPdZbsxqBjQF9vYj0HrP6vc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(52116014)(56012099003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-Exchange-RoutingPolicyChecked: DsD9f1DMy0caImeXlAhmQkSOWCpdsz6TmBMmI9fFuiFZnGgaG9H0lAo+YyE24ER4D8gUSLdSMfWfD3s/+xRn9uF8Gm6EXQKP1bePo7/EaQebsvg6Z4hdJZWp9mdKDjh2HBtTzkC0gHK/KtpeY9mkV1vPaMWCh0/IGsHLLs5/Sl/Cv1LbrCjMmjn5PrPjEXH2OY3DCyPURVKFb7yu5SwdF7LhinRjwJjl35rq4RWH26bhoEqCoRKpOWJRYvo+Is7fgV/UlyQVAKCJBHR9100UfbCTgBJK3RWLpmAqHJRKJOqII5SZxcTNhrZ1PrxbJo2ZS6roi1BveG96IEG2hR1veg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0162 X-SEPP-CCCVersion: 2026-03-30T09:40:10+02:00 639c564b X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.4];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.4];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e2ba8c9b-98b9-4f2b-c1b9-08de94d65cf2 X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|1800799024|82310400026|10070799003|376014|14060799003|36860700016|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eACzm9sJklTyM+v5LGLWAFRvBBSLSIwgNNr2RU3mDetWuVbbmDufBhg7TE3L?= =?us-ascii?Q?QKJbWYdZy+owQruQLLjSZdOEHlHMowBYtXgRidl72+yYh3G0zgxu21zSNjlM?= =?us-ascii?Q?EnLzuHQ4+JZvpX1OCHlzMeQHDxJiqz0I1uvlSuju67TJjeA5Xm/BPylO632K?= =?us-ascii?Q?wsiu2eavM8k/SufPLqpFOUKvhklWqET3esUIpaFXZ9Torg3MCaa/OAvgzII3?= =?us-ascii?Q?cRH3vuJ7nW9DxdMWSLN9FixHgmhP3cuwbGK6BDlQQjKWQJduI7B50zCv6k0v?= =?us-ascii?Q?3Xz+7ebjIbTN7/xgzaXGDmgZ1XCJPyBSnUec0eAN/jgfpBbQncBxvet8L/6p?= =?us-ascii?Q?+5F57seumUaiCPiP7F0t8Fsoe3H91uyts2IyRP19CA7lN5pyGa2azsyRRsoK?= =?us-ascii?Q?WWh49JJnZmmGoTuQM3P0tZGHRXmJoodDAVbSE3d6C2Gg0zEaiD2YfP3LWDXn?= =?us-ascii?Q?7sI1jcZe6aZm4gMEOYaEeHMK35SiaTyVdHMmUhUWMgAGhjxC4Y9l/8xR9a9G?= =?us-ascii?Q?Y0yqlKNFzRuj/nLWPLLUncNnisxIPu3psVdTRHwj+wWmL6LoGo/bz8K5d+pF?= =?us-ascii?Q?skcgiepfymxQnju8CzOO8SWRMsLqE67aYO/GCL8SOmIxw+7D9+g/FesHl5D1?= =?us-ascii?Q?9oCwuv7/hj7VkH37JrnUheDhZuVqfRBy2CaFyQWsDqSYsUMLGkcOrBGtmYhh?= =?us-ascii?Q?asVdjlCBWW+mwhKddYsS/rmIgw0jdCDXCDyn6f60pfN050571Dt7I6DHleF0?= =?us-ascii?Q?SH8Gi71mDQ73EXe+6vIVHkNaS5C4j2GP48XG9R7vZR5T/wuNU8qFVSJmRow5?= =?us-ascii?Q?1OESy3Nyho+FTfWHflNOXracVIQqW8vUJCdGtLrGccDNrhsYwrabgpJQ3Toh?= =?us-ascii?Q?FzX7RRi0ASoJgor0uxSFDgQZtUnt0vFTPOR5XFBBLwa05X21lM2r1EBQ5PNc?= =?us-ascii?Q?rV8CGkYSDBiW2UeN2cv5X24jZ5DUv+MZKMqNAMH9Ynyu0KsmRBOLJmhj0py6?= =?us-ascii?Q?x1jF/otPsURy41EOOAV4xx1pUvAcNZhWlhSswPuFgOywQE65fnyvzqfzG2XF?= =?us-ascii?Q?+32tGehFcUy7RrNwzTuKLRvasnOXyLDT9SRpDlWd2maDC0Mmeatep6tV7ppM?= =?us-ascii?Q?va9w80ljwG9NSc3SzyrlZdufQgElK1JpxtnRILUiL224k4ilPBtVCWMqfHGB?= =?us-ascii?Q?g+fDIbfeEbhZs9/QRG3oiw1l6pIxHzmeOeppFOMPuIopntjrBXm/PTfpdmKr?= =?us-ascii?Q?MlJd+qYNklS3zAk84db+?= X-Forefront-Antispam-Report: CIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17010004.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(82310400026)(10070799003)(376014)(14060799003)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ILGMHnT0h5bkhb5wkk2XDqA47/bNzQB8jkTl0POMOn2MDbu8ux9I0RzELFbtjiFzYOd2byjN6asDyT6jCED9fLc/TQmzlm+GPeiSgLYTT+evce3G1wS4drca4LNaUBN8dBAlQ5rAfMnzBgVH+nlTNwBq7T88wCsZw7yTU16IsbsFa1zIkKW2B3ECuIM03IGsn0pH+bqZ9VYqc5h/wca24BqlVxqKs7ZJg13ENy2BCwOj6jI32BMDePEJfmk/HOZFmBuoJbahGtNEs9qN4lioGuEAeCFA5fNlUwdRLXmF7NtmwwpXMXcBCN38Se1pvMk1xqtpsaVIUb34d3JUA6H8SH7ABzMnnZ4cmNMNpRny0oU/JeQEun9iVzS2HF5aUufdtMYN7ZIiEAS6yFroUtfGyLV8+Ltb5gZD8OdEo/In48awNu/gNR4bgTsE6FtDNC/I X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 18:49:18.6512 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bcb99e0a-195d-4ff6-fada-08de94d65fff X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR4P278MB2096 Content-Type: text/plain; charset="utf-8" For adding support to port-mapped devices within gpio_generic_chip, a new data type is required for passing to read_reg() and write_reg() callbacks as I/O port-mapped and memory-mapped registers use different data types. Introduce a new struct gpio_chip_reg to encapsulate mmio addresses and I/O port numbers. Signed-off-by: Jose Javier Rodriguez Barbarin --- include/linux/gpio/generic.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index ff566dc9c3cb..87c624070901 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -18,6 +18,7 @@ struct device; #define GPIO_GENERIC_NO_SET_ON_INPUT BIT(6) #define GPIO_GENERIC_PINCTRL_BACKEND BIT(7) /* Call pinctrl direction set= ters */ #define GPIO_GENERIC_NO_INPUT BIT(8) /* only output */ +#define GPIO_GENERIC_PORT_MAPPED BIT(9) /* port-mapped */ =20 /** * struct gpio_generic_chip_config - Generic GPIO chip configuration data @@ -56,6 +57,19 @@ struct gpio_generic_chip_config { unsigned long flags; }; =20 +/** + * struct gpio_chip_reg - Generic GPIO chip register descriptor for MMIO o= r port-mapped I/O + * @mmio: MMIO register address. + * @port: I/O Port register address. + * + * Describes a GPIO chip register located either in MMIO space or in + * port-mapped I/O space. + */ +struct gpio_chip_reg { + void __iomem *mmio; + unsigned long port; +}; + /** * struct gpio_generic_chip - Generic GPIO chip implementation. * @gc: The underlying struct gpio_chip object, implementing low-level GPIO --=20 2.53.0 From nobody Mon Jun 15 03:55:13 2026 Received: from ZR1P278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazon11022084.outbound.protection.outlook.com [40.107.168.84]) (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 5A21629A9E9; Tue, 7 Apr 2026 18:49:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.168.84 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587764; cv=fail; b=Qe4kiq9IsU/Eozae72d1IgYv77KzxuXoKM2KFaH1X1CaP3MwbpQdMzDxDKtzR8gmpd/FtIB1h5PVmfPz9O8Klx0x34MLHfbESGy5cTQZxjjyPY7SKv8ivYv9C371pgbnz9N+MRnrEdpFHg/NHGFbkE8TK9WljCEE/Lve7f6ztkw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587764; c=relaxed/simple; bh=ecms8B4FqSPo8VoQjUg5JZLxhJxVIAk594/4yMeu1T0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tCi6rySazdHAOPd/IZVASkIO1Pf5cEKLdfT4UwtYR/3L60flnkA9vBz4IWgq0vLI8n7ZY3obZJYzTIkJsBPlZqOYyyCfYjQi4/37SYJk1PgAKYOQh0cb7s97JU9w65jft/nBddJM9QsE4w/HJEAMtO4o65I/hrsMTc/mNhrQqB0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=TMEMC+5y; arc=fail smtp.client-ip=40.107.168.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="TMEMC+5y" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SqZ5SEyGf01EYaV7gJ1yt4pnx9NLDn0Ctt+Lb1Vq5Gr8lGt+gZBqt/LQDon9LVGk3u/bJe/HsGTKc4TER2qcU/JsKluECOZM/NOk7yAc0iW8VatdQL3DGsqZOR89VcZ8wWRg1lj9cCsu4HSsSJxGhpehEoXctczHF3HRkw3+orQyLG214d9Aa6iYezh/oViK1t2uU/sgvgipbFWuY+k1C0mFvbry4oJCifNxL6yA8c1Lc9q4TfjkZBHKGonoA6X2E+2uiw0twtGnfXGP22zUOsIlQ6MMywbdHB6IiOK2UfF6nD8I9D/uTVP+xNm1mb3QYYXKeZ7uSvIrV/0a4gaImw== 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=c8IJN6c2rwlYoRCX7RASxatVjWIn67eVkoOv4Swru3E=; b=UAdVIp/3YVkPrD50RczzKRWKRHpLd9mZZ3c0hNo0lxgSiTfPRpda46LWkUfx3SuwK9wcS+LT4a8y4o2dYwMHflueyRZmNqU8pwJMnCrEfsH28vLrQKGfnmpCPybjCRtv/BgKe38h2+iUtgHuLragdcZlxmJm1MfL+QWGirvsk4CJdF/b7bK/9dNnfXjUPwclcxVB8iRTmNfRtwqiqk41Y+cmg/4PwkQpIShd1uKlPEdFaPFaHuD/05YEmCakqYgGQu2xw5m1Dw3w09sf1gmSsGQKPF0tHHtN9Y6y524YuCNKKlA1j+EWjEEu3UIyu2w0P/BBLZ8DmHim2xltHmzO2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.4) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c8IJN6c2rwlYoRCX7RASxatVjWIn67eVkoOv4Swru3E=; b=TMEMC+5y+X/SwzVPEzpU9pNDJVxVRD++B3qitFp/ekTtYvnNpNjIQv9dbVMHkKN5ptliHsBWrajJrPAn5ulrHByUqkYqP9gpG6HmEx0HvSRnLj4D51zPHENjTDSciEJqoySVm2/i0RvmvpzKGq5vXkVhroGHEIgrzAbP+MPKfwo= Received: from DUZPR01CA0251.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b5::23) by ZR4P278MB1919.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:19 +0000 Received: from DB1PEPF000509EE.eurprd03.prod.outlook.com (2603:10a6:10:4b5:cafe::48) by DUZPR01CA0251.outlook.office365.com (2603:10a6:10:4b5::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Tue, 7 Apr 2026 18:49:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.4) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.4 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.4; helo=ZRAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by DB1PEPF000509EE.mail.protection.outlook.com (2603:10a6:18:3::628) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via Frontend Transport; Tue, 7 Apr 2026 18:49:19 +0000 Received: from hz-glue05.de.seppmail.cloud (unknown [10.11.0.47]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGQ75Zzz4wxW; Tue, 7 Apr 2026 20:49:18 +0200 (CEST) Received: from hz-glue05.de.seppmail.cloud (unknown [172.18.0.7]) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTP id 4fqwGQ6lmgz20Qq; Tue, 7 Apr 2026 20:49:18 +0200 (CEST) X-SEPP-Suspect: af384c80c4b44ccd888e8df1f683e4e8 Received: from hz-scan07.de.seppmail.cloud (unknown [10.11.0.49]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGQ6B84z20FK; Tue, 7 Apr 2026 20:49:18 +0200 (CEST) Received: from hz-scan07 (localhost [127.0.0.1]) by hz-scan07.de.seppmail.cloud (Postfix) with SMTP id 4fqwGQ5b45zmZR; Tue, 07 Apr 2026 20:49:18 +0200 (CEST) Received: from hz-m365gate01.de.seppmail.cloud (unknown [10.11.0.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan07.de.seppmail.cloud (Postfix) with ESMTPS; Tue, 07 Apr 2026 20:49:17 +0200 (CEST) Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazlp17010004.outbound.protection.outlook.com [40.93.85.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGN71fwz2xLN; Tue, 7 Apr 2026 20:49:16 +0200 (CEST) Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by GV0P278MB0162.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:2d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:15 +0000 Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026 18:49:15 +0000 From: Jose Javier Rodriguez Barbarin To: linusw@kernel.org, brgl@kernel.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jose Javier Rodriguez Barbarin Subject: [RFC PATCH 2/5] gpio: generic: extend gpio_generic_chip_config with PMIO register fields Date: Tue, 7 Apr 2026 20:48:02 +0200 Message-ID: <20260407184805.807328-3-dev-josejavier.rodriguez@duagon.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> References: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0072.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:49::17) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB0523:EE_|GV0P278MB0162:EE_|DB1PEPF000509EE:EE_|ZR4P278MB1919:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e46528d-bbb9-4842-373e-08de94d66065 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014|52116014|56012099003|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info-Original: RYaxuY/MjD6Uatc8aSho6oxBP6TD2uth481j0MEDkgwlYigidH6p4QMYVd0ScKRK5dhq9+j0AUxCg6CmOwx7Zv50LVcOR4TPoucdR6NhFY3FL7vFgxXqcl3l90GhBjwZt+BgAtH53k0Xt2S40QwL4crdhgf5fKFudUeJSPtBrfdz5IplTYeQrWPzGP/MmIhBYQv31++zmv0nqeMD9Xaw7NNvznhCb8MAg1xL3OAol1jhIhDIyR78Avar2q7FAsVZeFcjMbuSf7sPtHa2Vs1wc7Buq4noL7uiPi0NQ3KPlUoZ8A3pMatrpk14VP85xS3gXKkoXAOpKipTLTCodN+Y/3jq3sZcqCKzLgaDo8bO4ULzUf7ArfJQaghY+kMAcyy4SrXGmk1BUb5cK2VFC4ngxb9TN8C4KGG8njCIwPeygf2NlKf/dpyrmJDiKRKFG0rGyHo6Bsx2gkoTHpgYqrfv1OVkUaTPoGcEPTYaJg1d9ud7xIUbi513MItxQ8+gJZZ8xwUBDqKQ26rxbibChS1oMUEgNCreRGvT/4WqlmM1S5GAsD61tb4Ug6sDHtnoKq702FMC1lIdP/XkzW4CtFWZs9EdwliJqQvTAl41PlGfGFolF52C7zbIvsLwoaBUL8KsIcrXx4oqiecCzBzjJy6obMuErzFlf5OFg5M4egyICGZKHB0p8mtpKv415CvaCxGuZyq6ymTYlju6ZqM9N1TIGLDm81lVh2j3a1MvcpHwZRlw3xYrj+Caq4jdDd12q3WpJv1TvRzAlZTg8Si/uELV8pIKBxDrLUS+KrlFHeF5lJw= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(52116014)(56012099003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-Exchange-RoutingPolicyChecked: gtLUWa+LF5jUUqBPGip95oan0PemEPgi82HK78XcwGVDp4Fu7w7KwR3IjsiAqj9zw59Sd1ZDMmw12AvVNz3rJ2d/ISGiZc1Wi5EQlaS+GPxUUrE9kqqHzcdlyTnf8TxF3S8AJ6ibZP2t3udHVUtPHpU1x5H9/GPhaUxgek7OkMFfJLIXaGy7i0qBPWWl6C5byRU/z/QbH6mL8dCLUb/tS2CcgRGIrIRzsv5/PRvKG+K5jJtUu1e4FHIRBu/diOt3kGf/QNTw07aF/jjtgdEjxJBaj9tHpyjo1Nn7BYgDNcUI5nqEaWYWQJ+vGVVQwPaSfGKHfYxvYQmbAkYqM0BEbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0162 X-SEPP-CCCVersion: 2026-03-30T09:40:10+02:00 639c564b X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.4];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.4];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ee669834-4cc8-4f0d-47dc-08de94d65ddd X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|704162211799003|10070799003|14060799003|35042699022|1800799024|82310400026|36860700016|376014|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gtGqWCV5CcyLy0q5p4bxfqZXmHWaHh4f0zvjtv1pvhgqADOpZ4yZa2FzOdRV?= =?us-ascii?Q?zQPIYYipbb69XQ3m0m7DWn1AMQHFAbg6WvjERx5Qj4cyyneco/6hB/7cSF6b?= =?us-ascii?Q?T0Y8NtnTzRNOY9qVsVZk9AsHUJITa0YwgHc2aw6rUtQ+9JznIStO5VlsR/vA?= =?us-ascii?Q?RcrSYDWcbxp6rMRZp5zRPUpDjHoKALUgU/nCIcALbMbQUXZRRGFzjOX94W9K?= =?us-ascii?Q?syVsSvGzDP0CD/7L974OAdni+7UrlZarg8CM03Eu9K49VYaijhhJzmJVkGnn?= =?us-ascii?Q?HPov24BLSyaXuKyrVzSl5n/nlWhnLtS1oN94OTr2TSUmeVcl7+qE21ENBhYm?= =?us-ascii?Q?13/32mPzdjhcN32hQZLXB/Wx0v/5cRFkCl0/H4NYudtcIQisMeQWjCwLJefp?= =?us-ascii?Q?nZEkpcTQEjoRQOV+KTA93mDvyEqLr15Yjtpmip0uI/e+EkWuRZe4bJvo1b+M?= =?us-ascii?Q?M6IdSor2mLDTt78lxh5qXMY5Wxsm1ItJdATH23oaIHKUVTNxkv0+eatXOEn3?= =?us-ascii?Q?GUGQ/UANBkEO1MvoNa2S72zyZ6KQntCvZg1FQm6krE1ztDp5VdsS8wiBIxPN?= =?us-ascii?Q?ZgHogMZ+ceejCSVZzXpMR9yIxnBDOB685NzZbYOlSQrGYKQ26wQQdK71nLBt?= =?us-ascii?Q?wkypluVLoKRB+/fh6Y/v3CLtlTx5LlXXCytX1+K3A0rWBqMzklK5/H4Hq1Ym?= =?us-ascii?Q?4USdDqMstiXwV9A0Fg3MJPy6dX6rlIPotbQZ+2eYFfzYZ/9BeNuBD7yKhDUl?= =?us-ascii?Q?riYPijWDQJ/Z+8aJiO66Ila/iLefKOocpqli/6zeljushN4g89XnBCegr6vk?= =?us-ascii?Q?k6bEV3Wl1eB7T0PAuRvwRT8bSniErUvNAHbxE7uX3X1bUaVsJF2/RrOGUvSX?= =?us-ascii?Q?EOYkJFe5OfUGiMOMwY1osFbqmCqn+0Q4gKD6n62O9dsNq7S2IzUCQAEzWCEv?= =?us-ascii?Q?qzB2jWFYQ3b7rVw8mxvuEYpDXmEgnAaZJBPPtKsOie2uCBJa3hW6+g/kAPHj?= =?us-ascii?Q?aWN9SvJnq44vIyJ7nKEYjGO4QNfUZOGyyYvBmqTRfRPQ1ZzgI2pAqGtH3Ntd?= =?us-ascii?Q?uy+mQr3mITU/SUtVt5LEQnaRcP5YbFOZa+9I4cuyJZXDEiQ/IB4ZrLSq2mhL?= =?us-ascii?Q?L+gsWVgMsSAmKpiU0Bb8A3dqq8m4Xz7kWA=3D=3D?= X-Forefront-Antispam-Report: CIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17010004.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704162211799003)(10070799003)(14060799003)(35042699022)(1800799024)(82310400026)(36860700016)(376014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N3ArDBH/9yThMd58DmZPSkCCwjK93kHjNeq6fzWAG4C17Qot6YbP9Rq7j+PCmpY1PDjki/a4wCmxUKHrPmfRECm9YDsQQUGqQUfWc1H3hW4tFlV+zJnm04FGM/o/70SueYBtZSRq6Qibhp7zAYMFPLoTM9gbXLXEUh78EVlJSEoeZ4AlXY178WUfRTONJTFweJRpWd82tewxHH80sS870/2WhWA8PFVyNenovMglUI0gk2VdbD8xeRUrnEOHjaqNU+BLpvf+xxQ+EhchMAQJm1OlGGh5LO0p00m4gZ9Ny9rY8sk/SLy+t0qCEp6qtr/WjyyJYt5rxHAWr9JtqCRbgDIfGahAPKaSPQlHGjWYbAjmgNDnoNhYWSlSpgOX6/fnFPsZwEMFOaG4s1SMBKo0eTaPDmyAqY37HjuNMLxD9ykKvXsDqgKXtuKXgOXPQOzF X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 18:49:19.3050 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e46528d-bbb9-4842-373e-08de94d66065 X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR4P278MB1919 Content-Type: text/plain; charset="utf-8" Instead of replacing the register type with gpio_chip_reg, it is better to extend the structure by adding dedicated fields for I/O port registers. This ensures compatibility with memory-mapped devices. Signed-off-by: Jose Javier Rodriguez Barbarin --- include/linux/gpio/generic.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index 87c624070901..9a71a8fbe56e 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -43,6 +43,11 @@ struct device; * assumed that setting a line to 1 in this register will turn that * line into an input line. Conversely, setting the line to 0 will * turn that line into an output. + * @dat_port: Port-mapped counterpart of @dat. + * @set_port: Port-mapped counterpart of @set. + * @clr_port: Port-mapped counterpart of @clr. + * @dirout_port: Port-mapped counterpart of @dirout. + * @dirin_port: Port-mapped counterpart of @dirin. * @flags: Different flags that will affect the behaviour of the device, s= uch * as endianness etc. */ @@ -54,6 +59,11 @@ struct gpio_generic_chip_config { void __iomem *clr; void __iomem *dirout; void __iomem *dirin; + unsigned long dat_port; + unsigned long set_port; + unsigned long clr_port; + unsigned long dirout_port; + unsigned long dirin_port; unsigned long flags; }; =20 --=20 2.53.0 From nobody Mon Jun 15 03:55:13 2026 Received: from GVAP278CU002.outbound.protection.outlook.com (mail-switzerlandwestazon11020098.outbound.protection.outlook.com [52.101.188.98]) (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 C19A933AD9B; Tue, 7 Apr 2026 18:49:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.188.98 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587768; cv=fail; b=KQ32qCGMUW9uzF6qUw0z6PZMD/igsRbJzedNT4SYSBLPyvCckGQi4hAKW6fmVpbmPTntkWoeS8F2mb4zn+2efKiONQkS3PAeNGRlCjHlRjxEsIHd7N5hAf+bCJo5Z7iZJBl2lU1Yi2Gc6l43/asjfOVu4XBZwXAtMrvm/yagxn0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587768; c=relaxed/simple; bh=JdtKGygpOn3/p5dYe8iW6MXFAN/9o2F1YIMIg8o9xAY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JCSPoZOMHlq/3CJ9b49HW+wdmH5bBIBLme396ylOhj9jY7aWX3ixX2JP1D2H8dpQLHMeIWB4zxqJXx7dc+CxRYZZVbdO5BqKI3JqL2ZRtRG5gU7399usQU+U1zMdqajVy3fTP8so4wL2cNWX8IIroFNOVzZhugIhYKO+qS3CwZ8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=euZ4SBqz; arc=fail smtp.client-ip=52.101.188.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="euZ4SBqz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i5F8kTHqBn6I3+4nHDroT8oMhABTXMJY7J3x7858ogJF6gAU3p3+9xYjp0b6pvGB1NnjQkPZv4WACHi2bhT/Apo8MJYReIguOWYUUzHtnc7KN4IR2+ePtokCNr+xkE+zBycagu9tnMMRi73JtT/7w3MVRtF5EsQH44OglKP3KC7Nyl4RSz2fDVduCoQtWeZrvha3vOGMs0ZbSYkbTJWUDe7nVpuL2MJQdhqyUAgrClYILTDQDx7GiQJTyG0xE1J4D6m/DsruedIkfaYq7u14RTAY6hQJzWKPO/nulaUQ8i3tv7nPwM/ckXrqnjFlTBOlJx+r3cgAkhwKn6SXmjqeKA== 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=7jsaCVS/LBWrBdEAPajVqv/NaQX7alkOD0cqVP9v0bU=; b=vXBF0YZupteW40/6CNmLKXtWPye7Bbu/Lj7lPuhBtFebEFe0Az+mL/3IjUwh00w7c+jNj5dQUTWfMEe2B6rptteHBr+cwRnPXVGypjbZ8X5m/ajCKb/90E3crIhCBifJa4ijRmn19xPtS7wDjSTQd5iNxAoOTtdLG2Tm7/L//X5VvIiQjZ0ak1VyLXXf2hFOWOwuk59aAUCwnp0LVLb2TrOI7ARlA3vuBZb315rnf+BONyp/zDujMY+bZXuR6h/nS3f90IrmVGR14qMEfXHVbOmNJDiARYET6U/KON+ukLVQDFYTxlnhVo7qy+ePGFh0rwnI2d15frdc3GG5Talfug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.3) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7jsaCVS/LBWrBdEAPajVqv/NaQX7alkOD0cqVP9v0bU=; b=euZ4SBqzz16PrHHAuft9na4kMd6uK+aqR7aYOM4G0T6+lwn5PcJcw+0EdAW4ODP0xsDZoVxARcai/kDaLRMPBq8Ew5pE6VsBkOTIa0fDgZzUQ+oCTdFl6PH66n3peiBACAPT+4ZT0PcLSbWYBB0JRL/cJNU6LP3wXosmeD44XTA= Received: from DUZP191CA0053.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4fa::21) by ZRZP278MB1828.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Tue, 7 Apr 2026 18:49:22 +0000 Received: from DU6PEPF0000B622.eurprd02.prod.outlook.com (2603:10a6:10:4fa:cafe::3a) by DUZP191CA0053.outlook.office365.com (2603:10a6:10:4fa::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.35 via Frontend Transport; Tue, 7 Apr 2026 18:49:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.3) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.3 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.3; helo=ZRAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by DU6PEPF0000B622.mail.protection.outlook.com (2603:10a6:18:3::20b) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via Frontend Transport; Tue, 7 Apr 2026 18:49:22 +0000 Received: from hz-glue01.de.seppmail.cloud (unknown [10.11.0.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGT5JRrz4wfb; Tue, 7 Apr 2026 20:49:21 +0200 (CEST) Received: from hz-glue01.de.seppmail.cloud (unknown [172.18.0.3]) by hz-glue01.de.seppmail.cloud (Postfix) with ESMTP id 4fqwGT51Ylz20Tv; Tue, 7 Apr 2026 20:49:21 +0200 (CEST) X-SEPP-Suspect: f31541e406bc473f97c9775e5e4dca19 Received: from hz-scan05.de.seppmail.cloud (unknown [10.11.0.38]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGT4WMYz20Qq; Tue, 7 Apr 2026 20:49:21 +0200 (CEST) Received: from hz-scan05 (localhost [127.0.0.1]) by hz-scan05.de.seppmail.cloud (Postfix) with SMTP id 4fqwGT3vN5z8n8v; Tue, 07 Apr 2026 20:49:21 +0200 (CEST) Received: from hz-m365gate01.de.seppmail.cloud (unknown [10.11.0.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan05.de.seppmail.cloud (Postfix) with ESMTPS; Tue, 07 Apr 2026 20:49:20 +0200 (CEST) Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazlp17010003.outbound.protection.outlook.com [40.93.85.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits)) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGR63R3z2xLN; Tue, 7 Apr 2026 20:49:19 +0200 (CEST) Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by GV0P278MB0162.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:2d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:18 +0000 Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026 18:49:18 +0000 From: Jose Javier Rodriguez Barbarin To: linusw@kernel.org, brgl@kernel.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jose Javier Rodriguez Barbarin Subject: [RFC PATCH 3/5] gpio: generic: add io_port to struct gpio_generic_chip Date: Tue, 7 Apr 2026 20:48:03 +0200 Message-ID: <20260407184805.807328-4-dev-josejavier.rodriguez@duagon.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> References: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0072.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:49::17) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB0523:EE_|GV0P278MB0162:EE_|DU6PEPF0000B622:EE_|ZRZP278MB1828:EE_ X-MS-Office365-Filtering-Correlation-Id: 32d6eeac-7436-4fbc-6bb8-08de94d6622d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014|52116014|56012099003|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info-Original: I0x55nsIk1a/I110IfDBtcE+1/w/hlwHqW5Z2i3xOH54nE8dASD2ZBzoDr0FPr3v7A6CBOlnFrBGKE7UrLlTYmhzPvrfhMRuM9JSgrJduxfP3P4MQO7EUkuvdWUvZRgIJ6BH9yBOZ1V0o8bEym+Ua+Pd4/F/0jEkT9G+BNJSIXJuLvUbVr+QJy0BLjdWqLUQxPLf2eFMnxPYWg2P7xj57loVIiqEqD+KCzrO8cca1aoa3hZzuMyjUTa4pJDInAV+XWpKa/zV7Y/BtHv1gPy/j945zX3WdagqJYXHhOAr9Zp50pif7YqZ++TRDAB8q+nu7sk4198wZry8eTZNJVVQAcxf4ZxsY21w9unfNMChfCCUgPeKalHsr9ToRJqIWSIL5Ko13AFd7183DojgPMI640y7Gh0kzohKWJb6rhHAIf2QBt9Na5Imjt50Sm4bWXAfQxxcfP3H3d2cEux3rA6oo9e3n7bINXAzI0G1hIV1OjAAACEzNIcWavDfLFNHoWGFCh58b93V0jqqlirEgWU0ulnns25W1Kpj6xii6HqpHNdPS9fPNuVas3bVUFIHBGtkIy/MBbBCKU/pV4M+gBem5vlwdbqV1DYNUkNP0z98ojkfJTaI7zojH4cs3+qZ/EV1vM2pQKh8kuZd1XjOxzl+nMSkbUxd+Ab7IO/2I/avMYXTeP1nIRP5gIyxVM6ijdilEBsCNo2bhI/8Ak3BwdeatiuG5SjZyJhms+pMweZbHxipLA4gxf+BxIs/vQ+PShvvuTn749yIbznw87PIKf4UmqUzdCzasESGZR2p4+i0MTw= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(52116014)(56012099003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-Exchange-RoutingPolicyChecked: fyoxWM+zpRnHydDBnW0laQUTaCKkthWsFyBK8BVOU6Ccbgo1b1+C8Ianqclwh3xx6gUBGH20A39wWqkjiPhi25EBovGRAeY7HtmL3AK3zBWVWi/QaZ98hMftHSavh8/0YF/BlTQ5dplZgklHaXZv416Th4ylc8FrQK433ZY+SQ5cwNRlFC8hmlld5+x8lz1bRC6VrhODJDyCXezaP149siWMHUhrey2uPKCZyyA7m0xRUyLSOPZbP04FhTkGngWOoN2hEn5JbJatPEJmw13nDvVbDWlpPuaaXzu3CtrdMoPI24MJI2qkMj2Oyu2UPem+CFsDuCsY93dbnRFEEJCvsQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0162 X-SEPP-CCCVersion: 2026-03-30T09:40:10+02:00 639c564b X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.3];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.3];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B622.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dfc60da8-9c61-430e-5396-08de94d65fba X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|704161511799003|10070799003|1800799024|14060799003|35042699022|376014|82310400026|36860700016|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QrP3ngblKpmN4i8VXaPfbgRBmUZuDEzgYeJdEn3Jx/ibA3MKShdqQxrWSN/N?= =?us-ascii?Q?cLA6qJcB3K63qSTlzbBeLkWQIoAezqoOq+Mt+PpTgh44sl9qIekei/qtvvQ1?= =?us-ascii?Q?t/P8cB0LR5q/jx4PP4AONUgr8y+R+xlAQHFxQE1vdT3psHwIRIqjUd+2LXUZ?= =?us-ascii?Q?g6hB59ERGo3Tx60gODzdPjbyHVuPt60KVBlGWgT5+zkuCpU4KnwWZOoqiQ1U?= =?us-ascii?Q?GNZXbBCBw+mAGllI2Ceq8lUsF55Hu70cWSBUpcOCN1nN7ppsHBwI1NEM8eQD?= =?us-ascii?Q?qM14LLApgnozEtvBArMrJlZLPLhPtihd6yCmoIz+KTjfno7P+dfgsDa9gUy4?= =?us-ascii?Q?Uot3B2Xx6vnmpp2/CkECH9UW9wrgrSylGyxaYvWzPFLwrpHi4IEwIOke2YF4?= =?us-ascii?Q?cr3XUjqiSWDIQ6dL7soYJyx2ki9sv+flTmK50I8ySrv0hw0qnXLP7rXo0utp?= =?us-ascii?Q?qRm82EdwVYL8MabB/o2Spg5QCw2Nrnzd0K6g8OF8zJzNVG9HL7vj0MN4J5ic?= =?us-ascii?Q?XaqquKMmEfTKEvnHyJOiYJjDlK88hOU3lAkPMqq5qp4rbuzMEuqTy+gmwm/p?= =?us-ascii?Q?B5jlJQuLMbuJD7m9Q2FxSr0CvPXzJgVktY/EY3UNL674TCNtLe9vSYL4P2uP?= =?us-ascii?Q?xLIBLuA+LiUXlmzypWquGqbd5yPx62qoYU2d0thVRd7+ZmO3N6r54S7Jh4jo?= =?us-ascii?Q?0ziHG9qNSQX6dz5fVlPieBPITren1okX7XZOBkLdW6V/pkjUaNaA3yXQ42FF?= =?us-ascii?Q?IwMTp5/YjEtBTksC9uBqL6Q98qeR+PVV8gBabyW4OxdPm9PU8fMLFShQpu9X?= =?us-ascii?Q?uzWtFymGbnmhRWrjDhQkhxUx83Exb0zbEuGc7NhMyfubE5oiRe/p92fOjqSq?= =?us-ascii?Q?DKhh2/MgtjIvd5vuECTBGr/W9A/WSuAcVj9o8HW6FtpPiLHSmEDVYr8z+F/I?= =?us-ascii?Q?GaPHfihZD5FJswcbSJELS/CQ3zaXi3z1YRkhRi3PFUaWMLPJ70zOQv4N3Udi?= =?us-ascii?Q?IqkTiR0Il881vndM+T0ahBx4qvYwBqVfwj3t4GwIag0yXn5XdK7S93QF6TF/?= =?us-ascii?Q?mBW+gJI4kgxYGDpo+0MRDriDikyfmU+pTGntsPo9fglgkHXqcAMzYaakr2g6?= =?us-ascii?Q?Dg12GUUvvcXwv6bIdXJcE+ky7ZDC8b+CnYUiW7nWm9Ae5oWDTOzOFKgIWLri?= =?us-ascii?Q?i3ibwh5szy8eQftmDrwS0Hujd3P2F2Ggmc4bPdrR3kOUBprspgJBiml3NvI?= =?us-ascii?Q?=3D?= X-Forefront-Antispam-Report: CIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17010003.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(704161511799003)(10070799003)(1800799024)(14060799003)(35042699022)(376014)(82310400026)(36860700016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RS54f942hRpgWyPbFB4BRW/TEFRIRMSAgtKcvLjyRWs1T+dEiIWOA0KwvQ3AKKr4I04s6ECSLS2EtzoLnD3QHt1AFtg3G4dc04x0FPjgsodxxmel4p74L6xh248x5prWz1tpOhy/irDeKIEIqgVzi570ALTpIxTQz/8RmcJajr2XlPRo7CCiqF0fJgIe0LwFqAEU7ADOH9Zq6PGTj5uHjMK+QEoUwn5ZQkfQ8giDTRcpcbXSgNPq1zBDrSWIaCmk+6QsKrsyfbu6onv/YMP4h75ddbdmyKjOl77PIlNmTlol34Rl1Fkb7qJCbQqOw9O4ex0wqrZBaSTnfqN6eUzJ/Y6gdF/Jxj0RR6kCZTB1WvIH13bBULcqeCGA47Gb4S818wmw8g2HmEEGMxBH7Lvyic6R3vT/9Ydm3aKw7mhuxY7vSQhMaJtmchPXdiuxQ6yf X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 18:49:22.2693 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 32d6eeac-7436-4fbc-6bb8-08de94d6622d X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000B622.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZRZP278MB1828 Content-Type: text/plain; charset="utf-8" Add an io_port field to struct gpio_generic_chip. Initialize it depending on whether the GPIO_GENERIC_PORT_MAPPED flag is set. Signed-off-by: Jose Javier Rodriguez Barbarin --- drivers/gpio/gpio-mmio.c | 1 + include/linux/gpio/generic.h | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c index edbcaad57d00..37e1ed6569e6 100644 --- a/drivers/gpio/gpio-mmio.c +++ b/drivers/gpio/gpio-mmio.c @@ -645,6 +645,7 @@ int gpio_generic_chip_init(struct gpio_generic_chip *ch= ip, gc->base =3D -1; gc->request =3D gpio_mmio_request; chip->be_bits =3D !!(flags & GPIO_GENERIC_BIG_ENDIAN); + chip->io_port =3D !!(flags & GPIO_GENERIC_PORT_MAPPED); =20 ret =3D gpiochip_get_ngpios(gc, dev); if (ret) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index 9a71a8fbe56e..eec63f8fe144 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -111,6 +111,7 @@ struct gpio_generic_chip { unsigned long (*read_reg)(void __iomem *reg); void (*write_reg)(void __iomem *reg, unsigned long data); bool be_bits; + bool io_port; void __iomem *reg_dat; void __iomem *reg_set; void __iomem *reg_clr; --=20 2.53.0 From nobody Mon Jun 15 03:55:13 2026 Received: from GVAP278CU002.outbound.protection.outlook.com (mail-switzerlandwestazon11020135.outbound.protection.outlook.com [52.101.188.135]) (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 4AF9E34DB74; Tue, 7 Apr 2026 18:49:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.188.135 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587770; cv=fail; b=u+CFgF1u23nEqzJATVIobcHaziSkDA+wgpDxo8J0eN8DC84vB0VXyCAoueFZHMbVnkIorqeScUQtxkM2xiVrtOgUe4X2A0acc3qyFZyYLGUfJPDuEWbj1oI1GBmOI2HJFPBLX29qtad6z+nH4pmiIdmEz6TsL0BGNarl86Ute+Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587770; c=relaxed/simple; bh=oYQmwLb5zzIXWtIOore2afE/CK+BKd+eTNNQY6aOkWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=njVaA0LO9FxyNY+XCr4nFRhRN5C7YRtla9VRNA0YSJ+ha581EqnOLzgYJ8+EnzIUqtCTqd8I2gSbT4fDYzQCSYBTYYjM7EFS50JbLq7qBImbd4/Lsj9+RWR75CClXLYWE3WtltoATl7wugbN81mE01Q/wiZ7ZaEA8uaYL1QC8L8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=uhnY3w9m; arc=fail smtp.client-ip=52.101.188.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="uhnY3w9m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I6CAcyba/diEjJ7/Vr2174jFdhKxc32iaTRrTlIuGIMdezkzw+suQYWF/LW9VI5XJaWXh1acVMhF1aPND2Z/oJdyp44vxmENbvtCvhKJogVWdyq7FlWnq729BG8xGegsNFJ/I4egPiSi/8rC8hcFebIT8GBnd3rP099FjhLwGQvWRy8gjd+kW8Q5WRFXQ7omyEOOUwFKzC6rrXvDrsRa+/CDOXsaHzZAhioG01GPSOxe8BrMDj8Gks3T6IfG/ebk9JG7g/kvQpVORt9KpV2hSGLmPv85LEPjs00tbBHCga5N1CFuyoiU3CcUKll8Id2jvvg79LkgzngtSI92uSFM/g== 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=lrV85HYfQuXHRQ8zJAYDFHmceCUeAemRNx18mQXDifE=; b=cQmz/XcDyMOUjIRavDSFFTv982bJzJGfcwjBTQDR3co5DuZdMW+M1akJ7n6RXf9TqnAy1Ianf9KUlVWLnBWIFtGD59V4Ows+j8qd/BHEvaV+kyDVrMt2L7gtUj+/fkTtaVG9w1FdPvYTqIELT1yG6Fqm7vZ/pBNzwJ3JBmgEoE7DqkPCnNCpBvWFsbOAfBf8y0fM1VARoWJpE8tHdx1oAumdFHzHSrvvfmEJCLuDYwbNlKQK/aOBeCF8AzuyCP5UuaYr1Sy6esPNHMq6BbQF/qIsnaZVoiySWP14NnrEje4mroexZe24WbqltPrC5n5RIrVX4uIbmGh5IpkKsPFF7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.1) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lrV85HYfQuXHRQ8zJAYDFHmceCUeAemRNx18mQXDifE=; b=uhnY3w9md8kW9mJxy59tbr62rCu1b0PAu76OyBFtt8WxasBjGxvJCcL6C6dRvMrKFS/9qBlGdh0GvX93VD3fgObKcmDf1c7c4NIqLofpBs+HHwyBM0gszpCmsTTE2oRlAmcFj6uuyLV++8CuVCPMMiflWv2phFDNuKgAp7O6bf4= Received: from CWLP265CA0393.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d6::9) by ZR0P278MB1555.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:a5::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:24 +0000 Received: from AM4PEPF00027A65.eurprd04.prod.outlook.com (2603:10a6:400:1d6:cafe::96) by CWLP265CA0393.outlook.office365.com (2603:10a6:400:1d6::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Tue, 7 Apr 2026 18:48:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.1) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.1 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.1; helo=ZRAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by AM4PEPF00027A65.mail.protection.outlook.com (2603:10a6:20f:fff4:0:5:0:6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 18:49:23 +0000 Received: from hz-glue03.de.seppmail.cloud (unknown [10.11.0.9]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGW4JJKz4vjx; Tue, 7 Apr 2026 20:49:23 +0200 (CEST) Received: from hz-glue03.de.seppmail.cloud (unknown [172.18.0.4]) by hz-glue03.de.seppmail.cloud (Postfix) with ESMTP id 4fqwGW3vvrz23hg; Tue, 7 Apr 2026 20:49:23 +0200 (CEST) X-SEPP-Suspect: 0010cf92ddc147dab155d3cfc9f2197e Received: from hz-scan05.de.seppmail.cloud (unknown [10.11.0.38]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGW2r3kz20Tv; Tue, 7 Apr 2026 20:49:23 +0200 (CEST) Received: from hz-scan05 (localhost [127.0.0.1]) by hz-scan05.de.seppmail.cloud (Postfix) with SMTP id 4fqwGW2H5Pz8n8v; Tue, 07 Apr 2026 20:49:23 +0200 (CEST) Received: from hz-m365gate03.de.seppmail.cloud (unknown [10.11.0.36]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan05.de.seppmail.cloud (Postfix) with ESMTPS; Tue, 07 Apr 2026 20:49:22 +0200 (CEST) Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazlp17010001.outbound.protection.outlook.com [40.93.85.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate03.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGT4YXBz1yxg; Tue, 7 Apr 2026 20:49:21 +0200 (CEST) Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by GV0P278MB0162.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:2d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Tue, 7 Apr 2026 18:49:20 +0000 Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026 18:49:20 +0000 From: Jose Javier Rodriguez Barbarin To: linusw@kernel.org, brgl@kernel.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jose Javier Rodriguez Barbarin Subject: [RFC PATCH 4/5] gpio: mmio: convert accessors to generic register descriptors Date: Tue, 7 Apr 2026 20:48:04 +0200 Message-ID: <20260407184805.807328-5-dev-josejavier.rodriguez@duagon.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> References: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0072.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:49::17) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB0523:EE_|GV0P278MB0162:EE_|AM4PEPF00027A65:EE_|ZR0P278MB1555:EE_ X-MS-Office365-Filtering-Correlation-Id: e50c837f-201f-4046-ce72-08de94d66307 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014|52116014|56012099003|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info-Original: P4LzYqE2EweHNbX9/MJ2+GsiMjEd2Bd+fGgSOvPrCwRbta9nPi7CjU0PIadQqGNiMM38glsuHRyczG2wZITvzETkQ1QfGNryqS4oXHjMnTM0s+L0vxLN+/UrnFSPvSumjQfYYdQ1FB4E5Zl1U/AHEqqFUU8/dkxP9b4ii1G+AjC+QDJ7Oe3O6/jMDgm9XkuNCW+7QQMw9r9BSHsT5i/I0XWC1uKQ5dirJScoXB34gkWgQh1s45iR1uAg0IraUxTIA6Q++ahuuwu8jhNBhrrI/k24jUIU4jrjYWPlZQcLNJ2mSqOKi8R/c9wzI0bs4qLshO3Pp0BWYtixscBpWkHykYbC9+U0ih5Pg1lIhQzptDJBT4QJsFzfWXxGmAwDIK0GeybW6fKTYirw/qeY2ZN3EZ7sQmkIi4iNn1YYERJZFmhFZvcKkXnlgodj19tg0rP3MciGu6Zn/4XR9pBnbfEjfkzI84nhs1Hdh8Bzu6U04jUFR5E4ZZiiAHtZ/QFBhppR+PQ4e8U4gwWxFpN8XHhJ+IrCeXFZq7BgDdyxYUeDwYBjDFKnqYilbAEQLcOG6YmpZ3IbqfhDDzP2Cd/58dzf9pAYT9koA7ptqYxIfXuPngUswVNs6f3YlL3QFf0NkONvAXWgNtvkyJPgMD94dKP4zARs5qIIhQus5YgtK1kL4jnvydeLxjz1hRlYu/8ggK6e/0+nJx7RRYrSYALuFIElOttaD+V/XZoHRZgmTWgN25+iYkQhjwx5CoN/H7SNiX5vnCCeb4zeLoDbWK60oBVnIDbtCFgVuktDVXWI3fRUMJM= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(52116014)(56012099003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-Exchange-RoutingPolicyChecked: T86sukeDEo3GdUc/8dk6MhHLTgiTFl2LgZnu7DklMZjsIIDe/xRdfUf0HcEdzuEqcXHEQNueRRF08yed+wpMtPfkr+cK9FOVtzL6XvaQBGt+bFI3GYDt2orQPGSo9Iskwt2KneKRFkrj2CirucUANh1mQe9YJplsDSoNCwocz8S9ixQnqA9+3fEd8ElEDus95xhzUrVfFeD3X7QcNcvVknGGI3Sqeu+ejMzHM1rQKpPeKz1Yd4GOXKBfy7sVC09WduRe5YH8MqC+3En6b7l6X7tYcFg7U2+6fdidv2FONrovaWpKwCukXAJHLx6Kdn5ShI7GWSBLLE7sYwhwXAKkEA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0162 X-SEPP-CCCVersion: 2026-03-30T09:40:10+02:00 639c564b X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.1];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.1];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A65.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 34df44b7-48ee-4ef6-1c14-08de94d660ae X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|35042699022|36860700016|82310400026|14060799003|376014|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?k/q0jf/ExWqJrvyyHx2kvmnyEcsSC24alCnrUvqYx/iI8HFItbUjldGtu4KS?= =?us-ascii?Q?ojElsFG+sSx8nbi7858K9dxJ5VyIblJ6ibLIHl37PQ5GXv2sFCrs2eBTxzpZ?= =?us-ascii?Q?Dhw/6PU6B+xiwv8y1P+3lfexUaHIgSLkpR73K66226nTkAhLpf+bE6SNJL41?= =?us-ascii?Q?iI4gn4bJfdKfg+NLW/Uf9Vpee3frKdeIwE98j2RmaXkEmJ8WHJHBJeoUCrAh?= =?us-ascii?Q?FCojj8QPRASXPdaLI86Fql+Yxz0amsRgVb46yuwXbknpoT1klkio93RIix+J?= =?us-ascii?Q?Z0EhlIH9FOEDWQlxsXHDepVJW7P15I6XM8juKrMgoHG1genjxdgxEochvvUm?= =?us-ascii?Q?/IaYnLCKeDuhTe5/IFXp3YL3hIsyBZ5n5DAWYwL22xu/Od2QuRK/L7ACoA8O?= =?us-ascii?Q?zYJohlyDCiG+raYDNM7vskxKcR4/7dVvHgr3PjcnoRXQvQ7MPVVYdkjgU0Vm?= =?us-ascii?Q?xP7D02ObT2rz2kG6141vmyEajPKyTJZG/KhbYQFzDB2DK4rGMFMrE5gr3Lh0?= =?us-ascii?Q?3/7FuAOKciydgdD7IAYWGFNSP7pqSvjqQ0tZBP7LaT5NLP1Kp39qVY6c1cmZ?= =?us-ascii?Q?XM2TorTIqr8vp/XBYE5Ola5hArT+ZnnqOjr4jgT8ZvVBTIqTc5IPCVFdY6NR?= =?us-ascii?Q?EbnaPf8yKjRWmhZZjS9zUIDtJ4GNXBFjzw+2aaztzcYK1FNrkNLsxihFoZtd?= =?us-ascii?Q?9YG4jorcM89u+i8Nu4B0GQqvm0DMrJk/IAgagi0jBwtegJkpyVjBbkidJDWk?= =?us-ascii?Q?R5XEduQZc9JqrCjWULgeAZ2LxdiX1sYsSoXQMJ6ZOtnFuSxFQeV/lTE8XolJ?= =?us-ascii?Q?nvTz59mVDBh6U22OibI4UsTkMfJ+nibATioZpva1DO9gL+11in0Co5RYHA0G?= =?us-ascii?Q?/jXG5YVuQQ9riMMcuFLnfBRq8EAxUmdAgmWqYr7BRj05MU+afyEe/miHgetu?= =?us-ascii?Q?aU0X3UfheJ1TpM6WJIWel+Ynav6CN6IQkLzs+BSuiKBntxCIaOxTRLpGn8rR?= =?us-ascii?Q?ldXT+kkFljMLKOOGC4eiGOEWeyk0hkCo4LBAaZ0FsWDpeynlyjjYvJQ7qXru?= =?us-ascii?Q?rGeevol2V4ZUwIc2rG8SHteBYVwrPJ0ouRP4w3oS8o8BMhpZ7k5VMwiuu4fY?= =?us-ascii?Q?DItlo0efNHjdB/vKHj9o3hwdAA0tVn79F1qXc/CGPDDfAj9sTOti4M+5zNaq?= =?us-ascii?Q?QdQ+uGhDIGM8ZlVBT6wcbOe8h/HLvYpNRcOwhYlxNIxoj36NrlWcY2v6OAbs?= =?us-ascii?Q?JAOqHzpSb5ax6w6qImCks3V28L+TrzKhcET9sYk7pg=3D=3D?= X-Forefront-Antispam-Report: CIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17010001.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(35042699022)(36860700016)(82310400026)(14060799003)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1AkDXq5xkbEnrCKyB3aSQsL3RTk82jc0XkSsF30htHcwom7d4nBWzoWcmilnXrO0O4ozJ4Y6aWWlXs0w/aJWwT7ogdKUEDLC+PtCAztX9m+TBCyz0o8cPdZ/BPMgYCJbgoneDPZCcQEcEvSPG9yfUP7xIerOELjMSyaXsNwqIpnXBVoq9YYf7amFpvbdYsHwI4akbn7LEM3OQephlzAnrQykBWDsyD+OgYd72N+ohNh8nr2+c3EqlruElCeLUjNJ4b3t4LGMFbLgRddpfbNsJTnPGnsRVKjIvJwjyhBmkIAAlxGKOMuSgoW6HFDV+A+Hw/IbFj4IsTEJfcPpq5FKX4acsWpkArFyF2G4oZE3EBGJL3TVMd774lATFLu9A2f3BRiJIHI+RaTKHvzb+c4njh0409obRL7NwG6c+aJ7G45/WX/6N+mefcQ51w9Ie3JX X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 18:49:23.7902 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e50c837f-201f-4046-ce72-08de94d66307 X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: AM4PEPF00027A65.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR0P278MB1555 Content-Type: text/plain; charset="utf-8" Convert the gpio-mmio accessors to use struct gpio_chip_reg instead of the previous MMIO-only register type. This allows the same accessors to operate on both MMIO and PMIO registers and aligns gpio-mmio with the updated gpio_generic_chip API. Signed-off-by: Jose Javier Rodriguez Barbarin --- drivers/gpio/gpio-mmio.c | 174 ++++++++++++++++++++--------------- include/linux/gpio/generic.h | 24 +++-- 2 files changed, 117 insertions(+), 81 deletions(-) diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c index 37e1ed6569e6..247ce5b76441 100644 --- a/drivers/gpio/gpio-mmio.c +++ b/drivers/gpio/gpio-mmio.c @@ -62,66 +62,83 @@ o ` ~~~~\___/~~~~ ` contr= oller in FPGA is ,.` =20 #include "gpiolib.h" =20 -static void gpio_mmio_write8(void __iomem *reg, unsigned long data) +static void gpio_mmio_write8(struct gpio_chip_reg *reg, unsigned long data) { - writeb(data, reg); + writeb(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read8(void __iomem *reg) +static unsigned long gpio_mmio_read8(struct gpio_chip_reg *reg) { - return readb(reg); + return readb(reg->mmio); } =20 -static void gpio_mmio_write16(void __iomem *reg, unsigned long data) +static void gpio_mmio_write16(struct gpio_chip_reg *reg, unsigned long dat= a) { - writew(data, reg); + writew(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read16(void __iomem *reg) +static unsigned long gpio_mmio_read16(struct gpio_chip_reg *reg) { - return readw(reg); + return readw(reg->mmio); } =20 -static void gpio_mmio_write32(void __iomem *reg, unsigned long data) +static void gpio_mmio_write32(struct gpio_chip_reg *reg, unsigned long dat= a) { - writel(data, reg); + writel(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read32(void __iomem *reg) +static unsigned long gpio_mmio_read32(struct gpio_chip_reg *reg) { - return readl(reg); + return readl(reg->mmio); } =20 #if BITS_PER_LONG >=3D 64 -static void gpio_mmio_write64(void __iomem *reg, unsigned long data) +static void gpio_mmio_write64(struct gpio_chip_reg *reg, unsigned long dat= a) { - writeq(data, reg); + writeq(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read64(void __iomem *reg) +static unsigned long gpio_mmio_read64(struct gpio_chip_reg *reg) { - return readq(reg); + return readq(reg->mmio); } #endif /* BITS_PER_LONG >=3D 64 */ =20 -static void gpio_mmio_write16be(void __iomem *reg, unsigned long data) +static void gpio_mmio_write16be(struct gpio_chip_reg *reg, unsigned long d= ata) { - iowrite16be(data, reg); + iowrite16be(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read16be(void __iomem *reg) +static unsigned long gpio_mmio_read16be(struct gpio_chip_reg *reg) { - return ioread16be(reg); + return ioread16be(reg->mmio); } =20 -static void gpio_mmio_write32be(void __iomem *reg, unsigned long data) +static void gpio_mmio_write32be(struct gpio_chip_reg *reg, unsigned long d= ata) { - iowrite32be(data, reg); + iowrite32be(data, reg->mmio); } =20 -static unsigned long gpio_mmio_read32be(void __iomem *reg) +static unsigned long gpio_mmio_read32be(struct gpio_chip_reg *reg) { - return ioread32be(reg); + return ioread32be(reg->mmio); +} + +static inline void gpio_chip_reg_init(struct gpio_chip_reg *reg, bool io_p= ort, + void __iomem *addr, unsigned long port) +{ + reg->mmio =3D NULL; + reg->port =3D 0; + + if (io_port) + reg->port =3D port; + else + reg->mmio =3D addr; +} + +static inline bool gpio_chip_reg_is_set(struct gpio_chip_reg *reg) +{ + return reg->mmio !=3D NULL || reg->port !=3D 0; } =20 static unsigned long gpio_mmio_line2mask(struct gpio_chip *gc, unsigned in= t line) @@ -140,9 +157,9 @@ static int gpio_mmio_get_set(struct gpio_chip *gc, unsi= gned int gpio) bool dir =3D !!(chip->sdir & pinmask); =20 if (dir) - return !!(chip->read_reg(chip->reg_set) & pinmask); + return !!(chip->read_reg(&chip->reg_set) & pinmask); =20 - return !!(chip->read_reg(chip->reg_dat) & pinmask); + return !!(chip->read_reg(&chip->reg_dat) & pinmask); } =20 /* @@ -162,9 +179,9 @@ static int gpio_mmio_get_set_multiple(struct gpio_chip = *gc, unsigned long *mask, get_mask =3D *mask & ~chip->sdir; =20 if (set_mask) - *bits |=3D chip->read_reg(chip->reg_set) & set_mask; + *bits |=3D chip->read_reg(&chip->reg_set) & set_mask; if (get_mask) - *bits |=3D chip->read_reg(chip->reg_dat) & get_mask; + *bits |=3D chip->read_reg(&chip->reg_dat) & get_mask; =20 return 0; } @@ -173,7 +190,7 @@ static int gpio_mmio_get(struct gpio_chip *gc, unsigned= int gpio) { struct gpio_generic_chip *chip =3D to_gpio_generic_chip(gc); =20 - return !!(chip->read_reg(chip->reg_dat) & gpio_mmio_line2mask(gc, gpio)); + return !!(chip->read_reg(&chip->reg_dat) & gpio_mmio_line2mask(gc, gpio)); } =20 /* @@ -186,7 +203,7 @@ static int gpio_mmio_get_multiple(struct gpio_chip *gc,= unsigned long *mask, =20 /* Make sure we first clear any bits that are zero when we read the regis= ter */ *bits &=3D ~*mask; - *bits |=3D chip->read_reg(chip->reg_dat) & *mask; + *bits |=3D chip->read_reg(&chip->reg_dat) & *mask; return 0; } =20 @@ -209,7 +226,7 @@ static int gpio_mmio_get_multiple_be(struct gpio_chip *= gc, unsigned long *mask, readmask |=3D gpio_mmio_line2mask(gc, bit); =20 /* Read the register */ - val =3D chip->read_reg(chip->reg_dat) & readmask; + val =3D chip->read_reg(&chip->reg_dat) & readmask; =20 /* * Mirror the result into the "bits" result, this will give line 0 @@ -238,7 +255,7 @@ static int gpio_mmio_set(struct gpio_chip *gc, unsigned= int gpio, int val) else chip->sdata &=3D ~mask; =20 - chip->write_reg(chip->reg_dat, chip->sdata); + chip->write_reg(&chip->reg_dat, chip->sdata); =20 return 0; } @@ -250,9 +267,9 @@ static int gpio_mmio_set_with_clear(struct gpio_chip *g= c, unsigned int gpio, unsigned long mask =3D gpio_mmio_line2mask(gc, gpio); =20 if (val) - chip->write_reg(chip->reg_set, mask); + chip->write_reg(&chip->reg_set, mask); else - chip->write_reg(chip->reg_clr, mask); + chip->write_reg(&chip->reg_clr, mask); =20 return 0; } @@ -269,7 +286,7 @@ static int gpio_mmio_set_set(struct gpio_chip *gc, unsi= gned int gpio, int val) else chip->sdata &=3D ~mask; =20 - chip->write_reg(chip->reg_set, chip->sdata); + chip->write_reg(&chip->reg_set, chip->sdata); =20 return 0; } @@ -297,7 +314,7 @@ static void gpio_mmio_multiple_get_masks(struct gpio_ch= ip *gc, static void gpio_mmio_set_multiple_single_reg(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits, - void __iomem *reg) + struct gpio_chip_reg *reg) { struct gpio_generic_chip *chip =3D to_gpio_generic_chip(gc); unsigned long set_mask, clear_mask; @@ -317,7 +334,7 @@ static int gpio_mmio_set_multiple(struct gpio_chip *gc,= unsigned long *mask, { struct gpio_generic_chip *chip =3D to_gpio_generic_chip(gc); =20 - gpio_mmio_set_multiple_single_reg(gc, mask, bits, chip->reg_dat); + gpio_mmio_set_multiple_single_reg(gc, mask, bits, &chip->reg_dat); =20 return 0; } @@ -327,7 +344,7 @@ static int gpio_mmio_set_multiple_set(struct gpio_chip = *gc, unsigned long *mask, { struct gpio_generic_chip *chip =3D to_gpio_generic_chip(gc); =20 - gpio_mmio_set_multiple_single_reg(gc, mask, bits, chip->reg_set); + gpio_mmio_set_multiple_single_reg(gc, mask, bits, &chip->reg_set); =20 return 0; } @@ -342,9 +359,9 @@ static int gpio_mmio_set_multiple_with_clear(struct gpi= o_chip *gc, gpio_mmio_multiple_get_masks(gc, mask, bits, &set_mask, &clear_mask); =20 if (set_mask) - chip->write_reg(chip->reg_set, set_mask); + chip->write_reg(&chip->reg_set, set_mask); if (clear_mask) - chip->write_reg(chip->reg_clr, clear_mask); + chip->write_reg(&chip->reg_clr, clear_mask); =20 return 0; } @@ -394,10 +411,10 @@ static int gpio_mmio_dir_in(struct gpio_chip *gc, uns= igned int gpio) scoped_guard(raw_spinlock_irqsave, &chip->lock) { chip->sdir &=3D ~gpio_mmio_line2mask(gc, gpio); =20 - if (chip->reg_dir_in) - chip->write_reg(chip->reg_dir_in, ~chip->sdir); - if (chip->reg_dir_out) - chip->write_reg(chip->reg_dir_out, chip->sdir); + if (gpio_chip_reg_is_set(&chip->reg_dir_in)) + chip->write_reg(&chip->reg_dir_in, ~chip->sdir); + if (gpio_chip_reg_is_set(&chip->reg_dir_out)) + chip->write_reg(&chip->reg_dir_out, chip->sdir); } =20 return gpio_mmio_dir_return(gc, gpio, false); @@ -414,14 +431,14 @@ static int gpio_mmio_get_dir(struct gpio_chip *gc, un= signed int gpio) return GPIO_LINE_DIRECTION_IN; } =20 - if (chip->reg_dir_out) { - if (chip->read_reg(chip->reg_dir_out) & gpio_mmio_line2mask(gc, gpio)) + if (gpio_chip_reg_is_set(&chip->reg_dir_out)) { + if (chip->read_reg(&chip->reg_dir_out) & gpio_mmio_line2mask(gc, gpio)) return GPIO_LINE_DIRECTION_OUT; return GPIO_LINE_DIRECTION_IN; } =20 - if (chip->reg_dir_in) - if (!(chip->read_reg(chip->reg_dir_in) & gpio_mmio_line2mask(gc, gpio))) + if (gpio_chip_reg_is_set(&chip->reg_dir_in)) + if (!(chip->read_reg(&chip->reg_dir_in) & gpio_mmio_line2mask(gc, gpio))) return GPIO_LINE_DIRECTION_OUT; =20 return GPIO_LINE_DIRECTION_IN; @@ -435,10 +452,10 @@ static void gpio_mmio_dir_out(struct gpio_chip *gc, u= nsigned int gpio, int val) =20 chip->sdir |=3D gpio_mmio_line2mask(gc, gpio); =20 - if (chip->reg_dir_in) - chip->write_reg(chip->reg_dir_in, ~chip->sdir); - if (chip->reg_dir_out) - chip->write_reg(chip->reg_dir_out, chip->sdir); + if (gpio_chip_reg_is_set(&chip->reg_dir_in)) + chip->write_reg(&chip->reg_dir_in, ~chip->sdir); + if (gpio_chip_reg_is_set(&chip->reg_dir_out)) + chip->write_reg(&chip->reg_dir_out, chip->sdir); } =20 static int gpio_mmio_dir_out_dir_first(struct gpio_chip *gc, unsigned int = gpio, @@ -504,6 +521,20 @@ static int gpio_mmio_setup_accessors(struct device *de= v, return 0; } =20 +/* + * Initialize registers based on whether the config is io_port or not. + */ +static void gpio_mmio_setup_regs(struct gpio_generic_chip *chip, + const struct gpio_generic_chip_config *cfg) +{ + gpio_chip_reg_init(&chip->reg_dat, chip->io_port, cfg->dat, cfg->dat_port= ); + gpio_chip_reg_init(&chip->reg_dat, chip->io_port, cfg->dat, cfg->dat_port= ); + gpio_chip_reg_init(&chip->reg_set, chip->io_port, cfg->set, cfg->set_port= ); + gpio_chip_reg_init(&chip->reg_clr, chip->io_port, cfg->clr, cfg->clr_port= ); + gpio_chip_reg_init(&chip->reg_dir_in, chip->io_port, cfg->dirin, cfg->dir= in_port); + gpio_chip_reg_init(&chip->reg_dir_out, chip->io_port, cfg->dirout, cfg->d= irout_port); +} + /* * Create the device and allocate the resources. For setting GPIO's there= are * three supported configurations: @@ -531,17 +562,15 @@ static int gpio_mmio_setup_io(struct gpio_generic_chi= p *chip, { struct gpio_chip *gc =3D &chip->gc; =20 - chip->reg_dat =3D cfg->dat; - if (!chip->reg_dat) + if (!gpio_chip_reg_is_set(&chip->reg_dat)) return -EINVAL; =20 - if (cfg->set && cfg->clr) { - chip->reg_set =3D cfg->set; - chip->reg_clr =3D cfg->clr; + if (gpio_chip_reg_is_set(&chip->reg_set) && + gpio_chip_reg_is_set(&chip->reg_clr)) { gc->set =3D gpio_mmio_set_with_clear; gc->set_multiple =3D gpio_mmio_set_multiple_with_clear; - } else if (cfg->set && !cfg->clr) { - chip->reg_set =3D cfg->set; + } else if (gpio_chip_reg_is_set(&chip->reg_set) && + !gpio_chip_reg_is_set(&chip->reg_clr)) { gc->set =3D gpio_mmio_set_set; gc->set_multiple =3D gpio_mmio_set_multiple_set; } else if (cfg->flags & GPIO_GENERIC_NO_OUTPUT) { @@ -579,10 +608,8 @@ static int gpio_mmio_setup_direction(struct gpio_gener= ic_chip *chip, const struct gpio_generic_chip_config *cfg) { struct gpio_chip *gc =3D &chip->gc; - - if (cfg->dirout || cfg->dirin) { - chip->reg_dir_out =3D cfg->dirout; - chip->reg_dir_in =3D cfg->dirin; + if (gpio_chip_reg_is_set(&chip->reg_dir_out) || + gpio_chip_reg_is_set(&chip->reg_dir_in)) { if (cfg->flags & GPIO_GENERIC_NO_SET_ON_INPUT) gc->direction_output =3D gpio_mmio_dir_out_dir_first; else @@ -651,6 +678,8 @@ int gpio_generic_chip_init(struct gpio_generic_chip *ch= ip, if (ret) gc->ngpio =3D chip->bits; =20 + gpio_mmio_setup_regs(chip, cfg); + ret =3D gpio_mmio_setup_io(chip, cfg); if (ret) return ret; @@ -670,10 +699,10 @@ int gpio_generic_chip_init(struct gpio_generic_chip *= chip, gc->free =3D gpiochip_generic_free; } =20 - chip->sdata =3D chip->read_reg(chip->reg_dat); + chip->sdata =3D chip->read_reg(&chip->reg_dat); if (gc->set =3D=3D gpio_mmio_set_set && !(flags & GPIO_GENERIC_UNREADABLE_REG_SET)) - chip->sdata =3D chip->read_reg(chip->reg_set); + chip->sdata =3D chip->read_reg(&chip->reg_set); =20 if (flags & GPIO_GENERIC_UNREADABLE_REG_DIR) chip->dir_unreadable =3D true; @@ -681,20 +710,21 @@ int gpio_generic_chip_init(struct gpio_generic_chip *= chip, /* * Inspect hardware to find initial direction setting. */ - if ((chip->reg_dir_out || chip->reg_dir_in) && + if ((gpio_chip_reg_is_set(&chip->reg_dir_out) || gpio_chip_reg_is_set(&ch= ip->reg_dir_in)) && !(flags & GPIO_GENERIC_UNREADABLE_REG_DIR)) { - if (chip->reg_dir_out) - chip->sdir =3D chip->read_reg(chip->reg_dir_out); - else if (chip->reg_dir_in) - chip->sdir =3D ~chip->read_reg(chip->reg_dir_in); + if (gpio_chip_reg_is_set(&chip->reg_dir_out)) + chip->sdir =3D chip->read_reg(&chip->reg_dir_out); + else if (gpio_chip_reg_is_set(&chip->reg_dir_in)) + chip->sdir =3D ~chip->read_reg(&chip->reg_dir_in); /* * If we have two direction registers, synchronise * input setting to output setting, the library * can not handle a line being input and output at * the same time. */ - if (chip->reg_dir_out && chip->reg_dir_in) - chip->write_reg(chip->reg_dir_in, ~chip->sdir); + if (gpio_chip_reg_is_set(&chip->reg_dir_out) && + gpio_chip_reg_is_set(&chip->reg_dir_in)) + chip->write_reg(&chip->reg_dir_in, ~chip->sdir); } =20 return ret; diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index eec63f8fe144..d0de8f77d0bc 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -108,15 +108,15 @@ struct gpio_chip_reg { */ struct gpio_generic_chip { struct gpio_chip gc; - unsigned long (*read_reg)(void __iomem *reg); - void (*write_reg)(void __iomem *reg, unsigned long data); + unsigned long (*read_reg)(struct gpio_chip_reg *reg); + void (*write_reg)(struct gpio_chip_reg *reg, unsigned long data); bool be_bits; bool io_port; - void __iomem *reg_dat; - void __iomem *reg_set; - void __iomem *reg_clr; - void __iomem *reg_dir_out; - void __iomem *reg_dir_in; + struct gpio_chip_reg reg_dat; + struct gpio_chip_reg reg_set; + struct gpio_chip_reg reg_clr; + struct gpio_chip_reg reg_dir_out; + struct gpio_chip_reg reg_dir_in; bool dir_unreadable; bool pinctrl; int bits; @@ -168,10 +168,13 @@ gpio_generic_chip_set(struct gpio_generic_chip *chip,= unsigned int offset, static inline unsigned long gpio_generic_read_reg(struct gpio_generic_chip *chip, void __iomem *reg) { + struct gpio_chip_reg rg; + if (WARN_ON(!chip->read_reg)) return 0; =20 - return chip->read_reg(reg); + rg.mmio =3D reg; + return chip->read_reg(&rg); } =20 /** @@ -183,10 +186,13 @@ gpio_generic_read_reg(struct gpio_generic_chip *chip,= void __iomem *reg) static inline void gpio_generic_write_reg(struct gpio_generic_chip *chip, void __iomem *reg, unsigned long val) { + struct gpio_chip_reg rg; + if (WARN_ON(!chip->write_reg)) return; =20 - chip->write_reg(reg, val); + rg.mmio =3D reg; + chip->write_reg(&rg, val); } =20 #define gpio_generic_chip_lock(gen_gc) \ --=20 2.53.0 From nobody Mon Jun 15 03:55:13 2026 Received: from ZRZP278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazon11021138.outbound.protection.outlook.com [40.107.167.138]) (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 0A4A1346E4A; Tue, 7 Apr 2026 18:49:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.167.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587773; cv=fail; b=fTVLmLS8RgrauDTwthqoriIKE0y43aAlBEag1C6tHd4qAOuEzFrvIbOALgZo2WQuap6jV1PVJ9wdOgFIEyzIyizUpg8Tgq7BGx8Px95ISeH/3xgLAB6i9CsXmXZKIJiS/W0Z9frmJmh7CVUWEI9jtsUvZHR6jsLyyt/Mt3SYRzA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775587773; c=relaxed/simple; bh=aeDVrrItmk8WSjqsewRj0e57AbnxYLJMKI6KXHZ6oos=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Nk7kMfwCHTtMSmzKX7F2utfbNpq9UGy3EmbDT9NL0kNW8hfxuBkc9kX+PGH0oZTDACbbNYCt0B7SumB88guaAKeZ8f/jLYXmdrbf6Vskuu3vuJab4i3pLVbvi0P5gP+zldbui2zyBndjlqAhCNPDcReP8/hTArA+BAfzhFBQEzA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=pHsjHF85; arc=fail smtp.client-ip=40.107.167.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="pHsjHF85" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gLhNnu+/GwK2uJEYSrdfSqQZQHCjsr6yCl5TjgoLutEwyiC0op3ScJSrfLHbKFPiOhbBkuUv1H5WYespmaLRPt4F4wNH3KXPLCqU6DoswmVZLZfqzOX1av0xTISI82/60LQAwdZx3mIVnJlOFgkVgGFMkQ0LRz9jUfTvU7rN9tsIq69s8wzYEbUuuyzGdTkPLseUdMQbLXMIZBtkDDb8qSKxeRgnm14+f6bsQ0S9mJn8ydo5xF06IhzPSFAlSFv0iX/He6nO32KAfiFBp3HMWlOtvx3wkH36l3YQvcY1dJxBDqe/htcWNwTEdgtuV/p7+XAMo8lBfBn6chzQPTDASA== 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=80LYFMBNyiaSYy2rLpu8/akbUd/rZRfeFtH1sEzNUuM=; b=U8eB9BwpeFMtpss4TBCmCdy8vP4Nw4GkHa1I4lRRyTVxws1y2G+imaShG7J9unHDr+gcGmFrmjRyXOWkHNwGLpTInnYeRQnQEjdAfbqwt+pYPM6mAkb4JFFshixD5flaJL1UTnqQPrfHVsT/ajHiO6J277qJvuSeGiYCSvJYoF9er/I12Zf9/shNN4Dxd6Sd+BJfj39xB42vfbAIDnu2XLhGhQO/HGNQkHBEtGlcr4+26B61SjdMoDzMISsHoMV80JEPajfF7SzXwPlkWExLay5D0kIoNkUg6KIwFD5P0D1LLap7AlS5AdBun22voMkz/ExjqUK6Q0Q+VDqhMXnCIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.28) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80LYFMBNyiaSYy2rLpu8/akbUd/rZRfeFtH1sEzNUuM=; b=pHsjHF85ixwtluuWGz/wBSDbu9fHlBluI0KZhYQbSVU0nsyjuzV6A5Kl0YP0ew6F0sKfI495IgxDgSvUrfFmgM1acBOOG71BfqW83jxBHwkp88RZngTZhoqChJrqLcZRSmMzMkBNgtoCZ13Fh/gLtjrgEtkvfXdlfnoqtcS27to= Received: from CWLP265CA0425.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d7::17) by ZR5P278MB1941.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b0::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Tue, 7 Apr 2026 18:49:28 +0000 Received: from AMS0EPF000001A1.eurprd05.prod.outlook.com (2603:10a6:400:1d7:cafe::ce) by CWLP265CA0425.outlook.office365.com (2603:10a6:400:1d7::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.32 via Frontend Transport; Tue, 7 Apr 2026 18:49:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.28) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.28 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.28; helo=ZRZP278CU001.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (162.55.72.219) by AMS0EPF000001A1.mail.protection.outlook.com (10.167.16.231) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Tue, 7 Apr 2026 18:49:27 +0000 Received: from hz-glue05.de.seppmail.cloud (unknown [10.11.0.47]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGb1nbnz4wxW; Tue, 7 Apr 2026 20:49:27 +0200 (CEST) Received: from hz-glue05.de.seppmail.cloud (unknown [172.18.0.7]) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTP id 4fqwGb1WgDz20FK; Tue, 7 Apr 2026 20:49:27 +0200 (CEST) X-SEPP-Suspect: 19c25697b5ba403aafdb132e3ff015e2 Received: from hz-scan05.de.seppmail.cloud (unknown [10.11.0.38]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue03.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGb0nrKz23dn; Tue, 7 Apr 2026 20:49:27 +0200 (CEST) Received: from hz-scan05 (localhost [127.0.0.1]) by hz-scan05.de.seppmail.cloud (Postfix) with SMTP id 4fqwGb0Dqhz8n8v; Tue, 07 Apr 2026 20:49:27 +0200 (CEST) Received: from hz-m365gate01.de.seppmail.cloud (unknown [10.11.0.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan05.de.seppmail.cloud (Postfix) with ESMTPS; Tue, 07 Apr 2026 20:49:26 +0200 (CEST) Received: from ZRZP278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazlp17011028.outbound.protection.outlook.com [40.93.85.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate01.de.seppmail.cloud (Postfix) with ESMTPS id 4fqwGY2LvTz2xLN; Tue, 7 Apr 2026 20:49:25 +0200 (CEST) Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by ZR2PPF05AEF8FE9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::2c5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Tue, 7 Apr 2026 18:49:22 +0000 Received: from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.018; Tue, 7 Apr 2026 18:49:22 +0000 From: Jose Javier Rodriguez Barbarin To: linusw@kernel.org, brgl@kernel.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jose Javier Rodriguez Barbarin Subject: [RFC PATCH 5/5] gpio: mmio: add port-mapped read/write callbacks Date: Tue, 7 Apr 2026 20:48:05 +0200 Message-ID: <20260407184805.807328-6-dev-josejavier.rodriguez@duagon.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> References: <20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0072.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:49::17) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB0523:EE_|ZR2PPF05AEF8FE9:EE_|AMS0EPF000001A1:EE_|ZR5P278MB1941:EE_ X-MS-Office365-Filtering-Correlation-Id: 0eb99eb4-9037-445b-6a00-08de94d6653e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|52116014|376014|366016|1800799024|38350700014|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info-Original: qIJyjxiUGbm9QZXYCqWBY+2XKFf/C9h9dXk+LZABf3NYfGWXK7VQFOM9odQRE5c5Hk0EhzggboW6BgsWEWYntO2PjvQ7aW4Cwx8hxyf9zpJ4yly2dlC5A1ttI2Ocr7FKtzDMiauzDL3+0b8bqKnKQhD1uPLdhJ12WDJUij8xKbIne5/2ZVYmfI23MaIJggD5O9iNg3w+enufwjHAxSS6mWjzSjnrFdIDAmixoxisoJ8LPVZL19rLHghEuaKdq51zbs798tvwIeynHN/Ovg8HZhD6N7dVtHk2lIKnj1Esmxc3jo13+O70H/j/t8cWFasR+8ey0ykbf6ZKC+doviJrxtAU0SMksduVFZJ2Q09thNeLbZSRAW34JPgUMXcW+6XdnWq8pUCihGm7qyj0HxyTJQg7G+qFG3Jekfbb402JeYJGpBbzGmv1eRTZMDyKqw83wbW1hn/V2s17GC4mPZANpgryw09GKkcYImLdPKrKviDtPYsZ6SQDv2DqjxPKse07OPkNOTGITGhZ8BSbvQ9LE4QlYr81K07ZdtndWQKnzOgCyx3AtttwSk/UmKOF79D2rkkSoO5+mQ6O4Lddjbr5rsCmZTm4bhtz82Smwqio4vMOxiGosq4LKVeFdWdk0UAy5yWrVZnSN46IYDGDv2Ly1hEW2XKhkVEYt08wAO2pSIef+JITF+XpPa0Ek2jZb7LeueSJMZzsDom9IK9vgeOWSj4VeWZI31mimKoC/1O2FFI7YEgcReHd9VB4FJ7xasfvYHONbxWFjhFGLtUGueCS1dKX7En2V1jLk1Zu2yqJsbo= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(1800799024)(38350700014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-Exchange-RoutingPolicyChecked: VIxas3cbkgf+SYBVWld/7V/t7i9CQTRMzeZevyNPXAhkCX3SzpWUHdORTjqk2IH0tAkA9ToZe70nyuhD7z4Do/5bHfVpqlJwcDrtrqsclLmSZhkuzoMuLKw1zYqX2rKdUF1NDpAQsJjL9r8FMvfOmJ9YFFDgEmVTaVK9X2CJEAS8elKaWWoKsYFgDFwatAWxTSR+KYVR/52hX9qLO/5fsEjgt00AgpJo70mp9LFiuPKjaun5v1RYamBTkZE3n068I+q6eqTjmxtJqA8YLe4NJ1ryMUgE25ACILkZOfhWVE8A2gSSMZpaXmQNjQMXpxxEtwV6O5s1Qj3nXt/pgn1quw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR2PPF05AEF8FE9 X-SEPP-CCCVersion: 2026-03-30T09:40:10+02:00 639c564b X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.28];domain=ZRZP278CU001.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.28];domain=ZRZP278CU001.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A1.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d26b513e-0705-4716-efaf-08de94d6620e X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|35042699022|156008|376014|14060799003|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/7N9l856ZsN/J8z+NahoFKv6ubfcabrQWuvPHTDLZt9mvHxekzF1Zyq/c81p?= =?us-ascii?Q?fKJcsiQiLK81kFC7WTYw5TEDOglGnO4ZPi/x1xqYShtymWxXL5bbTXNmKsM0?= =?us-ascii?Q?+DGDnJP0mzXiOY/nyRVuYjSy3w+jnnGNVr11aNC0B59avx5MWzGJJdPOSO0N?= =?us-ascii?Q?+u35EY6tpIJjSumEsvp+ie+yNJNOWEXDivXGWq/GQwTH1knHlib0iIkQiLMI?= =?us-ascii?Q?DHMhWQJ3G51h28wyg9HaJKH3srpgczu4VasVuV1Wj6Es96VvklrtO9fKZG9R?= =?us-ascii?Q?qshDz6i4fraCcohgSXjINICvmWEXj6zKBcPEB8V5z6Y+Qcv4grbZuzIWedLT?= =?us-ascii?Q?bhxYlftxZ09qd65/3ZDDmITjDLVcFxe8SjXeUTW0FgssGJo1l33+x3U4hllr?= =?us-ascii?Q?XoHBDvrFff+ROUsZ1ypVOSvD6UG2HGDoRyhhp1w/StW9qFY7E8pra9M9dbSf?= =?us-ascii?Q?7rbtKkdwinF79F/pWmGeo1oor2amdK1HVT2zJd8sSrDun+YdOrsPPECnLppC?= =?us-ascii?Q?/0EIJwOiM4EKN0mrDu6ODalBn47SgyTp358QJuH5Hrry204UlAC8GxlUfuWn?= =?us-ascii?Q?Nx7DZg5CCtE7MgYc6Iml3+z0Mh63xnFUTGQYgwJ37mUhcG7mmBav/5yiYvpF?= =?us-ascii?Q?i9/Dgy0fjwMdtDot8xvWHBGQOp2R9Ousdj4mmWdc/EBKBXpF+lJY68OAe7KI?= =?us-ascii?Q?+HoFCgDQXQJs+ETf6ecpwQNFsZ3MyN+1kiaHwCoFZqsg7a6JZSrfJ1WYU6kG?= =?us-ascii?Q?iNjrYyLPjCD9O+IKc64n3BNLv0Nk2HBddO/pXOpqiJgJKtf6fV9VlZ4afUWF?= =?us-ascii?Q?hSZml6oONphoxbEv5vjlAOLGKYK8HSFILDb2Qr1cy9sgCP5ywA1BjfPSDsXA?= =?us-ascii?Q?cJMUlhWjjYX2THMMYY0ICZyXvakUzilyyC06GAlUhYSkQDj2lOb/njFJNAlm?= =?us-ascii?Q?LRv6VECWqz3zmDBOxCxm8rTaknVY44qm3EaXhzEHZwD/lyDESLAS/6/DurJ6?= =?us-ascii?Q?PmPXAsuOSzlmmbeyv6aMNDJ76gWsDWaDQwkBV0tpYc4iCRhohK5mAAsDuGMD?= =?us-ascii?Q?eanYkOSP222Tipdr6ieRFBQJuvTm4uFOSLg4QQK33jO4pdVM9k2c+MFdcFGW?= =?us-ascii?Q?nkdKknkzmxxQoRCMQGV4vQVUi5G9SZpr+Ep2RsN8an3UgSm1j1dZfsfMfTiC?= =?us-ascii?Q?ar4QvMvgM9GEceBj?= X-Forefront-Antispam-Report: CIP:162.55.72.219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRZP278CU001.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17011028.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(35042699022)(156008)(376014)(14060799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UxuUThmbBhHMGZG5RLwXAbnA8fLimKPFDP9KU4SELBVgrcahxqLYZg/vh8/kPBtx2RCEmq3PyBklm6/e4V9AZj1f+A8Ahiahnggr86BJ4PWchkinW6Plf934kNV5xuaMl1hZHHi8LOS4xdiNR4Iui+wswpVxM8h7JftOu2c7XqxHevYzZaOXD0kYO3zHj+Jp0eUYGlSzaTRJZFakzYE9aWMguEEsWLVErhI9amig+Z67dL9MV/tO+wVBWw7NWaRHzdMCc7kO/xq7eS5+G7wh8WnKmqJAXvV2u/o5pO0w1vcm2323JMr2czv+m7N3UvG5jDSdQZDkJzlU4uJwjUKsBmLfJNxwCzz5ICA3rclA9R1kJSy/J3rJ3+in03y1dPXzAgQa22eo23nW9Vzil2d4a6T65tOv3LEtgosY7Q8ssaoAs8Ix99rI35HlKU2sTAXo X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2026 18:49:27.5000 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0eb99eb4-9037-445b-6a00-08de94d6653e X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[162.55.72.219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A1.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR5P278MB1941 Content-Type: text/plain; charset="utf-8" Implement PMIO read and write callbacks for 8-, 16- and 32-bit register accesses using the corresponding port I/O helpers. Signed-off-by: Jose Javier Rodriguez Barbarin --- drivers/gpio/gpio-mmio.c | 102 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c index 247ce5b76441..9b20283632a9 100644 --- a/drivers/gpio/gpio-mmio.c +++ b/drivers/gpio/gpio-mmio.c @@ -124,6 +124,60 @@ static unsigned long gpio_mmio_read32be(struct gpio_ch= ip_reg *reg) return ioread32be(reg->mmio); } =20 +#ifdef CONFIG_HAS_IOPORT + +static void gpio_port_write8(struct gpio_chip_reg *reg, unsigned long data) +{ + outb(data, reg->port); +} + +static unsigned long gpio_port_read8(struct gpio_chip_reg *reg) +{ + return inb(reg->port); +} + +static void gpio_port_write16(struct gpio_chip_reg *reg, unsigned long dat= a) +{ + outw(data, reg->port); +} + +static unsigned long gpio_port_read16(struct gpio_chip_reg *reg) +{ + return inw(reg->port); +} + +static void gpio_port_write32(struct gpio_chip_reg *reg, unsigned long dat= a) +{ + outl(data, reg->port); +} + +static unsigned long gpio_port_read32(struct gpio_chip_reg *reg) +{ + return inl(reg->port); +} + +static void gpio_port_write16be(struct gpio_chip_reg *reg, unsigned long d= ata) +{ + outw(swab16(data), reg->port); +} + +static unsigned long gpio_port_read16be(struct gpio_chip_reg *reg) +{ + return swab16(inw(reg->port)); +} + +static void gpio_port_write32be(struct gpio_chip_reg *reg, unsigned long d= ata) +{ + outl(swab32(data), reg->port); +} + +static unsigned long gpio_port_read32be(struct gpio_chip_reg *reg) +{ + return swab32(inl(reg->port)); +} + +#endif /* CONFIG_HAS_IOPORT */ + static inline void gpio_chip_reg_init(struct gpio_chip_reg *reg, bool io_p= ort, void __iomem *addr, unsigned long port) { @@ -474,6 +528,46 @@ static int gpio_mmio_dir_out_val_first(struct gpio_chi= p *gc, unsigned int gpio, return gpio_mmio_dir_return(gc, gpio, true); } =20 +static int gpio_port_setup_accessors(struct device *dev, + struct gpio_generic_chip *chip, + bool byte_be) +{ +#ifdef CONFIG_HAS_IOPORT + switch (chip->bits) { + case 8: + chip->read_reg =3D gpio_port_read8; + chip->write_reg =3D gpio_port_write8; + break; + case 16: + if (byte_be) { + chip->read_reg =3D gpio_port_read16be; + chip->write_reg =3D gpio_port_write16be; + } else { + chip->read_reg =3D gpio_port_read16; + chip->write_reg =3D gpio_port_write16; + } + break; + case 32: + if (byte_be) { + chip->read_reg =3D gpio_port_read32be; + chip->write_reg =3D gpio_port_write32be; + } else { + chip->read_reg =3D gpio_port_read32; + chip->write_reg =3D gpio_port_write32; + } + break; + default: + dev_err(dev, "unsupported data width %u bits\n", chip->bits); + return -EINVAL; + } + + return 0; +#else + dev_err(dev, "not supported because of missing I/O resource\n"); + return -ENXIO; +#endif /* CONFIG_HAS_IOPORT */ +} + static int gpio_mmio_setup_accessors(struct device *dev, struct gpio_generic_chip *chip, bool byte_be) @@ -684,8 +778,12 @@ int gpio_generic_chip_init(struct gpio_generic_chip *c= hip, if (ret) return ret; =20 - ret =3D gpio_mmio_setup_accessors(dev, chip, - flags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER); + if (chip->io_port) + ret =3D gpio_port_setup_accessors(dev, chip, + flags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER); + else + ret =3D gpio_mmio_setup_accessors(dev, chip, + flags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER); if (ret) return ret; =20 --=20 2.53.0