From patchwork Fri Dec 2 06:39:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacky Bai X-Patchwork-Id: 9457927 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 737DA60515 for ; Fri, 2 Dec 2016 06:43:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 622CA284EF for ; Fri, 2 Dec 2016 06:43:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5365728505; Fri, 2 Dec 2016 06:43:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, UPPERCASE_50_75 autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4AD70284EF for ; Fri, 2 Dec 2016 06:43:40 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1cChXd-0001C2-5I; Fri, 02 Dec 2016 06:41:53 +0000 Received: from mail-eopbgr10083.outbound.protection.outlook.com ([40.107.1.83] helo=EUR02-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1cChWT-000894-9S for linux-arm-kernel@lists.infradead.org; Fri, 02 Dec 2016 06:40:45 +0000 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=FkyPdaA/3zjdDxrckqzSVWiQdPUWey+f1Y8oNDHc8TM=; b=SMBc/u6IS/x+tyNw6nhT0r60XHckyvAXWClo27n1zJ9VikXPZRfVHE2eJCP7KoB6tzkZVZCRRvmYRAGkPvcL8s1iQABblnRlTGSRh3j5T+8oE1vwBfO9p3rbAXIFye/5moj5kZHAYSs6u+dBE9huiAvbUecddHrYqae5wZkBOro= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ping.bai@nxp.com; Received: from b51503-01.ap.freescale.net (192.158.241.86) by DB4PR04MB537.eurprd04.prod.outlook.com (10.141.237.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Fri, 2 Dec 2016 06:40:32 +0000 From: Bai Ping To: , , , , , Subject: [PATCH 04/11] driver: pinctrl: imx: Add pinctrl driver support for imx6sll Date: Fri, 2 Dec 2016 14:39:27 +0800 Message-ID: <1480660774-25055-5-git-send-email-ping.bai@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1480660774-25055-1-git-send-email-ping.bai@nxp.com> References: <1480660774-25055-1-git-send-email-ping.bai@nxp.com> MIME-Version: 1.0 X-Originating-IP: [192.158.241.86] X-ClientProxiedBy: KL1PR03CA0025.apcprd03.prod.outlook.com (10.165.63.35) To DB4PR04MB537.eurprd04.prod.outlook.com (10.141.237.27) X-MS-Office365-Filtering-Correlation-Id: 884d1c5d-9959-4feb-28d2-08d41a7e210d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DB4PR04MB537; X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 3:9Ccj41t88RdmPrTf14qqyOpLtaBi1NISAwqIRQn4j9toE7BEctW5rhWih1hfHrlHz2Zd3SNfPLoFgMqM1MocGs5RuBm2AHxIOVNaRnu7qWjB6c0DerlgIbRGlXWJ33yZRnubG4rypmwVxNUiWBmMyUIeIaQtmLux5687ZfVB1cXHhh6CtWyUfgYX5RFDUE4TgnhUrFgk6a+lexzW3TsHcYYT9mPVZ2N98PkguKjoXeVLrmuRnouXDl8Z6aWjR3q0FZP0Q0Y81uP9xb2OOMiJ3A== X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 25:99pa1VtczZlpv6tlVQG8qwFDvGq4Y+ZuA7kAzN7OEFHve7Uk7jiSy0laVzFuZd2ErIbJqvqdDO4kJbYyg7TeINhc46PE5izvSPMC05iYBFXET7f1GBxyjQWNbGyYcrulzaPMjYxXq3ODuFcWnCs6znD+DE9R4WvnEGvGTQ27tSYL2fhHIc6sqhoUAkIs08i4Epf7RWvuZd+OEJQN0HafdkekcNvxXj+bLDnkJmus1eiygky7U4/w5Xyr31qdz9P97Va0No7pCK+txrrx1rhhXuqX9D0ra9Kyq2GSKauBkaNjVKZLaDoHfLW3Suul1uZwchjsnkMhP3pb0x5OMryv1CTObEPBpDYdfA0HogJF4IguW6KfvvXK98zAyC89OnmwtHzMfF7vW/V4jTsCqVg+asVpqDRk9+TmrETemjAIzngJOAbNfJN1r/iFTCErDIHG9CMX4H0nVtSAak8WB0bsj2wIYbbPHEzw9iQV9nrphMUH92KL203KZgpRCqTs57xXe+lM6X1wOqs8qroSDrBwNF4HMG9G4avLDQbB4ON3Mga274Cm9TBwfIoeQ0EYnOFqOb3DBe6M4IEzemp8YDmC7IbmWg0iP7wt0+EnJhRbxSvxtwF+99JVaPn7M9olpId4Pfw6bCOaabIOJRROr1l80ofgc5PzBi9CJKh9DEU5nqs8hgnQgSQdp/JeJlJdtra/eIN3WDpTI0kFSqWgN1vN0+vNZAsguoA8WgkULh8fi7lvz6/wC/5X4Nk4xhrTNfNv X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 31:XCeoMM/KSAvi+olzzQRqGIPoJWmRx0f9TdmK+j1EFqyn2XtoXTawEdVk6DQbyLsmHoVoNiyoO9EWJfPH/cxrALQykkMXmu4+FnF2yK0fftvEM2jprzFmJ8ncoWyO6vI3BBHfKf3y+Az9hFVh2g72K1sq5Qy2MNKUs8fTOamyuH/1iBsdx12BiV8cgZ8jamiel+UYmUIg/ARoylMqi9a5WwUNMEw+F+GtnMSaWX6FQp3EB3niY63nbe8rgQUeyLy7; 20:u6BNVXdpRI3uqJOlNMdZXuHHaX9yL+IUOgJUPSgq5rv/b4M6FygXnvERrgD8K3sICPOorTkj0aziMAsoZO/HtGQBl/2JvPnt7PRE5DrCMR2bg1TPe82OjG+nn2HahqNa24nh6Dw4m73+0nK2tWzzGrJ3hr2akCrzFmcX87W7Np8XPhNKp8kluQLEu1PKkZl7dzfutphwRlNpQicJQJkLptDcaaN9OEZM38DqkGxiygai9BZNzTcu9JZCbWJ4cJ8ExGFUDZJPMmRmCeLiFR8//7fjU2C/0H24vdeH+Xgp8dZ/ZOkDOj612xc4Bc+89cr1igDAU8zwZqgxVearUHqlJ19bk9JHm67UUMfbPNyPTrF3Atn7QsWs3QqrjUoGFXL2RLf6oJxlabOfFxQDK+xSBGqtA6LqmeW7BjT3nyrXt2zt9Va5QmdhNvNeZ1rRqtuE90pu93VyiWa803zcoW9ICPEcGebVzRBDBBYh0jebqC/5BaWlnS2HvnAt7cjEOTQr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148)(6047074); SRVR:DB4PR04MB537; BCL:0; PCL:0; RULEID:; SRVR:DB4PR04MB537; X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 4:9VSVHzdb8srfpl4mSPQcF/117vmULMviWOeYCQe+LgUEhklUV/fNVpnq6ae24/Y6CIk6OSkdcBgurWfUnJlaitlCnP4kL0W7aTYTsIlqRPxtrCTBlPKmhklUbmHz7DgDyOAgzKqcmqe8qous8p73U+RT7lzv+vKemGXM+91AGttmIfNNzZ6qJCO8ljiCYL5O28Ky8ZajNe4kEUy0+d2043JtoN3wYK62ncfV1EeHML+31QbK7zB8tyis1NTYl65IrdcNIXCAe1WwhBx+3FZ2uZwWgQQTJr+Nhp+SCulFJdgB1KXgCoxVkbGfSqOMpErbaiKA3A5Qtbzb71p/cs6Gk/SMplo/jzCaxRKUDHLHMdQ6p6dTPPSVQ+kJmNHtzYvWlUj5hHx5RQVM3G85e8VWyTU+0NJZsZOiwcv1qLYsmBsBJGx/qXjCeiBhE6srfkPnRheFzjsfABNhwtV42lAEp35d7EBW0LrPKbf/nIZ1Lk6xuleI5GTecoY/w2yV/I12bkHXOwu32YE2Jzh+8FSsYiIrr4lvaeVAhpIwEMMMlQOvwc2Tl5qiMLr1Y123aZYEvXmWEuHFpCKu5cbk3d8WGsBZgbPXqTNoHPZ5lO2fMfEj6TqAtTlO+803eQbULrliFW6TPjdEJaZNSgoqIl61gw== X-Forefront-PRVS: 0144B30E41 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(6666003)(68736007)(42186005)(81166006)(101416001)(2906002)(8676002)(97736004)(2950100002)(5660300001)(105586002)(3846002)(36756003)(106356001)(81156014)(6506004)(6512004)(189998001)(6116002)(48376002)(86362001)(92566002)(50466002)(7736002)(305945005)(50226002)(4326007)(47776003)(7846002)(7416002)(38730400001)(5001770100001)(33646002)(2201001)(733004)(39450400002)(5003940100001)(6486002)(39410400001)(76176999)(66066001)(50986999)(7099028)(2004002)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR04MB537; H:b51503-01.ap.freescale.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR04MB537; 23:/c3yFPEGeGHVs2b5jaUxmEFmO+dVV58IPsqGkQmVHp?= =?us-ascii?Q?IUYfbkRHVE2N19sd/0AuTDhTR0NuXeUhcyidlQhvQ92WE4QURdftKmC4G9af?= =?us-ascii?Q?kA2YHA9sUEP0w/SP7mUOd5vGB0silEA/k39rM6SM5VxwpCFLbyuXFXNmbDoC?= =?us-ascii?Q?+kpfVQnSV4CpKADElTli9xHnCwAe53v4c20d2V+5Yy3JdOeOHSu3MBvO8OCT?= =?us-ascii?Q?AHWhjOAeNOCVkC4W9a6IiY/5yff4vV34jZrUDwbZ5RYrpbK+0gvLisHgjXbQ?= =?us-ascii?Q?rOH0VFJrn4OzEGGIcFttC4pmIJKPV50IFhJhy317/slC2U5LkYGhOZVbO6B5?= =?us-ascii?Q?gLenwcejoIsQFpx70OxtHhTgsjxBhgJolKKOo8O+YyRjuacVeR1Hvjf4odtf?= =?us-ascii?Q?wfKAXNJQ1Rj01FCPgNVpj0WjOO+cyTM8ebbf63ieIff2QYqvtqjHYdTyJqVn?= =?us-ascii?Q?5alXo1vdOKALkq5AvCGNj1x1fbl7JFAJJiejZ75TxBIr3/1RsZLj8qZNcBm3?= =?us-ascii?Q?Bco1x5T0uaVSqo8+7bo6ruSzRrzs/PdKWgjox55Nuv/g7D8xUFkF+Zq8bYTI?= =?us-ascii?Q?I08gS8u+jtbusJMtlT0c14IeYggLA5/nY1YjbHv6OcAkuOGdJR6R3PVmBZ1h?= =?us-ascii?Q?/sk23BwcXPnB/SOnWIChHw3bDm1+dG21B8TOq7GEqt8heVvGemetsJjZjTo5?= =?us-ascii?Q?wTCskuZJjpopFYEo9AC9owpdoZQvZx5TFZw/1Zur+g353B0hVAtOUjDJc9Gc?= =?us-ascii?Q?JN6XYDum5I2PYbHnKfHC5gMXWmUls/HFQgBBGOaQVchRs0LocqaFDCbksBvN?= =?us-ascii?Q?nkzptmmvb/Pa8qhwSrjgMJxTYelJmWSkn4kPVm0lUzVBhrOp2yVSFEdeH5k6?= =?us-ascii?Q?SNzxvvnJqRCTn/1Ju9P8HTb9aj3UiQXpM5W4WeBXi6jJeLQ8bLXXcwPlCFL4?= =?us-ascii?Q?mIi1QKGjFq4f14zHo7hnSqGc07E3PDnMY4x+DkdZeNRH2KbUbft3wE9bwDeM?= =?us-ascii?Q?hcgf01Xc5UVoFkDdtN7BHxxrxXueKPaoXJf9jUXVbRrs9UrDiNRkbu2eMgW4?= =?us-ascii?Q?bmVEc7oRRtAfR26vHJcsIPPqaWMOIV0cm2lhyru31Lbc6xV4EaCJSmS4S9It?= =?us-ascii?Q?tvcSYvrttM/CHYpozqiMRN7EbY0dZHaoeC2IFB46Dznd7ovUihRISq2neBon?= =?us-ascii?Q?rStttWrbVggwh8IjwKG+dFR51PiPtwfnM5?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 6:UvjnwJWRbsIby4fFe5jaLMwI0EpVD8YBoVal+gSXGbyAW4/9/tt/OBhxFgdS8RHfhm9tStljwB0nbiM9+Spgj+N17Ci6Cq1cJOjv2oWelRF6D/8NCjZ51vPueyi9PyI82eV0LC6A6rwRSDtQrKFno16kP9WaTo9cFgIRrbAXyZ99wGMuTmRpzagdg82Z7fy4djASAcriBevVFrb96QJzB25JL66r/+QhWUBDYA2wC0g7aD4rgWzcibGA17NRXwhZC0AJHIWVBOMlFYZ+gHzJV56B1aykiMM+FWutI/7k0DVv0HINCluTM0KN/RSncaMGuL21k6Er4qzzrf9Ib/tu4gHaXFMSTIfCkzPRttTUHvyKFO9uutCMQk0cMzW3tNpXfqB59g1tsKryKyyjBijmhIasRy0LHXLsjKPUsvaMl7hyrh3qGOGSPQhyPybO3p17bEAtwtQHBWrA/GMfCojG4XfAHFulx94DczTV+aD27Ys=; 5:Gwf2FUOb89oUeH3DJTKXcQwuqMAffWH1ToFxWeB7oc4WFykUfhDOSG1TYMDGBUx6ZDb6/F58DBCFETkgud77L514uqy916bfLU6WiD0UWCKuej2O6oncbFw8ANCBJZQdbaMXLUgEtYx5CXjJgppu4srYm1Rrdcp/XRhvfp2BJ6E=; 24:xq0Sh3kdjYr7nnyqQYp8PaHmDFkCUakk4pvOalzgMr8q5LdDYF3dxKa9ld/Qc0701JnPw9ZPJAYF7OMn/DrW5VafmeEob3b2q9rlhxavBpA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB537; 7:9nTPg3+ctInJAQGIcjGDD6Gv+W0ZI3wxYlwaeOc5GRfPve0jxswgDg+gbWWB1YNEbAJCaeIi62Ym2UT2Z2rlk2VMP0vfe3cYS5C7Zke/IHUM23ZYNkb4anbT/cLwx33h2/Ni+oDAEVcSO49KJDlLhYV/lYxNvPrR9D/3/0ZOu7tUPHnrK3BFp3h7TG2bD+8tTWSdF8k7Vlz4l2iKDuNyhrQVEy9WeqjVCGlmZjqRkr8HBqSDVFj7pvTJY1Tfdg1Pody/NOnwkVHUl1xGHeri8hphtOsJvm3BcsrVAb3vcBO+jI46TyPUsbWh+CzUM9hOqNSe/X1Qwnq/HR3ijtvAR/lOQnkG3nA65qkPMoaMFfpwmrWxWjRgOeNBmWHCqsK5uLCtT8xGKsFk/HpuIhHwz5voAD8THwtXSJW33zU6wG1KH3vC5xz3Nk6hax0zDAKdy/zKIi1DwAZ+nfHBq8KfHw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2016 06:40:32.7655 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB537 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161201_224041_676297_5894D416 X-CRM114-Status: GOOD ( 12.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, kernel@pengutronix.de, daniel.lezcano@linaro.org, linux-gpio@vger.kernel.org, p.zabel@pengutronix.de, fabio.estevam@nxp.com, tglx@linutronix.de, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ping.bai@nxp.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add pinctrl driver support for imx6sll. Signed-off-by: Bai Ping --- arch/arm/mach-imx/Kconfig | 1 + drivers/pinctrl/freescale/Kconfig | 7 + drivers/pinctrl/freescale/Makefile | 1 + drivers/pinctrl/freescale/pinctrl-imx6sll.c | 385 ++++++++++++++++++++++++++++ 4 files changed, 394 insertions(+) create mode 100644 drivers/pinctrl/freescale/pinctrl-imx6sll.c diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 33bcfda..c907d9f 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -514,6 +514,7 @@ config SOC_IMX6SL config SOC_IMX6SLL bool "i.MX6 SoloLiteLite support" + select PINCTRL_IMX6SLL select SOC_IMX6 help diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig index fc8cbf6..93ca39f 100644 --- a/drivers/pinctrl/freescale/Kconfig +++ b/drivers/pinctrl/freescale/Kconfig @@ -81,6 +81,13 @@ config PINCTRL_IMX6SL help Say Y here to enable the imx6sl pinctrl driver +config PINCTRL_IMX6SLL + bool "IMX6SL pinctrl driver" + depends on SOC_IMX6SLL + select PINCTRL_IMX + help + Say Y here to enable the imx6sl pinctrl driver + config PINCTRL_IMX6SX bool "IMX6SX pinctrl driver" depends on SOC_IMX6SX diff --git a/drivers/pinctrl/freescale/Makefile b/drivers/pinctrl/freescale/Makefile index d44c9e2..5f23765 100644 --- a/drivers/pinctrl/freescale/Makefile +++ b/drivers/pinctrl/freescale/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_PINCTRL_IMX53) += pinctrl-imx53.o obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6q.o obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6dl.o obj-$(CONFIG_PINCTRL_IMX6SL) += pinctrl-imx6sl.o +obj-$(CONFIG_PINCTRL_IMX6SLL) += pinctrl-imx6sll.o obj-$(CONFIG_PINCTRL_IMX6SX) += pinctrl-imx6sx.o obj-$(CONFIG_PINCTRL_IMX6UL) += pinctrl-imx6ul.o obj-$(CONFIG_PINCTRL_IMX7D) += pinctrl-imx7d.o diff --git a/drivers/pinctrl/freescale/pinctrl-imx6sll.c b/drivers/pinctrl/freescale/pinctrl-imx6sll.c new file mode 100644 index 0000000..2f4baff --- /dev/null +++ b/drivers/pinctrl/freescale/pinctrl-imx6sll.c @@ -0,0 +1,385 @@ +/* + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * Author: Bai Ping + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "pinctrl-imx.h" + +enum imx6sll_pads { + MX6SLL_PAD_RESERVE0 = 0, + MX6SLL_PAD_RESERVE1 = 1, + MX6SLL_PAD_RESERVE2 = 2, + MX6SLL_PAD_RESERVE3 = 3, + MX6SLL_PAD_RESERVE4 = 4, + MX6SLL_PAD_WDOG_B = 5, + MX6SLL_PAD_REF_CLK_24M = 6, + MX6SLL_PAD_REF_CLK_32K = 7, + MX6SLL_PAD_PWM1 = 8, + MX6SLL_PAD_KEY_COL0 = 9, + MX6SLL_PAD_KEY_ROW0 = 10, + MX6SLL_PAD_KEY_COL1 = 11, + MX6SLL_PAD_KEY_ROW1 = 12, + MX6SLL_PAD_KEY_COL2 = 13, + MX6SLL_PAD_KEY_ROW2 = 14, + MX6SLL_PAD_KEY_COL3 = 15, + MX6SLL_PAD_KEY_ROW3 = 16, + MX6SLL_PAD_KEY_COL4 = 17, + MX6SLL_PAD_KEY_ROW4 = 18, + MX6SLL_PAD_KEY_COL5 = 19, + MX6SLL_PAD_KEY_ROW5 = 20, + MX6SLL_PAD_KEY_COL6 = 21, + MX6SLL_PAD_KEY_ROW6 = 22, + MX6SLL_PAD_KEY_COL7 = 23, + MX6SLL_PAD_KEY_ROW7 = 24, + MX6SLL_PAD_EPDC_DATA00 = 25, + MX6SLL_PAD_EPDC_DATA01 = 26, + MX6SLL_PAD_EPDC_DATA02 = 27, + MX6SLL_PAD_EPDC_DATA03 = 28, + MX6SLL_PAD_EPDC_DATA04 = 29, + MX6SLL_PAD_EPDC_DATA05 = 30, + MX6SLL_PAD_EPDC_DATA06 = 31, + MX6SLL_PAD_EPDC_DATA07 = 32, + MX6SLL_PAD_EPDC_DATA08 = 33, + MX6SLL_PAD_EPDC_DATA09 = 34, + MX6SLL_PAD_EPDC_DATA10 = 35, + MX6SLL_PAD_EPDC_DATA11 = 36, + MX6SLL_PAD_EPDC_DATA12 = 37, + MX6SLL_PAD_EPDC_DATA13 = 38, + MX6SLL_PAD_EPDC_DATA14 = 39, + MX6SLL_PAD_EPDC_DATA15 = 40, + MX6SLL_PAD_EPDC_SDCLK = 41, + MX6SLL_PAD_EPDC_SDLE = 42, + MX6SLL_PAD_EPDC_SDOE = 43, + MX6SLL_PAD_EPDC_SDSHR = 44, + MX6SLL_PAD_EPDC_SDCE0 = 45, + MX6SLL_PAD_EPDC_SDCE1 = 46, + MX6SLL_PAD_EPDC_SDCE2 = 47, + MX6SLL_PAD_EPDC_SDCE3 = 48, + MX6SLL_PAD_EPDC_GDCLK = 49, + MX6SLL_PAD_EPDC_GDOE = 50, + MX6SLL_PAD_EPDC_GDRL = 51, + MX6SLL_PAD_EPDC_GDSP = 52, + MX6SLL_PAD_EPDC_VCOM0 = 53, + MX6SLL_PAD_EPDC_VCOM1 = 54, + MX6SLL_PAD_EPDC_BDR0 = 55, + MX6SLL_PAD_EPDC_BDR1 = 56, + MX6SLL_PAD_EPDC_PWR_CTRL0 = 57, + MX6SLL_PAD_EPDC_PWR_CTRL1 = 58, + MX6SLL_PAD_EPDC_PWR_CTRL2 = 59, + MX6SLL_PAD_EPDC_PWR_CTRL3 = 60, + MX6SLL_PAD_EPDC_PWR_COM = 61, + MX6SLL_PAD_EPDC_PWR_INT = 62, + MX6SLL_PAD_EPDC_PWR_STAT = 63, + MX6SLL_PAD_EPDC_PWR_WAKE = 64, + MX6SLL_PAD_LCD_CLK = 65, + MX6SLL_PAD_LCD_ENABLE = 66, + MX6SLL_PAD_LCD_HSYNC = 67, + MX6SLL_PAD_LCD_VSYNC = 68, + MX6SLL_PAD_LCD_RESET = 69, + MX6SLL_PAD_LCD_DATA00 = 70, + MX6SLL_PAD_LCD_DATA01 = 71, + MX6SLL_PAD_LCD_DATA02 = 72, + MX6SLL_PAD_LCD_DATA03 = 73, + MX6SLL_PAD_LCD_DATA04 = 74, + MX6SLL_PAD_LCD_DATA05 = 75, + MX6SLL_PAD_LCD_DATA06 = 76, + MX6SLL_PAD_LCD_DATA07 = 77, + MX6SLL_PAD_LCD_DATA08 = 78, + MX6SLL_PAD_LCD_DATA09 = 79, + MX6SLL_PAD_LCD_DATA10 = 80, + MX6SLL_PAD_LCD_DATA11 = 81, + MX6SLL_PAD_LCD_DATA12 = 82, + MX6SLL_PAD_LCD_DATA13 = 83, + MX6SLL_PAD_LCD_DATA14 = 84, + MX6SLL_PAD_LCD_DATA15 = 85, + MX6SLL_PAD_LCD_DATA16 = 86, + MX6SLL_PAD_LCD_DATA17 = 87, + MX6SLL_PAD_LCD_DATA18 = 88, + MX6SLL_PAD_LCD_DATA19 = 89, + MX6SLL_PAD_LCD_DATA20 = 90, + MX6SLL_PAD_LCD_DATA21 = 91, + MX6SLL_PAD_LCD_DATA22 = 92, + MX6SLL_PAD_LCD_DATA23 = 93, + MX6SLL_PAD_AUD_RXFS = 94, + MX6SLL_PAD_AUD_RXC = 95, + MX6SLL_PAD_AUD_RXD = 96, + MX6SLL_PAD_AUD_TXC = 97, + MX6SLL_PAD_AUD_TXFS = 98, + MX6SLL_PAD_AUD_TXD = 99, + MX6SLL_PAD_AUD_MCLK = 100, + MX6SLL_PAD_UART1_RXD = 101, + MX6SLL_PAD_UART1_TXD = 102, + MX6SLL_PAD_I2C1_SCL = 103, + MX6SLL_PAD_I2C1_SDA = 104, + MX6SLL_PAD_I2C2_SCL = 105, + MX6SLL_PAD_I2C2_SDA = 106, + MX6SLL_PAD_ECSPI1_SCLK = 107, + MX6SLL_PAD_ECSPI1_MOSI = 108, + MX6SLL_PAD_ECSPI1_MISO = 109, + MX6SLL_PAD_ECSPI1_SS0 = 110, + MX6SLL_PAD_ECSPI2_SCLK = 111, + MX6SLL_PAD_ECSPI2_MOSI = 112, + MX6SLL_PAD_ECSPI2_MISO = 113, + MX6SLL_PAD_ECSPI2_SS0 = 114, + MX6SLL_PAD_SD1_CLK = 115, + MX6SLL_PAD_SD1_CMD = 116, + MX6SLL_PAD_SD1_DATA0 = 117, + MX6SLL_PAD_SD1_DATA1 = 118, + MX6SLL_PAD_SD1_DATA2 = 119, + MX6SLL_PAD_SD1_DATA3 = 120, + MX6SLL_PAD_SD1_DATA4 = 121, + MX6SLL_PAD_SD1_DATA5 = 122, + MX6SLL_PAD_SD1_DATA6 = 123, + MX6SLL_PAD_SD1_DATA7 = 124, + MX6SLL_PAD_SD2_RESET = 125, + MX6SLL_PAD_SD2_CLK = 126, + MX6SLL_PAD_SD2_CMD = 127, + MX6SLL_PAD_SD2_DATA0 = 128, + MX6SLL_PAD_SD2_DATA1 = 129, + MX6SLL_PAD_SD2_DATA2 = 130, + MX6SLL_PAD_SD2_DATA3 = 131, + MX6SLL_PAD_SD2_DATA4 = 132, + MX6SLL_PAD_SD2_DATA5 = 133, + MX6SLL_PAD_SD2_DATA6 = 134, + MX6SLL_PAD_SD2_DATA7 = 135, + MX6SLL_PAD_SD3_CLK = 136, + MX6SLL_PAD_SD3_CMD = 137, + MX6SLL_PAD_SD3_DATA0 = 138, + MX6SLL_PAD_SD3_DATA1 = 139, + MX6SLL_PAD_SD3_DATA2 = 140, + MX6SLL_PAD_SD3_DATA3 = 141, + MX6SLL_PAD_GPIO4_IO20 = 142, + MX6SLL_PAD_GPIO4_IO21 = 143, + MX6SLL_PAD_GPIO4_IO19 = 144, + MX6SLL_PAD_GPIO4_IO25 = 145, + MX6SLL_PAD_GPIO4_IO18 = 146, + MX6SLL_PAD_GPIO4_IO24 = 147, + MX6SLL_PAD_GPIO4_IO23 = 148, + MX6SLL_PAD_GPIO4_IO17 = 149, + MX6SLL_PAD_GPIO4_IO22 = 150, + MX6SLL_PAD_GPIO4_IO16 = 151, + MX6SLL_PAD_GPIO4_IO26 = 152, +}; + +enum imx6sll_lpsr_pads { + MX6SLL_PAD_SNVS_TAMPER = 0, + MX6SLL_PAD_SNVS_PMIC_ON_REQ = 1, + MX6SLL_PAD_SNVS_PMIC_STBY_REQ = 2, + MX6SLL_PAD_SNVS_BOOT_MODE0 = 3, + MX6SLL_PAD_SNVS_BOOT_MODE1 = 4, +}; + +/* Pad names for the pinmux subsystem */ +static const struct pinctrl_pin_desc imx6sll_pinctrl_pads[] = { + IMX_PINCTRL_PIN(MX6SLL_PAD_RESERVE0), + IMX_PINCTRL_PIN(MX6SLL_PAD_RESERVE1), + IMX_PINCTRL_PIN(MX6SLL_PAD_RESERVE2), + IMX_PINCTRL_PIN(MX6SLL_PAD_RESERVE3), + IMX_PINCTRL_PIN(MX6SLL_PAD_RESERVE4), + IMX_PINCTRL_PIN(MX6SLL_PAD_WDOG_B), + IMX_PINCTRL_PIN(MX6SLL_PAD_REF_CLK_24M), + IMX_PINCTRL_PIN(MX6SLL_PAD_REF_CLK_32K), + IMX_PINCTRL_PIN(MX6SLL_PAD_PWM1), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL0), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW0), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL1), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW1), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL2), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW2), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL3), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW3), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL4), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW4), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL5), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW5), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL6), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW6), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_COL7), + IMX_PINCTRL_PIN(MX6SLL_PAD_KEY_ROW7), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA00), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA01), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA02), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA03), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA04), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA05), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA06), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA07), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA08), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA09), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA10), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA11), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA12), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA13), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA14), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_DATA15), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDCLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDLE), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDOE), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDSHR), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDCE0), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDCE1), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDCE2), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_SDCE3), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_GDCLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_GDOE), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_GDRL), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_GDSP), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_VCOM0), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_VCOM1), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_BDR0), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_BDR1), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_CTRL0), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_CTRL1), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_CTRL2), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_CTRL3), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_COM), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_INT), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_STAT), + IMX_PINCTRL_PIN(MX6SLL_PAD_EPDC_PWR_WAKE), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_CLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_ENABLE), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_HSYNC), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_VSYNC), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_RESET), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA00), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA01), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA02), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA03), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA04), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA05), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA06), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA07), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA08), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA09), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA10), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA11), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA12), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA13), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA14), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA15), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA16), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA17), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA18), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA19), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA20), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA21), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA22), + IMX_PINCTRL_PIN(MX6SLL_PAD_LCD_DATA23), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_RXFS), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_RXC), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_RXD), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_TXC), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_TXFS), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_TXD), + IMX_PINCTRL_PIN(MX6SLL_PAD_AUD_MCLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_UART1_RXD), + IMX_PINCTRL_PIN(MX6SLL_PAD_UART1_TXD), + IMX_PINCTRL_PIN(MX6SLL_PAD_I2C1_SCL), + IMX_PINCTRL_PIN(MX6SLL_PAD_I2C1_SDA), + IMX_PINCTRL_PIN(MX6SLL_PAD_I2C2_SCL), + IMX_PINCTRL_PIN(MX6SLL_PAD_I2C2_SDA), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI1_SCLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI1_MOSI), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI1_MISO), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI1_SS0), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI2_SCLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI2_MOSI), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI2_MISO), + IMX_PINCTRL_PIN(MX6SLL_PAD_ECSPI2_SS0), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_CLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_CMD), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA0), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA1), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA2), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA3), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA4), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA5), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA6), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD1_DATA7), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_RESET), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_CLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_CMD), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA0), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA1), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA2), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA3), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA4), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA5), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA6), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD2_DATA7), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_CLK), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_CMD), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_DATA0), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_DATA1), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_DATA2), + IMX_PINCTRL_PIN(MX6SLL_PAD_SD3_DATA3), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO20), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO21), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO19), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO25), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO18), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO24), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO23), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO17), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO22), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO16), + IMX_PINCTRL_PIN(MX6SLL_PAD_GPIO4_IO26), +}; + +static struct imx_pinctrl_soc_info imx6sll_pinctrl_info = { + .pins = imx6sll_pinctrl_pads, + .npins = ARRAY_SIZE(imx6sll_pinctrl_pads), + .gpr_compatible = "fsl,imx6sll-iomuxc-gpr", +}; + +static const struct of_device_id imx6sll_pinctrl_of_match[] = { + { .compatible = "fsl,imx6sll-iomuxc", .data = &imx6sll_pinctrl_info, }, + { /* sentinel */ } +}; + +static int imx6sll_pinctrl_probe(struct platform_device *pdev) +{ + const struct of_device_id *match; + struct imx_pinctrl_soc_info *pinctrl_info; + + match = of_match_device(imx6sll_pinctrl_of_match, &pdev->dev); + + if (!match) + return -ENODEV; + + pinctrl_info = (struct imx_pinctrl_soc_info *) match->data; + + return imx_pinctrl_probe(pdev, pinctrl_info); +} + +static struct platform_driver imx6sll_pinctrl_driver = { + .driver = { + .name = "imx6sll-pinctrl", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(imx6sll_pinctrl_of_match), + }, + .probe = imx6sll_pinctrl_probe, +}; + +static int __init imx6sll_pinctrl_init(void) +{ + return platform_driver_register(&imx6sll_pinctrl_driver); +} +arch_initcall(imx6sll_pinctrl_init); + +static void __exit imx6sll_pinctrl_exit(void) +{ + platform_driver_unregister(&imx6sll_pinctrl_driver); +} +module_exit(imx6sll_pinctrl_exit);