{"id":2222657,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2222657/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260413102326.59343-4-dev-josejavier.rodriguez@duagon.com/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/1.1/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260413102326.59343-4-dev-josejavier.rodriguez@duagon.com>","date":"2026-04-13T10:23:26","name":"[RFC,v2,3/3] gpio: mmio: add port-mapped support for gpio_generic_chip","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"06f41e439bc1657ac3a5c13359315a22ba926260","submitter":{"id":92011,"url":"http://patchwork.ozlabs.org/api/1.1/people/92011/?format=json","name":"Jose Javier Rodriguez Barbarin","email":"dev-josejavier.rodriguez@duagon.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260413102326.59343-4-dev-josejavier.rodriguez@duagon.com/mbox/","series":[{"id":499676,"url":"http://patchwork.ozlabs.org/api/1.1/series/499676/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=499676","date":"2026-04-13T10:23:25","name":"gpio: add PMIO support to gpio-mmio","version":2,"mbox":"http://patchwork.ozlabs.org/series/499676/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2222657/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2222657/checks/","tags":{},"headers":{"Return-Path":"\n <linux-gpio+bounces-35081-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=duagon.com header.i=@duagon.com header.a=rsa-sha256\n header.s=selector1 header.b=X+UH+B+X;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35081-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com\n header.b=\"X+UH+B+X\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.186.117","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=duagon.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=duagon.com"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fvNtb179pz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 20:29:11 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 3F6F2302CF30\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 10:24:26 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 838753B389B;\n\tMon, 13 Apr 2026 10:24:24 +0000 (UTC)","from ZRAP278CU002.outbound.protection.outlook.com\n (mail-switzerlandnorthazon11020117.outbound.protection.outlook.com\n [52.101.186.117])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 6543935AC0A;\n\tMon, 13 Apr 2026 10:24:22 +0000 (UTC)","from DUZPR01CA0038.eurprd01.prod.exchangelabs.com\n (2603:10a6:10:468::12) by ZR0P278MB1416.CHEP278.PROD.OUTLOOK.COM\n (2603:10a6:910:92::5) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Mon, 13 Apr\n 2026 10:24:17 +0000","from DU2PEPF0001E9C5.eurprd03.prod.outlook.com\n (2603:10a6:10:468:cafe::61) by DUZPR01CA0038.outlook.office365.com\n (2603:10a6:10:468::12) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.48 via Frontend Transport; Mon,\n 13 Apr 2026 10:24:17 +0000","from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by\n DU2PEPF0001E9C5.mail.protection.outlook.com (2603:10a6:18:3::10a) with\n Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id\n 15.20.9745.21 via Frontend Transport; Mon, 13 Apr 2026 10:24:17 +0000","from hz-glue03.de.seppmail.cloud (unknown [10.11.0.9])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fvNmw6Dgbz4x3H;\n\tMon, 13 Apr 2026 12:24:16 +0200 (CEST)","from hz-glue03.de.seppmail.cloud (unknown [172.18.0.5])\n\tby hz-glue03.de.seppmail.cloud (Postfix) with ESMTP id 4fvNmw5vNBz1yh3;\n\tMon, 13 Apr 2026 12:24:16 +0200 (CEST)","from hz-scan07.de.seppmail.cloud (unknown [10.11.0.49])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits))\n\t(No client certificate requested)\n\tby hz-glue01.de.seppmail.cloud (Postfix) with ESMTPS id 4fvNmw5Md3z1x8H;\n\tMon, 13 Apr 2026 12:24:16 +0200 (CEST)","from hz-scan07 (localhost [127.0.0.1])\n\tby hz-scan07.de.seppmail.cloud (Postfix) with SMTP id 4fvNmw4qkgzmZT;\n\tMon, 13 Apr 2026 12:24:16 +0200 (CEST)","from hz-m365gate03.de.seppmail.cloud (unknown [10.11.0.36])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby hz-scan07.de.seppmail.cloud (Postfix) with ESMTPS;\n\tMon, 13 Apr 2026 12:24:16 +0200 (CEST)","from ZRZP278CU001.outbound.protection.outlook.com\n (mail-switzerlandnorthazlp17011031.outbound.protection.outlook.com\n [40.93.85.31])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits)\n server-digest SHA256\n\t client-signature RSA-PSS (2048 bits) client-digest SHA256)\n\t(Client CN \"mail.protection.outlook.com\",\n Issuer \"DigiCert Cloud Services CA-1\" (not verified))\n\tby hz-m365gate03.de.seppmail.cloud (Postfix) with ESMTPS id 4fvNmv0XQCz1yyv;\n\tMon, 13 Apr 2026 12:24:14 +0200 (CEST)","from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:34::6) by\n ZR4P278MB1787.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b2::9) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9769.48; Mon, 13 Apr 2026 10:24:11 +0000","from ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM\n ([fe80::30b2:3be9:48ab:c354]) by ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM\n ([fe80::30b2:3be9:48ab:c354%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026\n 10:24:11 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776075864; cv=fail;\n b=mmJMp4FsxX8b74RGQ9rSBlXHtiJPWgbVZXjdscdQO0D2k3ku2WZiPRLN9vjKjCn4ihsLs0cvpCwNofE3op0D1njq0GVW8eZTxyjgQAL4Ji7h+y7do/ETf0bicvE5EtRDKL1GGSNKc+t2QmH0xR5vfIaLzn6KSSSt/Omv85DMWpk=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=TZ2atrLyXCYbgu6zxpm4yckKIFJ6iKNlJddqGy2ldhBdmejcDecK6Yq3WRo4FbufdUUThoZEpACHIOjZ5l4R49fUm5rytBCqBUxC+6SPwLwR9hV8+jqOne5KKqyZNXVvKgTgJhn0jgBTWjnXmG+gDfV54m87aZ5pBIqI88twOTxdHmFeWy8oLnsBSDq24gSeq04sDPkSdY/RvWgE3teqgmK1yiYInJl1cp/H+atXpqLd2/+buY75eEDdU5l01F1HDUHPviQKvlD71d47eOGGRrILoKGO2PlAsN/MqW4dKYmQyPMx+91K/phwoCGfxIhBA6aHaJaiRovKvRFiZilhpw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776075864; c=relaxed/simple;\n\tbh=HvoUMFmJjtYA3nJFEKNbu9JIOfPidYRSxDxiMCsF6BU=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=kx3e1i72Rj9dTMa7dT2i5XJj7UHXXXFvmXDMb80GLtgY4x6D/gFgwqw2xQQIJBOGQDH++N6/R5iB8dRzBuvhgfMe3ewVHadr4i5UTA330sikY0OA3922J7ljL5vGD8ftXFYdErS6VkORzAtop40AAhvGvHrGdA/3dUnY+KQcJUo=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=qhZPRp9moicTtG6DO5LKsSOtyYbW3nWb86FQkpl0WVw=;\n b=VEhWWGoT6eYOnN3hlAU+5SLJB9gI3Oh6uvyTIfDl35soshc5iR1axil8kU5CAXyEJ1uMv54cQZ+hbri1HFtp50yWFrF4BFSTpDDrrwFZH5oy0iBSb/LBkLaZ0Q1gCvyzJ9NNXbFsm72+mL9R1as7GvNLn7PVCaZwfWu4r3k4ITiEt6dUOjHmv9ahvxgphpY2Fb25u/EsTyladwywof468yutwKosBPb0hasWGTaOYrNethiBDHKcVy3CZrvUfCjO58vACFpwV7V4Nqxwl9J1o5AFscRQJmNNtXJ54JNxwF/y4NRr1r9zQ/JMbhuo44pCqTc1xflsyMlV3uVeaXjBYQ=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=duagon.com;\n spf=pass smtp.mailfrom=duagon.com;\n dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com\n header.b=X+UH+B+X; arc=fail smtp.client-ip=52.101.186.117","i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 40.93.85.31) smtp.rcpttodomain=kernel.org smtp.mailfrom=duagon.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com;\n dkim=none (message not signed); arc=none (0)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=qhZPRp9moicTtG6DO5LKsSOtyYbW3nWb86FQkpl0WVw=;\n b=X+UH+B+Xr8PJhPCLhe81U5820/Npd7H0aigmfVX/lz4Yla7v7WxBPwDvBzISc/KcUutaDMnTeLuw/o35tHL6/ODWAd0UcFmMK0PWXLg26++YyWR1tRRX66b843b8QFSeUmaunB7G/9ffPLkR3Lx8q8xiwW4cGfbnLHLiU0EVwRs=","X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 40.93.85.31)\n smtp.mailfrom=duagon.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=duagon.com;","Received-SPF":"Pass (protection.outlook.com: domain of duagon.com designates\n 40.93.85.31 as permitted sender) receiver=protection.outlook.com;\n client-ip=40.93.85.31; helo=ZRZP278CU001.outbound.protection.outlook.com;\n pr=C","X-SEPP-Suspect":"9bf4815551b845e9a48fb38db1a7921a","From":"Jose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>","To":"linusw@kernel.org,\n\tbrgl@kernel.org,\n\twbg@kernel.org","Cc":"linux-gpio@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tJose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>","Subject":"[RFC PATCH v2 3/3] gpio: mmio: add port-mapped support for\n gpio_generic_chip","Date":"Mon, 13 Apr 2026 12:23:26 +0200","Message-ID":"<20260413102326.59343-4-dev-josejavier.rodriguez@duagon.com>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260413102326.59343-1-dev-josejavier.rodriguez@duagon.com>","References":"<20260413102326.59343-1-dev-josejavier.rodriguez@duagon.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"MA3P292CA0047.ESPP292.PROD.OUTLOOK.COM\n (2603:10a6:250:48::9) To ZR0P278MB0523.CHEP278.PROD.OUTLOOK.COM\n (2603:10a6:910:34::6)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-TrafficTypeDiagnostic":"\n\tZR0P278MB0523:EE_|ZR4P278MB1787:EE_|DU2PEPF0001E9C5:EE_|ZR0P278MB1416:EE_","X-MS-Office365-Filtering-Correlation-Id":"5e455efd-4ba0-4f90-b922-08de9946d161","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"\n BCL:0;ARA:13230040|366016|1800799024|52116014|376014|38350700014|18002099003|56012099003|22082099003;","X-Microsoft-Antispam-Message-Info-Original":"\n FQ4V7xjpgooO0tpDFQWrV3mGBpMM5I6mumandapziXvKkpSS4JBRveKOZtDPRmsFEnwb+dkqDty5WoT8FTxvvKGqvb85NdlvzuPHC3AcQLe8VXpJ9HTf3ifn7RgGebbQoAjbMAHZfEZAXboa/PtY9S703nizj3YQe8Imw+LP0oXMp92RpXwcy+JPFpN1qSeRKtAtmRhe0gcfMPh0SVCCzqqpp3/5snni9Lb/iEeYYSl9DW0cF4ZMn6zEjn84VRL3bjd/N53waK0HqqrZZF5DFPofKhuBFqZwB34g3ZbAVbBf5CNsiJehT8DtfJvNLkDO9gZ36SySpKCzUfuEHPMC2Wez4f08DZjZMDg56mohw3ylIaTdhzuYXu+FhN8Z9siZca6C6JPCPLXe7PFEwbFb4XaGgmXMcKJJjXD4l83NmiO5WbMbPIf9d3125kadUK6ySRPx0+W7TuzLX9Kd8KWQS4WYYtKzAFF2tiArGH0D1Yg/k2bztmOT+55p2zR4r+EuoyX3+i3t+Erozq175i3w9gG13sHMqYIzVGiQW2Rwv0pkqZ1ZOrR6gSJv2yYwbBILyVXZwD4LwRfVC8NZIlvMsaF3XAdhQQbSxD9IMAVWfLCqrez/c4VZNbhI1GbXbua/0XSCJatL7VX+GruYPwNNw1cHFmFXNxf/wAVxibIG1vafUlolgAPKMB3rw1YfBZzZIqpU/qYuumDi7FinDdT9Ik8fNrr+GNLmIny9Ks8pq/e5FBxHE1VTD40WOn1AoVWv1VYKppeQZ9CE/bgZ7vxDnxTuZPZDWyNNIxr6mkNpC4o=","X-Forefront-Antispam-Report-Untrusted":"\n 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)(366016)(1800799024)(52116014)(376014)(38350700014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;","X-Exchange-RoutingPolicyChecked":"\n MTcJ5TX76ow4Td6VUMdo/k/mpkMUw/mpt3SHKh2/xuoJ3b5gTjh/BQVM3PPGdJYi1pHwBamSBR7N8mGEPbWSJtLLO7xePuWv9tUpXNivxYNojbYFNoT1qTmDwbu0nFjQ5KbkgfZ4zt6GYLQVHT3n7PPTbuFsuy3XF8Gg9kbUQf/E9QNI4ndIr5D64tsayG342MOAe7xz3lSwhe1JGTcfZdVoO18pdMICQIxIQET+ea+E1bcl6Zon/N5wMa0KZGtFUH4qCWEZ35eZfJFypjUDIeBBSi3SSHv9ymGcQMVm3/1v+NtXnoSprOY/0O/FUgQcRNH2aLJ8wEbeeOi1WgonqQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["ZR4P278MB1787","ZR0P278MB1416"],"X-SEPP-CCCVersion":"2026-03-30T09:40:10+02:00 639c564b","X-EOPAttributedMessage":"0","X-MS-Exchange-SkipListedInternetSender":"\n ip=[40.93.85.31];domain=ZRZP278CU001.outbound.protection.outlook.com","X-MS-Exchange-ExternalOriginalInternetSender":"\n ip=[40.93.85.31];domain=ZRZP278CU001.outbound.protection.outlook.com","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DU2PEPF0001E9C5.eurprd03.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n\t08100412-8abb-4e14-3dd3-08de9946cd8e","X-SM-ruleversion":"2.1.0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|82310400026|10070799003|35042699022|14060799003|1800799024|36860700016|376014|18002099003|56012099003|22082099003;","X-Microsoft-Antispam-Message-Info":"\n 2XTrPo63yG1+5eUNX0yErVzZGIydiCcQIPOjnkGyWjUZbbUM7hBAN00hAREAvtyxaP+MFci52BHwTysm5ImmCHWkpvX3D4KnyuXHLAKTpNWu1CrXBZiMQTJLwWPZK8iDgsSFk9bOHJYAGyIj8cBVucp58eyuLSm/E5R/e4xbe7hHbsCL5y1G3jkN+g850PQHaLmoR7k9KX5wm02xv0qolqyr5WOvQYTa6JGpKh69GU5Lt8bVhA/bjdjasNfMozPomAUD5+Nmy67L1NT/F3iXGO3vI3klqpGJpvPhC0VatjB36VCL0/7G/4ZuTq17eOQjvR4ZLnqZnW1iOJccJrqghKNQxPqzppoz7JZC34D9CNrOBHKXf086nqxkgtysJ3gylkoumDcrK2LF3hORQJkppbZCXSulR5F55cnhT4Ev6u8hJCZI4vqnUAriNXxkVN3a6YEhnh5JLEisZvm/WFOqbtnkPMfjkUAhhXTMWviZoQKsgfOIOVSR54+b6Uam+vjI5oSC/Eg2JP4eq/N95zYbEMXjzTqxWUKkKTGK09gJWh5zZEICUwrGaw4tYKbvOyK/VQOzVXbeX0PgJxq0SSpxIB1ZIaXjjTWT5uCkmF1nTNVtBhKhkn3wmfw7IBS9QFc60JEDpLz9RW6jAiNbOpeBmdbd5VrQT3cMZPtX52odR9YdpcuoeYB4bu67Nt+W7lN1A1BYK2ldzNWoXnlMuBYn0KjswkPdpaTVyNydvl1S9DPR0dQPsjKZCjQ1JI4S9pq65okLpWGnGp0/vzJvwVsOEjdmdda9yhIEghIi3sq+VsynGHybs+npWvUM+8QhmdGXUNW/hxhrZuGexqDJ3j5YcTiN0/QGSIrSWqehtnk7nI0cgt7ow9k7kQakBtnNnUZj29FkSn3E8LWTWKiyAeKhrRLJ+strCjYRiUcysL7jz487V1h8chqXAZsGKy8bUr2j67LMMcvdZSmvN0Lg1/JiuOH5jiNGJzKf4wAF4sSVdihwEuLBswkZEzE1pcBYeOYFAN+FrPoTgJ8kO2o9k913vhIlUdOlux4PqUKW3AJDMr4RHComcyFqYeFozzqLtPYoheSn72hT9bydj9SNyeQsIxRmFUPqRKhS+RbLJ1qdv4EIEQNqXhav/utv9c8aotTiSVbIc+A891du2Lc570FkZiYyJfZVoAnwqCWxOMaxkb2eRES9essnabSOADB38gyT146srQosFs7qjwKUlJ4LCA==","X-Forefront-Antispam-Report":"\n\tCIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRZP278CU001.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17011031.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(82310400026)(10070799003)(35042699022)(14060799003)(1800799024)(36860700016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n\tcE7USBsK3974eMOCvPx1px6egPHc+J8AOKpvOa6D7+QXD0LVLdoCFNF/m9N/njcqaJrrbDJVLl/2rHZYo5dRpDV5NZuQCHZi9MYro4Lv3hZ+bkieTuyh4qIgSRbq3AFpPJseLhBy/4NFjPcO0yDLmfA19U/GlTQQqY3TmU2Pg/i8uEpk+sX9SzMptJwoX3MbXPjZD+UWY7m1u3LwSy5cgDcwBT6RBvd+iII0DmFwK7fLVNepSmA1PtUsKaP44eB9MKv7e7u0nUI2TPXARJ5SY+r/ZnJ31o+0DVh75ubj3IrTVAt6jo7yVwRy3FtYxdi85B9P1rlFbZGevrbbq7B2Jcx15cW9O7VC+tMTqcUSwW5fEVkcbyQcmB1CzjhNqJTBpSJEhTOHx/G/8e6HrvZ9IVPojYaFI1LxOZhHyY8Rq7PPtfn67V1Uc7tBtKgfRN1D","X-OriginatorOrg":"duagon.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"13 Apr 2026 10:24:17.1816\n (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 5e455efd-4ba0-4f90-b922-08de9946d161","X-MS-Exchange-CrossTenant-Id":"e5e7e96e-8a28-45d6-9093-a40dd5b51a57","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud]","X-MS-Exchange-CrossTenant-AuthSource":"\n\tDU2PEPF0001E9C5.eurprd03.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem"},"content":"Add a new structure gpio_generic_chip_port_config for configuring\nPMIO chips. A new function gpio_generic_chip_port_init() allows to\nconfigure them.\n\nAdd an io_port field to struct gpio_generic_chip to distinguish PMIO\nfrom MMIO chips during initialization and select the proper register\naccessors.\n\nSigned-off-by: Jose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>\n---\n drivers/gpio/gpio-mmio.c     | 30 ++++++++++++++++++++++++--\n include/linux/gpio/generic.h | 41 ++++++++++++++++++++++++++++++++++++\n 2 files changed, 69 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c\nindex d23c5d275e6b..01e2afd8d6f1 100644\n--- a/drivers/gpio/gpio-mmio.c\n+++ b/drivers/gpio/gpio-mmio.c\n@@ -740,8 +740,12 @@ static int gpio_generic_chip_init_common(struct gpio_generic_chip *chip,\n \tif (ret)\n \t\treturn ret;\n \n-\tret = gpio_mmio_setup_accessors(dev, chip,\n-\t\t\t\tflags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER);\n+\tif (chip->io_port)\n+\t\tret = gpio_port_setup_accessors(dev, chip,\n+\t\t\t\t\tflags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER);\n+\telse\n+\t\tret = gpio_mmio_setup_accessors(dev, chip,\n+\t\t\t\t\tflags & GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER);\n \tif (ret)\n \t\treturn ret;\n \n@@ -801,11 +805,33 @@ int gpio_generic_chip_init(struct gpio_generic_chip *chip,\n \tchip->reg_clr.mmio = cfg->clr;\n \tchip->reg_dir_in.mmio = cfg->dirin;\n \tchip->reg_dir_out.mmio = cfg->dirout;\n+\tchip->io_port = true;\n \n \treturn gpio_generic_chip_init_common(chip, cfg->sz, cfg->flags, cfg->dev);\n }\n EXPORT_SYMBOL_GPL(gpio_generic_chip_init);\n \n+/**\n+ * gpio_generic_chip_port_init() - Initialize a generic GPIO chip for I/O port devices\n+ * @chip: Generic GPIO chip to set up.\n+ * @cfg: Generic GPIO chip configuration.\n+ *\n+ * Returns 0 on success, negative error number on failure.\n+ */\n+int gpio_generic_chip_port_init(struct gpio_generic_chip *chip,\n+\t\t\t   const struct gpio_generic_chip_port_config *cfg)\n+{\n+\tchip->reg_dat.port = cfg->dat;\n+\tchip->reg_set.port = cfg->set;\n+\tchip->reg_clr.port = cfg->clr;\n+\tchip->reg_dir_in.port = cfg->dirin;\n+\tchip->reg_dir_out.port = cfg->dirout;\n+\tchip->io_port = true;\n+\n+\treturn gpio_generic_chip_init_common(chip, cfg->sz, cfg->flags, cfg->dev);\n+}\n+EXPORT_SYMBOL_GPL(gpio_generic_chip_port_init);\n+\n #if IS_ENABLED(CONFIG_GPIO_GENERIC_PLATFORM)\n \n static void __iomem *gpio_mmio_map(struct platform_device *pdev,\ndiff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h\nindex 30f0d87422e9..93ce5f09c0d3 100644\n--- a/include/linux/gpio/generic.h\n+++ b/include/linux/gpio/generic.h\n@@ -56,6 +56,43 @@ struct gpio_generic_chip_config {\n \tunsigned long flags;\n };\n \n+/**\n+ * struct gpio_generic_chip_port_config - Generic GPIO chip configuration data for I/O port devices\n+ * @dev: Parent device of the new GPIO chip (compulsory).\n+ * @sz: Size (width) of the PMIO registers in bytes, typically 1, 2 or 4.\n+ * @dat: PMIO address for the register to READ the value of the GPIO lines, it\n+ *       is expected that a 1 in the corresponding bit in this register means\n+ *       the line is asserted.\n+ * @set: PMIO address for the register to SET the value of the GPIO lines, it\n+ *       is expected that we write the line with 1 in this register to drive\n+ *       the GPIO line high.\n+ * @clr: PMIO address for the register to CLEAR the value of the GPIO lines,\n+ *       it is expected that we write the line with 1 in this register to\n+ *       drive the GPIO line low. It is allowed to leave this address as NULL,\n+ *       in that case the SET register will be assumed to also clear the GPIO\n+ *       lines, by actively writing the line with 0.\n+ * @dirout: PMIO address for the register to set the line as OUTPUT. It is\n+ *          assumed that setting a line to 1 in this register will turn that\n+ *          line into an output line. Conversely, setting the line to 0 will\n+ *          turn that line into an input.\n+ * @dirin: PMIO address for the register to set this line as INPUT. It is\n+ *         assumed that setting a line to 1 in this register will turn that\n+ *         line into an input line. Conversely, setting the line to 0 will\n+ *         turn that line into an output.\n+ * @flags: Different flags that will affect the behaviour of the device, such\n+ *         as endianness etc.\n+ */\n+struct gpio_generic_chip_port_config {\n+\tstruct device *dev;\n+\tunsigned long sz;\n+\tunsigned long dat;\n+\tunsigned long set;\n+\tunsigned long clr;\n+\tunsigned long dirout;\n+\tunsigned long dirin;\n+\tunsigned long flags;\n+};\n+\n /**\n  * union gpio_chip_reg - Generic GPIO chip register descriptor for MMIO or port-mapped I/O\n  * @mmio: MMIO register address.\n@@ -79,6 +116,7 @@ union gpio_chip_reg {\n  *           representing line 0, bit 30 is line 1 ... bit 0 is line 31) this\n  *           is set to true by the generic GPIO core. It is for internal\n  *           housekeeping only.\n+ * @io_port: indicates that the device is I/O port-mapped\n  * @reg_dat: data (in) register for generic GPIO\n  * @reg_set: output set register (out=high) for generic GPIO\n  * @reg_clr: output clear register (out=low) for generic GPIO\n@@ -100,6 +138,7 @@ struct gpio_generic_chip {\n \tunsigned long (*read_reg)(union gpio_chip_reg *reg);\n \tvoid (*write_reg)(union gpio_chip_reg *reg, unsigned long data);\n \tbool be_bits;\n+\tbool io_port;\n \tunion gpio_chip_reg reg_dat;\n \tunion gpio_chip_reg reg_set;\n \tunion gpio_chip_reg reg_clr;\n@@ -122,6 +161,8 @@ to_gpio_generic_chip(struct gpio_chip *gc)\n int gpio_generic_chip_init(struct gpio_generic_chip *chip,\n \t\t\t   const struct gpio_generic_chip_config *cfg);\n \n+int gpio_generic_chip_port_init(struct gpio_generic_chip *chip,\n+\t\t\t\tconst struct gpio_generic_chip_port_config *cfg);\n /**\n  * gpio_generic_chip_set() - Set the GPIO line value of the generic GPIO chip.\n  * @chip: Generic GPIO chip to use.\n","prefixes":["RFC","v2","3/3"]}