From patchwork Thu Jan 4 10:48:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan \(OSS\)" X-Patchwork-Id: 760569 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2048.outbound.protection.outlook.com [40.107.6.48]) (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 3A0F920DDE; Thu, 4 Jan 2024 10:45:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="IYEFe8ci" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kKPAu8J2wowPDiR9G4kHLkwJDHAHwWLDNemZGHlhjmsLPlK/ZRmdkzNHcMEUhQsbLoliLZUQGyDqgYFUyC4s+fpdaeULw7BRwVAJ6d7UKgA859C3Sk4gfcHW+PP6S9LuRcFRW6qqqfWTtKbmYpeiFHznUMYGRarH5OD1opd1ShtDchNnBeDzVQe4WF6sQnVc7DcDPJOC2jh1EDve/D3Iz0JzTfLrqP7jQKXfjIabuc5OqDSyIKJ9o86RUY1JUI6paALSRqi/Mf4mlazFUBu81kgDTTxenHRFL0dDaW6mWszzMiDiTtfLr/pYLtn/J5Ih1lY54qzkjLtrQs3FyeEk9Q== 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=TBrv5grZuXi9ZKLBAqWKbI2ffwa3ut4ZwXFNS5mOLI8=; b=Q7oZ+Li8RbzM8zMUa9kUinnsCQ/U5clKNcr2FNyx0WzzVyw5g4NN5x1J3brRorzCZrMigEtwQ/Ea6mHPW61jfaeWaZT072e6UetaI9z0MRJGoIcRGprXHfMsUrwv5HAGCZqjnvn5VKIBmAerEzmK4wEuPHYDyDziOkRefciyqEGL6ncY+O5E7iCkQwOpuvsHn04RHe2MG0YwgZ04qusVPFbGcQJIklflf10TB64AfB+p0LvdTPy6bamfbWVxXEi4b4hj71fVr2ZSqf2O/9YqM/z0xZ/rEzZHoc4yzoaYtJQczYLGDPyFmtA5AO4tTHNv+ciaDnPrNzcMFfTng/AQaQ== 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=TBrv5grZuXi9ZKLBAqWKbI2ffwa3ut4ZwXFNS5mOLI8=; b=IYEFe8ci4MrgJRJsaxXRKQnThdQiIrwUldBv7AIPI1t/hLaLFkOjXtQ8DWzM6MkSMdATF0BW0gecsai26zkvQDwbvNFIftK8feEvN9m9LIVmV0pkUNtg7FNVFbElCx6RP40F8Qx2eFTqzVQHV6iThYQOOO+VvvzzhRq77GKkSuU= 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 DBBPR04MB7994.eurprd04.prod.outlook.com (2603:10a6:10:1ea::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15; Thu, 4 Jan 2024 10:45:17 +0000 Received: from DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::ff06:bbb2:c068:5fb3]) by DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::ff06:bbb2:c068:5fb3%7]) with mapi id 15.20.7135.023; Thu, 4 Jan 2024 10:45:17 +0000 From: "Peng Fan (OSS)" Date: Thu, 04 Jan 2024 18:48:50 +0800 Subject: [PATCH NOT APPLY v2 6/6] pinctrl: scmi: implement pinctrl_scmi_imx_dt_node_to_map Message-Id: <20240104-pinctrl-scmi-v2-6-a9bd86ab5a84@nxp.com> References: <20240104-pinctrl-scmi-v2-0-a9bd86ab5a84@nxp.com> In-Reply-To: <20240104-pinctrl-scmi-v2-0-a9bd86ab5a84@nxp.com> To: Sudeep Holla , Cristian Marussi , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Oleksii Moisieiev , Linus Walleij , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, AKASHI Takahiro , Peng Fan X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1704365357; l=7141; i=peng.fan@nxp.com; s=20230812; h=from:subject:message-id; bh=UNtnAacrD3p6okC7/cMkcE6UWw1ah8KQZQ8RD/XuU/k=; b=GOZgKd/GkYX7pMK64yjn1d0EAU+PVNhTMg1f+mLIolo8VAHyleMZxffiIFVksVFsOiaJ2cuGh xWRhzaSy0DtBgooNFr4GO3CxP3Voyseju3pWtLJs2pbActjsSKcAB3q X-Developer-Key: i=peng.fan@nxp.com; a=ed25519; pk=I4sJg7atIT1g63H7bb5lDRGR2gJW14RKDD0wFL8TT1g= X-ClientProxiedBy: SG3P274CA0004.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::16) To DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9417:EE_|DBBPR04MB7994:EE_ X-MS-Office365-Filtering-Correlation-Id: 606560c9-afb2-4428-b17a-08dc0d123daf 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: Rl5N3EZQM4u7OQ3GnxEVX6HihkvCV94CwXO/CWbJuUY3YX5PR/wUchg7izm7IL2f2n+8970QE6n1ppG/hm+QQ2nA8MxPr8zcd4t4BCqIS8IGpZ3nvGmJphB1K8FRyvuNeAYF19oWGmYfud2HGBnSbzZtc0/t/CPQ3Dap8hRkyAiZ296eg/KYin8nQOhj3lpnv3fDJkxlF7DTRt1eD9ES6PZb3Sj9+IZZnAyWYcQ345TdO96xdPDVYa+v2dmiXMhVFHCLqgT1C6/W3xwmrwtd6B6q7dkWMLiLxGAESNqw9yuxUWb9fznRjPfF4xpnFVpzKwQQhRdgR5f3y+d85fdlNLADcrB4P73yHJd2Ai4mnknQpEOQBTbF26FlL3WZng5fXv8uIQKPOGkiISqPylHdgJw0sRf9oOcUoqQoiDz/CmgyaD2DhDke5+tnXENG3GgWIOj6ShHPjYbEnc1b7SP0IYn/wqwhkiFCD1RMuT7upojkYrSqail5Lm2Ol2jI8SMZkCphbiR7tTSDT8xAnfhn7vsoWIpzVbmKEhswhcjLVyv3CM0Zohnhfgo/1RG7EuZIO3Z9haNlCp1kZ/PmtaMhUitkY/HNAr4ttmdS8wufwMySjvJZfwjNE07e/CIDfp/RPTOISzSm8qy8ZNsh6fmbMQ== 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)(136003)(346002)(376002)(396003)(39860400002)(366004)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(26005)(38100700002)(83380400001)(41300700001)(8676002)(8936002)(110136005)(54906003)(5660300002)(2906002)(7416002)(316002)(4326008)(6666004)(66946007)(478600001)(9686003)(6512007)(6506007)(66556008)(52116002)(66476007)(921011)(6486002)(38350700005)(86362001)(36756003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?w0D6Anx+chcg2kakGpzx0c2uWpVu?= =?utf-8?q?Qmm6NPT23fu/IHQ69qAWPwSaE8wIogwslH5Urf1hetsX4kMIJigGRPvJZqEe2pCa+?= =?utf-8?q?9Qa6disFmdtvZH8RhFLvazW6AKu5Y2E/ttzZ17EkTe4Zaf8uDVBVRHukyW+wTE5oS?= =?utf-8?q?i7pVXyaPnuzvr/HKKpjgHrSDIVoexKrJLxXbiru2Xf0borwFqbh5h2EIQYC29dCVD?= =?utf-8?q?L4y7UcK+DbZj4wCmx1X/jqDe1LOmN4Fk26jYlhFJGagwNbBhAm8OI7FPu6+OnVbvU?= =?utf-8?q?HB7wo6lOiX8o4ifBHANqkjas/i1qfBIhwoi/WK4b2LrDaZjvSKclVvUR8vTCFOTOc?= =?utf-8?q?gM+lVXg+mXarJ+Dt82XcGWtzvDxjaPESfy+BDXRJiWttTLR84uhCRJQ8dxK9hiIB2?= =?utf-8?q?Kp9R3ZUXXgjlgOOLrYj4+sn799fBuSaMXeGuXAJ+vKiZUTJJ4CDm9eczMO0KR9ZZI?= =?utf-8?q?8ySBtwKaNL4DQlkqpoUS1QPrzvZANMZtY28IazzM7NCVnQRek7Rw4JrZ+ySxlBTDN?= =?utf-8?q?sXO3+mQ7e28pz1mwxemhfaMvCfF/ZXbBkDk38wlH27QNlB58G4BHKXDeP4hZKK6Z0?= =?utf-8?q?g0y18+4T3lrxk2T3qpJyvd025qKZcTSpwv6PeeKK0198aKjlrcIFcUGSeQSUlAHTb?= =?utf-8?q?g1u/rt0E4yI3aVSDkFVOdSe35KobYP0LpqvTcMox15j31SUILgW5c+2NXYgK/z83L?= =?utf-8?q?boV5zW6YidXvuung9eWCVSRscNvUMtlrSR04t+RBcIs3HWkZxTISid/q9zVtr8WzZ?= =?utf-8?q?tgGges32FNONOHVYlUBkl7rZC6ui7AaqS9YbQbg7UWXKCXoZqENoOfd2MKQw7weBe?= =?utf-8?q?jZ2sY0L8vBJivRakbc23YRblhGpFOTLqggOUjIcva259msRjXe0d+B8uZxN4hr5gv?= =?utf-8?q?f69tb4e2GThBd/P7gB8kEB7Nn+loDpFyDD5o6PZQrcVNn7r8VQJla/nKUn+SshFWh?= =?utf-8?q?78GmrHTjGXdiC9tImR24oSCGHx5X79/xX3GyPyFo+WnVJVTXcxyXzn3YY32avCmBw?= =?utf-8?q?nQWznRoVdA48FbB+tb0BzG0GmLiRN95oh36nEZxrwLC5lSBtPrieccXtuG461wTfg?= =?utf-8?q?otg+6LcR2hIqB/luvgkt8BI1ooJ/zv+yFcI5fV6Ms7TcwoXMqTY+GcjEsf+1JzWrm?= =?utf-8?q?qRtAORk42nn29qJ/B0fCz2RQG4r9YZo3gg51cVE1m6kMd2sgLOtFumZWKHPudeiYm?= =?utf-8?q?ylZM/C+UWMFgMPuuL0XEekYZsDAnpbSyaH/YfgdOiCZWsRcSLgv0BY659NdXDgRX4?= =?utf-8?q?gi6LgJcxgkQSWWJfyGwCogOW8ubus+uVX3SHK7gUrE1uTl7G9RA1apWi0rB/KDs2V?= =?utf-8?q?DXAEzSVFiKLzrVTEwX1PVKOkBBfWa3DiqDteU8uDL28Y5eMFqbORghRWHsxTqVS7q?= =?utf-8?q?LRgSssj7LOxKS09jzJ8Nq5LzQ73hX370Xw8VZU7QXKiNJZj9zQMD3dy52/rHqIdPq?= =?utf-8?q?c1QV+UlOfIcvUh9bN1XxN84RavBZ0F+vvaPDF+1VFtn8D9eJMAu6GadPDFjp0FzWh?= =?utf-8?q?F6TCpGbd/Ezc?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 606560c9-afb2-4428-b17a-08dc0d123daf X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2024 10:45:17.6746 (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: M819BMnj+cTa7uayhto4iA5nUrHzUECxk7EOHFN8Nr5bQCdPOLWOiHmnyJiPLcbh6gJ+B0vWLkQnPrVNdsOI2g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7994 From: Peng Fan i.MX95 System Manager FW supports SCMI PINCTRL protocol, but uses OEM Pin Configuration type, so need i.MX specific dt_node_to_map. Signed-off-by: Peng Fan --- drivers/pinctrl/Makefile | 2 +- drivers/pinctrl/pinctrl-scmi-imx.c | 117 +++++++++++++++++++++++++++++++++++++ drivers/pinctrl/pinctrl-scmi.c | 16 +++++ drivers/pinctrl/pinctrl-scmi.h | 12 ++++ 4 files changed, 146 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile index ba755ed2d46c..d96b7ede1355 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile @@ -44,7 +44,7 @@ obj-$(CONFIG_PINCTRL_PIC32) += pinctrl-pic32.o obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o obj-$(CONFIG_PINCTRL_RK805) += pinctrl-rk805.o obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o -obj-$(CONFIG_PINCTRL_SCMI) += pinctrl-scmi.o +obj-$(CONFIG_PINCTRL_SCMI) += pinctrl-scmi.o pinctrl-scmi-imx.o obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o obj-$(CONFIG_PINCTRL_STMFX) += pinctrl-stmfx.o diff --git a/drivers/pinctrl/pinctrl-scmi-imx.c b/drivers/pinctrl/pinctrl-scmi-imx.c new file mode 100644 index 000000000000..e9d02e4c2cc1 --- /dev/null +++ b/drivers/pinctrl/pinctrl-scmi-imx.c @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2023 NXP + */ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pinctrl-scmi.h" +#include "pinctrl-utils.h" +#include "core.h" +#include "pinconf.h" + +/* SCMI pin control types, aligned with SCMI firmware */ +#define IMX_SCMI_PIN_TYPE_MUX 192 +#define IMX_SCMI_PIN_TYPE_CONFIG 193 +#define IMX_SCMI_PIN_TYPE_DAISY_ID 194 +#define IMX_SCMI_PIN_TYPE_DAISY_CFG 195 + +#define IMX_SCMI_NO_PAD_CTL BIT(31) +#define IMX_SCMI_PAD_SION BIT(30) +#define IMX_SCMI_IOMUXC_CONFIG_SION BIT(4) + +#define IMX_SCMI_NUM_CFG 4 +#define IMX_SCMI_PIN_SIZE 24 + +int pinctrl_scmi_imx_dt_node_to_map(struct pinctrl_dev *pctldev, struct device_node *np, + struct pinctrl_map **map, unsigned int *num_maps) +{ + struct pinctrl_map *new_map; + const __be32 *list; + unsigned long *configs = NULL; + unsigned long cfg[IMX_SCMI_NUM_CFG]; + int map_num, size, pin_size, pin_id, num_pins; + int mux_reg, conf_reg, input_reg, mux_val, conf_val, input_val; + int i, j; + uint32_t ncfg; + static uint32_t daisy_off; + + if (!daisy_off) { + if (of_machine_is_compatible("fsl,imx95")) + daisy_off = 0x408; + else + dev_err(pctldev->dev, "platform not support scmi pinctrl\n"); + } + + list = of_get_property(np, "fsl,pins", &size); + if (!list) { + dev_err(pctldev->dev, "no fsl,pins property in node %pOF\n", np); + return -EINVAL; + } + + pin_size = IMX_SCMI_PIN_SIZE; + + if (!size || size % pin_size) { + dev_err(pctldev->dev, "Invalid fsl,pins or pins property in node %pOF\n", np); + return -EINVAL; + } + + num_pins = size / pin_size; + map_num = num_pins; + + new_map = kmalloc_array(map_num, sizeof(struct pinctrl_map), + GFP_KERNEL); + if (!new_map) + return -ENOMEM; + + *map = new_map; + *num_maps = map_num; + + /* create config map */ + for (i = 0; i < num_pins; i++) { + j = 0; + ncfg = IMX_SCMI_NUM_CFG; + mux_reg = be32_to_cpu(*list++); + conf_reg = be32_to_cpu(*list++); + input_reg = be32_to_cpu(*list++); + mux_val = be32_to_cpu(*list++); + input_val = be32_to_cpu(*list++); + conf_val = be32_to_cpu(*list++); + if (conf_val & IMX_SCMI_PAD_SION) + mux_val |= IMX_SCMI_IOMUXC_CONFIG_SION; + + pin_id = mux_reg / 4; + + cfg[j++] = pinconf_to_config_packed(IMX_SCMI_PIN_TYPE_MUX, mux_val); + + if (!conf_reg || (conf_val & IMX_SCMI_NO_PAD_CTL)) + ncfg--; + else + cfg[j++] = pinconf_to_config_packed(IMX_SCMI_PIN_TYPE_CONFIG, conf_val); + + if (!input_reg) { + ncfg -= 2; + } else { + cfg[j++] = pinconf_to_config_packed(IMX_SCMI_PIN_TYPE_DAISY_ID, + (input_reg - daisy_off) / 4); + cfg[j++] = pinconf_to_config_packed(IMX_SCMI_PIN_TYPE_DAISY_CFG, input_val); + } + + configs = kmemdup(cfg, ncfg * sizeof(unsigned long), GFP_KERNEL); + + new_map[i].type = PIN_MAP_TYPE_CONFIGS_PIN; + new_map[i].data.configs.group_or_pin = pin_get_name(pctldev, pin_id); + new_map[i].data.configs.configs = configs; + new_map[i].data.configs.num_configs = ncfg; + } + + return 0; +} diff --git a/drivers/pinctrl/pinctrl-scmi.c b/drivers/pinctrl/pinctrl-scmi.c index 146308d27f54..b49cbfbddbc9 100644 --- a/drivers/pinctrl/pinctrl-scmi.c +++ b/drivers/pinctrl/pinctrl-scmi.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,7 @@ #include #include +#include "pinctrl-scmi.h" #include "pinctrl-utils.h" #include "core.h" #include "pinconf.h" @@ -89,6 +91,16 @@ static const struct pinctrl_ops pinctrl_scmi_pinctrl_ops = { #endif }; +static const struct pinctrl_ops pinctrl_scmi_imx_pinctrl_ops = { + .get_groups_count = pinctrl_scmi_get_groups_count, + .get_group_name = pinctrl_scmi_get_group_name, + .get_group_pins = pinctrl_scmi_get_group_pins, +#ifdef CONFIG_OF + .dt_node_to_map = pinctrl_scmi_imx_dt_node_to_map, + .dt_free_map = pinconf_generic_dt_free_map, +#endif +}; + static int pinctrl_scmi_get_functions_count(struct pinctrl_dev *pctldev) { struct scmi_pinctrl *pmx = pinctrl_dev_get_drvdata(pctldev); @@ -439,6 +451,7 @@ static int pinctrl_scmi_get_pins(struct scmi_pinctrl *pmx, static const struct scmi_device_id scmi_id_table[] = { { SCMI_PROTOCOL_PINCTRL, "pinctrl" }, + { SCMI_PROTOCOL_PINCTRL, "pinctrl-scmi-imx", "fsl,imx95-scmi-pinctrl" }, { } }; MODULE_DEVICE_TABLE(scmi, scmi_id_table); @@ -481,6 +494,9 @@ static int scmi_pinctrl_probe(struct scmi_device *sdev) pmx->pctl_desc.pmxops = &pinctrl_scmi_pinmux_ops; pmx->pctl_desc.confops = &pinctrl_scmi_pinconf_ops; + if (device_is_compatible(dev, "fsl,imx95-scmi-pinctrl")) + pmx->pctl_desc.pctlops = &pinctrl_scmi_imx_pinctrl_ops; + ret = pinctrl_scmi_get_pins(pmx, &pmx->pctl_desc.npins, &pmx->pctl_desc.pins); if (ret) diff --git a/drivers/pinctrl/pinctrl-scmi.h b/drivers/pinctrl/pinctrl-scmi.h new file mode 100644 index 000000000000..25863b4428fe --- /dev/null +++ b/drivers/pinctrl/pinctrl-scmi.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright 2023 NXP + */ + +#ifndef __DRIVERS_PINCTRL_SCMI_H +#define __DRIVERS_PINCTRL_SCMI_H + +int pinctrl_scmi_imx_dt_node_to_map(struct pinctrl_dev *pctldev, struct device_node *np, + struct pinctrl_map **map, unsigned int *num_maps); + +#endif /* __DRIVERS_PINCTRL_SCMI_H */