From patchwork Fri Apr 27 19:01:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Aisheng X-Patchwork-Id: 905936 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-gpio-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="eV5Jmp7D"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Xjxq23vVz9s08 for ; Sat, 28 Apr 2018 05:03:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758069AbeD0TDJ (ORCPT ); Fri, 27 Apr 2018 15:03:09 -0400 Received: from mail-eopbgr40085.outbound.protection.outlook.com ([40.107.4.85]:8484 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758522AbeD0TDH (ORCPT ); Fri, 27 Apr 2018 15:03:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=EZWwXSeehV6kvb8EBQZtVghzcqXZddUs0dZuRRomeXw=; b=eV5Jmp7Dpv5yHGIFG8LK9gTN+gpaLQbuY9lPiDb+FmdkVT7Y6LO81PMAgv19aS8riAoehmktUkhM0y0qhndS6MzevY4mVZ0XMA1WYLbKTpQhPqTY6GGuvzED+WYRJ4uIdvVEK70krTa62WpJzxC5eY/cDLFYKWY95TLR0OOWroE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aisheng.dong@nxp.com; Received: from b29396-OptiPlex-7040.ap.freescale.net (119.31.174.66) by DB7PR04MB4217.eurprd04.prod.outlook.com (2603:10a6:5:27::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Fri, 27 Apr 2018 19:02:59 +0000 From: Dong Aisheng To: linux-gpio@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linus.walleij@linaro.org, shawnguo@kernel.org, stefan@agner.ch, aisheng.dong@nxp.com, dongas86@gmail.com, linux-imx@nxp.com, kernel@pengutronix.de, fabio.estevam@nxp.com, Fabio Estevam Subject: [PATCH 6/6] pinctrl: imx: add imx8qxp driver Date: Sat, 28 Apr 2018 03:01:53 +0800 Message-Id: <1524855713-15527-7-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1524855713-15527-1-git-send-email-aisheng.dong@nxp.com> References: <1524855713-15527-1-git-send-email-aisheng.dong@nxp.com> MIME-Version: 1.0 X-Originating-IP: [119.31.174.66] X-ClientProxiedBy: OS2PR01CA0118.jpnprd01.prod.outlook.com (2603:1096:602::12) To DB7PR04MB4217.eurprd04.prod.outlook.com (2603:10a6:5:27::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:DB7PR04MB4217; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4217; 3:KBZEHeJWYQACTZ3VGHzGGhA/sZXI1vY/GwhOyMjS5MfZ9u1PYfRYfg51j99sF7/rcJSAEtmgdcGGNEOrelfxNQGSdVYzZgv43BS+/XHY+ZKPrP3Wh2vy3NRlCgZZEdiETQ3N+TOY3XIfs/2B1F7UI8vt+f4ssNIUKB1CXMHFzp2BzNYleo89X6/rxpyg09qJlzffaPZDqfjxKxYnmvx92XzxH3jP1z32gN/V8p5ZRF8/tPpiVKmJvTZUP7AA695C; 25:ilcm/e/E2YbuYkiQ+3RW2Oe/W5WA/VQQKisA5ekfGPWZo9VAVAv1AfZk1RpSJX2YdxDsvICfwUAWSCI0L35Op6X233Suc6fZDspnfiDDYzw+Y64E3B49Kc45qNTVU//NnDoNG201nDQ8XwydCxBI51Lw5WZR97Fj59qgYlEe30nJ1VRpSU82C9EsVVnxnkqOp8s97xl6vGQ3QYO0rOUuZloju840pypELP+M3HqMCtU7ZTzRshISCNNzThPh5C7g2N7VNxa660UMoDJJx/J3xNgKrwPMzH5dM9+v0i/JtxgVYbtOKH93WnLD0oQ/C1ngVC5fanBm84agt7X+wPq/Ig==; 31:5Wq9NY7HgrLSak9D+5Swqk0aupfPGbgahgm054cZpEh8KMzVaGQv9WVPauchm1ittu24r1Us9lQuw/FvozeubUEDRsjXpoevsmspGYxucf1uB/B1dz6J6izv80ptmaNTdKjHzWTTElTs0FFJgFh6QGRhfM+c5O3LrsT47G6F6IR623XxZCiuY5+9pEsYjW+5HsSEQuMJxeykRBeRXRcXlaN7PAev9xK8ml57rYBFMuQ= X-MS-TrafficTypeDiagnostic: DB7PR04MB4217: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4217; 20:6I0m+JpA+1d0xzEA2G8IODqFF/6+X6LpNhHYxCzBN45GjVd7UaalLvHrlCCGIb5n0LQN/4vwOY+yM3VhhPj/4SP1In97FkUrZTwZTvEGIhW48zpvQX3JyG0ApMwHOCPGhtKDQVEhhRmD0oyfsgR+Z9vu4HLF+TkpVpfCypt4jE5v8w2SV4OgS2phwF7IdjrBEHvIMY6LkFpHKxrETFbkU406p94wOWLNNFtH5e7fqlL3fUND9RlnS3LkCzmMgTSqqPXEjQ0SIJtevv+I4cfKOKFfI5P426B+Mh4IYlavku+PC1UUsr9ZVF8xZsIEl45zubo2N7AIrnahPUIFd1DCULlb2nP8zL5SLQGqML7AGA7XLlAa66VlIo6MCJm7dy+7UB/pXqJCnwIVL/IigLPtB9Fx1GxbWrG7hpOv8CGPJx6YtNBEW5YzI6Y+TU9fYHudv2CL8Blcn4arcpSGB9HPKvXoTxQZsKPYtJyGlXY/Sxfx6bqiNsBt04PL0kWHGggb; 4:cce24v+YrQ0dwDGQslFl79fAPQNBqjks1EAWVL6LqNjaTXvxlXNHMzMH8h6516z/9DoGdY4TasmMsxM6rc3lFM8LcT+LFs8CCl/eArpcwb9oKP/iB04+bX7EJO0dihMc27AI+jiECwCp04xkAKSm9ogisIBNbpkHk8TaO4UMenAHsMUtyrf5uDnhwym1wnaV0TAYdg16/fXgMRupIrd6a77aCpRLZLRADGwfkRcpQWfMmkawy0Lrxl52ogjK6QmB34Paqb9n348QNrQjRw3gVH2bBEqLFeFgq/CybDv1qG7UF0m+l9aaAlj50WvZz5dhrwrg9z95SsJaBkZklQcR/w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(85827821059158); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231232)(944501410)(52105095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:DB7PR04MB4217; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4217; X-Forefront-PRVS: 0655F9F006 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(346002)(366004)(376002)(396003)(189003)(199004)(5660300001)(16586007)(68736007)(956004)(53936002)(76176011)(86362001)(4326008)(39060400002)(36756003)(11346002)(2361001)(2616005)(8936002)(186003)(8676002)(16526019)(305945005)(2351001)(575784001)(26005)(25786009)(2906002)(52116002)(97736004)(48376002)(50466002)(6916009)(486006)(7736002)(446003)(50226002)(81156014)(6512007)(6666003)(105586002)(47776003)(316002)(478600001)(66066001)(476003)(386003)(3846002)(81166006)(6486002)(6116002)(51416003)(6506007)(106356001)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4217; H:b29396-OptiPlex-7040.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4217; 23:6LWLeQuR2DcVPjY796skCL8UBI13M9UrexBQ4Tz8tf8g2rTco4v2ajdC9m3DtDXNLqH5TUHMmcoTfn/4BgcC0OWSMalJW0zf28KSNzxrmZXIUfDSebiRudiYeo3aE+hYf0anFdGRMERDg0QQmI9a748wUY+xqQguGcgyxZqaNuZhBBLoc5j9n3VPcVRuq2JeWRseOg7LHtvY+MXZMvkcKWHF1YrZEK1I2ITCF/CMRT6rd8riHbzSGMjCPd0JDWUarR7HVjSO6Tu/ksPBHkzicXv1SSlRNr0QCCe/xNUTJhpsLfuE/DzaSHGXmfoujolaZCo9uIAin8Ql+dfpR0ZmihebfHkCSSAQaaXJf3sglbyxit7N7ZEkmve5tAhJ6I+m7lz+oUqEsHi/JGuQmiVvJ9xqAHBpLKCohFWsuFNeCFu0iWcqgtjjxS4t/yeegKfFrPEmasfLyYPQ2QQjyiA23A4lQdtE/fHiXOFVoq0vrb7nXzeZGPe0lTvQLuO8pgtCrXw7LAFRfwI0im8EOuTxXxPdqo2H6JMfea0jPJUVhKWXParP15BRYn4RGVrtzesB5+5SelJD1O9BORmMaA+27LpX06lo18kfFULAQvi+g/cH39T3wP37vLe2J1kGv8937QCAdPXkgoll5Y1SKZAtuFPRYDRfpMLKAAr7mjhNfbEOTDpY/DkyWX/vdwHpbXDrVEHP++/A49mfq4OavldmF8JLvub18cZmRn6eaM9dIViSmMNXI58A1VgDgAXPAoNWicFH7Jj/t01z5A9oh0zOUSloAboePIyXbbFzjg6XkrDbyuVhwdI1BC5l+DiIQTGy5bOS33ioS7VZBdYJ0vAWvyEWbYfhv7yH/tXtR6cmO+pr3qzmEtVT8l8h7Zgql1StjmbeeOB5cA8ZEfWpNjShhVliH8LyiU/QI6xnL2ei0H49vpAnZ3+VtErStAo9zia90JmZGhoF/MlDEx3++G2jfqJN6goyDHXlqaZhghUFzOB1hmcMlK3ywDka/CmdH/FPEjXgYcf9sHm1vU6romqJNDo5O1p4qAMH6OWhQ1yyj7QNMrRRFn+ho59vUXSr4pEbd8beW2IOoweFmq7vp7HgOcg5y4/XHWg3icqRb7BdPiKBQqrnstkqDfsncZ3HvWvA+1QQRdfr+B4h9ZWa1XBwRpK4kdGbMHLY/MxndwElCviQafBYFA6sY9HGM3iGrb/FI2w4GGGCn2WczxwNrrC1qYa011TGjCQZYTAuszq/isJqn++nulFGflDdc9D1GjuP55T1eUV6qBb2KXYmPGxkVw== X-Microsoft-Antispam-Message-Info: P59Ii5btk9WlqVmyWguGBVrvsoDVzHI+e8ARaCMIOV5KiL07xpzWNqc6C4qtEyTInAWkYC7p76R6lc0dZccd19z9o1XS7nquPAAwXfmGsStaEABKVGbi0I7Ih+qxgZ4FiJVtPfmEGwgflrATHHRh6QA7HVfDL3NJe5tm6//3vVWtyr9gIJrQQguM4tSk1BW7 X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4217; 6:kzMAkyibGYVKt+DctkN+mDJaFx9/1otgWalFnNXPix31LPNZmYP5bEH1VCzdMXXkPpPBPvsbHgC4fpLNUzUggTWbUash7oTxl8xfVzclLG2aKXEnqqcyuqjYsRH/Ao5FiraNbGQ/pVKgOPArKOxLqTzKcG6ivwja5ERTm+hcG/9WinWi7/mZIG9Bc9VcNmCHihJljUl+YlWLhk3UIYUVaHkZkC36Kf5c//y6u5ZFEgjA5UOL5pHiBSdbNklYtpesSgk7/Elooy6VUVGLh3U3vYLCoqGIhiA1/71fWgfHN3ObeGigH0DPlgYXTLoEe+JqqjfKMKyb7wDrdM40IVUaf0RVzlxJjdAePE622fXDd9nIpIiYldb747Mn5C73xAWsKNla72t5OybeXapW14I5R1FxEdjIfWQCIL0pyqAeFXqSruUQMlRxEzGA/v/jjKdkCIv4tVI1Uo4k5I6hzBVzUA==; 5:FlhkjFawqtTEPSTiCUker9fe0yroH0F8oaXn9sMwPWB202dYWhJvFOwurkQz/ddycH7twkxYOnwEiVlgjADz5U4KGdJiwBN9orVsHMtfRJl4vemv3yUq7oFX648bXv4pmmpeITHmB1vXEJdmr7bnh8WSPD8MFlLj25FAY7Y4mFo=; 24:beQ8TSVpUYkYZbIITgQ0gEML99xTAr95nMo1cr+SARbolTxvrHHXjEuAmPw0g+Xv+1cm0aq6DYJAD5NOKv1lbmUEB3lxoqiKe3bJ7aOBuJY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4217; 7:xrr/s1+4nBqBmN06wxoIyNFBr092jpPaHVrPuueRfGdttYahvaHcEwBrPZH5S5XM0q35xrQ6uVb0wRhJswdhvLlvoJm8tM/cwkg4hDGykmjFEB5eJ65n/nVFjOYA4NSKDDhFceYeVHHYoeOBtKnG0qYzaeVsE1EaIabt8TQkhmmCA1w8mD9GhQD0RfcjgsCbMWUqYnR0ffDECVVf8ff0A//Fw+HzRyUf8kciLgHuhcEUB0ZwA62L85jOxrs7lW11 X-MS-Office365-Filtering-Correlation-Id: b0083b88-7a00-4b1c-9832-08d5ac718134 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2018 19:02:59.9594 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b0083b88-7a00-4b1c-9832-08d5ac718134 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4217 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org MX8QXP contains a system controller that is responsible for controlling the pad setting of the IPs that are present. Communication between the host processor running an OS and the system controller happens through a SCU protocol. This patch adds the SCU based MX8QXP pinctrl driver. Cc: Linus Walleij Cc: Shawn Guo Cc: Fabio Estevam Cc: Stefan Agner Cc: Pengutronix Kernel Team Signed-off-by: Dong Aisheng --- drivers/pinctrl/freescale/Kconfig | 7 + drivers/pinctrl/freescale/Makefile | 1 + drivers/pinctrl/freescale/pinctrl-imx8qxp.c | 232 ++++++++++++++++++++++++++++ 3 files changed, 240 insertions(+) create mode 100644 drivers/pinctrl/freescale/pinctrl-imx8qxp.c diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig index 329e1a4..bffb5b9 100644 --- a/drivers/pinctrl/freescale/Kconfig +++ b/drivers/pinctrl/freescale/Kconfig @@ -121,6 +121,13 @@ config PINCTRL_IMX7ULP help Say Y here to enable the imx7ulp pinctrl driver +config PINCTRL_IMX8QXP + bool "IMX8QXP pinctrl driver" + depends on SOC_IMX8QXP + select PINCTRL_IMX_SCU + help + Say Y here to enable the imx8qxp pinctrl driver + config PINCTRL_VF610 bool "Freescale Vybrid VF610 pinctrl driver" depends on SOC_VF610 diff --git a/drivers/pinctrl/freescale/Makefile b/drivers/pinctrl/freescale/Makefile index 1acd569..c55a744 100644 --- a/drivers/pinctrl/freescale/Makefile +++ b/drivers/pinctrl/freescale/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_PINCTRL_IMX6SX) += pinctrl-imx6sx.o obj-$(CONFIG_PINCTRL_IMX6UL) += pinctrl-imx6ul.o obj-$(CONFIG_PINCTRL_IMX7D) += pinctrl-imx7d.o obj-$(CONFIG_PINCTRL_IMX7ULP) += pinctrl-imx7ulp.o +obj-$(CONFIG_PINCTRL_IMX8QXP) += pinctrl-imx8qxp.o obj-$(CONFIG_PINCTRL_VF610) += pinctrl-vf610.o obj-$(CONFIG_PINCTRL_MXS) += pinctrl-mxs.o obj-$(CONFIG_PINCTRL_IMX23) += pinctrl-imx23.o diff --git a/drivers/pinctrl/freescale/pinctrl-imx8qxp.c b/drivers/pinctrl/freescale/pinctrl-imx8qxp.c new file mode 100644 index 0000000..165f32c --- /dev/null +++ b/drivers/pinctrl/freescale/pinctrl-imx8qxp.c @@ -0,0 +1,232 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Copyright 2017~2018 NXP + * Dong Aisheng + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "pinctrl-imx.h" + +static struct pinctrl_pin_desc imx8qxp_pinctrl_pads[] = { + IMX_PINCTRL_PIN(SC_P_PCIE_CTRL0_PERST_B), + IMX_PINCTRL_PIN(SC_P_PCIE_CTRL0_CLKREQ_B), + IMX_PINCTRL_PIN(SC_P_PCIE_CTRL0_WAKE_B), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_PCIESEP), + IMX_PINCTRL_PIN(SC_P_USB_SS3_TC0), + IMX_PINCTRL_PIN(SC_P_USB_SS3_TC1), + IMX_PINCTRL_PIN(SC_P_USB_SS3_TC2), + IMX_PINCTRL_PIN(SC_P_USB_SS3_TC3), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_3V3_USB3IO), + IMX_PINCTRL_PIN(SC_P_EMMC0_CLK), + IMX_PINCTRL_PIN(SC_P_EMMC0_CMD), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA0), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA1), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA2), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA3), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_SD1FIX0), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA4), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA5), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA6), + IMX_PINCTRL_PIN(SC_P_EMMC0_DATA7), + IMX_PINCTRL_PIN(SC_P_EMMC0_STROBE), + IMX_PINCTRL_PIN(SC_P_EMMC0_RESET_B), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_SD1FIX1), + IMX_PINCTRL_PIN(SC_P_USDHC1_RESET_B), + IMX_PINCTRL_PIN(SC_P_USDHC1_VSELECT), + IMX_PINCTRL_PIN(SC_P_CTL_NAND_RE_P_N), + IMX_PINCTRL_PIN(SC_P_USDHC1_WP), + IMX_PINCTRL_PIN(SC_P_USDHC1_CD_B), + IMX_PINCTRL_PIN(SC_P_CTL_NAND_DQS_P_N), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_VSELSEP), + IMX_PINCTRL_PIN(SC_P_USDHC1_CLK), + IMX_PINCTRL_PIN(SC_P_USDHC1_CMD), + IMX_PINCTRL_PIN(SC_P_USDHC1_DATA0), + IMX_PINCTRL_PIN(SC_P_USDHC1_DATA1), + IMX_PINCTRL_PIN(SC_P_USDHC1_DATA2), + IMX_PINCTRL_PIN(SC_P_USDHC1_DATA3), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_VSEL3), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TXC), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TX_CTL), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TXD0), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TXD1), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TXD2), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_TXD3), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RXC), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RX_CTL), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RXD0), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RXD1), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RXD2), + IMX_PINCTRL_PIN(SC_P_ENET0_RGMII_RXD3), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1), + IMX_PINCTRL_PIN(SC_P_ENET0_REFCLK_125M_25M), + IMX_PINCTRL_PIN(SC_P_ENET0_MDIO), + IMX_PINCTRL_PIN(SC_P_ENET0_MDC), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIOCT), + IMX_PINCTRL_PIN(SC_P_ESAI0_FSR), + IMX_PINCTRL_PIN(SC_P_ESAI0_FST), + IMX_PINCTRL_PIN(SC_P_ESAI0_SCKR), + IMX_PINCTRL_PIN(SC_P_ESAI0_SCKT), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX0), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX1), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX2_RX3), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX3_RX2), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX4_RX1), + IMX_PINCTRL_PIN(SC_P_ESAI0_TX5_RX0), + IMX_PINCTRL_PIN(SC_P_SPDIF0_RX), + IMX_PINCTRL_PIN(SC_P_SPDIF0_TX), + IMX_PINCTRL_PIN(SC_P_SPDIF0_EXT_CLK), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIORHB), + IMX_PINCTRL_PIN(SC_P_SPI3_SCK), + IMX_PINCTRL_PIN(SC_P_SPI3_SDO), + IMX_PINCTRL_PIN(SC_P_SPI3_SDI), + IMX_PINCTRL_PIN(SC_P_SPI3_CS0), + IMX_PINCTRL_PIN(SC_P_SPI3_CS1), + IMX_PINCTRL_PIN(SC_P_MCLK_IN1), + IMX_PINCTRL_PIN(SC_P_MCLK_IN0), + IMX_PINCTRL_PIN(SC_P_MCLK_OUT0), + IMX_PINCTRL_PIN(SC_P_UART1_TX), + IMX_PINCTRL_PIN(SC_P_UART1_RX), + IMX_PINCTRL_PIN(SC_P_UART1_RTS_B), + IMX_PINCTRL_PIN(SC_P_UART1_CTS_B), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIORHK), + IMX_PINCTRL_PIN(SC_P_SAI0_TXD), + IMX_PINCTRL_PIN(SC_P_SAI0_TXC), + IMX_PINCTRL_PIN(SC_P_SAI0_RXD), + IMX_PINCTRL_PIN(SC_P_SAI0_TXFS), + IMX_PINCTRL_PIN(SC_P_SAI1_RXD), + IMX_PINCTRL_PIN(SC_P_SAI1_RXC), + IMX_PINCTRL_PIN(SC_P_SAI1_RXFS), + IMX_PINCTRL_PIN(SC_P_SPI2_CS0), + IMX_PINCTRL_PIN(SC_P_SPI2_SDO), + IMX_PINCTRL_PIN(SC_P_SPI2_SDI), + IMX_PINCTRL_PIN(SC_P_SPI2_SCK), + IMX_PINCTRL_PIN(SC_P_SPI0_SCK), + IMX_PINCTRL_PIN(SC_P_SPI0_SDI), + IMX_PINCTRL_PIN(SC_P_SPI0_SDO), + IMX_PINCTRL_PIN(SC_P_SPI0_CS1), + IMX_PINCTRL_PIN(SC_P_SPI0_CS0), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIORHT), + IMX_PINCTRL_PIN(SC_P_ADC_IN1), + IMX_PINCTRL_PIN(SC_P_ADC_IN0), + IMX_PINCTRL_PIN(SC_P_ADC_IN3), + IMX_PINCTRL_PIN(SC_P_ADC_IN2), + IMX_PINCTRL_PIN(SC_P_ADC_IN5), + IMX_PINCTRL_PIN(SC_P_ADC_IN4), + IMX_PINCTRL_PIN(SC_P_FLEXCAN0_RX), + IMX_PINCTRL_PIN(SC_P_FLEXCAN0_TX), + IMX_PINCTRL_PIN(SC_P_FLEXCAN1_RX), + IMX_PINCTRL_PIN(SC_P_FLEXCAN1_TX), + IMX_PINCTRL_PIN(SC_P_FLEXCAN2_RX), + IMX_PINCTRL_PIN(SC_P_FLEXCAN2_TX), + IMX_PINCTRL_PIN(SC_P_UART0_RX), + IMX_PINCTRL_PIN(SC_P_UART0_TX), + IMX_PINCTRL_PIN(SC_P_UART2_TX), + IMX_PINCTRL_PIN(SC_P_UART2_RX), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIOLH), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI0_I2C0_SCL), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI0_I2C0_SDA), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI0_GPIO0_00), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI0_GPIO0_01), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI1_I2C0_SCL), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI1_I2C0_SDA), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI1_GPIO0_00), + IMX_PINCTRL_PIN(SC_P_MIPI_DSI1_GPIO0_01), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_MIPIDSIGPIO), + IMX_PINCTRL_PIN(SC_P_JTAG_TRST_B), + IMX_PINCTRL_PIN(SC_P_PMIC_I2C_SCL), + IMX_PINCTRL_PIN(SC_P_PMIC_I2C_SDA), + IMX_PINCTRL_PIN(SC_P_PMIC_INT_B), + IMX_PINCTRL_PIN(SC_P_SCU_GPIO0_00), + IMX_PINCTRL_PIN(SC_P_SCU_GPIO0_01), + IMX_PINCTRL_PIN(SC_P_SCU_PMIC_STANDBY), + IMX_PINCTRL_PIN(SC_P_SCU_BOOT_MODE0), + IMX_PINCTRL_PIN(SC_P_SCU_BOOT_MODE1), + IMX_PINCTRL_PIN(SC_P_SCU_BOOT_MODE2), + IMX_PINCTRL_PIN(SC_P_SCU_BOOT_MODE3), + IMX_PINCTRL_PIN(SC_P_CSI_D00), + IMX_PINCTRL_PIN(SC_P_CSI_D01), + IMX_PINCTRL_PIN(SC_P_CSI_D02), + IMX_PINCTRL_PIN(SC_P_CSI_D03), + IMX_PINCTRL_PIN(SC_P_CSI_D04), + IMX_PINCTRL_PIN(SC_P_CSI_D05), + IMX_PINCTRL_PIN(SC_P_CSI_D06), + IMX_PINCTRL_PIN(SC_P_CSI_D07), + IMX_PINCTRL_PIN(SC_P_CSI_HSYNC), + IMX_PINCTRL_PIN(SC_P_CSI_VSYNC), + IMX_PINCTRL_PIN(SC_P_CSI_PCLK), + IMX_PINCTRL_PIN(SC_P_CSI_MCLK), + IMX_PINCTRL_PIN(SC_P_CSI_EN), + IMX_PINCTRL_PIN(SC_P_CSI_RESET), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_GPIORHD), + IMX_PINCTRL_PIN(SC_P_MIPI_CSI0_MCLK_OUT), + IMX_PINCTRL_PIN(SC_P_MIPI_CSI0_I2C0_SCL), + IMX_PINCTRL_PIN(SC_P_MIPI_CSI0_I2C0_SDA), + IMX_PINCTRL_PIN(SC_P_MIPI_CSI0_GPIO0_01), + IMX_PINCTRL_PIN(SC_P_MIPI_CSI0_GPIO0_00), + IMX_PINCTRL_PIN(SC_P_QSPI0A_DATA0), + IMX_PINCTRL_PIN(SC_P_QSPI0A_DATA1), + IMX_PINCTRL_PIN(SC_P_QSPI0A_DATA2), + IMX_PINCTRL_PIN(SC_P_QSPI0A_DATA3), + IMX_PINCTRL_PIN(SC_P_QSPI0A_DQS), + IMX_PINCTRL_PIN(SC_P_QSPI0A_SS0_B), + IMX_PINCTRL_PIN(SC_P_QSPI0A_SS1_B), + IMX_PINCTRL_PIN(SC_P_QSPI0A_SCLK), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_QSPI0A), + IMX_PINCTRL_PIN(SC_P_QSPI0B_SCLK), + IMX_PINCTRL_PIN(SC_P_QSPI0B_DATA0), + IMX_PINCTRL_PIN(SC_P_QSPI0B_DATA1), + IMX_PINCTRL_PIN(SC_P_QSPI0B_DATA2), + IMX_PINCTRL_PIN(SC_P_QSPI0B_DATA3), + IMX_PINCTRL_PIN(SC_P_QSPI0B_DQS), + IMX_PINCTRL_PIN(SC_P_QSPI0B_SS0_B), + IMX_PINCTRL_PIN(SC_P_QSPI0B_SS1_B), + IMX_PINCTRL_PIN(SC_P_COMP_CTL_GPIO_1V8_3V3_QSPI0B), +}; + +static struct imx_pinctrl_soc_info imx8qxp_pinctrl_info = { + .pins = imx8qxp_pinctrl_pads, + .npins = ARRAY_SIZE(imx8qxp_pinctrl_pads), + .flags = IMX_USE_SCU, +}; + +static const struct of_device_id imx8qxp_pinctrl_of_match[] = { + { .compatible = "fsl,imx8qxp-iomuxc", }, + { /* sentinel */ } +}; + +static int imx8qxp_pinctrl_probe(struct platform_device *pdev) +{ + int ret; + + ret = imx_pinctrl_sc_ipc_init(pdev); + if (ret) + return ret; + + return imx_pinctrl_probe(pdev, &imx8qxp_pinctrl_info); +} + +static struct platform_driver imx8qxp_pinctrl_driver = { + .driver = { + .name = "imx8qxp-pinctrl", + .of_match_table = of_match_ptr(imx8qxp_pinctrl_of_match), + .suppress_bind_attrs = true, + }, + .probe = imx8qxp_pinctrl_probe, +}; + +static int __init imx8qxp_pinctrl_init(void) +{ + return platform_driver_register(&imx8qxp_pinctrl_driver); +} +arch_initcall(imx8qxp_pinctrl_init);