xref: /OK3568_Linux_fs/kernel/drivers/pinctrl/freescale/pinctrl-imx8qxp.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0+
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2016 Freescale Semiconductor, Inc.
4*4882a593Smuzhiyun  * Copyright 2017-2018 NXP
5*4882a593Smuzhiyun  *	Dong Aisheng <aisheng.dong@nxp.com>
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <dt-bindings/pinctrl/pads-imx8qxp.h>
9*4882a593Smuzhiyun #include <linux/err.h>
10*4882a593Smuzhiyun #include <linux/firmware/imx/sci.h>
11*4882a593Smuzhiyun #include <linux/init.h>
12*4882a593Smuzhiyun #include <linux/io.h>
13*4882a593Smuzhiyun #include <linux/module.h>
14*4882a593Smuzhiyun #include <linux/of.h>
15*4882a593Smuzhiyun #include <linux/of_device.h>
16*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #include "pinctrl-imx.h"
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun static const struct pinctrl_pin_desc imx8qxp_pinctrl_pads[] = {
21*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_PERST_B),
22*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_CLKREQ_B),
23*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_WAKE_B),
24*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_PCIESEP),
25*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC0),
26*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC1),
27*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC2),
28*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC3),
29*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_3V3_USB3IO),
30*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_CLK),
31*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_CMD),
32*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA0),
33*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA1),
34*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA2),
35*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA3),
36*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_SD1FIX0),
37*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA4),
38*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA5),
39*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA6),
40*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA7),
41*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_STROBE),
42*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_RESET_B),
43*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_SD1FIX1),
44*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_RESET_B),
45*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_VSELECT),
46*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CTL_NAND_RE_P_N),
47*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_WP),
48*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CD_B),
49*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CTL_NAND_DQS_P_N),
50*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_VSELSEP),
51*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CLK),
52*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CMD),
53*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA0),
54*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA1),
55*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA2),
56*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA3),
57*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_VSEL3),
58*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXC),
59*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TX_CTL),
60*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD0),
61*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD1),
62*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD2),
63*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD3),
64*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0),
65*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXC),
66*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RX_CTL),
67*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD0),
68*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD1),
69*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD2),
70*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD3),
71*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1),
72*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_REFCLK_125M_25M),
73*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_MDIO),
74*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ENET0_MDC),
75*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIOCT),
76*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_FSR),
77*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_FST),
78*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_SCKR),
79*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_SCKT),
80*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX0),
81*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX1),
82*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX2_RX3),
83*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX3_RX2),
84*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX4_RX1),
85*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX5_RX0),
86*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_RX),
87*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_TX),
88*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_EXT_CLK),
89*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHB),
90*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SCK),
91*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SDO),
92*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SDI),
93*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI3_CS0),
94*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI3_CS1),
95*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MCLK_IN1),
96*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MCLK_IN0),
97*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MCLK_OUT0),
98*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART1_TX),
99*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART1_RX),
100*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART1_RTS_B),
101*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART1_CTS_B),
102*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHK),
103*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXD),
104*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXC),
105*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI0_RXD),
106*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXFS),
107*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXD),
108*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXC),
109*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXFS),
110*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI2_CS0),
111*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SDO),
112*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SDI),
113*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SCK),
114*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SCK),
115*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SDI),
116*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SDO),
117*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI0_CS1),
118*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SPI0_CS0),
119*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHT),
120*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN1),
121*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN0),
122*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN3),
123*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN2),
124*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN5),
125*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN4),
126*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN0_RX),
127*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN0_TX),
128*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN1_RX),
129*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN1_TX),
130*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN2_RX),
131*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN2_TX),
132*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART0_RX),
133*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART0_TX),
134*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART2_TX),
135*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_UART2_RX),
136*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIOLH),
137*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_I2C0_SCL),
138*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_I2C0_SDA),
139*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_GPIO0_00),
140*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_GPIO0_01),
141*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_I2C0_SCL),
142*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_I2C0_SDA),
143*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_GPIO0_00),
144*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_GPIO0_01),
145*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_MIPIDSIGPIO),
146*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_JTAG_TRST_B),
147*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PMIC_I2C_SCL),
148*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PMIC_I2C_SDA),
149*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_PMIC_INT_B),
150*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_GPIO0_00),
151*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_GPIO0_01),
152*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_PMIC_STANDBY),
153*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE0),
154*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE1),
155*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE2),
156*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE3),
157*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D00),
158*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D01),
159*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D02),
160*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D03),
161*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D04),
162*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D05),
163*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D06),
164*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_D07),
165*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_HSYNC),
166*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_VSYNC),
167*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_PCLK),
168*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_MCLK),
169*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_EN),
170*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_CSI_RESET),
171*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHD),
172*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_MCLK_OUT),
173*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_I2C0_SCL),
174*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_I2C0_SDA),
175*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_GPIO0_01),
176*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_GPIO0_00),
177*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA0),
178*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA1),
179*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA2),
180*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA3),
181*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DQS),
182*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SS0_B),
183*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SS1_B),
184*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SCLK),
185*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_QSPI0A),
186*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SCLK),
187*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA0),
188*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA1),
189*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA2),
190*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA3),
191*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DQS),
192*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SS0_B),
193*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SS1_B),
194*4882a593Smuzhiyun 	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_QSPI0B),
195*4882a593Smuzhiyun };
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun static struct imx_pinctrl_soc_info imx8qxp_pinctrl_info = {
198*4882a593Smuzhiyun 	.pins = imx8qxp_pinctrl_pads,
199*4882a593Smuzhiyun 	.npins = ARRAY_SIZE(imx8qxp_pinctrl_pads),
200*4882a593Smuzhiyun 	.flags = IMX_USE_SCU,
201*4882a593Smuzhiyun 	.imx_pinconf_get = imx_pinconf_get_scu,
202*4882a593Smuzhiyun 	.imx_pinconf_set = imx_pinconf_set_scu,
203*4882a593Smuzhiyun 	.imx_pinctrl_parse_pin = imx_pinctrl_parse_pin_scu,
204*4882a593Smuzhiyun };
205*4882a593Smuzhiyun 
206*4882a593Smuzhiyun static const struct of_device_id imx8qxp_pinctrl_of_match[] = {
207*4882a593Smuzhiyun 	{ .compatible = "fsl,imx8qxp-iomuxc", },
208*4882a593Smuzhiyun 	{ /* sentinel */ }
209*4882a593Smuzhiyun };
210*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, imx8qxp_pinctrl_of_match);
211*4882a593Smuzhiyun 
imx8qxp_pinctrl_probe(struct platform_device * pdev)212*4882a593Smuzhiyun static int imx8qxp_pinctrl_probe(struct platform_device *pdev)
213*4882a593Smuzhiyun {
214*4882a593Smuzhiyun 	int ret;
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun 	ret = imx_pinctrl_sc_ipc_init(pdev);
217*4882a593Smuzhiyun 	if (ret)
218*4882a593Smuzhiyun 		return ret;
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun 	return imx_pinctrl_probe(pdev, &imx8qxp_pinctrl_info);
221*4882a593Smuzhiyun }
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun static struct platform_driver imx8qxp_pinctrl_driver = {
224*4882a593Smuzhiyun 	.driver = {
225*4882a593Smuzhiyun 		.name = "imx8qxp-pinctrl",
226*4882a593Smuzhiyun 		.of_match_table = of_match_ptr(imx8qxp_pinctrl_of_match),
227*4882a593Smuzhiyun 		.suppress_bind_attrs = true,
228*4882a593Smuzhiyun 	},
229*4882a593Smuzhiyun 	.probe = imx8qxp_pinctrl_probe,
230*4882a593Smuzhiyun };
231*4882a593Smuzhiyun 
imx8qxp_pinctrl_init(void)232*4882a593Smuzhiyun static int __init imx8qxp_pinctrl_init(void)
233*4882a593Smuzhiyun {
234*4882a593Smuzhiyun 	return platform_driver_register(&imx8qxp_pinctrl_driver);
235*4882a593Smuzhiyun }
236*4882a593Smuzhiyun arch_initcall(imx8qxp_pinctrl_init);
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun MODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
239*4882a593Smuzhiyun MODULE_DESCRIPTION("NXP i.MX8QXP pinctrl driver");
240*4882a593Smuzhiyun MODULE_LICENSE("GPL v2");
241