From nobody Mon Feb 9 08:32:28 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11022117.outbound.protection.outlook.com [52.101.43.117]) (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 C2869247295; Tue, 23 Dec 2025 07:30:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.117 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766475043; cv=fail; b=oPHOj4V1NakdrIYkmkohwp2jSqiNpx0XoA8tt3OWLjWJedkw+mL/zEaZPLOaEAY433QuE61AlWPHyZOVkVPOn5N1oUXVyyHBm6jNo6Pm5ReGHNw0DAIhuqvi2A3mvJFILZBYPGuU+QPUoFttlsW8ek/VW89o31VW8lxH4Sv6yuU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766475043; c=relaxed/simple; bh=pJQvlZgpjtA7SsBgJ73+S4jLGzf89q2oESvz02ujBsQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ehto6Jo4wwa6f6GHAefivgwRx4TK7KVQAMKiSQcBGJNh9znEilZMF3rjnaFJTVExxCr2rTyt/yRcYfa3s08BN+0G4wRnAkKqoDYLLJyuWa89wf6JIMUsuJ1Tuo5iO9adA+a7p8ILolTVjxrpq5vFv7X8KZBtdRRI4bafgr9K3Vs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com; spf=pass smtp.mailfrom=axiado.com; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b=rctCLEq2; arc=fail smtp.client-ip=52.101.43.117 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axiado.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b="rctCLEq2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yxBDlJCOQCumDPgHkbhnkhXRtcwgURN8Hrs/y5IWTcaarKlPXa1IPwVaM58wHP7oRufbJb6HgxwMzyPviBCDKGc1enoNlaTkwr8I4kXUu7tXpAD8RlNYaOShsPMH/X1Wfmc8sFw1fuSyEfTBqRZM+/ITnDOQ3aOBqAcosCOToF0gZBXiCljkpUUaAPpzs4hElrsKG0novavp+STVsu/32i+vmXyTOeJoKMVy4a6KEN/tphwVMYJBoCKKs8hZ7oe2bnCVEjtGY/EiI4HBTWBzieOc+levo2ldLAmHQNRMlR8zzEFuzIq8eA/xuXs9aPO4otftxFnfAm37+0ggq/sPoA== 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=a4QHQAJMNNuNduICE2RK117gfS4HoYjThmsh7sSeZ+A=; b=qr+4pG7DesmTt2RZvrSOk8j7nbV4ntL9DvENpcs1Z5IR72BJw/ZsCg8itf+lJ3HlzAkx+/L5v7SveLCmsfmT1Ad6T8+JHfxiuckVogC7ET3Y2/rKLi0BQnRGOYxQBG5qFji3+LDODH2/te/qoMSuIKImOiFmzjiB01c4Lt4WVsacFEd1b1XKDAbgsqgEfLEF89X9zSfjXtJQxMm2EP9gNqs4MhXGcy/yT28pWYxUwYKf/knrnDRD1VRixvFXj7rFDRYAM9MSRiZ6Rl2bocbamvyUahdFrR/fLFhWMf+yXMWku2q+zSOekPLecgYUkB9jHUxzREcctZvn3DAE/G5IAA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 4.227.125.105) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a4QHQAJMNNuNduICE2RK117gfS4HoYjThmsh7sSeZ+A=; b=rctCLEq2CYUsXQBIPaS9qIMsB5eyZVRr7sYpiYl4da1NvVBhvE4ySXeGYiK3GvGhkPcN6ewayE5b7F84eih8jb8uli2Eiys/qSpxP9vgxtDWkCN5BwL898oSLvjoy0iBlpQnFwzeC5e0y83jEDQFIB+sIz3jlFRzsfTmDBgUZPYJaeeuBG3qTBDNcqxTAzv+g4qn+gTeHDreDrjtmrz9zk2Y5BIyY3iioupQ7Nn6Is9Bj9DAO1JAB60DkxOsGgmFiPyQsniT2ytEZF+fWZqVnaxPpnGi8n3zmfiEDdlhhoRRrSAr6s6L23jn1nRDWG2R1BxnZJW/lyJx6ZUKr4bYyA== Received: from SA0PR11CA0130.namprd11.prod.outlook.com (2603:10b6:806:131::15) by SJ0PR18MB3882.namprd18.prod.outlook.com (2603:10b6:a03:2c8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.11; Tue, 23 Dec 2025 07:30:38 +0000 Received: from SA2PEPF00001505.namprd04.prod.outlook.com (2603:10b6:806:131:cafe::a5) by SA0PR11CA0130.outlook.office365.com (2603:10b6:806:131::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.11 via Frontend Transport; Tue, 23 Dec 2025 07:30:37 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 4.227.125.105) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.com; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 4.227.125.105 as permitted sender) receiver=protection.outlook.com; client-ip=4.227.125.105; helo=[127.0.0.1]; Received: from [127.0.0.1] (4.227.125.105) by SA2PEPF00001505.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9456.9 via Frontend Transport; Tue, 23 Dec 2025 07:30:36 +0000 From: Swark Yang Date: Mon, 22 Dec 2025 23:28:57 -0800 Subject: [PATCH 1/2] gpio: cadence: Add quirk for Axiado AX3000 platform Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251222-axiado-ax3000-cadence-gpio-support-v1-1-c9ef8e0d0bce@axiado.com> References: <20251222-axiado-ax3000-cadence-gpio-support-v1-0-c9ef8e0d0bce@axiado.com> In-Reply-To: <20251222-axiado-ax3000-cadence-gpio-support-v1-0-c9ef8e0d0bce@axiado.com> To: Linus Walleij , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Swark Yang , Tzu-Hao Wei , Prasad Bolisetty X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4502; i=syang@axiado.com; h=from:subject:message-id; bh=pJQvlZgpjtA7SsBgJ73+S4jLGzf89q2oESvz02ujBsQ=; b=owGbwMvMwCHWlWK8+EozbyzjabUkhkwvVwl1dZ/4z/cEw4Unzekot4w/O8NrS7Ci/ItS30xp2 azVFYwdpSwMYhwMsmKKLF91vuWfzNW+17l3ZSnMHFYmkCEMXJwCMJFVeowMn338rc/u67ummn9h 8pPMlufGRrVb3dbtOvzg9nrGujQ7Y0aG/eK3BHdFbTMrV9t3JWLt1OciZ5Zymx/S+uS19W31Zs/ rLAA= X-Developer-Key: i=syang@axiado.com; a=openpgp; fpr=F52CF66FC96D2BDE89BDA9758A6433A3D4830D5D X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001505:EE_|SJ0PR18MB3882:EE_ X-MS-Office365-Filtering-Correlation-Id: 1ecc09aa-9cb6-4d0e-2817-08de41f52a3e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aVZyRnhjUmQyUEs2ekphdENXelBVcHkvUjRCK0paQytCTjF5WSszaXZpSDhE?= =?utf-8?B?bzZiYVJ5cmZtYVFkU0pHbXNxb3ZaZTlYRkhyTTJuU1hBSUxGcVFPNDhBRDRw?= =?utf-8?B?RW5YT0NxNTVQUGFQZXlnK1J2cXRMbytBeGJweTc0V1pudzg0MU9vZ0NML01s?= =?utf-8?B?M1VnM1ZSZXZTS3lkK2syc0NrTGU4QVRtRmZiZFNEQXl4OEdDSmlwbTA1aTlJ?= =?utf-8?B?ZmVQd2xHSFJ0clBRUExtYzRVZVd5NktPNm96SzdYdWlxMVl4VnJBRUZQL2FR?= =?utf-8?B?TFluNDdNV00rZzZJVnA1bUZXcmtSNUJ0ZDdmdlQ0Unhsb3RoTW8xOEozTHRM?= =?utf-8?B?d2M3VWk5YVpjS3ZhK0FQQm51NXRCUlMrQzNvLy80NW1qTXJsbWVkSGFUMC9M?= =?utf-8?B?bnJpdGs2a3dzOU0rcEh2OERzU0VOSDU4MVNLUXdjRFBDWFhjV0RqdUpCTms5?= =?utf-8?B?NnBpRlpVZzYzZHQ4Wi92NXdHTG5NRE45REprNXhjRFk5cnNzYzJ5SHBZTnlD?= =?utf-8?B?dFNqdHgyRy9PYnVuTXV1VFFBVGJQbGNaUXp1ZWdMV3BORXk4RjhvWkRzZjBQ?= =?utf-8?B?b2l5a2loK1JHaDQ2S3c2WlZGM01CYWQzT3p4OXFVeUFuZ1ZsR0xFRlIvWjBt?= =?utf-8?B?VFord25EUC8vZ2JHNmxFbkFGTDJxVnJVR1ZqM1FUZTRoOU1nRlF3b0svL2ZI?= =?utf-8?B?NGFJL2x1UGdmaU1SVUNmSTQxSm96bGI3eHJ5d0ZQNE9qNUllTllYVWF6RGI5?= =?utf-8?B?U1JQcWxRalFpMjlFSzErc3I4ZUlPbFhEL1YvVEw1WWpZTStpbVArc2tSRWo4?= =?utf-8?B?MXEyb1VEY0Y4di9DUWw5SUZCR0l0ODhwK01HYnNsbWU3Q0E1U0tWUDZhKzh4?= =?utf-8?B?U1FtN3lmRmRKRXA1L21vdjNVV243MzhKaXBCRFR1alBVY3N2YU85dElwcko2?= =?utf-8?B?eW5welNsQ2JFSUpDcWlkcjBsYm5FSldxcHFKTlJ3WFVrWXliQTZjYUVTSUkz?= =?utf-8?B?Q3BDWUpVU1lRNTFmZy9KM0pZWkNVTGYwUnpqc2lmREwreW8vbTVqUUUxWDVC?= =?utf-8?B?eFZVRmNOTFhFUWlFUzhFaXEvbWtlZjdsMzlDUHM2b0lKWUUvd1JTZ2wwMzI3?= =?utf-8?B?dzEyOG9yeUNUWWtucldvRFllUjVBMjVpSktINm1LbWVSR3VXUHNUNTZyNXNB?= =?utf-8?B?R2hzWUtnRCtuSVNNSkpUZHVib0RjRy9FSlBacG1kTkxNSXZNczBpOHRvKzN5?= =?utf-8?B?RzVYTlJiV2M5OW5rVGpPQnFJR0lXMTRMWXZ1SDFpMGVmVGVuQTM1QUdnQlFh?= =?utf-8?B?UEIzUmg1bytUdmJYVFdqVXhsMGFQOWJWeTA4M1lmZVlEeWlKTnZUdThndGtQ?= =?utf-8?B?aFljOVZIeUpMV1p2Q0NkU0luR3lHdzh6UGhGTGczelQ4Y1dhVWsxQmFKMERn?= =?utf-8?B?KzlRemxmWDBhSXVTb25LZ29MMWhkNEFCNGRFamMxU29SaFJIcENSaEVpTmJR?= =?utf-8?B?cHNaVE9jakFZL3R5QlFjYWIvcTBmajY5azZ3Mk1NaFZ0OGRxR0NNK1pIZHE2?= =?utf-8?B?TGpWSER6blhpNXZYaUhrRUZhanl5cjg3S3BGYzVaTHgwa2ViZWlTdWtqU0lq?= =?utf-8?B?YUl5aE1YL3pURHBYMmgzSUZ0Uy9vR1MvN2FnMy80YnpleWpSTUQ5RnZoV2F6?= =?utf-8?B?VTBidnZLREhrVFVXWHI0QTkrcWxpS09HcGhqMEU3Y1JXL2J3Szc1aUZsMTlj?= =?utf-8?B?NGFPeCtrcmNHcjR0b2lNVVlUWHFMY1YrYTcrV0ZIQkNQMFhPMkZmVWEwdVhp?= =?utf-8?B?eWlDcHNQcWF1WEVRL1ZNV1NWczZhVjUxL3BXV2VSY2I0Vjl6TGZwdktPYkR0?= =?utf-8?B?eFh3aGFtMVVvVVV5M1hobXQ4dTlFVExWSTZ1RkYzcm12R0gyM052RmNtalBr?= =?utf-8?B?enYyZUtNci9pRGhsQzVJbnQ0ZTZYZjNEUXg5dGt0SE1WZVNwUXlBZGlya1dX?= =?utf-8?B?NkFscm56RlJYcnNMR3JXZkRjUGF5dWdCWXZ6aENSamlaVk5PWVVwUm8wMjVz?= =?utf-8?B?VTQ1RDk0bjBZRVR5aUtmUStGOGxDS3B2T3pyNWMxQ052TmNCRDdFQlk1bTA2?= =?utf-8?Q?lJ2k=3D?= X-Forefront-Antispam-Report: CIP:4.227.125.105;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:[127.0.0.1];PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1102; X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2025 07:30:36.1395 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1ecc09aa-9cb6-4d0e-2817-08de41f52a3e X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7;Ip=[4.227.125.105];Helo=[[127.0.0.1]] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00001505.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR18MB3882 On the Axiado AX3000 platform, pinmux and pin configuration (such as direction and output enable) are configured by the hardware/firmware at boot time before Linux boots. To prevent conflicts, introduce a platform-specific quirk triggered by the "axiado,ax3000-gpio" compatible string. When this quirk is active, the driver will skip its default initialization of pinmux configuration and direction settings during probe. Co-developed-by: Tzu-Hao Wei Signed-off-by: Tzu-Hao Wei Signed-off-by: Swark Yang Signed-off-by: Prasad Bolisetty --- drivers/gpio/gpio-cadence.c | 53 +++++++++++++++++++++++++++++++++++------= ---- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/drivers/gpio/gpio-cadence.c b/drivers/gpio/gpio-cadence.c index b75734ca22dd..b9f39566b0f9 100644 --- a/drivers/gpio/gpio-cadence.c +++ b/drivers/gpio/gpio-cadence.c @@ -6,6 +6,9 @@ * Authors: * Jan Kotas * Boris Brezillon + * + * Copyright (C) 2025 Axiado Corporation. + * */ =20 #include @@ -31,12 +34,18 @@ #define CDNS_GPIO_IRQ_VALUE 0x28 #define CDNS_GPIO_IRQ_ANY_EDGE 0x2c =20 +#define CDNS_GPIO_QUIRKS_SKIP_PINMUX_CFG BIT(1) + struct cdns_gpio_chip { struct gpio_generic_chip gen_gc; void __iomem *regs; u32 bypass_orig; }; =20 +struct cdns_platform_data { + u32 quirks; +}; + static int cdns_gpio_request(struct gpio_chip *chip, unsigned int offset) { struct cdns_gpio_chip *cgpio =3D gpiochip_get_data(chip); @@ -141,6 +150,16 @@ static const struct irq_chip cdns_gpio_irqchip =3D { GPIOCHIP_IRQ_RESOURCE_HELPERS, }; =20 +static const struct cdns_platform_data ax3000_gpio_def =3D { + .quirks =3D CDNS_GPIO_QUIRKS_SKIP_PINMUX_CFG, }; + +static const struct of_device_id cdns_of_ids[] =3D { + { .compatible =3D "axiado,ax3000-gpio", .data =3D &ax3000_gpio_def }, + { .compatible =3D "cdns,gpio-r1p02" }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(of, cdns_of_ids); + static int cdns_gpio_probe(struct platform_device *pdev) { struct gpio_generic_chip_config config =3D { }; @@ -148,6 +167,8 @@ static int cdns_gpio_probe(struct platform_device *pdev) int ret, irq; u32 dir_prev; u32 num_gpios =3D 32; + bool skip_pinmux_cfg =3D false; + const struct of_device_id *match; struct clk *clk; =20 cgpio =3D devm_kzalloc(&pdev->dev, sizeof(*cgpio), GFP_KERNEL); @@ -165,6 +186,13 @@ static int cdns_gpio_probe(struct platform_device *pde= v) return -EINVAL; } =20 + match =3D of_match_node(cdns_of_ids, pdev->dev.of_node); + if (match && match->data) { + const struct cdns_platform_data *data =3D match->data; + + skip_pinmux_cfg =3D data->quirks & CDNS_GPIO_QUIRKS_SKIP_PINMUX_CFG; + } + /* * Set all pins as inputs by default, otherwise: * gpiochip_lock_as_irq: @@ -173,8 +201,15 @@ static int cdns_gpio_probe(struct platform_device *pde= v) * so it needs to be changed before gpio_generic_chip_init() is called. */ dir_prev =3D ioread32(cgpio->regs + CDNS_GPIO_DIRECTION_MODE); - iowrite32(GENMASK(num_gpios - 1, 0), - cgpio->regs + CDNS_GPIO_DIRECTION_MODE); + + /* + * The AX3000 platform performs the required configuration at boot time + * before Linux boots, so this quirk disables pinmux initialization. + */ + if (!skip_pinmux_cfg) { + iowrite32(GENMASK(num_gpios - 1, 0), + cgpio->regs + CDNS_GPIO_DIRECTION_MODE); + } =20 config.dev =3D &pdev->dev; config.sz =3D 4; @@ -240,9 +275,11 @@ static int cdns_gpio_probe(struct platform_device *pde= v) /* * Enable gpio outputs, ignored for input direction */ - iowrite32(GENMASK(num_gpios - 1, 0), - cgpio->regs + CDNS_GPIO_OUTPUT_EN); - iowrite32(0, cgpio->regs + CDNS_GPIO_BYPASS_MODE); + if (!skip_pinmux_cfg) { + iowrite32(GENMASK(num_gpios - 1, 0), + cgpio->regs + CDNS_GPIO_OUTPUT_EN); + iowrite32(0, cgpio->regs + CDNS_GPIO_BYPASS_MODE); + } =20 platform_set_drvdata(pdev, cgpio); return 0; @@ -260,12 +297,6 @@ static void cdns_gpio_remove(struct platform_device *p= dev) iowrite32(cgpio->bypass_orig, cgpio->regs + CDNS_GPIO_BYPASS_MODE); } =20 -static const struct of_device_id cdns_of_ids[] =3D { - { .compatible =3D "cdns,gpio-r1p02" }, - { /* sentinel */ }, -}; -MODULE_DEVICE_TABLE(of, cdns_of_ids); - static struct platform_driver cdns_gpio_driver =3D { .driver =3D { .name =3D "cdns-gpio", --=20 2.25.1 From nobody Mon Feb 9 08:32:28 2026 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11021096.outbound.protection.outlook.com [40.107.208.96]) (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 C927122127B; Tue, 23 Dec 2025 07:30:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.96 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766475044; cv=fail; b=RjLGaaqS4GZ07VhBCeTj5orykyxooUWeHWdPfYQuk800RtkUpA4s4l6VZwLDu+n/gtPk/GTQWYjlkhTWpOmdWVul0INvbbJOf7MHb/1XjmeR44ABTTb5kCi6s8tc9dv1Lb1H7TutKwE1iUhxsvGaj/zeiLiFc3lPSlcKU9pDdL4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766475044; c=relaxed/simple; bh=IjtU3lW1Qeg4lhCMo6KXpF13dMVge+NK/OZ9wHcdhjo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JJlZ8UB2oWamzx/lZy/ftXJ6fETgJR22gSoats6/r40SGx9M7ELzTD8BIX0x9LZ4vqxMHxwrgg/a30rrQ7R7QtMmyZg+Ym8DNMCcWjdk0iQr1ETlbA8S1kMbxOo42Yu4hwpBqOW6nbZmv8yva5xe9IpyJeYU4cTXN8XCFsUws4o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com; spf=pass smtp.mailfrom=axiado.com; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b=a19+OVJh; arc=fail smtp.client-ip=40.107.208.96 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=axiado.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axiado.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=axiado.com header.i=@axiado.com header.b="a19+OVJh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ulRtMkWD4GQZ6nXSpcj/+TtOLgbFTNrOCkOwQfRKO6GaxtezWjuuWSW2z9CXn9Jt28rKJFeNYLaomHCHpeFTScftsZ2U4AmGyKA+3HCHwIRoo6xigalmJLciRKhhEU4TJxOXQcX9qnvfBPtXaWmb7egV4YkiuFxl0S779VQC3IcKeBPzxqwST+McOuR8qRtFHYitmVR9QmDdiHrZL0/fO/pzbc2hfWUNdlbefeD98a589xXJBQ1Z0tBM4rF3mSxkQXnLsHWZOXEpn1h6RYIeDRHWdGE7pUxlgVImIyE7XJmOMh4VzMYW5wV2/w5cNFVL+wlBrqqd3sopJ0DHXXy0Aw== 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=C/IH6KrtJSLX6f/NwEfatkzt/Ej8tVO7ZVUBDT615qY=; b=Yz4tHDdwhNZbivmoadOS5GYUSvbEFXqlTV8pIn9v37lNC64SkcY8A4Z3lS9ptyq5nTYZu/+ypEQv1CY5xTE1I5IYJFAk2ZgtaolRfSAimpW8SLZlKxT5bCCOd+JZN2yEmO6fM77oxlL0alozQbh14DPgg5gALN1jE8AB2NS6wg3jP+KqiEmmfJxxc3k1I81LOeOi8CsDfOVEBFG97qrcEYUBlbQtORPot4XRGsUpOE4fObku37a6JW6l0hoHF/rDBMoWVom/L/EdL3ja71cPuutmikwmW4NS/rJ0jVFW4l8Lv+qgGbaO8CT0KYa9SZt1ZAxaSiu2WHEtyzLruw5QrQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 4.227.125.105) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C/IH6KrtJSLX6f/NwEfatkzt/Ej8tVO7ZVUBDT615qY=; b=a19+OVJhxRwedqLGqQF3MzqDeGiwYAMiBLwwLDOTR6W4RB+13RN4x59i78o9/ggzrxQQz8j4tcEjG6277IzMWYkVpOBdA7WhTBZiFCFGRFF6tWMsuY9nZmxLI20YhFwmq3pj1bWaD3CRfvFyPL+tCioNzraAJ2/VZawhSkpVvEbSTkNtsGaXSWVbhsRtIvI2f7Y/mHhdXMnYlinrz1VjlbRKgLp4v98TN8H74/ZuTyxt98jhjNIO1DSyKnreoH6d6eRxY1pPFKifNBZF3rvHWta//hbaC/uTyJszGPVrYZmxZzBkNBcN+VXdCcOMOTf1vwj6y2MXhm5+NCPT4DUYNw== Received: from SA0PR11CA0130.namprd11.prod.outlook.com (2603:10b6:806:131::15) by SJ0PR18MB4041.namprd18.prod.outlook.com (2603:10b6:a03:2e5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.11; Tue, 23 Dec 2025 07:30:38 +0000 Received: from SA2PEPF00001505.namprd04.prod.outlook.com (2603:10b6:806:131:cafe::73) by SA0PR11CA0130.outlook.office365.com (2603:10b6:806:131::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.11 via Frontend Transport; Tue, 23 Dec 2025 07:30:38 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 4.227.125.105) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.com; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 4.227.125.105 as permitted sender) receiver=protection.outlook.com; client-ip=4.227.125.105; helo=[127.0.0.1]; Received: from [127.0.0.1] (4.227.125.105) by SA2PEPF00001505.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9456.9 via Frontend Transport; Tue, 23 Dec 2025 07:30:38 +0000 From: Swark Yang Date: Mon, 22 Dec 2025 23:28:58 -0800 Subject: [PATCH 2/2] gpio: cadence: Add support for edge-triggered interrupts Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251222-axiado-ax3000-cadence-gpio-support-v1-2-c9ef8e0d0bce@axiado.com> References: <20251222-axiado-ax3000-cadence-gpio-support-v1-0-c9ef8e0d0bce@axiado.com> In-Reply-To: <20251222-axiado-ax3000-cadence-gpio-support-v1-0-c9ef8e0d0bce@axiado.com> To: Linus Walleij , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Swark Yang , Tzu-Hao Wei , Prasad Bolisetty X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2348; i=syang@axiado.com; h=from:subject:message-id; bh=M9S33BcKF20OD2ci7GDV3kwz9gbREFbcTlKnKDSLWs0=; b=owGbwMvMwCHWlWK8+EozbyzjabUkhkwvV4ldqc7xtReMJymsjvt7z/yWwvFzr6oaS9jalrsJ+ RULB7zqKGVhEONgkBVTZPmq8y3/ZK72vc69K0th5rAygQxh4OIUgIn84WD4Xx8j7+MWptxexrZv jdQjnfbTLfm97c9WHdXK19P7n/rlGiPD3zAvPgfx7mNZVSp2Gp4tm5umT7tVKBd/a5om6+yJUie 5AQ== X-Developer-Key: i=syang@axiado.com; a=openpgp; fpr=F52CF66FC96D2BDE89BDA9758A6433A3D4830D5D X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001505:EE_|SJ0PR18MB4041:EE_ X-MS-Office365-Filtering-Correlation-Id: d32a5112-2b37-44bf-55a0-08de41f52b9c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U3RxRVU4QVpTb2pKMG9vYUFpR0pEY2NUVGtKa1ZQUW15NjVlU212UHVGK1pN?= =?utf-8?B?TkdKbTBDaHdwWkdLWGtFeEQreC9vemx2WGJVSDZpZU0reW5XNUVvaVQxNGlS?= =?utf-8?B?TzIyVytzVHVKeUdiazRmbGIrTzRVKzFFeElHdVdwelREeE1PNlJUaHpINlI2?= =?utf-8?B?RDNZRUpFMkowSEVJN1hyMURqZDMwME5IcWdhWk9maFE5eHNQK2RTK3AzblFL?= =?utf-8?B?bkNuZnNKM1kyVS9qazBrbFBzZjJjZGlBNEVaWlR3TVF2TnJ2WGFscUF0RFJq?= =?utf-8?B?OTc2elVKWG5nZnV4eWErQnZyU1VRNFFPWUVDTU43UWh1SnJUWTloUTRreFYw?= =?utf-8?B?MjF5MEcxcE4rT0t2L1AwZVgvTTlkUk5QYk9xRFJORkhPN0d5NW05cXAyL0J6?= =?utf-8?B?TXIyejZSN1NaRzBhRFJWSERNbFBsTG84RExDR3pnTWxIeVRnRlI1djVEQUxq?= =?utf-8?B?YnBhaW5KS001YUFnVDdWYXdTQlV6ZTR4bXowc1d3OE4xVGZ3S2tEaEs2YnF4?= =?utf-8?B?c0lXSjJ3NENKbFdqY1N4cERXLzRxQnk5bWtlYm8yWm8vRWJUQ2I4eDFOZzIr?= =?utf-8?B?NkcvTml5MmozY1pWSi9SQ0FEeG11elhLVllqeHBvWHdmalVxQktjUStLT2lr?= =?utf-8?B?RCtKV3A1UEdqUFg2YXMrS1FPNzVhMnozQ0V0VC9WbHBXWWFIZUZvZDUvVmdp?= =?utf-8?B?R3hyNTBUWlM0UlNDc1l3MXZsS1l0QUlVWTdya0tqbzh3YzlVUGhlNDJieU1n?= =?utf-8?B?bVJWVXY4UzJzdzBqQzZzdHhGWW1XcW1lTUhKalNmOUh6dVozTUsxemNYR2pK?= =?utf-8?B?WWdYbmVVK0t4UytxTjB4QVpYd0oxbWQ1TjVRamVFZnF5aCsyQWV1TVFJNVVW?= =?utf-8?B?dVNOUkQ5em1Pa3pPQ2t3elNPckNwT2E4RUhPRXI2RjRib1dYN1Z1SVFmUWRn?= =?utf-8?B?UCtyaWFXcEZOZjVIWEMvVVptTHdDc2haMTMxV1QrbkdaS09uelVjRzFsYy9B?= =?utf-8?B?RWlvTmUxOEFjaUs3UFhCb1JpVWovN3BObkxRZmNERks1enRrajlmd0Z6QWQr?= =?utf-8?B?b1k3MGJLVXlodUFFMUVEMkVtenluVGtPcXUvZjEyMGlyTTIzNHJHZWprWkZv?= =?utf-8?B?OWxOK29ObnJTY0E4NVA1dnlGem5CbEtWOUcxdnd6SDVIRjU0THZFYUoxQ2pv?= =?utf-8?B?RURxd3AwblhnOUdYNVVENFBrdjkzd1dJbVZrNFFjQTQwUEU2dTVkR2JhUC91?= =?utf-8?B?d0VFZGlUZGdHak41cGFMQ0s3bkRoWS9oanJOeXBBcy80Q2t6WERaSjE1Z1pO?= =?utf-8?B?K0dzWDFvdXBsWXhrNGhjNy9vUEJIY3ZMM0dQSm4rWVJXeHppOEhoaFkyeTQ2?= =?utf-8?B?WEU1R0JBOFZjYys4TVhYYmZCaHRtQ0lXQmFYY3F6Q1QvenM3dTE0TDZOOVAw?= =?utf-8?B?K1FrY2JHREVIa2prY3FOeGFYeDNTNFNETy9qb0pNUHY3ODlrRXhBM09NM28z?= =?utf-8?B?YmdnaFFSUzhkemNNL2VwWXdpMU1xVyttcDU1ZlByb0dUU2gyTmhoaEgwem9I?= =?utf-8?B?L1dXVEljZE9yZzZnYXRDajZVb3V1dnh0U0pyWFRFc1pxTjUraWdNcjducU14?= =?utf-8?B?dXoxTFJMQWl2VnpYenVxamlicTBHS21tMWZWRUUvQlhqN3d0ZG9iZ1BpZzV4?= =?utf-8?B?SnVtaFd4T0cyZnBFcEJEMXpXVkxwU2sxK3RSUmdRdDg4enRTYTFjbnlqTWpQ?= =?utf-8?B?OEM1WGdsaWV1MFl3VVRqSk5UckdFTVFsTkpQYjFsTWpUYlhzRmI3N0NZZ3pO?= =?utf-8?B?OWVmQ3l0Qk96R1Z4ZkRjMEFFeit1bnh0Y3RCUXQ3bmlMeHBRV3pUdWNOT3o0?= =?utf-8?B?ZElMT3JiWVVnaXRZOVBacEFLNndOWjFCZ3pWOTgydjlrcnNjSTNBNjY2MzNO?= =?utf-8?B?dCtZUFdCSWt1QzF3REwzcTZvTWtnaWVOdGZCbTcwTDFyUEhCMkltUGJ3NVBs?= =?utf-8?B?YUpJMTdPQlpFK0pVd2lmTFdhaURESXBJS3dLenRabjhJYWpMckFwV1ViRTEx?= =?utf-8?B?Q3g5RFJyQ2l2c2pZTE1vTy9BYStPN25RUWc3ZVN6Vm9qUDdYeHFJUVh0U0pr?= =?utf-8?Q?aonQ=3D?= X-Forefront-Antispam-Report: CIP:4.227.125.105;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:[127.0.0.1];PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1102; X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2025 07:30:38.4353 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d32a5112-2b37-44bf-55a0-08de41f52b9c X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7;Ip=[4.227.125.105];Helo=[[127.0.0.1]] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00001505.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR18MB4041 From: Tzu-Hao Wei The Cadence GPIO controller (CDNS IP6508) supports edge-triggered interrupts (rising, falling, and both) via IRQ_TYPE, IRQ_VALUE, and IRQ_ANY_EDGE registers. This commit enables support for these modes in cdns_gpio_irq_set_type(). Although the interrupt status register is cleared on read and lacks per-pin acknowledgment, the driver already handles this safely by reading the ISR once and dispatching all pending interrupts immediately. This allows edge IRQs to be used reliably in controlled environments. Signed-off-by: Tzu-Hao Wei Signed-off-by: Swark Yang Signed-off-by: Prasad Bolisetty Reviewed-by: Linus Walleij --- drivers/gpio/gpio-cadence.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/gpio/gpio-cadence.c b/drivers/gpio/gpio-cadence.c index b9f39566b0f9..e34a160088fb 100644 --- a/drivers/gpio/gpio-cadence.c +++ b/drivers/gpio/gpio-cadence.c @@ -93,6 +93,7 @@ static int cdns_gpio_irq_set_type(struct irq_data *d, uns= igned int type) struct cdns_gpio_chip *cgpio =3D gpiochip_get_data(chip); u32 int_value; u32 int_type; + u32 int_any; u32 mask =3D BIT(d->hwirq); int ret =3D 0; =20 @@ -100,24 +101,26 @@ static int cdns_gpio_irq_set_type(struct irq_data *d,= unsigned int type) =20 int_value =3D ioread32(cgpio->regs + CDNS_GPIO_IRQ_VALUE) & ~mask; int_type =3D ioread32(cgpio->regs + CDNS_GPIO_IRQ_TYPE) & ~mask; - - /* - * The GPIO controller doesn't have an ACK register. - * All interrupt statuses are cleared on a status register read. - * Don't support edge interrupts for now. - */ + int_any =3D ioread32(cgpio->regs + CDNS_GPIO_IRQ_ANY_EDGE) & ~mask; =20 if (type =3D=3D IRQ_TYPE_LEVEL_HIGH) { int_type |=3D mask; int_value |=3D mask; } else if (type =3D=3D IRQ_TYPE_LEVEL_LOW) { int_type |=3D mask; + } else if (type =3D=3D IRQ_TYPE_EDGE_RISING) { + int_value |=3D mask; + } else if (type =3D=3D IRQ_TYPE_EDGE_FALLING) { + /* edge trigger, int_value remains cleared for falling */ + } else if (type =3D=3D IRQ_TYPE_EDGE_BOTH) { + int_any |=3D mask; } else { return -EINVAL; } =20 iowrite32(int_value, cgpio->regs + CDNS_GPIO_IRQ_VALUE); iowrite32(int_type, cgpio->regs + CDNS_GPIO_IRQ_TYPE); + iowrite32(int_any, cgpio->regs + CDNS_GPIO_IRQ_ANY_EDGE); =20 return ret; } --=20 2.25.1