162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci//
362306a36Sopenharmony_ci// Freescale i.MX28 pinctrl driver
462306a36Sopenharmony_ci//
562306a36Sopenharmony_ci// Author: Shawn Guo <shawn.guo@linaro.org>
662306a36Sopenharmony_ci// Copyright 2012 Freescale Semiconductor, Inc.
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/init.h>
962306a36Sopenharmony_ci#include <linux/mod_devicetable.h>
1062306a36Sopenharmony_ci#include <linux/platform_device.h>
1162306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
1262306a36Sopenharmony_ci#include "pinctrl-mxs.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cienum imx28_pin_enum {
1562306a36Sopenharmony_ci	GPMI_D00	= PINID(0, 0),
1662306a36Sopenharmony_ci	GPMI_D01	= PINID(0, 1),
1762306a36Sopenharmony_ci	GPMI_D02	= PINID(0, 2),
1862306a36Sopenharmony_ci	GPMI_D03	= PINID(0, 3),
1962306a36Sopenharmony_ci	GPMI_D04	= PINID(0, 4),
2062306a36Sopenharmony_ci	GPMI_D05	= PINID(0, 5),
2162306a36Sopenharmony_ci	GPMI_D06	= PINID(0, 6),
2262306a36Sopenharmony_ci	GPMI_D07	= PINID(0, 7),
2362306a36Sopenharmony_ci	GPMI_CE0N	= PINID(0, 16),
2462306a36Sopenharmony_ci	GPMI_CE1N	= PINID(0, 17),
2562306a36Sopenharmony_ci	GPMI_CE2N	= PINID(0, 18),
2662306a36Sopenharmony_ci	GPMI_CE3N	= PINID(0, 19),
2762306a36Sopenharmony_ci	GPMI_RDY0	= PINID(0, 20),
2862306a36Sopenharmony_ci	GPMI_RDY1	= PINID(0, 21),
2962306a36Sopenharmony_ci	GPMI_RDY2	= PINID(0, 22),
3062306a36Sopenharmony_ci	GPMI_RDY3	= PINID(0, 23),
3162306a36Sopenharmony_ci	GPMI_RDN	= PINID(0, 24),
3262306a36Sopenharmony_ci	GPMI_WRN	= PINID(0, 25),
3362306a36Sopenharmony_ci	GPMI_ALE	= PINID(0, 26),
3462306a36Sopenharmony_ci	GPMI_CLE	= PINID(0, 27),
3562306a36Sopenharmony_ci	GPMI_RESETN	= PINID(0, 28),
3662306a36Sopenharmony_ci	LCD_D00		= PINID(1, 0),
3762306a36Sopenharmony_ci	LCD_D01		= PINID(1, 1),
3862306a36Sopenharmony_ci	LCD_D02		= PINID(1, 2),
3962306a36Sopenharmony_ci	LCD_D03		= PINID(1, 3),
4062306a36Sopenharmony_ci	LCD_D04		= PINID(1, 4),
4162306a36Sopenharmony_ci	LCD_D05		= PINID(1, 5),
4262306a36Sopenharmony_ci	LCD_D06		= PINID(1, 6),
4362306a36Sopenharmony_ci	LCD_D07		= PINID(1, 7),
4462306a36Sopenharmony_ci	LCD_D08		= PINID(1, 8),
4562306a36Sopenharmony_ci	LCD_D09		= PINID(1, 9),
4662306a36Sopenharmony_ci	LCD_D10		= PINID(1, 10),
4762306a36Sopenharmony_ci	LCD_D11		= PINID(1, 11),
4862306a36Sopenharmony_ci	LCD_D12		= PINID(1, 12),
4962306a36Sopenharmony_ci	LCD_D13		= PINID(1, 13),
5062306a36Sopenharmony_ci	LCD_D14		= PINID(1, 14),
5162306a36Sopenharmony_ci	LCD_D15		= PINID(1, 15),
5262306a36Sopenharmony_ci	LCD_D16		= PINID(1, 16),
5362306a36Sopenharmony_ci	LCD_D17		= PINID(1, 17),
5462306a36Sopenharmony_ci	LCD_D18		= PINID(1, 18),
5562306a36Sopenharmony_ci	LCD_D19		= PINID(1, 19),
5662306a36Sopenharmony_ci	LCD_D20		= PINID(1, 20),
5762306a36Sopenharmony_ci	LCD_D21		= PINID(1, 21),
5862306a36Sopenharmony_ci	LCD_D22		= PINID(1, 22),
5962306a36Sopenharmony_ci	LCD_D23		= PINID(1, 23),
6062306a36Sopenharmony_ci	LCD_RD_E	= PINID(1, 24),
6162306a36Sopenharmony_ci	LCD_WR_RWN	= PINID(1, 25),
6262306a36Sopenharmony_ci	LCD_RS		= PINID(1, 26),
6362306a36Sopenharmony_ci	LCD_CS		= PINID(1, 27),
6462306a36Sopenharmony_ci	LCD_VSYNC	= PINID(1, 28),
6562306a36Sopenharmony_ci	LCD_HSYNC	= PINID(1, 29),
6662306a36Sopenharmony_ci	LCD_DOTCLK	= PINID(1, 30),
6762306a36Sopenharmony_ci	LCD_ENABLE	= PINID(1, 31),
6862306a36Sopenharmony_ci	SSP0_DATA0	= PINID(2, 0),
6962306a36Sopenharmony_ci	SSP0_DATA1	= PINID(2, 1),
7062306a36Sopenharmony_ci	SSP0_DATA2	= PINID(2, 2),
7162306a36Sopenharmony_ci	SSP0_DATA3	= PINID(2, 3),
7262306a36Sopenharmony_ci	SSP0_DATA4	= PINID(2, 4),
7362306a36Sopenharmony_ci	SSP0_DATA5	= PINID(2, 5),
7462306a36Sopenharmony_ci	SSP0_DATA6	= PINID(2, 6),
7562306a36Sopenharmony_ci	SSP0_DATA7	= PINID(2, 7),
7662306a36Sopenharmony_ci	SSP0_CMD	= PINID(2, 8),
7762306a36Sopenharmony_ci	SSP0_DETECT	= PINID(2, 9),
7862306a36Sopenharmony_ci	SSP0_SCK	= PINID(2, 10),
7962306a36Sopenharmony_ci	SSP1_SCK	= PINID(2, 12),
8062306a36Sopenharmony_ci	SSP1_CMD	= PINID(2, 13),
8162306a36Sopenharmony_ci	SSP1_DATA0	= PINID(2, 14),
8262306a36Sopenharmony_ci	SSP1_DATA3	= PINID(2, 15),
8362306a36Sopenharmony_ci	SSP2_SCK	= PINID(2, 16),
8462306a36Sopenharmony_ci	SSP2_MOSI	= PINID(2, 17),
8562306a36Sopenharmony_ci	SSP2_MISO	= PINID(2, 18),
8662306a36Sopenharmony_ci	SSP2_SS0	= PINID(2, 19),
8762306a36Sopenharmony_ci	SSP2_SS1	= PINID(2, 20),
8862306a36Sopenharmony_ci	SSP2_SS2	= PINID(2, 21),
8962306a36Sopenharmony_ci	SSP3_SCK	= PINID(2, 24),
9062306a36Sopenharmony_ci	SSP3_MOSI	= PINID(2, 25),
9162306a36Sopenharmony_ci	SSP3_MISO	= PINID(2, 26),
9262306a36Sopenharmony_ci	SSP3_SS0	= PINID(2, 27),
9362306a36Sopenharmony_ci	AUART0_RX	= PINID(3, 0),
9462306a36Sopenharmony_ci	AUART0_TX	= PINID(3, 1),
9562306a36Sopenharmony_ci	AUART0_CTS	= PINID(3, 2),
9662306a36Sopenharmony_ci	AUART0_RTS	= PINID(3, 3),
9762306a36Sopenharmony_ci	AUART1_RX	= PINID(3, 4),
9862306a36Sopenharmony_ci	AUART1_TX	= PINID(3, 5),
9962306a36Sopenharmony_ci	AUART1_CTS	= PINID(3, 6),
10062306a36Sopenharmony_ci	AUART1_RTS	= PINID(3, 7),
10162306a36Sopenharmony_ci	AUART2_RX	= PINID(3, 8),
10262306a36Sopenharmony_ci	AUART2_TX	= PINID(3, 9),
10362306a36Sopenharmony_ci	AUART2_CTS	= PINID(3, 10),
10462306a36Sopenharmony_ci	AUART2_RTS	= PINID(3, 11),
10562306a36Sopenharmony_ci	AUART3_RX	= PINID(3, 12),
10662306a36Sopenharmony_ci	AUART3_TX	= PINID(3, 13),
10762306a36Sopenharmony_ci	AUART3_CTS	= PINID(3, 14),
10862306a36Sopenharmony_ci	AUART3_RTS	= PINID(3, 15),
10962306a36Sopenharmony_ci	PWM0		= PINID(3, 16),
11062306a36Sopenharmony_ci	PWM1		= PINID(3, 17),
11162306a36Sopenharmony_ci	PWM2		= PINID(3, 18),
11262306a36Sopenharmony_ci	SAIF0_MCLK	= PINID(3, 20),
11362306a36Sopenharmony_ci	SAIF0_LRCLK	= PINID(3, 21),
11462306a36Sopenharmony_ci	SAIF0_BITCLK	= PINID(3, 22),
11562306a36Sopenharmony_ci	SAIF0_SDATA0	= PINID(3, 23),
11662306a36Sopenharmony_ci	I2C0_SCL	= PINID(3, 24),
11762306a36Sopenharmony_ci	I2C0_SDA	= PINID(3, 25),
11862306a36Sopenharmony_ci	SAIF1_SDATA0	= PINID(3, 26),
11962306a36Sopenharmony_ci	SPDIF		= PINID(3, 27),
12062306a36Sopenharmony_ci	PWM3		= PINID(3, 28),
12162306a36Sopenharmony_ci	PWM4		= PINID(3, 29),
12262306a36Sopenharmony_ci	LCD_RESET	= PINID(3, 30),
12362306a36Sopenharmony_ci	ENET0_MDC	= PINID(4, 0),
12462306a36Sopenharmony_ci	ENET0_MDIO	= PINID(4, 1),
12562306a36Sopenharmony_ci	ENET0_RX_EN	= PINID(4, 2),
12662306a36Sopenharmony_ci	ENET0_RXD0	= PINID(4, 3),
12762306a36Sopenharmony_ci	ENET0_RXD1	= PINID(4, 4),
12862306a36Sopenharmony_ci	ENET0_TX_CLK	= PINID(4, 5),
12962306a36Sopenharmony_ci	ENET0_TX_EN	= PINID(4, 6),
13062306a36Sopenharmony_ci	ENET0_TXD0	= PINID(4, 7),
13162306a36Sopenharmony_ci	ENET0_TXD1	= PINID(4, 8),
13262306a36Sopenharmony_ci	ENET0_RXD2	= PINID(4, 9),
13362306a36Sopenharmony_ci	ENET0_RXD3	= PINID(4, 10),
13462306a36Sopenharmony_ci	ENET0_TXD2	= PINID(4, 11),
13562306a36Sopenharmony_ci	ENET0_TXD3	= PINID(4, 12),
13662306a36Sopenharmony_ci	ENET0_RX_CLK	= PINID(4, 13),
13762306a36Sopenharmony_ci	ENET0_COL	= PINID(4, 14),
13862306a36Sopenharmony_ci	ENET0_CRS	= PINID(4, 15),
13962306a36Sopenharmony_ci	ENET_CLK	= PINID(4, 16),
14062306a36Sopenharmony_ci	JTAG_RTCK	= PINID(4, 20),
14162306a36Sopenharmony_ci	EMI_D00		= PINID(5, 0),
14262306a36Sopenharmony_ci	EMI_D01		= PINID(5, 1),
14362306a36Sopenharmony_ci	EMI_D02		= PINID(5, 2),
14462306a36Sopenharmony_ci	EMI_D03		= PINID(5, 3),
14562306a36Sopenharmony_ci	EMI_D04		= PINID(5, 4),
14662306a36Sopenharmony_ci	EMI_D05		= PINID(5, 5),
14762306a36Sopenharmony_ci	EMI_D06		= PINID(5, 6),
14862306a36Sopenharmony_ci	EMI_D07		= PINID(5, 7),
14962306a36Sopenharmony_ci	EMI_D08		= PINID(5, 8),
15062306a36Sopenharmony_ci	EMI_D09		= PINID(5, 9),
15162306a36Sopenharmony_ci	EMI_D10		= PINID(5, 10),
15262306a36Sopenharmony_ci	EMI_D11		= PINID(5, 11),
15362306a36Sopenharmony_ci	EMI_D12		= PINID(5, 12),
15462306a36Sopenharmony_ci	EMI_D13		= PINID(5, 13),
15562306a36Sopenharmony_ci	EMI_D14		= PINID(5, 14),
15662306a36Sopenharmony_ci	EMI_D15		= PINID(5, 15),
15762306a36Sopenharmony_ci	EMI_ODT0	= PINID(5, 16),
15862306a36Sopenharmony_ci	EMI_DQM0	= PINID(5, 17),
15962306a36Sopenharmony_ci	EMI_ODT1	= PINID(5, 18),
16062306a36Sopenharmony_ci	EMI_DQM1	= PINID(5, 19),
16162306a36Sopenharmony_ci	EMI_DDR_OPEN_FB	= PINID(5, 20),
16262306a36Sopenharmony_ci	EMI_CLK		= PINID(5, 21),
16362306a36Sopenharmony_ci	EMI_DQS0	= PINID(5, 22),
16462306a36Sopenharmony_ci	EMI_DQS1	= PINID(5, 23),
16562306a36Sopenharmony_ci	EMI_DDR_OPEN	= PINID(5, 26),
16662306a36Sopenharmony_ci	EMI_A00		= PINID(6, 0),
16762306a36Sopenharmony_ci	EMI_A01		= PINID(6, 1),
16862306a36Sopenharmony_ci	EMI_A02		= PINID(6, 2),
16962306a36Sopenharmony_ci	EMI_A03		= PINID(6, 3),
17062306a36Sopenharmony_ci	EMI_A04		= PINID(6, 4),
17162306a36Sopenharmony_ci	EMI_A05		= PINID(6, 5),
17262306a36Sopenharmony_ci	EMI_A06		= PINID(6, 6),
17362306a36Sopenharmony_ci	EMI_A07		= PINID(6, 7),
17462306a36Sopenharmony_ci	EMI_A08		= PINID(6, 8),
17562306a36Sopenharmony_ci	EMI_A09		= PINID(6, 9),
17662306a36Sopenharmony_ci	EMI_A10		= PINID(6, 10),
17762306a36Sopenharmony_ci	EMI_A11		= PINID(6, 11),
17862306a36Sopenharmony_ci	EMI_A12		= PINID(6, 12),
17962306a36Sopenharmony_ci	EMI_A13		= PINID(6, 13),
18062306a36Sopenharmony_ci	EMI_A14		= PINID(6, 14),
18162306a36Sopenharmony_ci	EMI_BA0		= PINID(6, 16),
18262306a36Sopenharmony_ci	EMI_BA1		= PINID(6, 17),
18362306a36Sopenharmony_ci	EMI_BA2		= PINID(6, 18),
18462306a36Sopenharmony_ci	EMI_CASN	= PINID(6, 19),
18562306a36Sopenharmony_ci	EMI_RASN	= PINID(6, 20),
18662306a36Sopenharmony_ci	EMI_WEN		= PINID(6, 21),
18762306a36Sopenharmony_ci	EMI_CE0N	= PINID(6, 22),
18862306a36Sopenharmony_ci	EMI_CE1N	= PINID(6, 23),
18962306a36Sopenharmony_ci	EMI_CKE		= PINID(6, 24),
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_cistatic const struct pinctrl_pin_desc imx28_pins[] = {
19362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D00),
19462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D01),
19562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D02),
19662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D03),
19762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D04),
19862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D05),
19962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D06),
20062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_D07),
20162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_CE0N),
20262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_CE1N),
20362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_CE2N),
20462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_CE3N),
20562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RDY0),
20662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RDY1),
20762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RDY2),
20862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RDY3),
20962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RDN),
21062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_WRN),
21162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_ALE),
21262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_CLE),
21362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(GPMI_RESETN),
21462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D00),
21562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D01),
21662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D02),
21762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D03),
21862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D04),
21962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D05),
22062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D06),
22162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D07),
22262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D08),
22362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D09),
22462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D10),
22562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D11),
22662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D12),
22762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D13),
22862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D14),
22962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D15),
23062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D16),
23162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D17),
23262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D18),
23362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D19),
23462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D20),
23562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D21),
23662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D22),
23762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_D23),
23862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_RD_E),
23962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_WR_RWN),
24062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_RS),
24162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_CS),
24262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_VSYNC),
24362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_HSYNC),
24462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_DOTCLK),
24562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_ENABLE),
24662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA0),
24762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA1),
24862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA2),
24962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA3),
25062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA4),
25162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA5),
25262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA6),
25362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DATA7),
25462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_CMD),
25562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_DETECT),
25662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP0_SCK),
25762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP1_SCK),
25862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP1_CMD),
25962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP1_DATA0),
26062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP1_DATA3),
26162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_SCK),
26262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_MOSI),
26362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_MISO),
26462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_SS0),
26562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_SS1),
26662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP2_SS2),
26762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP3_SCK),
26862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP3_MOSI),
26962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP3_MISO),
27062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SSP3_SS0),
27162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART0_RX),
27262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART0_TX),
27362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART0_CTS),
27462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART0_RTS),
27562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART1_RX),
27662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART1_TX),
27762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART1_CTS),
27862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART1_RTS),
27962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART2_RX),
28062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART2_TX),
28162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART2_CTS),
28262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART2_RTS),
28362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART3_RX),
28462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART3_TX),
28562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART3_CTS),
28662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(AUART3_RTS),
28762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(PWM0),
28862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(PWM1),
28962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(PWM2),
29062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SAIF0_MCLK),
29162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SAIF0_LRCLK),
29262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SAIF0_BITCLK),
29362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SAIF0_SDATA0),
29462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(I2C0_SCL),
29562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(I2C0_SDA),
29662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SAIF1_SDATA0),
29762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(SPDIF),
29862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(PWM3),
29962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(PWM4),
30062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(LCD_RESET),
30162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_MDC),
30262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_MDIO),
30362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RX_EN),
30462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RXD0),
30562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RXD1),
30662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TX_CLK),
30762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TX_EN),
30862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TXD0),
30962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TXD1),
31062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RXD2),
31162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RXD3),
31262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TXD2),
31362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_TXD3),
31462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_RX_CLK),
31562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_COL),
31662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET0_CRS),
31762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(ENET_CLK),
31862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(JTAG_RTCK),
31962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D00),
32062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D01),
32162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D02),
32262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D03),
32362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D04),
32462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D05),
32562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D06),
32662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D07),
32762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D08),
32862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D09),
32962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D10),
33062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D11),
33162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D12),
33262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D13),
33362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D14),
33462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_D15),
33562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_ODT0),
33662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DQM0),
33762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_ODT1),
33862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DQM1),
33962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DDR_OPEN_FB),
34062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_CLK),
34162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DQS0),
34262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DQS1),
34362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_DDR_OPEN),
34462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A00),
34562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A01),
34662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A02),
34762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A03),
34862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A04),
34962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A05),
35062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A06),
35162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A07),
35262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A08),
35362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A09),
35462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A10),
35562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A11),
35662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A12),
35762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A13),
35862306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_A14),
35962306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_BA0),
36062306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_BA1),
36162306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_BA2),
36262306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_CASN),
36362306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_RASN),
36462306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_WEN),
36562306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_CE0N),
36662306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_CE1N),
36762306a36Sopenharmony_ci	MXS_PINCTRL_PIN(EMI_CKE),
36862306a36Sopenharmony_ci};
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_cistatic const struct mxs_regs imx28_regs = {
37162306a36Sopenharmony_ci	.muxsel = 0x100,
37262306a36Sopenharmony_ci	.drive = 0x300,
37362306a36Sopenharmony_ci	.pull = 0x600,
37462306a36Sopenharmony_ci};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_cistatic struct mxs_pinctrl_soc_data imx28_pinctrl_data = {
37762306a36Sopenharmony_ci	.regs = &imx28_regs,
37862306a36Sopenharmony_ci	.pins = imx28_pins,
37962306a36Sopenharmony_ci	.npins = ARRAY_SIZE(imx28_pins),
38062306a36Sopenharmony_ci};
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_cistatic int imx28_pinctrl_probe(struct platform_device *pdev)
38362306a36Sopenharmony_ci{
38462306a36Sopenharmony_ci	return mxs_pinctrl_probe(pdev, &imx28_pinctrl_data);
38562306a36Sopenharmony_ci}
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_cistatic const struct of_device_id imx28_pinctrl_of_match[] = {
38862306a36Sopenharmony_ci	{ .compatible = "fsl,imx28-pinctrl", },
38962306a36Sopenharmony_ci	{ /* sentinel */ }
39062306a36Sopenharmony_ci};
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_cistatic struct platform_driver imx28_pinctrl_driver = {
39362306a36Sopenharmony_ci	.driver = {
39462306a36Sopenharmony_ci		.name = "imx28-pinctrl",
39562306a36Sopenharmony_ci		.suppress_bind_attrs = true,
39662306a36Sopenharmony_ci		.of_match_table = imx28_pinctrl_of_match,
39762306a36Sopenharmony_ci	},
39862306a36Sopenharmony_ci	.probe = imx28_pinctrl_probe,
39962306a36Sopenharmony_ci};
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_cistatic int __init imx28_pinctrl_init(void)
40262306a36Sopenharmony_ci{
40362306a36Sopenharmony_ci	return platform_driver_register(&imx28_pinctrl_driver);
40462306a36Sopenharmony_ci}
40562306a36Sopenharmony_cipostcore_initcall(imx28_pinctrl_init);
406