Message ID | 20230918-vf610-gpio-v3-4-ada82a17adc5@nxp.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp2557720vqi; Mon, 18 Sep 2023 03:38:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF6K+5QKOuUdGGVggkg2wP9/TkvCmEkx06ZEDdrurXQDwKS/ANtgnr3yeAGOVF+fBfgOAZ8 X-Received: by 2002:a17:90b:80c:b0:269:3771:7342 with SMTP id bk12-20020a17090b080c00b0026937717342mr5878237pjb.18.1695033525255; Mon, 18 Sep 2023 03:38:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695033525; cv=pass; d=google.com; s=arc-20160816; b=OoEp7JfQN5ZMrrMW2ccb57jriXVmDLTkrXjlBgJJgsYSlrREthIGTfjhbriHSknCea jFeaVnHL4q7pcaJf0u9uCPSUQGDdoBLES0iADWpU7a/c353oZLou/fEi9tCmXJYd6w+j GNgm9iEGuBJEXZgKvDk8Bu5CA5oup/MNgm3tdeVoZ+d9kojMSghTiAyqFctaJsPv1tg0 ZpOuL+WOHYsotj16S0XrjpdBCJNLKxx/Zwr3ZmXD5I7dnzUctRgcVfV/XrSmZfxQ8Zxi x7KBT645kuyh36In4wwNBFe7XuP2juT9ogtCpQv0+rq6kVkq16qZv0BA22xWvxymzgYP ZoyA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:cc:to:in-reply-to:references :message-id:content-transfer-encoding:subject:date:from :dkim-signature; bh=U44AIPwM+ReyZbAGkQOUHn8DaaTMrFWFFP3j5j+CWfk=; fh=COwI5EyG1DB6D28RaDWbFhDRTTyfVICzJ11TjDY7TVE=; b=Ic54UQN2av2Kk1qTl7be4vuJUIIU6bTreNHBRxdKXC3iQQYYbhDAU3omJHxQcXlNwR BfgdBtVSkfbkT+FelEKmByd3/Bh3fg7wBU8TTbrnnRIDx+zLqOr83lb602O/YqENhpGj aFq2tFqCWDP8yR+iXnYa6G3ix+pzhCP7cjmOD5/mR3YZMmkjrWHsZJ5BQuXP9qo/pLRc 8j6y2nhj4iiy7EjJNTCIqeac7TSsgAYrDFSFrK17+AG61ksPPzoZgQp4ZevuOn3WLP9B mzWls8mdmXg/OhwTam3Q5nViEsRl+8pOOs4GNekrxqatuBkeSr7Nmn89N1+ZWp0puq6x L6eQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@NXP1.onmicrosoft.com header.s=selector2-NXP1-onmicrosoft-com header.b=CLt4as1O; arc=pass (i=1 spf=pass spfdomain=oss.nxp.com dkim=pass dkdomain=oss.nxp.com dmarc=pass fromdomain=oss.nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id q15-20020a17090aa00f00b0027686e02e4fsi265970pjp.17.2023.09.18.03.38.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 03:38:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@NXP1.onmicrosoft.com header.s=selector2-NXP1-onmicrosoft-com header.b=CLt4as1O; arc=pass (i=1 spf=pass spfdomain=oss.nxp.com dkim=pass dkdomain=oss.nxp.com dmarc=pass fromdomain=oss.nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 7071E8080C51; Mon, 18 Sep 2023 01:14:51 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240757AbjIRIOZ (ORCPT <rfc822;kernel.ruili@gmail.com> + 27 others); Mon, 18 Sep 2023 04:14:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240768AbjIRINy (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 18 Sep 2023 04:13:54 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2040.outbound.protection.outlook.com [40.107.6.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91CC9CCD; Mon, 18 Sep 2023 01:12:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BXdCe7QYaA3DC0mgod3AeJkkk7E/3jg91WNxRWvKQrr4VHc9scy/JrtMM0ol65WzMMvLTvgKKe2YnhBAKbaVEFAhzCLp1lXWGb33fI1+AgkoYvhxH5XsgmEYpW6zAcPOmG5kzfWEHi1Wv1VhIOAbB4e8es2nmV4cA+EFNayOSil/sG2b9+HnyQMtaOKimmVo0CcjAHj4dH14K8aUC78E3+y2yLaqSiK9GFcHahD1LkVAKKg92gdokCotlldKz4hTic6WtQhPep7ISRdZGgoIbk1+IaInA9gVqxKC3l9/9Im8PAK9var9rSbQiifQ97O5C2rNzp49VL1fCSFeG3PLmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=U44AIPwM+ReyZbAGkQOUHn8DaaTMrFWFFP3j5j+CWfk=; b=UN/O/0fcZvB9C6MRoK3fcKk+NlDQg438wT3ElILuDI5SeMqXUcKoKcuARE561wimxxR5VKSV5OzyYNaHF8xv8oG+jiv6haleT/VjmjjHzqUUpi3AWmTrKT+BCSizYui+VrBrDdqdP418/NZS/NKLvx5PwD569McsfUomj/tkXSZcn4RQTMf4ruTjcO36hG+cTZyjoVQ9MYalWQBW/1cDyRX+O975412OzuUmXHH0jbuEPcw8UupLxYcQwb3FuNAC/fQZNDbX6DhSlJ7e8MkumY8g7GuWK9yB0KWo8q+dFU018/YbQ1yQtXStLNVmLkkXB2iqHPEh8e8ThKnL9f25sQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U44AIPwM+ReyZbAGkQOUHn8DaaTMrFWFFP3j5j+CWfk=; b=CLt4as1O/rv4bdKIXM07vDITm0Z23H2bpK1UVsNJWvOHETwoK6RPozmWzdChnSNK2WdnTztXfAIl8WVWeu0OFydcUiKL26TgfYAtm1fSIhBUsWHGBvjJihkB1OHMhr+k7WUX4g9lgEPd491IUY1JEwfctP2aiM9m1qSfh9einz0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) by VI1PR04MB7133.eurprd04.prod.outlook.com (2603:10a6:800:126::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.24; Mon, 18 Sep 2023 08:12:04 +0000 Received: from DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::2b3:d8de:95c8:b28b]) by DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::2b3:d8de:95c8:b28b%3]) with mapi id 15.20.6792.026; Mon, 18 Sep 2023 08:12:04 +0000 From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com> Date: Mon, 18 Sep 2023 16:16:08 +0800 Subject: [PATCH v3 4/6] gpio: vf610: add i.MX8ULP of_device_id entry Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20230918-vf610-gpio-v3-4-ada82a17adc5@nxp.com> References: <20230918-vf610-gpio-v3-0-ada82a17adc5@nxp.com> In-Reply-To: <20230918-vf610-gpio-v3-0-ada82a17adc5@nxp.com> To: Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <brgl@bgdev.pl>, Andy Shevchenko <andy@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Stefan Agner <stefan@agner.ch>, Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, NXP Linux Team <linux-imx@nxp.com> Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peng Fan <peng.fan@nxp.com> X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1695024993; l=3349; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=KIwUQXLlZAXkxFxtSdDA1eXGhBoOZN8UxphNKaoctdo=; b=mTPX5KPAlBjMnK0Y0+bWHGDEiHXY82PTK0EyR6zz39BLQXOZ3GPVQLn3/oMtdmTMCwXSbGHRM 6AI3ni4tvl+DJvfcdhLmc1LW0pPZelFuVT4f4plSvyCnXFMWLziVSLU X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SG3P274CA0010.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::22) To DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9417:EE_|VI1PR04MB7133:EE_ X-MS-Office365-Filtering-Correlation-Id: b5b6d033-be69-4447-8f9d-08dbb81ef150 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1WjqIuLTAAoZKtaXw448QH20EBKaftx8oFqSOfoTnhqAYfuEoTPC0GJE8qWhpdWzC/cyhbzRJuT6g4lB94rpMWZWnZDItT0KL8brhth7h72CRI7k3P5zcc0K1paLiIzx2ORaEX9BWTZE/9c73NUaVvUA6YTOVCyglYzA57KtpdpkBsFtmkyn7p6CIDLMDvl3FE0fVv1+GBeJHXHSUwSSfGf8ESCsdydhVTCjCwST8xVu3DN2ct+3Bj4ORW4zWek9EjBvf/KH5k+2rtRIiJ6VT1xslXuvOGxXxYLUnrwdtP9aRA5wQfkx3B74puo/3tnPd0Ns6vVdXEr78SVCvvfUptWYV0BdPp0JvY9Bnj3GZWAGhn+D3EuvvEmhttiIH1sb99W6McnJdnl6ZlDx3bSmprxvf0LWGWHL0R3EKU5wdqvXPK4uVm+WqAlHFjNFnSAGV8YcaVWkxYfhrFWOyDA25orjNVSDJtg3+OaRRbpspOhZioMOx1lxAZLf0iwotfqWKCzgeGB35tcdzpWXl5Xh8zX5irYuDErDVHSLbDEoROtWBpOHuJt805mpwPd3LZJCIoidUb2PqmJBaLKzb21DSt5hFixRu0xmsYKQbWkhBGizuUtPFKCAcDinjz9pbnLhnru0IEJ6RkUURzjNKAj//A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(376002)(39860400002)(396003)(366004)(136003)(186009)(1800799009)(451199024)(2906002)(7416002)(5660300002)(8936002)(4326008)(8676002)(26005)(41300700001)(316002)(66476007)(66946007)(66556008)(110136005)(478600001)(36756003)(52116002)(6486002)(6506007)(83380400001)(6512007)(9686003)(38100700002)(38350700002)(921005)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?PIdKSFKpJY/mnHOx3Zr/3Dcws6Xr?= =?utf-8?q?XdoPJrMDmVQQi7Ie5ayWEIbseuSaioMZ2IlDJ37N1wUzgmcvoX9X3YCtSaeoX2mdp?= =?utf-8?q?P9Ho3duZ6NsNe4uL1MEiKQSqvb1hll6E0qvYKrK0iRqjWeIVZxcxmSIcNO9v7y++8?= =?utf-8?q?AUrgqAokthUxtFSPGWUKmyr9v9KC24x4AYJ3G/A5dKI5wKoEAPrvqS1IvCqgS0VPb?= =?utf-8?q?2AQh5SB++1P2HR/+PZ+E168SryzTd6fz/NP8bNK6dNRmluP2LKe9UF9WP7Muxuz8V?= =?utf-8?q?AIuvejaYz23p/mlgYJKOatSknOQBetogDJhHR8gXcE6miqUXi8NVtoAHmBeR8QPuB?= =?utf-8?q?lVzUP4UOQIMKfhvw9JDpVd72dQ5texnYP6YMWpMke4muOaXtsf15KDASe3wE0h4JG?= =?utf-8?q?ltjaIPsTrhpJSN0AoaGG385qhi7C7WpoNn9onip13r//AbSEEq2FTtdgLw8AyAFC3?= =?utf-8?q?8DcsY+Ki+zzA35SNupEXCF2V12vf8a3lQ31nBTFuhg+rB9MsVhel7EEj8cdDjXv60?= =?utf-8?q?sg0RXB4lQSFMd8n5/RZArK25uyG2yQK0wW+cS2JCl0+/58A6y5BN0UPmMqm5DFdmk?= =?utf-8?q?m2lS2LnXawkxrlPNej3U7Yb7nqpYptx+0uxsYGIDhBeCPnp9mG9+BYEJlT/ytnkho?= =?utf-8?q?YT8LbRuV4gFAlvrdFXCCAAIjTdf5plj1+3IGtEW9tYu9lBJ0+6GLQiDRbd1VONJCe?= =?utf-8?q?yW9O9dYvJqvOH4/mUSMzSxZXnJVj85Oxrh02dnMx2WphHF3U0LAu4qnpdhP6OrEPd?= =?utf-8?q?nZEZrUT8I32FGwaPOgvrnqFF+r+gc2GBaqcyQNAnuqDPelcGql1s9LweYDwMkoFme?= =?utf-8?q?1Y0HFsVcZHLlnvHphCd9FOlWrO1pYgp5AWubNdUNTNCWeIAM69HLj3uIzvCgosh8g?= =?utf-8?q?NHXKb4Nd7wlnpXBHxrwt0IYsXrvygYT+BXn+tWY7XL9/CJJe295triAWpcJuwY89Q?= =?utf-8?q?xos2WhgbmNWFbcCwhxeOMXbM83l8yXL5v7qXtaEKT80RCFeOdmYQdmzB8UxEgN9g4?= =?utf-8?q?CLqbbmO7TdV+YtPJMQZCEdMk9WX3euRf+OoAQNXLytuKiwa+ExMKmTq45t65/D6xU?= =?utf-8?q?GN3RBI4sB/mdy7lp7HbAWqqOSWUpAZ0XmidrSlE+yZeIElIKv8NbIDa9mzySEFfHI?= =?utf-8?q?TNk1LcSh7z7C1rwGANd1IA+bc6cgias3CN+SEtPKCbZaqGLV3ibG7jEu9z0nSSoed?= =?utf-8?q?By7gHE93SEZUF5vwedHaN8AFtPTarbPGNmru7PO/GAf7bs1lCZwO7g+0mZxHNREGX?= =?utf-8?q?xZg4kYihFubp2akDS2Ey9I+QxJJSF/9UAHDI/ylTlUvNr688ryv/9+1skYikI3kV1?= =?utf-8?q?8OTe3BLtkyaKALsBcMB+AZlMigEJv3vqnb69D+z7M1UuCHocp0sFUOQIi9HZe09s3?= =?utf-8?q?SYmSvbVBXZerjaXHryhewZ36dsW55XlwlHie+HSPVkDGrpHZPf2G9PjTbsnO+LDL9?= =?utf-8?q?wUgsYlL1deazchYhdzBRJ4OGy43T2RUsC9OJ6EvOKbL2f3LX9wkLYjuldwi9fBnzz?= =?utf-8?q?a8F+XfpDYzke?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5b6d033-be69-4447-8f9d-08dbb81ef150 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 08:12:04.1753 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l/lmeqamCOyBvFwx78/9xnFsJEUbtt9I6bYQnEHcflzo4GpF3vYGgAU9sCztOFS6en5chs7Uz5h5HFui/Sl0+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7133 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 18 Sep 2023 01:14:51 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777371473647878213 X-GMAIL-MSGID: 1777371473647878213 |
Series |
gpio: update i.MX93/8ULP and support i.MX95
|
|
Commit Message
Peng Fan (OSS)
Sept. 18, 2023, 8:16 a.m. UTC
From: Peng Fan <peng.fan@nxp.com> i.MX8ULP GPIO supports similar feature as i.MX7ULP GPIO, but i.MX8ULP is not compatible with i.MX7ULP per binding doc. i.MX8ULP only has one register base, not two base. Add a new of_device_id entry for i.MX8ULP. But to make the driver could also support old bindings, check the compatible string first, before check the device data. Signed-off-by: Peng Fan <peng.fan@nxp.com> --- drivers/gpio/gpio-vf610.c | 55 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-)
Comments
On Mon, Sep 18, 2023 at 04:16:08PM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > i.MX8ULP GPIO supports similar feature as i.MX7ULP GPIO, but i.MX8ULP is > not compatible with i.MX7ULP per binding doc. i.MX8ULP only has one > register base, not two base. "per binding doc" is a poor justification IMO, as you literally just changed it earlier in this series. I think the commit message here should re-explain the problem so that the rationale here is clear in isolation. > Add a new of_device_id entry for i.MX8ULP. But to make the driver could > also support old bindings, check the compatible string first, before > check the device data. Sweet, seems like you have addressed the backwards compatibility stuff for the old binding :) Thanks, Conor.
Hi Peng, please see my notes below. On 23-09-18, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > i.MX8ULP GPIO supports similar feature as i.MX7ULP GPIO, but i.MX8ULP is > not compatible with i.MX7ULP per binding doc. i.MX8ULP only has one > register base, not two base. > > Add a new of_device_id entry for i.MX8ULP. But to make the driver could > also support old bindings, check the compatible string first, before > check the device data. > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/gpio/gpio-vf610.c | 55 +++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 49 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c > index dbc7ba0ee72c..ef2455093708 100644 > --- a/drivers/gpio/gpio-vf610.c > +++ b/drivers/gpio/gpio-vf610.c > @@ -25,6 +25,7 @@ > struct fsl_gpio_soc_data { > /* SoCs has a Port Data Direction Register (PDDR) */ > bool have_paddr; > + bool is_imx8ulp; I would invert the logic: bool have_dual_base; > }; > > struct vf610_gpio_port { > @@ -60,13 +61,22 @@ struct vf610_gpio_port { > #define PORT_INT_EITHER_EDGE 0xb > #define PORT_INT_LOGIC_ONE 0xc > > +#define IMX8ULP_GPIO_BASE_OFF 0x40 > +#define IMX8ULP_BASE_OFF 0x80 > + static const struct fsl_gpio_soc_data vf610_data = { .have_dual_base = true, }; static const struct fsl_gpio_soc_data imx_data = { .have_paddr = true, .have_dual_base = true, }; static const struct fsl_gpio_soc_data imx8ulp_data = { .have_paddr = true, }; This also introduces .data pointer for the vf610 case and we could drop the 'port->sdata' guard from the 'if (port->sdata && port->sdata->paddr)' pattern. This of course would be an additional patch. > + > static const struct of_device_id vf610_gpio_dt_ids[] = { > { .compatible = "fsl,vf610-gpio", .data = NULL, }, > { .compatible = "fsl,imx7ulp-gpio", .data = &imx_data, }, > + { .compatible = "fsl,imx8ulp-gpio", .data = &imx8ulp_data, }, > { /* sentinel */ } > }; > > @@ -255,6 +265,42 @@ static void vf610_gpio_disable_clk(void *data) > clk_disable_unprepare(data); > } > > +static int vf610_gpio_map_base(struct platform_device *pdev, struct vf610_gpio_port *port) > +{ > + struct device *dev = &pdev->dev; > + bool dual_base; > + > + /* support old compatible strings */ > + if (device_is_compatible(dev, "fsl,imx7ulp-gpio") && > + (device_is_compatible(dev, "fsl,imx93-gpio") || > + (device_is_compatible(dev, "fsl,imx8ulp-gpio")))) { > + dual_base = true; Move this part into probe() (see below) and drop the rest. > + } else if (port->sdata && port->sdata->is_imx8ulp) { > + dual_base = false; > + } else { > + dual_base = true; > + }; > + > + if (dual_base) { if (port->sdata-have_dual_base) { > + port->base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(port->base)) > + return PTR_ERR(port->base); > + > + port->gpio_base = devm_platform_ioremap_resource(pdev, 1); > + if (IS_ERR(port->gpio_base)) > + return PTR_ERR(port->gpio_base); > + } else { > + port->base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(port->base)) > + return PTR_ERR(port->base); > + > + port->gpio_base = port->base + IMX8ULP_GPIO_BASE_OFF; > + port->base = port->base + IMX8ULP_BASE_OFF; > + } > + > + return 0; > +} > + > static int vf610_gpio_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > @@ -269,13 +315,10 @@ static int vf610_gpio_probe(struct platform_device *pdev) > return -ENOMEM; > > port->sdata = of_device_get_match_data(dev); /* Handle old device-tree bindings */ if (device_is_compatible(dev, "fsl,imx7ulp-gpio") && (device_is_compatible(dev, "fsl,imx93-gpio") || (device_is_compatible(dev, "fsl,imx8ulp-gpio")))) port->sdata->have_dual_base = true; > - port->base = devm_platform_ioremap_resource(pdev, 0); > - if (IS_ERR(port->base)) > - return PTR_ERR(port->base); > > - port->gpio_base = devm_platform_ioremap_resource(pdev, 1); > - if (IS_ERR(port->gpio_base)) > - return PTR_ERR(port->gpio_base); > + ret = vf610_gpio_map_base(pdev, port); > + if (ret) > + return ret; > > port->irq = platform_get_irq(pdev, 0); > if (port->irq < 0) Regards, Marco
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c index dbc7ba0ee72c..ef2455093708 100644 --- a/drivers/gpio/gpio-vf610.c +++ b/drivers/gpio/gpio-vf610.c @@ -25,6 +25,7 @@ struct fsl_gpio_soc_data { /* SoCs has a Port Data Direction Register (PDDR) */ bool have_paddr; + bool is_imx8ulp; }; struct vf610_gpio_port { @@ -60,13 +61,22 @@ struct vf610_gpio_port { #define PORT_INT_EITHER_EDGE 0xb #define PORT_INT_LOGIC_ONE 0xc +#define IMX8ULP_GPIO_BASE_OFF 0x40 +#define IMX8ULP_BASE_OFF 0x80 + static const struct fsl_gpio_soc_data imx_data = { .have_paddr = true, }; +static const struct fsl_gpio_soc_data imx8ulp_data = { + .have_paddr = true, + .is_imx8ulp = true, +}; + static const struct of_device_id vf610_gpio_dt_ids[] = { { .compatible = "fsl,vf610-gpio", .data = NULL, }, { .compatible = "fsl,imx7ulp-gpio", .data = &imx_data, }, + { .compatible = "fsl,imx8ulp-gpio", .data = &imx8ulp_data, }, { /* sentinel */ } }; @@ -255,6 +265,42 @@ static void vf610_gpio_disable_clk(void *data) clk_disable_unprepare(data); } +static int vf610_gpio_map_base(struct platform_device *pdev, struct vf610_gpio_port *port) +{ + struct device *dev = &pdev->dev; + bool dual_base; + + /* support old compatible strings */ + if (device_is_compatible(dev, "fsl,imx7ulp-gpio") && + (device_is_compatible(dev, "fsl,imx93-gpio") || + (device_is_compatible(dev, "fsl,imx8ulp-gpio")))) { + dual_base = true; + } else if (port->sdata && port->sdata->is_imx8ulp) { + dual_base = false; + } else { + dual_base = true; + }; + + if (dual_base) { + port->base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(port->base)) + return PTR_ERR(port->base); + + port->gpio_base = devm_platform_ioremap_resource(pdev, 1); + if (IS_ERR(port->gpio_base)) + return PTR_ERR(port->gpio_base); + } else { + port->base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(port->base)) + return PTR_ERR(port->base); + + port->gpio_base = port->base + IMX8ULP_GPIO_BASE_OFF; + port->base = port->base + IMX8ULP_BASE_OFF; + } + + return 0; +} + static int vf610_gpio_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -269,13 +315,10 @@ static int vf610_gpio_probe(struct platform_device *pdev) return -ENOMEM; port->sdata = of_device_get_match_data(dev); - port->base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(port->base)) - return PTR_ERR(port->base); - port->gpio_base = devm_platform_ioremap_resource(pdev, 1); - if (IS_ERR(port->gpio_base)) - return PTR_ERR(port->gpio_base); + ret = vf610_gpio_map_base(pdev, port); + if (ret) + return ret; port->irq = platform_get_irq(pdev, 0); if (port->irq < 0)