162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2016 Freescale Semiconductor, Inc.
462306a36Sopenharmony_ci * Copyright 2017-2018 NXP
562306a36Sopenharmony_ci *	Dong Aisheng <aisheng.dong@nxp.com>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <dt-bindings/pinctrl/pads-imx8qxp.h>
962306a36Sopenharmony_ci#include <linux/err.h>
1062306a36Sopenharmony_ci#include <linux/firmware/imx/sci.h>
1162306a36Sopenharmony_ci#include <linux/init.h>
1262306a36Sopenharmony_ci#include <linux/io.h>
1362306a36Sopenharmony_ci#include <linux/mod_devicetable.h>
1462306a36Sopenharmony_ci#include <linux/module.h>
1562306a36Sopenharmony_ci#include <linux/of.h>
1662306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
1762306a36Sopenharmony_ci#include <linux/platform_device.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "pinctrl-imx.h"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistatic const struct pinctrl_pin_desc imx8qxp_pinctrl_pads[] = {
2262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_PERST_B),
2362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_CLKREQ_B),
2462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PCIE_CTRL0_WAKE_B),
2562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_PCIESEP),
2662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC0),
2762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC1),
2862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC2),
2962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USB_SS3_TC3),
3062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_3V3_USB3IO),
3162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_CLK),
3262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_CMD),
3362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA0),
3462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA1),
3562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA2),
3662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA3),
3762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_SD1FIX0),
3862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA4),
3962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA5),
4062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA6),
4162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_DATA7),
4262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_STROBE),
4362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_EMMC0_RESET_B),
4462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_SD1FIX1),
4562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_RESET_B),
4662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_VSELECT),
4762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CTL_NAND_RE_P_N),
4862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_WP),
4962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CD_B),
5062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CTL_NAND_DQS_P_N),
5162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_VSELSEP),
5262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CLK),
5362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_CMD),
5462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA0),
5562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA1),
5662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA2),
5762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_USDHC1_DATA3),
5862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_VSEL3),
5962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXC),
6062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TX_CTL),
6162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD0),
6262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD1),
6362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD2),
6462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_TXD3),
6562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0),
6662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXC),
6762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RX_CTL),
6862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD0),
6962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD1),
7062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD2),
7162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_RGMII_RXD3),
7262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1),
7362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_REFCLK_125M_25M),
7462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_MDIO),
7562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ENET0_MDC),
7662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIOCT),
7762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_FSR),
7862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_FST),
7962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_SCKR),
8062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_SCKT),
8162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX0),
8262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX1),
8362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX2_RX3),
8462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX3_RX2),
8562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX4_RX1),
8662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ESAI0_TX5_RX0),
8762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_RX),
8862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_TX),
8962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPDIF0_EXT_CLK),
9062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHB),
9162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SCK),
9262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SDO),
9362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI3_SDI),
9462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI3_CS0),
9562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI3_CS1),
9662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MCLK_IN1),
9762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MCLK_IN0),
9862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MCLK_OUT0),
9962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART1_TX),
10062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART1_RX),
10162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART1_RTS_B),
10262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART1_CTS_B),
10362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHK),
10462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXD),
10562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXC),
10662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI0_RXD),
10762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI0_TXFS),
10862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXD),
10962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXC),
11062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SAI1_RXFS),
11162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI2_CS0),
11262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SDO),
11362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SDI),
11462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI2_SCK),
11562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SCK),
11662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SDI),
11762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI0_SDO),
11862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI0_CS1),
11962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SPI0_CS0),
12062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHT),
12162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN1),
12262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN0),
12362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN3),
12462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN2),
12562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN5),
12662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_ADC_IN4),
12762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN0_RX),
12862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN0_TX),
12962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN1_RX),
13062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN1_TX),
13162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN2_RX),
13262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_FLEXCAN2_TX),
13362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART0_RX),
13462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART0_TX),
13562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART2_TX),
13662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_UART2_RX),
13762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIOLH),
13862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_I2C0_SCL),
13962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_I2C0_SDA),
14062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_GPIO0_00),
14162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI0_GPIO0_01),
14262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_I2C0_SCL),
14362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_I2C0_SDA),
14462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_GPIO0_00),
14562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_DSI1_GPIO0_01),
14662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_MIPIDSIGPIO),
14762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_JTAG_TRST_B),
14862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PMIC_I2C_SCL),
14962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PMIC_I2C_SDA),
15062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_PMIC_INT_B),
15162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_GPIO0_00),
15262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_GPIO0_01),
15362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_PMIC_STANDBY),
15462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE0),
15562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE1),
15662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE2),
15762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_SCU_BOOT_MODE3),
15862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D00),
15962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D01),
16062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D02),
16162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D03),
16262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D04),
16362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D05),
16462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D06),
16562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_D07),
16662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_HSYNC),
16762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_VSYNC),
16862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_PCLK),
16962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_MCLK),
17062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_EN),
17162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_CSI_RESET),
17262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHD),
17362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_MCLK_OUT),
17462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_I2C0_SCL),
17562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_I2C0_SDA),
17662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_GPIO0_01),
17762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_MIPI_CSI0_GPIO0_00),
17862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA0),
17962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA1),
18062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA2),
18162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DATA3),
18262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_DQS),
18362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SS0_B),
18462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SS1_B),
18562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0A_SCLK),
18662306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_QSPI0A),
18762306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SCLK),
18862306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA0),
18962306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA1),
19062306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA2),
19162306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DATA3),
19262306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_DQS),
19362306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SS0_B),
19462306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_QSPI0B_SS1_B),
19562306a36Sopenharmony_ci	IMX_PINCTRL_PIN(IMX8QXP_COMP_CTL_GPIO_1V8_3V3_QSPI0B),
19662306a36Sopenharmony_ci};
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_cistatic const struct imx_pinctrl_soc_info imx8qxp_pinctrl_info = {
19962306a36Sopenharmony_ci	.pins = imx8qxp_pinctrl_pads,
20062306a36Sopenharmony_ci	.npins = ARRAY_SIZE(imx8qxp_pinctrl_pads),
20162306a36Sopenharmony_ci	.flags = IMX_USE_SCU,
20262306a36Sopenharmony_ci	.imx_pinconf_get = imx_pinconf_get_scu,
20362306a36Sopenharmony_ci	.imx_pinconf_set = imx_pinconf_set_scu,
20462306a36Sopenharmony_ci	.imx_pinctrl_parse_pin = imx_pinctrl_parse_pin_scu,
20562306a36Sopenharmony_ci};
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_cistatic const struct of_device_id imx8qxp_pinctrl_of_match[] = {
20862306a36Sopenharmony_ci	{ .compatible = "fsl,imx8qxp-iomuxc", },
20962306a36Sopenharmony_ci	{ /* sentinel */ }
21062306a36Sopenharmony_ci};
21162306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, imx8qxp_pinctrl_of_match);
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_cistatic int imx8qxp_pinctrl_probe(struct platform_device *pdev)
21462306a36Sopenharmony_ci{
21562306a36Sopenharmony_ci	int ret;
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci	ret = imx_pinctrl_sc_ipc_init(pdev);
21862306a36Sopenharmony_ci	if (ret)
21962306a36Sopenharmony_ci		return ret;
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci	return imx_pinctrl_probe(pdev, &imx8qxp_pinctrl_info);
22262306a36Sopenharmony_ci}
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_cistatic struct platform_driver imx8qxp_pinctrl_driver = {
22562306a36Sopenharmony_ci	.driver = {
22662306a36Sopenharmony_ci		.name = "imx8qxp-pinctrl",
22762306a36Sopenharmony_ci		.of_match_table = imx8qxp_pinctrl_of_match,
22862306a36Sopenharmony_ci		.suppress_bind_attrs = true,
22962306a36Sopenharmony_ci	},
23062306a36Sopenharmony_ci	.probe = imx8qxp_pinctrl_probe,
23162306a36Sopenharmony_ci};
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_cistatic int __init imx8qxp_pinctrl_init(void)
23462306a36Sopenharmony_ci{
23562306a36Sopenharmony_ci	return platform_driver_register(&imx8qxp_pinctrl_driver);
23662306a36Sopenharmony_ci}
23762306a36Sopenharmony_ciarch_initcall(imx8qxp_pinctrl_init);
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ciMODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
24062306a36Sopenharmony_ciMODULE_DESCRIPTION("NXP i.MX8QXP pinctrl driver");
24162306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
242