162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Actions Semi S500 SoC Pinctrl driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2014 Actions Semi Inc.
662306a36Sopenharmony_ci * Copyright (c) 2020 Cristian Ciocaltea <cristian.ciocaltea@gmail.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/module.h>
1062306a36Sopenharmony_ci#include <linux/of.h>
1162306a36Sopenharmony_ci#include <linux/platform_device.h>
1262306a36Sopenharmony_ci#include <linux/pinctrl/pinconf-generic.h>
1362306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
1462306a36Sopenharmony_ci#include "pinctrl-owl.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/* Pinctrl registers offset */
1762306a36Sopenharmony_ci#define MFCTL0			(0x0040)
1862306a36Sopenharmony_ci#define MFCTL1			(0x0044)
1962306a36Sopenharmony_ci#define MFCTL2			(0x0048)
2062306a36Sopenharmony_ci#define MFCTL3			(0x004C)
2162306a36Sopenharmony_ci#define PAD_PULLCTL0		(0x0060)
2262306a36Sopenharmony_ci#define PAD_PULLCTL1		(0x0064)
2362306a36Sopenharmony_ci#define PAD_PULLCTL2		(0x0068)
2462306a36Sopenharmony_ci#define PAD_ST0			(0x006C)
2562306a36Sopenharmony_ci#define PAD_ST1			(0x0070)
2662306a36Sopenharmony_ci#define PAD_CTL			(0x0074)
2762306a36Sopenharmony_ci#define PAD_DRV0		(0x0080)
2862306a36Sopenharmony_ci#define PAD_DRV1		(0x0084)
2962306a36Sopenharmony_ci#define PAD_DRV2		(0x0088)
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define _GPIOA(offset)		(offset)
3262306a36Sopenharmony_ci#define _GPIOB(offset)		(32 + (offset))
3362306a36Sopenharmony_ci#define _GPIOC(offset)		(64 + (offset))
3462306a36Sopenharmony_ci#define _GPIOD(offset)		(96 + (offset))
3562306a36Sopenharmony_ci#define _GPIOE(offset)		(128 + (offset))
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#define NUM_GPIOS		(_GPIOE(3) + 1)
3862306a36Sopenharmony_ci#define _PIN(offset)		(NUM_GPIOS + (offset))
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci#define DNAND_DQS		_GPIOA(12)
4162306a36Sopenharmony_ci#define DNAND_DQSN		_GPIOA(13)
4262306a36Sopenharmony_ci#define ETH_TXD0		_GPIOA(14)
4362306a36Sopenharmony_ci#define ETH_TXD1		_GPIOA(15)
4462306a36Sopenharmony_ci#define ETH_TXEN		_GPIOA(16)
4562306a36Sopenharmony_ci#define ETH_RXER		_GPIOA(17)
4662306a36Sopenharmony_ci#define ETH_CRS_DV		_GPIOA(18)
4762306a36Sopenharmony_ci#define ETH_RXD1		_GPIOA(19)
4862306a36Sopenharmony_ci#define ETH_RXD0		_GPIOA(20)
4962306a36Sopenharmony_ci#define ETH_REF_CLK		_GPIOA(21)
5062306a36Sopenharmony_ci#define ETH_MDC			_GPIOA(22)
5162306a36Sopenharmony_ci#define ETH_MDIO		_GPIOA(23)
5262306a36Sopenharmony_ci#define SIRQ0			_GPIOA(24)
5362306a36Sopenharmony_ci#define SIRQ1			_GPIOA(25)
5462306a36Sopenharmony_ci#define SIRQ2			_GPIOA(26)
5562306a36Sopenharmony_ci#define I2S_D0			_GPIOA(27)
5662306a36Sopenharmony_ci#define I2S_BCLK0		_GPIOA(28)
5762306a36Sopenharmony_ci#define I2S_LRCLK0		_GPIOA(29)
5862306a36Sopenharmony_ci#define I2S_MCLK0		_GPIOA(30)
5962306a36Sopenharmony_ci#define I2S_D1			_GPIOA(31)
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci#define I2S_BCLK1		_GPIOB(0)
6262306a36Sopenharmony_ci#define I2S_LRCLK1		_GPIOB(1)
6362306a36Sopenharmony_ci#define I2S_MCLK1		_GPIOB(2)
6462306a36Sopenharmony_ci#define KS_IN0			_GPIOB(3)
6562306a36Sopenharmony_ci#define KS_IN1			_GPIOB(4)
6662306a36Sopenharmony_ci#define KS_IN2			_GPIOB(5)
6762306a36Sopenharmony_ci#define KS_IN3			_GPIOB(6)
6862306a36Sopenharmony_ci#define KS_OUT0			_GPIOB(7)
6962306a36Sopenharmony_ci#define KS_OUT1			_GPIOB(8)
7062306a36Sopenharmony_ci#define KS_OUT2			_GPIOB(9)
7162306a36Sopenharmony_ci#define LVDS_OEP		_GPIOB(10)
7262306a36Sopenharmony_ci#define LVDS_OEN		_GPIOB(11)
7362306a36Sopenharmony_ci#define LVDS_ODP		_GPIOB(12)
7462306a36Sopenharmony_ci#define LVDS_ODN		_GPIOB(13)
7562306a36Sopenharmony_ci#define LVDS_OCP		_GPIOB(14)
7662306a36Sopenharmony_ci#define LVDS_OCN		_GPIOB(15)
7762306a36Sopenharmony_ci#define LVDS_OBP		_GPIOB(16)
7862306a36Sopenharmony_ci#define LVDS_OBN		_GPIOB(17)
7962306a36Sopenharmony_ci#define LVDS_OAP		_GPIOB(18)
8062306a36Sopenharmony_ci#define LVDS_OAN		_GPIOB(19)
8162306a36Sopenharmony_ci#define LVDS_EEP		_GPIOB(20)
8262306a36Sopenharmony_ci#define LVDS_EEN		_GPIOB(21)
8362306a36Sopenharmony_ci#define LVDS_EDP		_GPIOB(22)
8462306a36Sopenharmony_ci#define LVDS_EDN		_GPIOB(23)
8562306a36Sopenharmony_ci#define LVDS_ECP		_GPIOB(24)
8662306a36Sopenharmony_ci#define LVDS_ECN		_GPIOB(25)
8762306a36Sopenharmony_ci#define LVDS_EBP		_GPIOB(26)
8862306a36Sopenharmony_ci#define LVDS_EBN		_GPIOB(27)
8962306a36Sopenharmony_ci#define LVDS_EAP		_GPIOB(28)
9062306a36Sopenharmony_ci#define LVDS_EAN		_GPIOB(29)
9162306a36Sopenharmony_ci#define LCD0_D18		_GPIOB(30)
9262306a36Sopenharmony_ci#define LCD0_D17		_GPIOB(31)
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci#define DSI_DP3			_GPIOC(0)
9562306a36Sopenharmony_ci#define DSI_DN3			_GPIOC(1)
9662306a36Sopenharmony_ci#define DSI_DP1			_GPIOC(2)
9762306a36Sopenharmony_ci#define DSI_DN1			_GPIOC(3)
9862306a36Sopenharmony_ci#define DSI_CP			_GPIOC(4)
9962306a36Sopenharmony_ci#define DSI_CN			_GPIOC(5)
10062306a36Sopenharmony_ci#define DSI_DP0			_GPIOC(6)
10162306a36Sopenharmony_ci#define DSI_DN0			_GPIOC(7)
10262306a36Sopenharmony_ci#define DSI_DP2			_GPIOC(8)
10362306a36Sopenharmony_ci#define DSI_DN2			_GPIOC(9)
10462306a36Sopenharmony_ci#define SD0_D0			_GPIOC(10)
10562306a36Sopenharmony_ci#define SD0_D1			_GPIOC(11)
10662306a36Sopenharmony_ci#define SD0_D2			_GPIOC(12)
10762306a36Sopenharmony_ci#define SD0_D3			_GPIOC(13)
10862306a36Sopenharmony_ci#define SD1_D0			_GPIOC(14) /* SD0_D4 */
10962306a36Sopenharmony_ci#define SD1_D1			_GPIOC(15) /* SD0_D5 */
11062306a36Sopenharmony_ci#define SD1_D2			_GPIOC(16) /* SD0_D6 */
11162306a36Sopenharmony_ci#define SD1_D3			_GPIOC(17) /* SD0_D7 */
11262306a36Sopenharmony_ci#define SD0_CMD			_GPIOC(18)
11362306a36Sopenharmony_ci#define SD0_CLK			_GPIOC(19)
11462306a36Sopenharmony_ci#define SD1_CMD			_GPIOC(20)
11562306a36Sopenharmony_ci#define SD1_CLK			_GPIOC(21)
11662306a36Sopenharmony_ci#define SPI0_SCLK		_GPIOC(22)
11762306a36Sopenharmony_ci#define SPI0_SS			_GPIOC(23)
11862306a36Sopenharmony_ci#define SPI0_MISO		_GPIOC(24)
11962306a36Sopenharmony_ci#define SPI0_MOSI		_GPIOC(25)
12062306a36Sopenharmony_ci#define UART0_RX		_GPIOC(26)
12162306a36Sopenharmony_ci#define UART0_TX		_GPIOC(27)
12262306a36Sopenharmony_ci#define I2C0_SCLK		_GPIOC(28)
12362306a36Sopenharmony_ci#define I2C0_SDATA		_GPIOC(29)
12462306a36Sopenharmony_ci#define SENSOR0_PCLK		_GPIOC(31)
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci#define SENSOR0_CKOUT		_GPIOD(10)
12762306a36Sopenharmony_ci#define DNAND_ALE		_GPIOD(12)
12862306a36Sopenharmony_ci#define DNAND_CLE		_GPIOD(13)
12962306a36Sopenharmony_ci#define DNAND_CEB0		_GPIOD(14)
13062306a36Sopenharmony_ci#define DNAND_CEB1		_GPIOD(15)
13162306a36Sopenharmony_ci#define DNAND_CEB2		_GPIOD(16)
13262306a36Sopenharmony_ci#define DNAND_CEB3		_GPIOD(17)
13362306a36Sopenharmony_ci#define UART2_RX		_GPIOD(18)
13462306a36Sopenharmony_ci#define UART2_TX		_GPIOD(19)
13562306a36Sopenharmony_ci#define UART2_RTSB		_GPIOD(20)
13662306a36Sopenharmony_ci#define UART2_CTSB		_GPIOD(21)
13762306a36Sopenharmony_ci#define UART3_RX		_GPIOD(22)
13862306a36Sopenharmony_ci#define UART3_TX		_GPIOD(23)
13962306a36Sopenharmony_ci#define UART3_RTSB		_GPIOD(24)
14062306a36Sopenharmony_ci#define UART3_CTSB		_GPIOD(25)
14162306a36Sopenharmony_ci#define PCM1_IN			_GPIOD(28)
14262306a36Sopenharmony_ci#define PCM1_CLK		_GPIOD(29)
14362306a36Sopenharmony_ci#define PCM1_SYNC		_GPIOD(30)
14462306a36Sopenharmony_ci#define PCM1_OUT		_GPIOD(31)
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci#define I2C1_SCLK		_GPIOE(0)
14762306a36Sopenharmony_ci#define I2C1_SDATA		_GPIOE(1)
14862306a36Sopenharmony_ci#define I2C2_SCLK		_GPIOE(2)
14962306a36Sopenharmony_ci#define I2C2_SDATA		_GPIOE(3)
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci#define CSI_DN0			_PIN(0)
15262306a36Sopenharmony_ci#define CSI_DP0			_PIN(1)
15362306a36Sopenharmony_ci#define CSI_DN1			_PIN(2)
15462306a36Sopenharmony_ci#define CSI_DP1			_PIN(3)
15562306a36Sopenharmony_ci#define CSI_CN			_PIN(4)
15662306a36Sopenharmony_ci#define CSI_CP			_PIN(5)
15762306a36Sopenharmony_ci#define CSI_DN2			_PIN(6)
15862306a36Sopenharmony_ci#define CSI_DP2			_PIN(7)
15962306a36Sopenharmony_ci#define CSI_DN3			_PIN(8)
16062306a36Sopenharmony_ci#define CSI_DP3			_PIN(9)
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci#define DNAND_D0		_PIN(10)
16362306a36Sopenharmony_ci#define DNAND_D1		_PIN(11)
16462306a36Sopenharmony_ci#define DNAND_D2		_PIN(12)
16562306a36Sopenharmony_ci#define DNAND_D3		_PIN(13)
16662306a36Sopenharmony_ci#define DNAND_D4		_PIN(14)
16762306a36Sopenharmony_ci#define DNAND_D5		_PIN(15)
16862306a36Sopenharmony_ci#define DNAND_D6		_PIN(16)
16962306a36Sopenharmony_ci#define DNAND_D7		_PIN(17)
17062306a36Sopenharmony_ci#define DNAND_WRB		_PIN(18)
17162306a36Sopenharmony_ci#define DNAND_RDB		_PIN(19)
17262306a36Sopenharmony_ci#define DNAND_RDBN		_PIN(20)
17362306a36Sopenharmony_ci#define DNAND_RB		_PIN(21)
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci#define PORB			_PIN(22)
17662306a36Sopenharmony_ci#define CLKO_25M		_PIN(23)
17762306a36Sopenharmony_ci#define BSEL			_PIN(24)
17862306a36Sopenharmony_ci#define PKG0			_PIN(25)
17962306a36Sopenharmony_ci#define PKG1			_PIN(26)
18062306a36Sopenharmony_ci#define PKG2			_PIN(27)
18162306a36Sopenharmony_ci#define PKG3			_PIN(28)
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci#define _FIRSTPAD		_GPIOA(0)
18462306a36Sopenharmony_ci#define _LASTPAD		PKG3
18562306a36Sopenharmony_ci#define NUM_PADS		(_PIN(28) + 1)
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_cistatic const struct pinctrl_pin_desc s500_pads[] = {
18862306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_DQS, "dnand_dqs"),
18962306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_DQSN, "dnand_dqsn"),
19062306a36Sopenharmony_ci	PINCTRL_PIN(ETH_TXD0, "eth_txd0"),
19162306a36Sopenharmony_ci	PINCTRL_PIN(ETH_TXD1, "eth_txd1"),
19262306a36Sopenharmony_ci	PINCTRL_PIN(ETH_TXEN, "eth_txen"),
19362306a36Sopenharmony_ci	PINCTRL_PIN(ETH_RXER, "eth_rxer"),
19462306a36Sopenharmony_ci	PINCTRL_PIN(ETH_CRS_DV, "eth_crs_dv"),
19562306a36Sopenharmony_ci	PINCTRL_PIN(ETH_RXD1, "eth_rxd1"),
19662306a36Sopenharmony_ci	PINCTRL_PIN(ETH_RXD0, "eth_rxd0"),
19762306a36Sopenharmony_ci	PINCTRL_PIN(ETH_REF_CLK, "eth_ref_clk"),
19862306a36Sopenharmony_ci	PINCTRL_PIN(ETH_MDC, "eth_mdc"),
19962306a36Sopenharmony_ci	PINCTRL_PIN(ETH_MDIO, "eth_mdio"),
20062306a36Sopenharmony_ci	PINCTRL_PIN(SIRQ0, "sirq0"),
20162306a36Sopenharmony_ci	PINCTRL_PIN(SIRQ1, "sirq1"),
20262306a36Sopenharmony_ci	PINCTRL_PIN(SIRQ2, "sirq2"),
20362306a36Sopenharmony_ci	PINCTRL_PIN(I2S_D0, "i2s_d0"),
20462306a36Sopenharmony_ci	PINCTRL_PIN(I2S_BCLK0, "i2s_bclk0"),
20562306a36Sopenharmony_ci	PINCTRL_PIN(I2S_LRCLK0, "i2s_lrclk0"),
20662306a36Sopenharmony_ci	PINCTRL_PIN(I2S_MCLK0, "i2s_mclk0"),
20762306a36Sopenharmony_ci	PINCTRL_PIN(I2S_D1, "i2s_d1"),
20862306a36Sopenharmony_ci	PINCTRL_PIN(I2S_BCLK1, "i2s_bclk1"),
20962306a36Sopenharmony_ci	PINCTRL_PIN(I2S_LRCLK1, "i2s_lrclk1"),
21062306a36Sopenharmony_ci	PINCTRL_PIN(I2S_MCLK1, "i2s_mclk1"),
21162306a36Sopenharmony_ci	PINCTRL_PIN(KS_IN0, "ks_in0"),
21262306a36Sopenharmony_ci	PINCTRL_PIN(KS_IN1, "ks_in1"),
21362306a36Sopenharmony_ci	PINCTRL_PIN(KS_IN2, "ks_in2"),
21462306a36Sopenharmony_ci	PINCTRL_PIN(KS_IN3, "ks_in3"),
21562306a36Sopenharmony_ci	PINCTRL_PIN(KS_OUT0, "ks_out0"),
21662306a36Sopenharmony_ci	PINCTRL_PIN(KS_OUT1, "ks_out1"),
21762306a36Sopenharmony_ci	PINCTRL_PIN(KS_OUT2, "ks_out2"),
21862306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OEP, "lvds_oep"),
21962306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OEN, "lvds_oen"),
22062306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_ODP, "lvds_odp"),
22162306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_ODN, "lvds_odn"),
22262306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OCP, "lvds_ocp"),
22362306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OCN, "lvds_ocn"),
22462306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OBP, "lvds_obp"),
22562306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OBN, "lvds_obn"),
22662306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OAP, "lvds_oap"),
22762306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_OAN, "lvds_oan"),
22862306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EEP, "lvds_eep"),
22962306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EEN, "lvds_een"),
23062306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EDP, "lvds_edp"),
23162306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EDN, "lvds_edn"),
23262306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_ECP, "lvds_ecp"),
23362306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_ECN, "lvds_ecn"),
23462306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EBP, "lvds_ebp"),
23562306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EBN, "lvds_ebn"),
23662306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EAP, "lvds_eap"),
23762306a36Sopenharmony_ci	PINCTRL_PIN(LVDS_EAN, "lvds_ean"),
23862306a36Sopenharmony_ci	PINCTRL_PIN(LCD0_D18, "lcd0_d18"),
23962306a36Sopenharmony_ci	PINCTRL_PIN(LCD0_D17, "lcd0_d17"),
24062306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DP3, "dsi_dp3"),
24162306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DN3, "dsi_dn3"),
24262306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DP1, "dsi_dp1"),
24362306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DN1, "dsi_dn1"),
24462306a36Sopenharmony_ci	PINCTRL_PIN(DSI_CP, "dsi_cp"),
24562306a36Sopenharmony_ci	PINCTRL_PIN(DSI_CN, "dsi_cn"),
24662306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DP0, "dsi_dp0"),
24762306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DN0, "dsi_dn0"),
24862306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DP2, "dsi_dp2"),
24962306a36Sopenharmony_ci	PINCTRL_PIN(DSI_DN2, "dsi_dn2"),
25062306a36Sopenharmony_ci	PINCTRL_PIN(SD0_D0, "sd0_d0"),
25162306a36Sopenharmony_ci	PINCTRL_PIN(SD0_D1, "sd0_d1"),
25262306a36Sopenharmony_ci	PINCTRL_PIN(SD0_D2, "sd0_d2"),
25362306a36Sopenharmony_ci	PINCTRL_PIN(SD0_D3, "sd0_d3"),
25462306a36Sopenharmony_ci	PINCTRL_PIN(SD1_D0, "sd1_d0"),
25562306a36Sopenharmony_ci	PINCTRL_PIN(SD1_D1, "sd1_d1"),
25662306a36Sopenharmony_ci	PINCTRL_PIN(SD1_D2, "sd1_d2"),
25762306a36Sopenharmony_ci	PINCTRL_PIN(SD1_D3, "sd1_d3"),
25862306a36Sopenharmony_ci	PINCTRL_PIN(SD0_CMD, "sd0_cmd"),
25962306a36Sopenharmony_ci	PINCTRL_PIN(SD0_CLK, "sd0_clk"),
26062306a36Sopenharmony_ci	PINCTRL_PIN(SD1_CMD, "sd1_cmd"),
26162306a36Sopenharmony_ci	PINCTRL_PIN(SD1_CLK, "sd1_clk"),
26262306a36Sopenharmony_ci	PINCTRL_PIN(SPI0_SCLK, "spi0_sclk"),
26362306a36Sopenharmony_ci	PINCTRL_PIN(SPI0_SS, "spi0_ss"),
26462306a36Sopenharmony_ci	PINCTRL_PIN(SPI0_MISO, "spi0_miso"),
26562306a36Sopenharmony_ci	PINCTRL_PIN(SPI0_MOSI, "spi0_mosi"),
26662306a36Sopenharmony_ci	PINCTRL_PIN(UART0_RX, "uart0_rx"),
26762306a36Sopenharmony_ci	PINCTRL_PIN(UART0_TX, "uart0_tx"),
26862306a36Sopenharmony_ci	PINCTRL_PIN(I2C0_SCLK, "i2c0_sclk"),
26962306a36Sopenharmony_ci	PINCTRL_PIN(I2C0_SDATA, "i2c0_sdata"),
27062306a36Sopenharmony_ci	PINCTRL_PIN(SENSOR0_PCLK, "sensor0_pclk"),
27162306a36Sopenharmony_ci	PINCTRL_PIN(SENSOR0_CKOUT, "sensor0_ckout"),
27262306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_ALE, "dnand_ale"),
27362306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_CLE, "dnand_cle"),
27462306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_CEB0, "dnand_ceb0"),
27562306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_CEB1, "dnand_ceb1"),
27662306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_CEB2, "dnand_ceb2"),
27762306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_CEB3, "dnand_ceb3"),
27862306a36Sopenharmony_ci	PINCTRL_PIN(UART2_RX, "uart2_rx"),
27962306a36Sopenharmony_ci	PINCTRL_PIN(UART2_TX, "uart2_tx"),
28062306a36Sopenharmony_ci	PINCTRL_PIN(UART2_RTSB, "uart2_rtsb"),
28162306a36Sopenharmony_ci	PINCTRL_PIN(UART2_CTSB, "uart2_ctsb"),
28262306a36Sopenharmony_ci	PINCTRL_PIN(UART3_RX, "uart3_rx"),
28362306a36Sopenharmony_ci	PINCTRL_PIN(UART3_TX, "uart3_tx"),
28462306a36Sopenharmony_ci	PINCTRL_PIN(UART3_RTSB, "uart3_rtsb"),
28562306a36Sopenharmony_ci	PINCTRL_PIN(UART3_CTSB, "uart3_ctsb"),
28662306a36Sopenharmony_ci	PINCTRL_PIN(PCM1_IN, "pcm1_in"),
28762306a36Sopenharmony_ci	PINCTRL_PIN(PCM1_CLK, "pcm1_clk"),
28862306a36Sopenharmony_ci	PINCTRL_PIN(PCM1_SYNC, "pcm1_sync"),
28962306a36Sopenharmony_ci	PINCTRL_PIN(PCM1_OUT, "pcm1_out"),
29062306a36Sopenharmony_ci	PINCTRL_PIN(I2C1_SCLK, "i2c1_sclk"),
29162306a36Sopenharmony_ci	PINCTRL_PIN(I2C1_SDATA, "i2c1_sdata"),
29262306a36Sopenharmony_ci	PINCTRL_PIN(I2C2_SCLK, "i2c2_sclk"),
29362306a36Sopenharmony_ci	PINCTRL_PIN(I2C2_SDATA, "i2c2_sdata"),
29462306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DN0, "csi_dn0"),
29562306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DP0, "csi_dp0"),
29662306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DN1, "csi_dn1"),
29762306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DP1, "csi_dp1"),
29862306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DN2, "csi_dn2"),
29962306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DP2, "csi_dp2"),
30062306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DN3, "csi_dn3"),
30162306a36Sopenharmony_ci	PINCTRL_PIN(CSI_DP3, "csi_dp3"),
30262306a36Sopenharmony_ci	PINCTRL_PIN(CSI_CN, "csi_cn"),
30362306a36Sopenharmony_ci	PINCTRL_PIN(CSI_CP, "csi_cp"),
30462306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D0, "dnand_d0"),
30562306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D1, "dnand_d1"),
30662306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D2, "dnand_d2"),
30762306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D3, "dnand_d3"),
30862306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D4, "dnand_d4"),
30962306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D5, "dnand_d5"),
31062306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D6, "dnand_d6"),
31162306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_D7, "dnand_d7"),
31262306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_RB, "dnand_rb"),
31362306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_RDB, "dnand_rdb"),
31462306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_RDBN, "dnand_rdbn"),
31562306a36Sopenharmony_ci	PINCTRL_PIN(DNAND_WRB, "dnand_wrb"),
31662306a36Sopenharmony_ci	PINCTRL_PIN(PORB, "porb"),
31762306a36Sopenharmony_ci	PINCTRL_PIN(CLKO_25M, "clko_25m"),
31862306a36Sopenharmony_ci	PINCTRL_PIN(BSEL, "bsel"),
31962306a36Sopenharmony_ci	PINCTRL_PIN(PKG0, "pkg0"),
32062306a36Sopenharmony_ci	PINCTRL_PIN(PKG1, "pkg1"),
32162306a36Sopenharmony_ci	PINCTRL_PIN(PKG2, "pkg2"),
32262306a36Sopenharmony_ci	PINCTRL_PIN(PKG3, "pkg3"),
32362306a36Sopenharmony_ci};
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_cienum s500_pinmux_functions {
32662306a36Sopenharmony_ci	S500_MUX_NOR,
32762306a36Sopenharmony_ci	S500_MUX_ETH_RMII,
32862306a36Sopenharmony_ci	S500_MUX_ETH_SMII,
32962306a36Sopenharmony_ci	S500_MUX_SPI0,
33062306a36Sopenharmony_ci	S500_MUX_SPI1,
33162306a36Sopenharmony_ci	S500_MUX_SPI2,
33262306a36Sopenharmony_ci	S500_MUX_SPI3,
33362306a36Sopenharmony_ci	S500_MUX_SENS0,
33462306a36Sopenharmony_ci	S500_MUX_SENS1,
33562306a36Sopenharmony_ci	S500_MUX_UART0,
33662306a36Sopenharmony_ci	S500_MUX_UART1,
33762306a36Sopenharmony_ci	S500_MUX_UART2,
33862306a36Sopenharmony_ci	S500_MUX_UART3,
33962306a36Sopenharmony_ci	S500_MUX_UART4,
34062306a36Sopenharmony_ci	S500_MUX_UART5,
34162306a36Sopenharmony_ci	S500_MUX_UART6,
34262306a36Sopenharmony_ci	S500_MUX_I2S0,
34362306a36Sopenharmony_ci	S500_MUX_I2S1,
34462306a36Sopenharmony_ci	S500_MUX_PCM1,
34562306a36Sopenharmony_ci	S500_MUX_PCM0,
34662306a36Sopenharmony_ci	S500_MUX_KS,
34762306a36Sopenharmony_ci	S500_MUX_JTAG,
34862306a36Sopenharmony_ci	S500_MUX_PWM0,
34962306a36Sopenharmony_ci	S500_MUX_PWM1,
35062306a36Sopenharmony_ci	S500_MUX_PWM2,
35162306a36Sopenharmony_ci	S500_MUX_PWM3,
35262306a36Sopenharmony_ci	S500_MUX_PWM4,
35362306a36Sopenharmony_ci	S500_MUX_PWM5,
35462306a36Sopenharmony_ci	S500_MUX_P0,
35562306a36Sopenharmony_ci	S500_MUX_SD0,
35662306a36Sopenharmony_ci	S500_MUX_SD1,
35762306a36Sopenharmony_ci	S500_MUX_SD2,
35862306a36Sopenharmony_ci	S500_MUX_I2C0,
35962306a36Sopenharmony_ci	S500_MUX_I2C1,
36062306a36Sopenharmony_ci	/*S500_MUX_I2C2,*/
36162306a36Sopenharmony_ci	S500_MUX_I2C3,
36262306a36Sopenharmony_ci	S500_MUX_DSI,
36362306a36Sopenharmony_ci	S500_MUX_LVDS,
36462306a36Sopenharmony_ci	S500_MUX_USB30,
36562306a36Sopenharmony_ci	S500_MUX_CLKO_25M,
36662306a36Sopenharmony_ci	S500_MUX_MIPI_CSI,
36762306a36Sopenharmony_ci	S500_MUX_NAND,
36862306a36Sopenharmony_ci	S500_MUX_SPDIF,
36962306a36Sopenharmony_ci	/*S500_MUX_SIRQ0,*/
37062306a36Sopenharmony_ci	/*S500_MUX_SIRQ1,*/
37162306a36Sopenharmony_ci	/*S500_MUX_SIRQ2,*/
37262306a36Sopenharmony_ci	S500_MUX_TS,
37362306a36Sopenharmony_ci	S500_MUX_LCD0,
37462306a36Sopenharmony_ci	S500_MUX_RESERVED,
37562306a36Sopenharmony_ci};
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ci/* MFPCTL group data */
37862306a36Sopenharmony_ci/* mfp0_31_26 reserved */
37962306a36Sopenharmony_ci/* mfp0_25_23 */
38062306a36Sopenharmony_cistatic unsigned int lcd0_d18_mfp_pads[]		= { LCD0_D18 };
38162306a36Sopenharmony_cistatic unsigned int lcd0_d18_mfp_funcs[]	= { S500_MUX_NOR,
38262306a36Sopenharmony_ci						    S500_MUX_SENS1,
38362306a36Sopenharmony_ci						    S500_MUX_PWM2,
38462306a36Sopenharmony_ci						    S500_MUX_PWM4,
38562306a36Sopenharmony_ci						    S500_MUX_LCD0 };
38662306a36Sopenharmony_ci/* mfp0_22_20 */
38762306a36Sopenharmony_cistatic unsigned int rmii_crs_dv_mfp_pads[]	= { ETH_CRS_DV };
38862306a36Sopenharmony_cistatic unsigned int rmii_crs_dv_mfp_funcs[]	= { S500_MUX_ETH_RMII,
38962306a36Sopenharmony_ci						    S500_MUX_ETH_SMII,
39062306a36Sopenharmony_ci						    S500_MUX_SPI2,
39162306a36Sopenharmony_ci						    S500_MUX_UART4,
39262306a36Sopenharmony_ci						    S500_MUX_PWM4 };
39362306a36Sopenharmony_ci/* mfp0_18_16_eth_txd0 */
39462306a36Sopenharmony_cistatic unsigned int rmii_txd0_mfp_pads[]	= { ETH_TXD0 };
39562306a36Sopenharmony_cistatic unsigned int rmii_txd0_mfp_funcs[]	= { S500_MUX_ETH_RMII,
39662306a36Sopenharmony_ci						    S500_MUX_ETH_SMII,
39762306a36Sopenharmony_ci						    S500_MUX_SPI2,
39862306a36Sopenharmony_ci						    S500_MUX_UART6,
39962306a36Sopenharmony_ci						    S500_MUX_PWM4 };
40062306a36Sopenharmony_ci/* mfp0_18_16_eth_txd1 */
40162306a36Sopenharmony_cistatic unsigned int rmii_txd1_mfp_pads[]	= { ETH_TXD1 };
40262306a36Sopenharmony_cistatic unsigned int rmii_txd1_mfp_funcs[]	= { S500_MUX_ETH_RMII,
40362306a36Sopenharmony_ci						    S500_MUX_ETH_SMII,
40462306a36Sopenharmony_ci						    S500_MUX_SPI2,
40562306a36Sopenharmony_ci						    S500_MUX_UART6,
40662306a36Sopenharmony_ci						    S500_MUX_PWM5 };
40762306a36Sopenharmony_ci/* mfp0_15_13_rmii_txen */
40862306a36Sopenharmony_cistatic unsigned int rmii_txen_mfp_pads[]	= { ETH_TXEN };
40962306a36Sopenharmony_cistatic unsigned int rmii_txen_mfp_funcs[]	= { S500_MUX_ETH_RMII,
41062306a36Sopenharmony_ci						    S500_MUX_UART2,
41162306a36Sopenharmony_ci						    S500_MUX_SPI3,
41262306a36Sopenharmony_ci						    S500_MUX_PWM0 };
41362306a36Sopenharmony_ci/* mfp0_15_13_rmii_rxen */
41462306a36Sopenharmony_cistatic unsigned int rmii_rxen_mfp_pads[]	= { ETH_RXER };
41562306a36Sopenharmony_cistatic unsigned int rmii_rxen_mfp_funcs[]	= { S500_MUX_ETH_RMII,
41662306a36Sopenharmony_ci						    S500_MUX_UART2,
41762306a36Sopenharmony_ci						    S500_MUX_SPI3,
41862306a36Sopenharmony_ci						    S500_MUX_PWM1 };
41962306a36Sopenharmony_ci/* mfp0_12_11 reserved */
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci/* mfp0_10_8_rmii_rxd1 */
42262306a36Sopenharmony_cistatic unsigned int rmii_rxd1_mfp_pads[]	= { ETH_RXD1 };
42362306a36Sopenharmony_cistatic unsigned int rmii_rxd1_mfp_funcs[]	= { S500_MUX_ETH_RMII,
42462306a36Sopenharmony_ci						    S500_MUX_UART2,
42562306a36Sopenharmony_ci						    S500_MUX_SPI3,
42662306a36Sopenharmony_ci						    S500_MUX_PWM2,
42762306a36Sopenharmony_ci						    S500_MUX_UART5 };
42862306a36Sopenharmony_ci/* mfp0_10_8_rmii_rxd0 */
42962306a36Sopenharmony_cistatic unsigned int rmii_rxd0_mfp_pads[]	= { ETH_RXD0 };
43062306a36Sopenharmony_cistatic unsigned int rmii_rxd0_mfp_funcs[]	= { S500_MUX_ETH_RMII,
43162306a36Sopenharmony_ci						    S500_MUX_UART2,
43262306a36Sopenharmony_ci						    S500_MUX_SPI3,
43362306a36Sopenharmony_ci						    S500_MUX_PWM3,
43462306a36Sopenharmony_ci						    S500_MUX_UART5 };
43562306a36Sopenharmony_ci/* mfp0_7_6 */
43662306a36Sopenharmony_cistatic unsigned int rmii_ref_clk_mfp_pads[]	= { ETH_REF_CLK };
43762306a36Sopenharmony_cistatic unsigned int rmii_ref_clk_mfp_funcs[]	= { S500_MUX_ETH_RMII,
43862306a36Sopenharmony_ci						    S500_MUX_UART4,
43962306a36Sopenharmony_ci						    S500_MUX_SPI2,
44062306a36Sopenharmony_ci						    S500_MUX_RESERVED,
44162306a36Sopenharmony_ci						    S500_MUX_ETH_SMII };
44262306a36Sopenharmony_ci/* mfp0_5 */
44362306a36Sopenharmony_cistatic unsigned int i2s_d0_mfp_pads[]		= { I2S_D0 };
44462306a36Sopenharmony_cistatic unsigned int i2s_d0_mfp_funcs[]		= { S500_MUX_I2S0,
44562306a36Sopenharmony_ci						    S500_MUX_NOR };
44662306a36Sopenharmony_ci/* mfp0_4_3 */
44762306a36Sopenharmony_cistatic unsigned int i2s_pcm1_mfp_pads[]		= { I2S_LRCLK0, I2S_MCLK0 };
44862306a36Sopenharmony_cistatic unsigned int i2s_pcm1_mfp_funcs[]	= { S500_MUX_I2S0,
44962306a36Sopenharmony_ci						    S500_MUX_NOR,
45062306a36Sopenharmony_ci						    S500_MUX_PCM1 };
45162306a36Sopenharmony_ci/* mfp0_2_1_i2s0 */
45262306a36Sopenharmony_cistatic unsigned int i2s0_pcm0_mfp_pads[]	= { I2S_BCLK0 };
45362306a36Sopenharmony_cistatic unsigned int i2s0_pcm0_mfp_funcs[]	= { S500_MUX_I2S0,
45462306a36Sopenharmony_ci						    S500_MUX_NOR,
45562306a36Sopenharmony_ci						    S500_MUX_PCM0 };
45662306a36Sopenharmony_ci/* mfp0_2_1_i2s1 */
45762306a36Sopenharmony_cistatic unsigned int i2s1_pcm0_mfp_pads[]	= { I2S_BCLK1, I2S_LRCLK1,
45862306a36Sopenharmony_ci						    I2S_MCLK1 };
45962306a36Sopenharmony_cistatic unsigned int i2s1_pcm0_mfp_funcs[]	= { S500_MUX_I2S1,
46062306a36Sopenharmony_ci						    S500_MUX_NOR,
46162306a36Sopenharmony_ci						    S500_MUX_PCM0 };
46262306a36Sopenharmony_ci/* mfp0_0 */
46362306a36Sopenharmony_cistatic unsigned int i2s_d1_mfp_pads[]		= { I2S_D1 };
46462306a36Sopenharmony_cistatic unsigned int i2s_d1_mfp_funcs[]		= { S500_MUX_I2S1,
46562306a36Sopenharmony_ci						    S500_MUX_NOR };
46662306a36Sopenharmony_ci/* mfp1_31_29_ks_in0 */
46762306a36Sopenharmony_cistatic unsigned int ks_in0_mfp_pads[]		= { KS_IN0 };
46862306a36Sopenharmony_cistatic unsigned int ks_in0_mfp_funcs[]		= { S500_MUX_KS,
46962306a36Sopenharmony_ci						    S500_MUX_JTAG,
47062306a36Sopenharmony_ci						    S500_MUX_NOR,
47162306a36Sopenharmony_ci						    S500_MUX_PWM0,
47262306a36Sopenharmony_ci						    S500_MUX_PWM4,
47362306a36Sopenharmony_ci						    S500_MUX_SENS1,
47462306a36Sopenharmony_ci						    S500_MUX_PWM4,
47562306a36Sopenharmony_ci						    S500_MUX_P0 };
47662306a36Sopenharmony_ci/* mfp1_31_29_ks_in1 */
47762306a36Sopenharmony_cistatic unsigned int ks_in1_mfp_pads[]		= { KS_IN1 };
47862306a36Sopenharmony_cistatic unsigned int ks_in1_mfp_funcs[]		= { S500_MUX_KS,
47962306a36Sopenharmony_ci						    S500_MUX_JTAG,
48062306a36Sopenharmony_ci						    S500_MUX_NOR,
48162306a36Sopenharmony_ci						    S500_MUX_PWM1,
48262306a36Sopenharmony_ci						    S500_MUX_PWM5,
48362306a36Sopenharmony_ci						    S500_MUX_SENS1,
48462306a36Sopenharmony_ci						    S500_MUX_PWM1,
48562306a36Sopenharmony_ci						    S500_MUX_USB30 };
48662306a36Sopenharmony_ci/* mfp1_31_29_ks_in2 */
48762306a36Sopenharmony_cistatic unsigned int ks_in2_mfp_pads[]		= { KS_IN2 };
48862306a36Sopenharmony_cistatic unsigned int ks_in2_mfp_funcs[]		= { S500_MUX_KS,
48962306a36Sopenharmony_ci						    S500_MUX_JTAG,
49062306a36Sopenharmony_ci						    S500_MUX_NOR,
49162306a36Sopenharmony_ci						    S500_MUX_PWM0,
49262306a36Sopenharmony_ci						    S500_MUX_PWM0,
49362306a36Sopenharmony_ci						    S500_MUX_SENS1,
49462306a36Sopenharmony_ci						    S500_MUX_PWM0,
49562306a36Sopenharmony_ci						    S500_MUX_P0 };
49662306a36Sopenharmony_ci/* mfp1_28_26_ks_in3 */
49762306a36Sopenharmony_cistatic unsigned int ks_in3_mfp_pads[]		= { KS_IN3 };
49862306a36Sopenharmony_cistatic unsigned int ks_in3_mfp_funcs[]		= { S500_MUX_KS,
49962306a36Sopenharmony_ci						    S500_MUX_JTAG,
50062306a36Sopenharmony_ci						    S500_MUX_NOR,
50162306a36Sopenharmony_ci						    S500_MUX_PWM1,
50262306a36Sopenharmony_ci						    S500_MUX_RESERVED,
50362306a36Sopenharmony_ci						    S500_MUX_SENS1 };
50462306a36Sopenharmony_ci/* mfp1_28_26_ks_out0 */
50562306a36Sopenharmony_cistatic unsigned int ks_out0_mfp_pads[]		= { KS_OUT0 };
50662306a36Sopenharmony_cistatic unsigned int ks_out0_mfp_funcs[]		= { S500_MUX_KS,
50762306a36Sopenharmony_ci						    S500_MUX_UART5,
50862306a36Sopenharmony_ci						    S500_MUX_NOR,
50962306a36Sopenharmony_ci						    S500_MUX_PWM2,
51062306a36Sopenharmony_ci						    S500_MUX_RESERVED,
51162306a36Sopenharmony_ci						    S500_MUX_SENS1,
51262306a36Sopenharmony_ci						    S500_MUX_SD0 };
51362306a36Sopenharmony_ci/* mfp1_28_26_ks_out1 */
51462306a36Sopenharmony_cistatic unsigned int ks_out1_mfp_pads[]		= { KS_OUT1 };
51562306a36Sopenharmony_cistatic unsigned int ks_out1_mfp_funcs[]		= { S500_MUX_KS,
51662306a36Sopenharmony_ci						    S500_MUX_JTAG,
51762306a36Sopenharmony_ci						    S500_MUX_NOR,
51862306a36Sopenharmony_ci						    S500_MUX_PWM3,
51962306a36Sopenharmony_ci						    S500_MUX_RESERVED,
52062306a36Sopenharmony_ci						    S500_MUX_SENS1,
52162306a36Sopenharmony_ci						    S500_MUX_SD0 };
52262306a36Sopenharmony_ci/* mfp1_25_23 */
52362306a36Sopenharmony_cistatic unsigned int ks_out2_mfp_pads[]		= { KS_OUT2 };
52462306a36Sopenharmony_cistatic unsigned int ks_out2_mfp_funcs[]		= { S500_MUX_SD0,
52562306a36Sopenharmony_ci						    S500_MUX_KS,
52662306a36Sopenharmony_ci						    S500_MUX_NOR,
52762306a36Sopenharmony_ci						    S500_MUX_PWM2,
52862306a36Sopenharmony_ci						    S500_MUX_UART5,
52962306a36Sopenharmony_ci						    S500_MUX_SENS1 };
53062306a36Sopenharmony_ci/* mfp1_22_21 */
53162306a36Sopenharmony_cistatic unsigned int lvds_o_pn_mfp_pads[]	= { LVDS_OEP, LVDS_OEN,
53262306a36Sopenharmony_ci						    LVDS_ODP, LVDS_ODN,
53362306a36Sopenharmony_ci						    LVDS_OCP, LVDS_OCN,
53462306a36Sopenharmony_ci						    LVDS_OBP, LVDS_OBN,
53562306a36Sopenharmony_ci						    LVDS_OAP, LVDS_OAN };
53662306a36Sopenharmony_cistatic unsigned int lvds_o_pn_mfp_funcs[]	= { S500_MUX_LVDS,
53762306a36Sopenharmony_ci						    S500_MUX_TS,
53862306a36Sopenharmony_ci						    S500_MUX_LCD0 };
53962306a36Sopenharmony_ci/* mfp1_20_19 */
54062306a36Sopenharmony_cistatic unsigned int dsi_dn0_mfp_pads[]		= { DSI_DN0 };
54162306a36Sopenharmony_cistatic unsigned int dsi_dn0_mfp_funcs[]		= { S500_MUX_DSI,
54262306a36Sopenharmony_ci						    S500_MUX_UART2,
54362306a36Sopenharmony_ci						    S500_MUX_SPI0 };
54462306a36Sopenharmony_ci/* mfp1_18_17 */
54562306a36Sopenharmony_cistatic unsigned int dsi_dp2_mfp_pads[]		= { DSI_DP2 };
54662306a36Sopenharmony_cistatic unsigned int dsi_dp2_mfp_funcs[]		= { S500_MUX_DSI,
54762306a36Sopenharmony_ci						    S500_MUX_UART2,
54862306a36Sopenharmony_ci						    S500_MUX_SPI0,
54962306a36Sopenharmony_ci						    S500_MUX_SD1 };
55062306a36Sopenharmony_ci/* mfp1_16_14 */
55162306a36Sopenharmony_cistatic unsigned int lcd0_d17_mfp_pads[]		= { LCD0_D17 };
55262306a36Sopenharmony_cistatic unsigned int lcd0_d17_mfp_funcs[]	= { S500_MUX_NOR,
55362306a36Sopenharmony_ci						    S500_MUX_SD0,
55462306a36Sopenharmony_ci						    S500_MUX_SD1,
55562306a36Sopenharmony_ci						    S500_MUX_PWM3,
55662306a36Sopenharmony_ci						    S500_MUX_LCD0 };
55762306a36Sopenharmony_ci/* mfp1_13_12 */
55862306a36Sopenharmony_cistatic unsigned int dsi_dp3_mfp_pads[]		= { DSI_DP3 };
55962306a36Sopenharmony_cistatic unsigned int dsi_dp3_mfp_funcs[]		= { S500_MUX_DSI,
56062306a36Sopenharmony_ci						    S500_MUX_SD0,
56162306a36Sopenharmony_ci						    S500_MUX_SD1,
56262306a36Sopenharmony_ci						    S500_MUX_LCD0 };
56362306a36Sopenharmony_ci/* mfp1_11_10 */
56462306a36Sopenharmony_cistatic unsigned int dsi_dn3_mfp_pads[]		= { DSI_DN3 };
56562306a36Sopenharmony_cistatic unsigned int dsi_dn3_mfp_funcs[]		= { S500_MUX_DSI,
56662306a36Sopenharmony_ci						    S500_MUX_RESERVED,
56762306a36Sopenharmony_ci						    S500_MUX_SD1,
56862306a36Sopenharmony_ci						    S500_MUX_LCD0 };
56962306a36Sopenharmony_ci/* mfp1_9_7 */
57062306a36Sopenharmony_cistatic unsigned int dsi_dp0_mfp_pads[]		= { DSI_DP0 };
57162306a36Sopenharmony_cistatic unsigned int dsi_dp0_mfp_funcs[]		= { S500_MUX_DSI,
57262306a36Sopenharmony_ci						    S500_MUX_RESERVED,
57362306a36Sopenharmony_ci						    S500_MUX_SD0,
57462306a36Sopenharmony_ci						    S500_MUX_UART2,
57562306a36Sopenharmony_ci						    S500_MUX_SPI0 };
57662306a36Sopenharmony_ci/* mfp1_6_5 */
57762306a36Sopenharmony_cistatic unsigned int lvds_ee_pn_mfp_pads[]	= { LVDS_EEP, LVDS_EEN };
57862306a36Sopenharmony_cistatic unsigned int lvds_ee_pn_mfp_funcs[]	= { S500_MUX_LVDS,
57962306a36Sopenharmony_ci						    S500_MUX_NOR,
58062306a36Sopenharmony_ci						    S500_MUX_TS,
58162306a36Sopenharmony_ci						    S500_MUX_LCD0 };
58262306a36Sopenharmony_ci/* mfp1_4_3 */
58362306a36Sopenharmony_cistatic unsigned int spi0_i2c_pcm_mfp_pads[]	= { SPI0_SCLK, SPI0_MOSI };
58462306a36Sopenharmony_cistatic unsigned int spi0_i2c_pcm_mfp_funcs[]	= { S500_MUX_SPI0,
58562306a36Sopenharmony_ci						    S500_MUX_NOR,
58662306a36Sopenharmony_ci						    S500_MUX_I2C3,
58762306a36Sopenharmony_ci						    S500_MUX_PCM0 };
58862306a36Sopenharmony_ci/* mfp1_2_0 */
58962306a36Sopenharmony_cistatic unsigned int spi0_i2s_pcm_mfp_pads[]	= { SPI0_SS, SPI0_MISO };
59062306a36Sopenharmony_cistatic unsigned int spi0_i2s_pcm_mfp_funcs[]	= { S500_MUX_SPI0,
59162306a36Sopenharmony_ci						    S500_MUX_NOR,
59262306a36Sopenharmony_ci						    S500_MUX_I2S1,
59362306a36Sopenharmony_ci						    S500_MUX_PCM1,
59462306a36Sopenharmony_ci						    S500_MUX_PCM0 };
59562306a36Sopenharmony_ci/* mfp2_31 reserved */
59662306a36Sopenharmony_ci/* mfp2_30_29 */
59762306a36Sopenharmony_cistatic unsigned int dsi_dnp1_cp_mfp_pads[]	= { DSI_DP1, DSI_CP, DSI_CN };
59862306a36Sopenharmony_cistatic unsigned int dsi_dnp1_cp_mfp_funcs[]	= { S500_MUX_DSI,
59962306a36Sopenharmony_ci						    S500_MUX_SD1,
60062306a36Sopenharmony_ci						    S500_MUX_LCD0 };
60162306a36Sopenharmony_ci/* mfp2_28_27 */
60262306a36Sopenharmony_cistatic unsigned int lvds_e_pn_mfp_pads[]	= { LVDS_EDP, LVDS_EDN,
60362306a36Sopenharmony_ci						    LVDS_ECP, LVDS_ECN,
60462306a36Sopenharmony_ci						    LVDS_EBP, LVDS_EBN,
60562306a36Sopenharmony_ci						    LVDS_EAP, LVDS_EAN };
60662306a36Sopenharmony_cistatic unsigned int lvds_e_pn_mfp_funcs[]	= { S500_MUX_LVDS,
60762306a36Sopenharmony_ci						    S500_MUX_NOR,
60862306a36Sopenharmony_ci						    S500_MUX_LCD0 };
60962306a36Sopenharmony_ci/* mfp2_26_24 */
61062306a36Sopenharmony_cistatic unsigned int dsi_dn2_mfp_pads[]		= { DSI_DN2 };
61162306a36Sopenharmony_cistatic unsigned int dsi_dn2_mfp_funcs[]		= { S500_MUX_DSI,
61262306a36Sopenharmony_ci						    S500_MUX_RESERVED,
61362306a36Sopenharmony_ci						    S500_MUX_SD1,
61462306a36Sopenharmony_ci						    S500_MUX_UART2,
61562306a36Sopenharmony_ci						    S500_MUX_SPI0 };
61662306a36Sopenharmony_ci/* mfp2_23 */
61762306a36Sopenharmony_cistatic unsigned int uart2_rtsb_mfp_pads[]	= { UART2_RTSB };
61862306a36Sopenharmony_cistatic unsigned int uart2_rtsb_mfp_funcs[]	= { S500_MUX_UART2,
61962306a36Sopenharmony_ci						    S500_MUX_UART0 };
62062306a36Sopenharmony_ci/* mfp2_22 */
62162306a36Sopenharmony_cistatic unsigned int uart2_ctsb_mfp_pads[]	= { UART2_CTSB };
62262306a36Sopenharmony_cistatic unsigned int uart2_ctsb_mfp_funcs[]	= { S500_MUX_UART2,
62362306a36Sopenharmony_ci						    S500_MUX_UART0 };
62462306a36Sopenharmony_ci/* mfp2_21 */
62562306a36Sopenharmony_cistatic unsigned int uart3_rtsb_mfp_pads[]	= { UART3_RTSB };
62662306a36Sopenharmony_cistatic unsigned int uart3_rtsb_mfp_funcs[]	= { S500_MUX_UART3,
62762306a36Sopenharmony_ci						    S500_MUX_UART5 };
62862306a36Sopenharmony_ci/* mfp2_20 */
62962306a36Sopenharmony_cistatic unsigned int uart3_ctsb_mfp_pads[]	= { UART3_CTSB };
63062306a36Sopenharmony_cistatic unsigned int uart3_ctsb_mfp_funcs[]	= { S500_MUX_UART3,
63162306a36Sopenharmony_ci						    S500_MUX_UART5 };
63262306a36Sopenharmony_ci/* mfp2_19_17 */
63362306a36Sopenharmony_cistatic unsigned int sd0_d0_mfp_pads[]		= { SD0_D0 };
63462306a36Sopenharmony_cistatic unsigned int sd0_d0_mfp_funcs[]		= { S500_MUX_SD0,
63562306a36Sopenharmony_ci						    S500_MUX_NOR,
63662306a36Sopenharmony_ci						    S500_MUX_RESERVED,
63762306a36Sopenharmony_ci						    S500_MUX_JTAG,
63862306a36Sopenharmony_ci						    S500_MUX_UART2,
63962306a36Sopenharmony_ci						    S500_MUX_UART5 };
64062306a36Sopenharmony_ci/* mfp2_16_14 */
64162306a36Sopenharmony_cistatic unsigned int sd0_d1_mfp_pads[]		= { SD0_D1 };
64262306a36Sopenharmony_cistatic unsigned int sd0_d1_mfp_funcs[]		= { S500_MUX_SD0,
64362306a36Sopenharmony_ci						    S500_MUX_NOR,
64462306a36Sopenharmony_ci						    S500_MUX_RESERVED,
64562306a36Sopenharmony_ci						    S500_MUX_RESERVED,
64662306a36Sopenharmony_ci						    S500_MUX_UART2,
64762306a36Sopenharmony_ci						    S500_MUX_UART5 };
64862306a36Sopenharmony_ci/* mfp2_13_11 */
64962306a36Sopenharmony_cistatic unsigned int sd0_d2_d3_mfp_pads[]	= { SD0_D2, SD0_D3 };
65062306a36Sopenharmony_cistatic unsigned int sd0_d2_d3_mfp_funcs[]	= { S500_MUX_SD0,
65162306a36Sopenharmony_ci						    S500_MUX_NOR,
65262306a36Sopenharmony_ci						    S500_MUX_RESERVED,
65362306a36Sopenharmony_ci						    S500_MUX_JTAG,
65462306a36Sopenharmony_ci						    S500_MUX_UART2,
65562306a36Sopenharmony_ci						    S500_MUX_UART1 };
65662306a36Sopenharmony_ci/* mfp2_10_9 */
65762306a36Sopenharmony_cistatic unsigned int sd1_d0_d3_mfp_pads[]	= { SD1_D0, SD1_D1,
65862306a36Sopenharmony_ci						    SD1_D2, SD1_D3 };
65962306a36Sopenharmony_cistatic unsigned int sd1_d0_d3_mfp_funcs[]	= { S500_MUX_SD0,
66062306a36Sopenharmony_ci						    S500_MUX_NOR,
66162306a36Sopenharmony_ci						    S500_MUX_RESERVED,
66262306a36Sopenharmony_ci						    S500_MUX_SD1 };
66362306a36Sopenharmony_ci/* mfp2_8_7 */
66462306a36Sopenharmony_cistatic unsigned int sd0_cmd_mfp_pads[]		= { SD0_CMD };
66562306a36Sopenharmony_cistatic unsigned int sd0_cmd_mfp_funcs[]		= { S500_MUX_SD0,
66662306a36Sopenharmony_ci						    S500_MUX_NOR,
66762306a36Sopenharmony_ci						    S500_MUX_RESERVED,
66862306a36Sopenharmony_ci						    S500_MUX_JTAG };
66962306a36Sopenharmony_ci/* mfp2_6_5 */
67062306a36Sopenharmony_cistatic unsigned int sd0_clk_mfp_pads[]		= { SD0_CLK };
67162306a36Sopenharmony_cistatic unsigned int sd0_clk_mfp_funcs[]		= { S500_MUX_SD0,
67262306a36Sopenharmony_ci						    S500_MUX_RESERVED,
67362306a36Sopenharmony_ci						    S500_MUX_JTAG };
67462306a36Sopenharmony_ci/* mfp2_4_3 */
67562306a36Sopenharmony_cistatic unsigned int sd1_cmd_mfp_pads[]		= { SD1_CMD };
67662306a36Sopenharmony_cistatic unsigned int sd1_cmd_mfp_funcs[]		= { S500_MUX_SD1,
67762306a36Sopenharmony_ci						    S500_MUX_NOR };
67862306a36Sopenharmony_ci/* mfp2_2_0 */
67962306a36Sopenharmony_cistatic unsigned int uart0_rx_mfp_pads[]		= { UART0_RX };
68062306a36Sopenharmony_cistatic unsigned int uart0_rx_mfp_funcs[]	= { S500_MUX_UART0,
68162306a36Sopenharmony_ci						    S500_MUX_UART2,
68262306a36Sopenharmony_ci						    S500_MUX_SPI1,
68362306a36Sopenharmony_ci						    S500_MUX_I2C0,
68462306a36Sopenharmony_ci						    S500_MUX_PCM1,
68562306a36Sopenharmony_ci						    S500_MUX_I2S1 };
68662306a36Sopenharmony_ci/* mfp3_31 reserved */
68762306a36Sopenharmony_ci/* mfp3_30 */
68862306a36Sopenharmony_cistatic unsigned int clko_25m_mfp_pads[]		= { CLKO_25M };
68962306a36Sopenharmony_cistatic unsigned int clko_25m_mfp_funcs[]	= { S500_MUX_RESERVED,
69062306a36Sopenharmony_ci						    S500_MUX_CLKO_25M };
69162306a36Sopenharmony_ci/* mfp3_29_28 */
69262306a36Sopenharmony_cistatic unsigned int csi_cn_cp_mfp_pads[]	= { CSI_CN, CSI_CP };
69362306a36Sopenharmony_cistatic unsigned int csi_cn_cp_mfp_funcs[]	= { S500_MUX_MIPI_CSI,
69462306a36Sopenharmony_ci						    S500_MUX_SENS0 };
69562306a36Sopenharmony_ci/* mfp3_27_24 reserved */
69662306a36Sopenharmony_ci/* mfp3_23_22 */
69762306a36Sopenharmony_cistatic unsigned int sens0_ckout_mfp_pads[]	= { SENSOR0_CKOUT };
69862306a36Sopenharmony_cistatic unsigned int sens0_ckout_mfp_funcs[]	= { S500_MUX_SENS0,
69962306a36Sopenharmony_ci						    S500_MUX_NOR,
70062306a36Sopenharmony_ci						    S500_MUX_SENS1,
70162306a36Sopenharmony_ci						    S500_MUX_PWM1 };
70262306a36Sopenharmony_ci/* mfp3_21_19 */
70362306a36Sopenharmony_cistatic unsigned int uart0_tx_mfp_pads[]		= { UART0_TX };
70462306a36Sopenharmony_cistatic unsigned int uart0_tx_mfp_funcs[]	= { S500_MUX_UART0,
70562306a36Sopenharmony_ci						    S500_MUX_UART2,
70662306a36Sopenharmony_ci						    S500_MUX_SPI1,
70762306a36Sopenharmony_ci						    S500_MUX_I2C0,
70862306a36Sopenharmony_ci						    S500_MUX_SPDIF,
70962306a36Sopenharmony_ci						    S500_MUX_PCM1,
71062306a36Sopenharmony_ci						    S500_MUX_I2S1 };
71162306a36Sopenharmony_ci/* mfp3_18_16 */
71262306a36Sopenharmony_cistatic unsigned int i2c0_mfp_pads[]		= { I2C0_SCLK,
71362306a36Sopenharmony_ci						    I2C0_SDATA };
71462306a36Sopenharmony_cistatic unsigned int i2c0_mfp_funcs[]		= { S500_MUX_I2C0,
71562306a36Sopenharmony_ci						    S500_MUX_UART2,
71662306a36Sopenharmony_ci						    S500_MUX_I2C1,
71762306a36Sopenharmony_ci						    S500_MUX_UART1,
71862306a36Sopenharmony_ci						    S500_MUX_SPI1 };
71962306a36Sopenharmony_ci/* mfp3_15_14 */
72062306a36Sopenharmony_cistatic unsigned int csi_dn_dp_mfp_pads[]	= { CSI_DN0, CSI_DN1,
72162306a36Sopenharmony_ci						    CSI_DN2, CSI_DN3,
72262306a36Sopenharmony_ci						    CSI_DP0, CSI_DP1,
72362306a36Sopenharmony_ci						    CSI_DP2, CSI_DP3 };
72462306a36Sopenharmony_cistatic unsigned int csi_dn_dp_mfp_funcs[]	= { S500_MUX_MIPI_CSI,
72562306a36Sopenharmony_ci						    S500_MUX_SENS0 };
72662306a36Sopenharmony_ci/* mfp3_13_12 */
72762306a36Sopenharmony_cistatic unsigned int sen0_pclk_mfp_pads[]	= { SENSOR0_PCLK };
72862306a36Sopenharmony_cistatic unsigned int sen0_pclk_mfp_funcs[]	= { S500_MUX_SENS0,
72962306a36Sopenharmony_ci						    S500_MUX_NOR,
73062306a36Sopenharmony_ci						    S500_MUX_PWM0 };
73162306a36Sopenharmony_ci/* mfp3_11_10 */
73262306a36Sopenharmony_cistatic unsigned int pcm1_in_mfp_pads[]		= { PCM1_IN };
73362306a36Sopenharmony_cistatic unsigned int pcm1_in_mfp_funcs[]		= { S500_MUX_PCM1,
73462306a36Sopenharmony_ci						    S500_MUX_SENS1,
73562306a36Sopenharmony_ci						    S500_MUX_UART4,
73662306a36Sopenharmony_ci						    S500_MUX_PWM4 };
73762306a36Sopenharmony_ci/* mfp3_9_8 */
73862306a36Sopenharmony_cistatic unsigned int pcm1_clk_mfp_pads[]		= { PCM1_CLK };
73962306a36Sopenharmony_cistatic unsigned int pcm1_clk_mfp_funcs[]	= { S500_MUX_PCM1,
74062306a36Sopenharmony_ci						    S500_MUX_SENS1,
74162306a36Sopenharmony_ci						    S500_MUX_UART4,
74262306a36Sopenharmony_ci						    S500_MUX_PWM5 };
74362306a36Sopenharmony_ci/* mfp3_7_6 */
74462306a36Sopenharmony_cistatic unsigned int pcm1_sync_mfp_pads[]	= { PCM1_SYNC };
74562306a36Sopenharmony_cistatic unsigned int pcm1_sync_mfp_funcs[]	= { S500_MUX_PCM1,
74662306a36Sopenharmony_ci						    S500_MUX_SENS1,
74762306a36Sopenharmony_ci						    S500_MUX_UART6,
74862306a36Sopenharmony_ci						    S500_MUX_I2C3 };
74962306a36Sopenharmony_ci/* mfp3_5_4 */
75062306a36Sopenharmony_cistatic unsigned int pcm1_out_mfp_pads[]		= { PCM1_OUT };
75162306a36Sopenharmony_cistatic unsigned int pcm1_out_mfp_funcs[]	= { S500_MUX_PCM1,
75262306a36Sopenharmony_ci						    S500_MUX_SENS1,
75362306a36Sopenharmony_ci						    S500_MUX_UART6,
75462306a36Sopenharmony_ci						    S500_MUX_I2C3 };
75562306a36Sopenharmony_ci/* mfp3_3 */
75662306a36Sopenharmony_cistatic unsigned int dnand_data_wr_mfp_pads[]	= { DNAND_D0, DNAND_D1,
75762306a36Sopenharmony_ci						    DNAND_D2, DNAND_D3,
75862306a36Sopenharmony_ci						    DNAND_D4, DNAND_D5,
75962306a36Sopenharmony_ci						    DNAND_D6, DNAND_D7,
76062306a36Sopenharmony_ci						    DNAND_RDB, DNAND_RDBN };
76162306a36Sopenharmony_cistatic unsigned int dnand_data_wr_mfp_funcs[]	= { S500_MUX_NAND,
76262306a36Sopenharmony_ci						    S500_MUX_SD2 };
76362306a36Sopenharmony_ci/* mfp3_2 */
76462306a36Sopenharmony_cistatic unsigned int dnand_acle_ce0_mfp_pads[]	= { DNAND_ALE,
76562306a36Sopenharmony_ci						    DNAND_CLE,
76662306a36Sopenharmony_ci						    DNAND_CEB0,
76762306a36Sopenharmony_ci						    DNAND_CEB1 };
76862306a36Sopenharmony_cistatic unsigned int dnand_acle_ce0_mfp_funcs[]	= { S500_MUX_NAND,
76962306a36Sopenharmony_ci						    S500_MUX_SPI2 };
77062306a36Sopenharmony_ci/* mfp3_1_0_nand_ceb2 */
77162306a36Sopenharmony_cistatic unsigned int nand_ceb2_mfp_pads[]	= { DNAND_CEB2 };
77262306a36Sopenharmony_cistatic unsigned int nand_ceb2_mfp_funcs[]	= { S500_MUX_NAND,
77362306a36Sopenharmony_ci						    S500_MUX_PWM5 };
77462306a36Sopenharmony_ci/* mfp3_1_0_nand_ceb3 */
77562306a36Sopenharmony_cistatic unsigned int nand_ceb3_mfp_pads[]	= { DNAND_CEB3 };
77662306a36Sopenharmony_cistatic unsigned int nand_ceb3_mfp_funcs[]	= { S500_MUX_NAND,
77762306a36Sopenharmony_ci						    S500_MUX_PWM4 };
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_ci/* PADDRV group data */
78062306a36Sopenharmony_ci/* paddrv0_29_28 */
78162306a36Sopenharmony_cistatic unsigned int sirq_drv_pads[]		= { SIRQ0, SIRQ1, SIRQ2 };
78262306a36Sopenharmony_ci/* paddrv0_23_22 */
78362306a36Sopenharmony_cistatic unsigned int rmii_txd01_txen_drv_pads[]	= { ETH_TXD0, ETH_TXD1,
78462306a36Sopenharmony_ci						    ETH_TXEN };
78562306a36Sopenharmony_ci/* paddrv0_21_20 */
78662306a36Sopenharmony_cistatic unsigned int rmii_rxer_drv_pads[]	= { ETH_RXER };
78762306a36Sopenharmony_ci/* paddrv0_19_18 */
78862306a36Sopenharmony_cistatic unsigned int rmii_crs_drv_pads[]		= { ETH_CRS_DV };
78962306a36Sopenharmony_ci/* paddrv0_17_16 */
79062306a36Sopenharmony_cistatic unsigned int rmii_rxd10_drv_pads[]	= { ETH_RXD0, ETH_RXD1 };
79162306a36Sopenharmony_ci/* paddrv0_15_14 */
79262306a36Sopenharmony_cistatic unsigned int rmii_ref_clk_drv_pads[]	= { ETH_REF_CLK };
79362306a36Sopenharmony_ci/* paddrv0_13_12 */
79462306a36Sopenharmony_cistatic unsigned int smi_mdc_mdio_drv_pads[]	= { ETH_MDC, ETH_MDIO };
79562306a36Sopenharmony_ci/* paddrv0_11_10 */
79662306a36Sopenharmony_cistatic unsigned int i2s_d0_drv_pads[]		= { I2S_D0 };
79762306a36Sopenharmony_ci/* paddrv0_9_8 */
79862306a36Sopenharmony_cistatic unsigned int i2s_bclk0_drv_pads[]	= { I2S_BCLK0 };
79962306a36Sopenharmony_ci/* paddrv0_7_6 */
80062306a36Sopenharmony_cistatic unsigned int i2s3_drv_pads[]		= { I2S_LRCLK0, I2S_MCLK0,
80162306a36Sopenharmony_ci						    I2S_D1 };
80262306a36Sopenharmony_ci/* paddrv0_5_4 */
80362306a36Sopenharmony_cistatic unsigned int i2s13_drv_pads[]		= { I2S_BCLK1, I2S_LRCLK1,
80462306a36Sopenharmony_ci						    I2S_MCLK1 };
80562306a36Sopenharmony_ci/* paddrv0_3_2 */
80662306a36Sopenharmony_cistatic unsigned int pcm1_drv_pads[]		= { PCM1_IN, PCM1_CLK,
80762306a36Sopenharmony_ci						    PCM1_SYNC, PCM1_OUT };
80862306a36Sopenharmony_ci/* paddrv0_1_0 */
80962306a36Sopenharmony_cistatic unsigned int ks_in_drv_pads[]		= { KS_IN0, KS_IN1,
81062306a36Sopenharmony_ci						    KS_IN2, KS_IN3 };
81162306a36Sopenharmony_ci/* paddrv1_31_30 */
81262306a36Sopenharmony_cistatic unsigned int ks_out_drv_pads[]		= { KS_OUT0, KS_OUT1, KS_OUT2 };
81362306a36Sopenharmony_ci/* paddrv1_29_28 */
81462306a36Sopenharmony_cistatic unsigned int lvds_all_drv_pads[]		= { LVDS_OEP, LVDS_OEN,
81562306a36Sopenharmony_ci						    LVDS_ODP, LVDS_ODN,
81662306a36Sopenharmony_ci						    LVDS_OCP, LVDS_OCN,
81762306a36Sopenharmony_ci						    LVDS_OBP, LVDS_OBN,
81862306a36Sopenharmony_ci						    LVDS_OAP, LVDS_OAN,
81962306a36Sopenharmony_ci						    LVDS_EEP, LVDS_EEN,
82062306a36Sopenharmony_ci						    LVDS_EDP, LVDS_EDN,
82162306a36Sopenharmony_ci						    LVDS_ECP, LVDS_ECN,
82262306a36Sopenharmony_ci						    LVDS_EBP, LVDS_EBN,
82362306a36Sopenharmony_ci						    LVDS_EAP, LVDS_EAN };
82462306a36Sopenharmony_ci/* paddrv1_27_26 */
82562306a36Sopenharmony_cistatic unsigned int lcd_dsi_drv_pads[]		= { DSI_DP3, DSI_DN3, DSI_DP1,
82662306a36Sopenharmony_ci						    DSI_DN1, DSI_CP, DSI_CN };
82762306a36Sopenharmony_ci/* paddrv1_25_24 */
82862306a36Sopenharmony_cistatic unsigned int dsi_drv_pads[]		= { DSI_DP0, DSI_DN0,
82962306a36Sopenharmony_ci						    DSI_DP2, DSI_DN2 };
83062306a36Sopenharmony_ci/* paddrv1_23_22 */
83162306a36Sopenharmony_cistatic unsigned int sd0_d0_d3_drv_pads[]	= { SD0_D0, SD0_D1,
83262306a36Sopenharmony_ci						    SD0_D2, SD0_D3 };
83362306a36Sopenharmony_ci/* paddrv1_21_20 */
83462306a36Sopenharmony_cistatic unsigned int sd1_d0_d3_drv_pads[]	= { SD1_D0, SD1_D1,
83562306a36Sopenharmony_ci						    SD1_D2, SD1_D3 };
83662306a36Sopenharmony_ci/* paddrv1_19_18 */
83762306a36Sopenharmony_cistatic unsigned int sd0_cmd_drv_pads[]		= { SD0_CMD };
83862306a36Sopenharmony_ci/* paddrv1_17_16 */
83962306a36Sopenharmony_cistatic unsigned int sd0_clk_drv_pads[]		= { SD0_CLK };
84062306a36Sopenharmony_ci/* paddrv1_15_14 */
84162306a36Sopenharmony_cistatic unsigned int sd1_cmd_drv_pads[]		= { SD1_CMD };
84262306a36Sopenharmony_ci/* paddrv1_13_12 */
84362306a36Sopenharmony_cistatic unsigned int sd1_clk_drv_pads[]		= { SD1_CLK };
84462306a36Sopenharmony_ci/* paddrv1_11_10 */
84562306a36Sopenharmony_cistatic unsigned int spi0_all_drv_pads[]		= { SPI0_SCLK, SPI0_SS,
84662306a36Sopenharmony_ci						    SPI0_MISO, SPI0_MOSI };
84762306a36Sopenharmony_ci/* paddrv2_31_30 */
84862306a36Sopenharmony_cistatic unsigned int uart0_rx_drv_pads[]		= { UART0_RX };
84962306a36Sopenharmony_ci/* paddrv2_29_28 */
85062306a36Sopenharmony_cistatic unsigned int uart0_tx_drv_pads[]		= { UART0_TX };
85162306a36Sopenharmony_ci/* paddrv2_27_26 */
85262306a36Sopenharmony_cistatic unsigned int uart2_all_drv_pads[]	= { UART2_RX, UART2_TX,
85362306a36Sopenharmony_ci						    UART2_RTSB, UART2_CTSB };
85462306a36Sopenharmony_ci/* paddrv2_24_23 */
85562306a36Sopenharmony_cistatic unsigned int i2c0_all_drv_pads[]		= { I2C0_SCLK, I2C0_SDATA };
85662306a36Sopenharmony_ci/* paddrv2_22_21 */
85762306a36Sopenharmony_cistatic unsigned int i2c12_all_drv_pads[]	= { I2C1_SCLK, I2C1_SDATA,
85862306a36Sopenharmony_ci						    I2C2_SCLK, I2C2_SDATA };
85962306a36Sopenharmony_ci/* paddrv2_19_18 */
86062306a36Sopenharmony_cistatic unsigned int sens0_pclk_drv_pads[]	= { SENSOR0_PCLK };
86162306a36Sopenharmony_ci/* paddrv2_13_12 */
86262306a36Sopenharmony_cistatic unsigned int sens0_ckout_drv_pads[]	= { SENSOR0_CKOUT };
86362306a36Sopenharmony_ci/* paddrv2_3_2 */
86462306a36Sopenharmony_cistatic unsigned int uart3_all_drv_pads[]	= { UART3_RX, UART3_TX,
86562306a36Sopenharmony_ci						    UART3_RTSB, UART3_CTSB };
86662306a36Sopenharmony_ci
86762306a36Sopenharmony_ci/* Pinctrl groups */
86862306a36Sopenharmony_cistatic const struct owl_pingroup s500_groups[] = {
86962306a36Sopenharmony_ci	MUX_PG(lcd0_d18_mfp, 0, 23, 3),
87062306a36Sopenharmony_ci	MUX_PG(rmii_crs_dv_mfp, 0, 20, 3),
87162306a36Sopenharmony_ci	MUX_PG(rmii_txd0_mfp, 0, 16, 3),
87262306a36Sopenharmony_ci	MUX_PG(rmii_txd1_mfp, 0, 16, 3),
87362306a36Sopenharmony_ci	MUX_PG(rmii_txen_mfp, 0, 13, 3),
87462306a36Sopenharmony_ci	MUX_PG(rmii_rxen_mfp, 0, 13, 3),
87562306a36Sopenharmony_ci	MUX_PG(rmii_rxd1_mfp, 0, 8, 3),
87662306a36Sopenharmony_ci	MUX_PG(rmii_rxd0_mfp, 0, 8, 3),
87762306a36Sopenharmony_ci	MUX_PG(rmii_ref_clk_mfp, 0, 6, 2),
87862306a36Sopenharmony_ci	MUX_PG(i2s_d0_mfp, 0, 5, 1),
87962306a36Sopenharmony_ci	MUX_PG(i2s_pcm1_mfp, 0, 3, 2),
88062306a36Sopenharmony_ci	MUX_PG(i2s0_pcm0_mfp, 0, 1, 2),
88162306a36Sopenharmony_ci	MUX_PG(i2s1_pcm0_mfp, 0, 1, 2),
88262306a36Sopenharmony_ci	MUX_PG(i2s_d1_mfp, 0, 0, 1),
88362306a36Sopenharmony_ci	MUX_PG(ks_in2_mfp, 1, 29, 3),
88462306a36Sopenharmony_ci	MUX_PG(ks_in1_mfp, 1, 29, 3),
88562306a36Sopenharmony_ci	MUX_PG(ks_in0_mfp, 1, 29, 3),
88662306a36Sopenharmony_ci	MUX_PG(ks_in3_mfp, 1, 26, 3),
88762306a36Sopenharmony_ci	MUX_PG(ks_out0_mfp, 1, 26, 3),
88862306a36Sopenharmony_ci	MUX_PG(ks_out1_mfp, 1, 26, 3),
88962306a36Sopenharmony_ci	MUX_PG(ks_out2_mfp, 1, 23, 3),
89062306a36Sopenharmony_ci	MUX_PG(lvds_o_pn_mfp, 1, 21, 2),
89162306a36Sopenharmony_ci	MUX_PG(dsi_dn0_mfp, 1, 19, 2),
89262306a36Sopenharmony_ci	MUX_PG(dsi_dp2_mfp, 1, 17, 2),
89362306a36Sopenharmony_ci	MUX_PG(lcd0_d17_mfp, 1, 14, 3),
89462306a36Sopenharmony_ci	MUX_PG(dsi_dp3_mfp, 1, 12, 2),
89562306a36Sopenharmony_ci	MUX_PG(dsi_dn3_mfp, 1, 10, 2),
89662306a36Sopenharmony_ci	MUX_PG(dsi_dp0_mfp, 1, 7, 3),
89762306a36Sopenharmony_ci	MUX_PG(lvds_ee_pn_mfp, 1, 5, 2),
89862306a36Sopenharmony_ci	MUX_PG(spi0_i2c_pcm_mfp, 1, 3, 2),
89962306a36Sopenharmony_ci	MUX_PG(spi0_i2s_pcm_mfp, 1, 0, 3),
90062306a36Sopenharmony_ci	MUX_PG(dsi_dnp1_cp_mfp, 2, 29, 2),
90162306a36Sopenharmony_ci	MUX_PG(lvds_e_pn_mfp, 2, 27, 2),
90262306a36Sopenharmony_ci	MUX_PG(dsi_dn2_mfp, 2, 24, 3),
90362306a36Sopenharmony_ci	MUX_PG(uart2_rtsb_mfp, 2, 23, 1),
90462306a36Sopenharmony_ci	MUX_PG(uart2_ctsb_mfp, 2, 22, 1),
90562306a36Sopenharmony_ci	MUX_PG(uart3_rtsb_mfp, 2, 21, 1),
90662306a36Sopenharmony_ci	MUX_PG(uart3_ctsb_mfp, 2, 20, 1),
90762306a36Sopenharmony_ci	MUX_PG(sd0_d0_mfp, 2, 17, 3),
90862306a36Sopenharmony_ci	MUX_PG(sd0_d1_mfp, 2, 14, 3),
90962306a36Sopenharmony_ci	MUX_PG(sd0_d2_d3_mfp, 2, 11, 3),
91062306a36Sopenharmony_ci	MUX_PG(sd1_d0_d3_mfp, 2, 9, 2),
91162306a36Sopenharmony_ci	MUX_PG(sd0_cmd_mfp, 2, 7, 2),
91262306a36Sopenharmony_ci	MUX_PG(sd0_clk_mfp, 2, 5, 2),
91362306a36Sopenharmony_ci	MUX_PG(sd1_cmd_mfp, 2, 3, 2),
91462306a36Sopenharmony_ci	MUX_PG(uart0_rx_mfp, 2, 0, 3),
91562306a36Sopenharmony_ci	MUX_PG(clko_25m_mfp, 3, 30, 1),
91662306a36Sopenharmony_ci	MUX_PG(csi_cn_cp_mfp, 3, 28, 2),
91762306a36Sopenharmony_ci	MUX_PG(sens0_ckout_mfp, 3, 22, 2),
91862306a36Sopenharmony_ci	MUX_PG(uart0_tx_mfp, 3, 19, 3),
91962306a36Sopenharmony_ci	MUX_PG(i2c0_mfp, 3, 16, 3),
92062306a36Sopenharmony_ci	MUX_PG(csi_dn_dp_mfp, 3, 14, 2),
92162306a36Sopenharmony_ci	MUX_PG(sen0_pclk_mfp, 3, 12, 2),
92262306a36Sopenharmony_ci	MUX_PG(pcm1_in_mfp, 3, 10, 2),
92362306a36Sopenharmony_ci	MUX_PG(pcm1_clk_mfp, 3, 8, 2),
92462306a36Sopenharmony_ci	MUX_PG(pcm1_sync_mfp, 3, 6, 2),
92562306a36Sopenharmony_ci	MUX_PG(pcm1_out_mfp, 3, 4, 2),
92662306a36Sopenharmony_ci	MUX_PG(dnand_data_wr_mfp, 3, 3, 1),
92762306a36Sopenharmony_ci	MUX_PG(dnand_acle_ce0_mfp, 3, 2, 1),
92862306a36Sopenharmony_ci	MUX_PG(nand_ceb2_mfp, 3, 0, 2),
92962306a36Sopenharmony_ci	MUX_PG(nand_ceb3_mfp, 3, 0, 2),
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ci	DRV_PG(sirq_drv, 0, 28, 2),
93262306a36Sopenharmony_ci	DRV_PG(rmii_txd01_txen_drv, 0, 22, 2),
93362306a36Sopenharmony_ci	DRV_PG(rmii_rxer_drv, 0, 20, 2),
93462306a36Sopenharmony_ci	DRV_PG(rmii_crs_drv, 0, 18, 2),
93562306a36Sopenharmony_ci	DRV_PG(rmii_rxd10_drv, 0, 16, 2),
93662306a36Sopenharmony_ci	DRV_PG(rmii_ref_clk_drv, 0, 14, 2),
93762306a36Sopenharmony_ci	DRV_PG(smi_mdc_mdio_drv, 0, 12, 2),
93862306a36Sopenharmony_ci	DRV_PG(i2s_d0_drv, 0, 10, 2),
93962306a36Sopenharmony_ci	DRV_PG(i2s_bclk0_drv, 0, 8, 2),
94062306a36Sopenharmony_ci	DRV_PG(i2s3_drv, 0, 6, 2),
94162306a36Sopenharmony_ci	DRV_PG(i2s13_drv, 0, 4, 2),
94262306a36Sopenharmony_ci	DRV_PG(pcm1_drv, 0, 2, 2),
94362306a36Sopenharmony_ci	DRV_PG(ks_in_drv, 0, 0, 2),
94462306a36Sopenharmony_ci	DRV_PG(ks_out_drv, 1, 30, 2),
94562306a36Sopenharmony_ci	DRV_PG(lvds_all_drv, 1, 28, 2),
94662306a36Sopenharmony_ci	DRV_PG(lcd_dsi_drv, 1, 26, 2),
94762306a36Sopenharmony_ci	DRV_PG(dsi_drv, 1, 24, 2),
94862306a36Sopenharmony_ci	DRV_PG(sd0_d0_d3_drv, 1, 22, 2),
94962306a36Sopenharmony_ci	DRV_PG(sd1_d0_d3_drv, 1, 20, 2),
95062306a36Sopenharmony_ci	DRV_PG(sd0_cmd_drv, 1, 18, 2),
95162306a36Sopenharmony_ci	DRV_PG(sd0_clk_drv, 1, 16, 2),
95262306a36Sopenharmony_ci	DRV_PG(sd1_cmd_drv, 1, 14, 2),
95362306a36Sopenharmony_ci	DRV_PG(sd1_clk_drv, 1, 12, 2),
95462306a36Sopenharmony_ci	DRV_PG(spi0_all_drv, 1, 10, 2),
95562306a36Sopenharmony_ci	DRV_PG(uart0_rx_drv, 2, 30, 2),
95662306a36Sopenharmony_ci	DRV_PG(uart0_tx_drv, 2, 28, 2),
95762306a36Sopenharmony_ci	DRV_PG(uart2_all_drv, 2, 26, 2),
95862306a36Sopenharmony_ci	DRV_PG(i2c0_all_drv, 2, 23, 2),
95962306a36Sopenharmony_ci	DRV_PG(i2c12_all_drv, 2, 21, 2),
96062306a36Sopenharmony_ci	DRV_PG(sens0_pclk_drv, 2, 18, 2),
96162306a36Sopenharmony_ci	DRV_PG(sens0_ckout_drv, 2, 12, 2),
96262306a36Sopenharmony_ci	DRV_PG(uart3_all_drv, 2, 2, 2),
96362306a36Sopenharmony_ci};
96462306a36Sopenharmony_ci
96562306a36Sopenharmony_cistatic const char * const nor_groups[] = {
96662306a36Sopenharmony_ci	"lcd0_d18_mfp",
96762306a36Sopenharmony_ci	"i2s_d0_mfp",
96862306a36Sopenharmony_ci	"i2s0_pcm0_mfp",
96962306a36Sopenharmony_ci	"i2s1_pcm0_mfp",
97062306a36Sopenharmony_ci	"i2s_d1_mfp",
97162306a36Sopenharmony_ci	"ks_in2_mfp",
97262306a36Sopenharmony_ci	"ks_in1_mfp",
97362306a36Sopenharmony_ci	"ks_in0_mfp",
97462306a36Sopenharmony_ci	"ks_in3_mfp",
97562306a36Sopenharmony_ci	"ks_out0_mfp",
97662306a36Sopenharmony_ci	"ks_out1_mfp",
97762306a36Sopenharmony_ci	"ks_out2_mfp",
97862306a36Sopenharmony_ci	"lcd0_d17_mfp",
97962306a36Sopenharmony_ci	"lvds_ee_pn_mfp",
98062306a36Sopenharmony_ci	"spi0_i2c_pcm_mfp",
98162306a36Sopenharmony_ci	"spi0_i2s_pcm_mfp",
98262306a36Sopenharmony_ci	"lvds_e_pn_mfp",
98362306a36Sopenharmony_ci	"sd0_d0_mfp",
98462306a36Sopenharmony_ci	"sd0_d1_mfp",
98562306a36Sopenharmony_ci	"sd0_d2_d3_mfp",
98662306a36Sopenharmony_ci	"sd1_d0_d3_mfp",
98762306a36Sopenharmony_ci	"sd0_cmd_mfp",
98862306a36Sopenharmony_ci	"sd1_cmd_mfp",
98962306a36Sopenharmony_ci	"sens0_ckout_mfp",
99062306a36Sopenharmony_ci	"sen0_pclk_mfp",
99162306a36Sopenharmony_ci};
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_cistatic const char * const eth_rmii_groups[] = {
99462306a36Sopenharmony_ci	"rmii_crs_dv_mfp",
99562306a36Sopenharmony_ci	"rmii_txd0_mfp",
99662306a36Sopenharmony_ci	"rmii_txd1_mfp",
99762306a36Sopenharmony_ci	"rmii_txen_mfp",
99862306a36Sopenharmony_ci	"rmii_rxen_mfp",
99962306a36Sopenharmony_ci	"rmii_rxd1_mfp",
100062306a36Sopenharmony_ci	"rmii_rxd0_mfp",
100162306a36Sopenharmony_ci	"rmii_ref_clk_mfp",
100262306a36Sopenharmony_ci};
100362306a36Sopenharmony_ci
100462306a36Sopenharmony_cistatic const char * const eth_smii_groups[] = {
100562306a36Sopenharmony_ci	"rmii_crs_dv_mfp",
100662306a36Sopenharmony_ci	"rmii_txd0_mfp",
100762306a36Sopenharmony_ci	"rmii_txd1_mfp",
100862306a36Sopenharmony_ci	"rmii_ref_clk_mfp",
100962306a36Sopenharmony_ci};
101062306a36Sopenharmony_ci
101162306a36Sopenharmony_cistatic const char * const spi0_groups[] = {
101262306a36Sopenharmony_ci	"dsi_dn0_mfp",
101362306a36Sopenharmony_ci	"dsi_dp2_mfp",
101462306a36Sopenharmony_ci	"dsi_dp0_mfp",
101562306a36Sopenharmony_ci	"spi0_i2c_pcm_mfp",
101662306a36Sopenharmony_ci	"spi0_i2s_pcm_mfp",
101762306a36Sopenharmony_ci	"dsi_dn2_mfp",
101862306a36Sopenharmony_ci};
101962306a36Sopenharmony_ci
102062306a36Sopenharmony_cistatic const char * const spi1_groups[] = {
102162306a36Sopenharmony_ci	"uart0_rx_mfp",
102262306a36Sopenharmony_ci	"uart0_tx_mfp",
102362306a36Sopenharmony_ci	"i2c0_mfp",
102462306a36Sopenharmony_ci};
102562306a36Sopenharmony_ci
102662306a36Sopenharmony_cistatic const char * const spi2_groups[] = {
102762306a36Sopenharmony_ci	"rmii_crs_dv_mfp",
102862306a36Sopenharmony_ci	"rmii_txd0_mfp",
102962306a36Sopenharmony_ci	"rmii_txd1_mfp",
103062306a36Sopenharmony_ci	"rmii_ref_clk_mfp",
103162306a36Sopenharmony_ci	"dnand_acle_ce0_mfp",
103262306a36Sopenharmony_ci};
103362306a36Sopenharmony_ci
103462306a36Sopenharmony_cistatic const char * const spi3_groups[] = {
103562306a36Sopenharmony_ci	"rmii_txen_mfp",
103662306a36Sopenharmony_ci	"rmii_rxen_mfp",
103762306a36Sopenharmony_ci	"rmii_rxd1_mfp",
103862306a36Sopenharmony_ci	"rmii_rxd0_mfp",
103962306a36Sopenharmony_ci};
104062306a36Sopenharmony_ci
104162306a36Sopenharmony_cistatic const char * const sens0_groups[] = {
104262306a36Sopenharmony_ci	"csi_cn_cp_mfp",
104362306a36Sopenharmony_ci	"sens0_ckout_mfp",
104462306a36Sopenharmony_ci	"csi_dn_dp_mfp",
104562306a36Sopenharmony_ci	"sen0_pclk_mfp",
104662306a36Sopenharmony_ci};
104762306a36Sopenharmony_ci
104862306a36Sopenharmony_cistatic const char * const sens1_groups[] = {
104962306a36Sopenharmony_ci	"lcd0_d18_mfp",
105062306a36Sopenharmony_ci	"ks_in2_mfp",
105162306a36Sopenharmony_ci	"ks_in1_mfp",
105262306a36Sopenharmony_ci	"ks_in0_mfp",
105362306a36Sopenharmony_ci	"ks_in3_mfp",
105462306a36Sopenharmony_ci	"ks_out0_mfp",
105562306a36Sopenharmony_ci	"ks_out1_mfp",
105662306a36Sopenharmony_ci	"ks_out2_mfp",
105762306a36Sopenharmony_ci	"sens0_ckout_mfp",
105862306a36Sopenharmony_ci	"pcm1_in_mfp",
105962306a36Sopenharmony_ci	"pcm1_clk_mfp",
106062306a36Sopenharmony_ci	"pcm1_sync_mfp",
106162306a36Sopenharmony_ci	"pcm1_out_mfp",
106262306a36Sopenharmony_ci};
106362306a36Sopenharmony_ci
106462306a36Sopenharmony_cistatic const char * const uart0_groups[] = {
106562306a36Sopenharmony_ci	"uart2_rtsb_mfp",
106662306a36Sopenharmony_ci	"uart2_ctsb_mfp",
106762306a36Sopenharmony_ci	"uart0_rx_mfp",
106862306a36Sopenharmony_ci	"uart0_tx_mfp",
106962306a36Sopenharmony_ci};
107062306a36Sopenharmony_ci
107162306a36Sopenharmony_cistatic const char * const uart1_groups[] = {
107262306a36Sopenharmony_ci	"sd0_d2_d3_mfp",
107362306a36Sopenharmony_ci	"i2c0_mfp",
107462306a36Sopenharmony_ci};
107562306a36Sopenharmony_ci
107662306a36Sopenharmony_cistatic const char * const uart2_groups[] = {
107762306a36Sopenharmony_ci	"rmii_txen_mfp",
107862306a36Sopenharmony_ci	"rmii_rxen_mfp",
107962306a36Sopenharmony_ci	"rmii_rxd1_mfp",
108062306a36Sopenharmony_ci	"rmii_rxd0_mfp",
108162306a36Sopenharmony_ci	"dsi_dn0_mfp",
108262306a36Sopenharmony_ci	"dsi_dp2_mfp",
108362306a36Sopenharmony_ci	"dsi_dp0_mfp",
108462306a36Sopenharmony_ci	"dsi_dn2_mfp",
108562306a36Sopenharmony_ci	"uart2_rtsb_mfp",
108662306a36Sopenharmony_ci	"uart2_ctsb_mfp",
108762306a36Sopenharmony_ci	"sd0_d0_mfp",
108862306a36Sopenharmony_ci	"sd0_d1_mfp",
108962306a36Sopenharmony_ci	"sd0_d2_d3_mfp",
109062306a36Sopenharmony_ci	"uart0_rx_mfp",
109162306a36Sopenharmony_ci	"uart0_tx_mfp",
109262306a36Sopenharmony_ci	"i2c0_mfp",
109362306a36Sopenharmony_ci};
109462306a36Sopenharmony_ci
109562306a36Sopenharmony_cistatic const char * const uart3_groups[] = {
109662306a36Sopenharmony_ci	"uart3_rtsb_mfp",
109762306a36Sopenharmony_ci	"uart3_ctsb_mfp",
109862306a36Sopenharmony_ci};
109962306a36Sopenharmony_ci
110062306a36Sopenharmony_cistatic const char * const uart4_groups[] = {
110162306a36Sopenharmony_ci	"rmii_crs_dv_mfp",
110262306a36Sopenharmony_ci	"rmii_ref_clk_mfp",
110362306a36Sopenharmony_ci	"pcm1_in_mfp",
110462306a36Sopenharmony_ci	"pcm1_clk_mfp",
110562306a36Sopenharmony_ci};
110662306a36Sopenharmony_ci
110762306a36Sopenharmony_cistatic const char * const uart5_groups[] = {
110862306a36Sopenharmony_ci	"rmii_rxd1_mfp",
110962306a36Sopenharmony_ci	"rmii_rxd0_mfp",
111062306a36Sopenharmony_ci	"ks_out0_mfp",
111162306a36Sopenharmony_ci	"ks_out2_mfp",
111262306a36Sopenharmony_ci	"uart3_rtsb_mfp",
111362306a36Sopenharmony_ci	"uart3_ctsb_mfp",
111462306a36Sopenharmony_ci	"sd0_d0_mfp",
111562306a36Sopenharmony_ci	"sd0_d1_mfp",
111662306a36Sopenharmony_ci};
111762306a36Sopenharmony_ci
111862306a36Sopenharmony_cistatic const char * const uart6_groups[] = {
111962306a36Sopenharmony_ci	"rmii_txd0_mfp",
112062306a36Sopenharmony_ci	"rmii_txd1_mfp",
112162306a36Sopenharmony_ci	"pcm1_sync_mfp",
112262306a36Sopenharmony_ci	"pcm1_out_mfp",
112362306a36Sopenharmony_ci};
112462306a36Sopenharmony_ci
112562306a36Sopenharmony_cistatic const char * const i2s0_groups[] = {
112662306a36Sopenharmony_ci	"i2s_d0_mfp",
112762306a36Sopenharmony_ci	"i2s_pcm1_mfp",
112862306a36Sopenharmony_ci	"i2s0_pcm0_mfp",
112962306a36Sopenharmony_ci};
113062306a36Sopenharmony_ci
113162306a36Sopenharmony_cistatic const char * const i2s1_groups[] = {
113262306a36Sopenharmony_ci	"i2s1_pcm0_mfp",
113362306a36Sopenharmony_ci	"i2s_d1_mfp",
113462306a36Sopenharmony_ci	"spi0_i2s_pcm_mfp",
113562306a36Sopenharmony_ci	"uart0_rx_mfp",
113662306a36Sopenharmony_ci	"uart0_tx_mfp",
113762306a36Sopenharmony_ci};
113862306a36Sopenharmony_ci
113962306a36Sopenharmony_cistatic const char * const pcm1_groups[] = {
114062306a36Sopenharmony_ci	"i2s_pcm1_mfp",
114162306a36Sopenharmony_ci	"spi0_i2s_pcm_mfp",
114262306a36Sopenharmony_ci	"uart0_rx_mfp",
114362306a36Sopenharmony_ci	"uart0_tx_mfp",
114462306a36Sopenharmony_ci	"pcm1_in_mfp",
114562306a36Sopenharmony_ci	"pcm1_clk_mfp",
114662306a36Sopenharmony_ci	"pcm1_sync_mfp",
114762306a36Sopenharmony_ci	"pcm1_out_mfp",
114862306a36Sopenharmony_ci};
114962306a36Sopenharmony_ci
115062306a36Sopenharmony_cistatic const char * const pcm0_groups[] = {
115162306a36Sopenharmony_ci	"i2s0_pcm0_mfp",
115262306a36Sopenharmony_ci	"i2s1_pcm0_mfp",
115362306a36Sopenharmony_ci	"spi0_i2c_pcm_mfp",
115462306a36Sopenharmony_ci	"spi0_i2s_pcm_mfp",
115562306a36Sopenharmony_ci};
115662306a36Sopenharmony_ci
115762306a36Sopenharmony_cistatic const char * const ks_groups[] = {
115862306a36Sopenharmony_ci	"ks_in2_mfp",
115962306a36Sopenharmony_ci	"ks_in1_mfp",
116062306a36Sopenharmony_ci	"ks_in0_mfp",
116162306a36Sopenharmony_ci	"ks_in3_mfp",
116262306a36Sopenharmony_ci	"ks_out0_mfp",
116362306a36Sopenharmony_ci	"ks_out1_mfp",
116462306a36Sopenharmony_ci	"ks_out2_mfp",
116562306a36Sopenharmony_ci};
116662306a36Sopenharmony_ci
116762306a36Sopenharmony_cistatic const char * const jtag_groups[] = {
116862306a36Sopenharmony_ci	"ks_in2_mfp",
116962306a36Sopenharmony_ci	"ks_in1_mfp",
117062306a36Sopenharmony_ci	"ks_in0_mfp",
117162306a36Sopenharmony_ci	"ks_in3_mfp",
117262306a36Sopenharmony_ci	"ks_out1_mfp",
117362306a36Sopenharmony_ci	"sd0_d0_mfp",
117462306a36Sopenharmony_ci	"sd0_d2_d3_mfp",
117562306a36Sopenharmony_ci	"sd0_cmd_mfp",
117662306a36Sopenharmony_ci	"sd0_clk_mfp",
117762306a36Sopenharmony_ci};
117862306a36Sopenharmony_ci
117962306a36Sopenharmony_cistatic const char * const pwm0_groups[] = {
118062306a36Sopenharmony_ci	"ks_in2_mfp",
118162306a36Sopenharmony_ci	"ks_in0_mfp",
118262306a36Sopenharmony_ci	"rmii_txen_mfp",
118362306a36Sopenharmony_ci	"sen0_pclk_mfp",
118462306a36Sopenharmony_ci};
118562306a36Sopenharmony_ci
118662306a36Sopenharmony_cistatic const char * const pwm1_groups[] = {
118762306a36Sopenharmony_ci	"rmii_rxen_mfp",
118862306a36Sopenharmony_ci	"ks_in1_mfp",
118962306a36Sopenharmony_ci	"ks_in3_mfp",
119062306a36Sopenharmony_ci	"sens0_ckout_mfp",
119162306a36Sopenharmony_ci};
119262306a36Sopenharmony_ci
119362306a36Sopenharmony_cistatic const char * const pwm2_groups[] = {
119462306a36Sopenharmony_ci	"lcd0_d18_mfp",
119562306a36Sopenharmony_ci	"rmii_rxd1_mfp",
119662306a36Sopenharmony_ci	"ks_out0_mfp",
119762306a36Sopenharmony_ci	"ks_out2_mfp",
119862306a36Sopenharmony_ci};
119962306a36Sopenharmony_ci
120062306a36Sopenharmony_cistatic const char * const pwm3_groups[] = {
120162306a36Sopenharmony_ci	"rmii_rxd0_mfp",
120262306a36Sopenharmony_ci	"ks_out1_mfp",
120362306a36Sopenharmony_ci	"lcd0_d17_mfp",
120462306a36Sopenharmony_ci};
120562306a36Sopenharmony_ci
120662306a36Sopenharmony_cistatic const char * const pwm4_groups[] = {
120762306a36Sopenharmony_ci	"lcd0_d18_mfp",
120862306a36Sopenharmony_ci	"rmii_crs_dv_mfp",
120962306a36Sopenharmony_ci	"rmii_txd0_mfp",
121062306a36Sopenharmony_ci	"ks_in0_mfp",
121162306a36Sopenharmony_ci	"pcm1_in_mfp",
121262306a36Sopenharmony_ci	"nand_ceb3_mfp",
121362306a36Sopenharmony_ci};
121462306a36Sopenharmony_ci
121562306a36Sopenharmony_cistatic const char * const pwm5_groups[] = {
121662306a36Sopenharmony_ci	"rmii_txd1_mfp",
121762306a36Sopenharmony_ci	"ks_in1_mfp",
121862306a36Sopenharmony_ci	"pcm1_clk_mfp",
121962306a36Sopenharmony_ci	"nand_ceb2_mfp",
122062306a36Sopenharmony_ci};
122162306a36Sopenharmony_ci
122262306a36Sopenharmony_cistatic const char * const p0_groups[] = {
122362306a36Sopenharmony_ci	"ks_in2_mfp",
122462306a36Sopenharmony_ci	"ks_in0_mfp",
122562306a36Sopenharmony_ci};
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_cistatic const char * const sd0_groups[] = {
122862306a36Sopenharmony_ci	"ks_out0_mfp",
122962306a36Sopenharmony_ci	"ks_out1_mfp",
123062306a36Sopenharmony_ci	"ks_out2_mfp",
123162306a36Sopenharmony_ci	"lcd0_d17_mfp",
123262306a36Sopenharmony_ci	"dsi_dp3_mfp",
123362306a36Sopenharmony_ci	"dsi_dp0_mfp",
123462306a36Sopenharmony_ci	"sd0_d0_mfp",
123562306a36Sopenharmony_ci	"sd0_d1_mfp",
123662306a36Sopenharmony_ci	"sd0_d2_d3_mfp",
123762306a36Sopenharmony_ci	"sd1_d0_d3_mfp",
123862306a36Sopenharmony_ci	"sd0_cmd_mfp",
123962306a36Sopenharmony_ci	"sd0_clk_mfp",
124062306a36Sopenharmony_ci};
124162306a36Sopenharmony_ci
124262306a36Sopenharmony_cistatic const char * const sd1_groups[] = {
124362306a36Sopenharmony_ci	"dsi_dp2_mfp",
124462306a36Sopenharmony_ci	"lcd0_d17_mfp",
124562306a36Sopenharmony_ci	"dsi_dp3_mfp",
124662306a36Sopenharmony_ci	"dsi_dn3_mfp",
124762306a36Sopenharmony_ci	"dsi_dnp1_cp_mfp",
124862306a36Sopenharmony_ci	"dsi_dn2_mfp",
124962306a36Sopenharmony_ci	"sd1_d0_d3_mfp",
125062306a36Sopenharmony_ci	"sd1_cmd_mfp",
125162306a36Sopenharmony_ci};
125262306a36Sopenharmony_ci
125362306a36Sopenharmony_cistatic const char * const sd2_groups[] = {
125462306a36Sopenharmony_ci	"dnand_data_wr_mfp",
125562306a36Sopenharmony_ci};
125662306a36Sopenharmony_ci
125762306a36Sopenharmony_cistatic const char * const i2c0_groups[] = {
125862306a36Sopenharmony_ci	"uart0_rx_mfp",
125962306a36Sopenharmony_ci	"uart0_tx_mfp",
126062306a36Sopenharmony_ci	"i2c0_mfp",
126162306a36Sopenharmony_ci};
126262306a36Sopenharmony_ci
126362306a36Sopenharmony_cistatic const char * const i2c1_groups[] = {
126462306a36Sopenharmony_ci	"i2c0_mfp",
126562306a36Sopenharmony_ci};
126662306a36Sopenharmony_ci
126762306a36Sopenharmony_cistatic const char * const i2c3_groups[] = {
126862306a36Sopenharmony_ci	"spi0_i2c_pcm_mfp",
126962306a36Sopenharmony_ci	"pcm1_sync_mfp",
127062306a36Sopenharmony_ci	"pcm1_out_mfp",
127162306a36Sopenharmony_ci};
127262306a36Sopenharmony_ci
127362306a36Sopenharmony_cistatic const char * const lvds_groups[] = {
127462306a36Sopenharmony_ci	"lvds_o_pn_mfp",
127562306a36Sopenharmony_ci	"lvds_ee_pn_mfp",
127662306a36Sopenharmony_ci	"lvds_e_pn_mfp",
127762306a36Sopenharmony_ci};
127862306a36Sopenharmony_ci
127962306a36Sopenharmony_cistatic const char * const ts_groups[] = {
128062306a36Sopenharmony_ci	"lvds_o_pn_mfp",
128162306a36Sopenharmony_ci	"lvds_ee_pn_mfp",
128262306a36Sopenharmony_ci};
128362306a36Sopenharmony_ci
128462306a36Sopenharmony_cistatic const char * const lcd0_groups[] = {
128562306a36Sopenharmony_ci	"lcd0_d18_mfp",
128662306a36Sopenharmony_ci	"lcd0_d17_mfp",
128762306a36Sopenharmony_ci	"lvds_o_pn_mfp",
128862306a36Sopenharmony_ci	"dsi_dp3_mfp",
128962306a36Sopenharmony_ci	"dsi_dn3_mfp",
129062306a36Sopenharmony_ci	"lvds_ee_pn_mfp",
129162306a36Sopenharmony_ci	"dsi_dnp1_cp_mfp",
129262306a36Sopenharmony_ci	"lvds_e_pn_mfp",
129362306a36Sopenharmony_ci};
129462306a36Sopenharmony_ci
129562306a36Sopenharmony_cistatic const char * const usb30_groups[] = {
129662306a36Sopenharmony_ci	"ks_in1_mfp",
129762306a36Sopenharmony_ci};
129862306a36Sopenharmony_ci
129962306a36Sopenharmony_cistatic const char * const clko_25m_groups[] = {
130062306a36Sopenharmony_ci	"clko_25m_mfp",
130162306a36Sopenharmony_ci};
130262306a36Sopenharmony_ci
130362306a36Sopenharmony_cistatic const char * const mipi_csi_groups[] = {
130462306a36Sopenharmony_ci	"csi_cn_cp_mfp",
130562306a36Sopenharmony_ci	"csi_dn_dp_mfp",
130662306a36Sopenharmony_ci};
130762306a36Sopenharmony_ci
130862306a36Sopenharmony_cistatic const char * const dsi_groups[] = {
130962306a36Sopenharmony_ci	"dsi_dn0_mfp",
131062306a36Sopenharmony_ci	"dsi_dp2_mfp",
131162306a36Sopenharmony_ci	"dsi_dp3_mfp",
131262306a36Sopenharmony_ci	"dsi_dn3_mfp",
131362306a36Sopenharmony_ci	"dsi_dp0_mfp",
131462306a36Sopenharmony_ci	"dsi_dnp1_cp_mfp",
131562306a36Sopenharmony_ci	"dsi_dn2_mfp",
131662306a36Sopenharmony_ci};
131762306a36Sopenharmony_ci
131862306a36Sopenharmony_cistatic const char * const nand_groups[] = {
131962306a36Sopenharmony_ci	"dnand_data_wr_mfp",
132062306a36Sopenharmony_ci	"dnand_acle_ce0_mfp",
132162306a36Sopenharmony_ci	"nand_ceb2_mfp",
132262306a36Sopenharmony_ci	"nand_ceb3_mfp",
132362306a36Sopenharmony_ci};
132462306a36Sopenharmony_ci
132562306a36Sopenharmony_cistatic const char * const spdif_groups[] = {
132662306a36Sopenharmony_ci	"uart0_tx_mfp",
132762306a36Sopenharmony_ci};
132862306a36Sopenharmony_ci
132962306a36Sopenharmony_cistatic const struct owl_pinmux_func s500_functions[] = {
133062306a36Sopenharmony_ci	[S500_MUX_NOR] = FUNCTION(nor),
133162306a36Sopenharmony_ci	[S500_MUX_ETH_RMII] = FUNCTION(eth_rmii),
133262306a36Sopenharmony_ci	[S500_MUX_ETH_SMII] = FUNCTION(eth_smii),
133362306a36Sopenharmony_ci	[S500_MUX_SPI0] = FUNCTION(spi0),
133462306a36Sopenharmony_ci	[S500_MUX_SPI1] = FUNCTION(spi1),
133562306a36Sopenharmony_ci	[S500_MUX_SPI2] = FUNCTION(spi2),
133662306a36Sopenharmony_ci	[S500_MUX_SPI3] = FUNCTION(spi3),
133762306a36Sopenharmony_ci	[S500_MUX_SENS0] = FUNCTION(sens0),
133862306a36Sopenharmony_ci	[S500_MUX_SENS1] = FUNCTION(sens1),
133962306a36Sopenharmony_ci	[S500_MUX_UART0] = FUNCTION(uart0),
134062306a36Sopenharmony_ci	[S500_MUX_UART1] = FUNCTION(uart1),
134162306a36Sopenharmony_ci	[S500_MUX_UART2] = FUNCTION(uart2),
134262306a36Sopenharmony_ci	[S500_MUX_UART3] = FUNCTION(uart3),
134362306a36Sopenharmony_ci	[S500_MUX_UART4] = FUNCTION(uart4),
134462306a36Sopenharmony_ci	[S500_MUX_UART5] = FUNCTION(uart5),
134562306a36Sopenharmony_ci	[S500_MUX_UART6] = FUNCTION(uart6),
134662306a36Sopenharmony_ci	[S500_MUX_I2S0] = FUNCTION(i2s0),
134762306a36Sopenharmony_ci	[S500_MUX_I2S1] = FUNCTION(i2s1),
134862306a36Sopenharmony_ci	[S500_MUX_PCM1] = FUNCTION(pcm1),
134962306a36Sopenharmony_ci	[S500_MUX_PCM0] = FUNCTION(pcm0),
135062306a36Sopenharmony_ci	[S500_MUX_KS] = FUNCTION(ks),
135162306a36Sopenharmony_ci	[S500_MUX_JTAG] = FUNCTION(jtag),
135262306a36Sopenharmony_ci	[S500_MUX_PWM0] = FUNCTION(pwm0),
135362306a36Sopenharmony_ci	[S500_MUX_PWM1] = FUNCTION(pwm1),
135462306a36Sopenharmony_ci	[S500_MUX_PWM2] = FUNCTION(pwm2),
135562306a36Sopenharmony_ci	[S500_MUX_PWM3] = FUNCTION(pwm3),
135662306a36Sopenharmony_ci	[S500_MUX_PWM4] = FUNCTION(pwm4),
135762306a36Sopenharmony_ci	[S500_MUX_PWM5] = FUNCTION(pwm5),
135862306a36Sopenharmony_ci	[S500_MUX_P0] = FUNCTION(p0),
135962306a36Sopenharmony_ci	[S500_MUX_SD0] = FUNCTION(sd0),
136062306a36Sopenharmony_ci	[S500_MUX_SD1] = FUNCTION(sd1),
136162306a36Sopenharmony_ci	[S500_MUX_SD2] = FUNCTION(sd2),
136262306a36Sopenharmony_ci	[S500_MUX_I2C0] = FUNCTION(i2c0),
136362306a36Sopenharmony_ci	[S500_MUX_I2C1] = FUNCTION(i2c1),
136462306a36Sopenharmony_ci	/*[S500_MUX_I2C2] = FUNCTION(i2c2),*/
136562306a36Sopenharmony_ci	[S500_MUX_I2C3] = FUNCTION(i2c3),
136662306a36Sopenharmony_ci	[S500_MUX_DSI] = FUNCTION(dsi),
136762306a36Sopenharmony_ci	[S500_MUX_LVDS] = FUNCTION(lvds),
136862306a36Sopenharmony_ci	[S500_MUX_USB30] = FUNCTION(usb30),
136962306a36Sopenharmony_ci	[S500_MUX_CLKO_25M] = FUNCTION(clko_25m),
137062306a36Sopenharmony_ci	[S500_MUX_MIPI_CSI] = FUNCTION(mipi_csi),
137162306a36Sopenharmony_ci	[S500_MUX_NAND] = FUNCTION(nand),
137262306a36Sopenharmony_ci	[S500_MUX_SPDIF] = FUNCTION(spdif),
137362306a36Sopenharmony_ci	/*[S500_MUX_SIRQ0] = FUNCTION(sirq0),*/
137462306a36Sopenharmony_ci	/*[S500_MUX_SIRQ1] = FUNCTION(sirq1),*/
137562306a36Sopenharmony_ci	/*[S500_MUX_SIRQ2] = FUNCTION(sirq2),*/
137662306a36Sopenharmony_ci	[S500_MUX_TS] = FUNCTION(ts),
137762306a36Sopenharmony_ci	[S500_MUX_LCD0] = FUNCTION(lcd0),
137862306a36Sopenharmony_ci};
137962306a36Sopenharmony_ci
138062306a36Sopenharmony_ci/* PAD_ST0 */
138162306a36Sopenharmony_cistatic PAD_ST_CONF(I2C0_SDATA, 0, 30, 1);
138262306a36Sopenharmony_cistatic PAD_ST_CONF(UART0_RX, 0, 29, 1);
138362306a36Sopenharmony_cistatic PAD_ST_CONF(I2S_MCLK1, 0, 23, 1);
138462306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_REF_CLK, 0, 22, 1);
138562306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_TXEN, 0, 21, 1);
138662306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_TXD0, 0, 20, 1);
138762306a36Sopenharmony_cistatic PAD_ST_CONF(I2S_LRCLK1, 0, 19, 1);
138862306a36Sopenharmony_cistatic PAD_ST_CONF(DSI_DP0, 0, 16, 1);
138962306a36Sopenharmony_cistatic PAD_ST_CONF(DSI_DN0, 0, 15, 1);
139062306a36Sopenharmony_cistatic PAD_ST_CONF(UART0_TX, 0, 14, 1);
139162306a36Sopenharmony_cistatic PAD_ST_CONF(SPI0_SCLK, 0, 13, 1);
139262306a36Sopenharmony_cistatic PAD_ST_CONF(SD0_CLK, 0, 12, 1);
139362306a36Sopenharmony_cistatic PAD_ST_CONF(KS_IN0, 0, 11, 1);
139462306a36Sopenharmony_cistatic PAD_ST_CONF(SENSOR0_PCLK, 0, 9, 1);
139562306a36Sopenharmony_cistatic PAD_ST_CONF(I2C0_SCLK, 0, 7, 1);
139662306a36Sopenharmony_cistatic PAD_ST_CONF(KS_OUT0, 0, 6, 1);
139762306a36Sopenharmony_cistatic PAD_ST_CONF(KS_OUT1, 0, 5, 1);
139862306a36Sopenharmony_cistatic PAD_ST_CONF(KS_OUT2, 0, 4, 1);
139962306a36Sopenharmony_ci
140062306a36Sopenharmony_ci/* PAD_ST1 */
140162306a36Sopenharmony_cistatic PAD_ST_CONF(DSI_DP2, 1, 31, 1);
140262306a36Sopenharmony_cistatic PAD_ST_CONF(DSI_DN2, 1, 30, 1);
140362306a36Sopenharmony_cistatic PAD_ST_CONF(I2S_LRCLK0, 1, 29, 1);
140462306a36Sopenharmony_cistatic PAD_ST_CONF(UART3_CTSB, 1, 27, 1);
140562306a36Sopenharmony_cistatic PAD_ST_CONF(UART3_RTSB, 1, 26, 1);
140662306a36Sopenharmony_cistatic PAD_ST_CONF(UART3_RX, 1, 25, 1);
140762306a36Sopenharmony_cistatic PAD_ST_CONF(UART2_RTSB, 1, 24, 1);
140862306a36Sopenharmony_cistatic PAD_ST_CONF(UART2_CTSB, 1, 23, 1);
140962306a36Sopenharmony_cistatic PAD_ST_CONF(UART2_RX, 1, 22, 1);
141062306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_RXD0, 1, 21, 1);
141162306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_RXD1, 1, 20, 1);
141262306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_CRS_DV, 1, 19, 1);
141362306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_RXER, 1, 18, 1);
141462306a36Sopenharmony_cistatic PAD_ST_CONF(ETH_TXD1, 1, 17, 1);
141562306a36Sopenharmony_cistatic PAD_ST_CONF(LVDS_OAP, 1, 12, 1);
141662306a36Sopenharmony_cistatic PAD_ST_CONF(PCM1_CLK, 1, 11, 1);
141762306a36Sopenharmony_cistatic PAD_ST_CONF(PCM1_IN, 1, 10, 1);
141862306a36Sopenharmony_cistatic PAD_ST_CONF(PCM1_SYNC, 1, 9, 1);
141962306a36Sopenharmony_cistatic PAD_ST_CONF(I2C1_SCLK, 1, 8, 1);
142062306a36Sopenharmony_cistatic PAD_ST_CONF(I2C1_SDATA, 1, 7, 1);
142162306a36Sopenharmony_cistatic PAD_ST_CONF(I2C2_SCLK, 1, 6, 1);
142262306a36Sopenharmony_cistatic PAD_ST_CONF(I2C2_SDATA, 1, 5, 1);
142362306a36Sopenharmony_cistatic PAD_ST_CONF(SPI0_MOSI, 1, 4, 1);
142462306a36Sopenharmony_cistatic PAD_ST_CONF(SPI0_MISO, 1, 3, 1);
142562306a36Sopenharmony_cistatic PAD_ST_CONF(SPI0_SS, 1, 2, 1);
142662306a36Sopenharmony_cistatic PAD_ST_CONF(I2S_BCLK0, 1, 1, 1);
142762306a36Sopenharmony_cistatic PAD_ST_CONF(I2S_MCLK0, 1, 0, 1);
142862306a36Sopenharmony_ci
142962306a36Sopenharmony_ci/* PAD_PULLCTL0 */
143062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(PCM1_SYNC, 0, 30, 1);
143162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(PCM1_OUT, 0, 29, 1);
143262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_OUT2, 0, 28, 1);
143362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(LCD0_D17, 0, 27, 1);
143462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DSI_DN3, 0, 26, 1);
143562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(ETH_RXER, 0, 16, 1);
143662306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SIRQ0, 0, 14, 2);
143762306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SIRQ1, 0, 12, 2);
143862306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SIRQ2, 0, 10, 2);
143962306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C0_SDATA, 0, 9, 1);
144062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C0_SCLK, 0, 8, 1);
144162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_IN0, 0, 7, 1);
144262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_IN1, 0, 6, 1);
144362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_IN2, 0, 5, 1);
144462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_IN3, 0, 4, 1);
144562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_OUT0, 0, 2, 1);
144662306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(KS_OUT1, 0, 1, 1);
144762306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DSI_DP1, 0, 0, 1);
144862306a36Sopenharmony_ci
144962306a36Sopenharmony_ci/* PAD_PULLCTL1 */
145062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DSI_CP, 1, 31, 1);
145162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DSI_CN, 1, 30, 1);
145262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DSI_DN2, 1, 28, 1);
145362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_RDBN, 1, 25, 1);
145462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_D0, 1, 17, 1);
145562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_D1, 1, 16, 1);
145662306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_D2, 1, 15, 1);
145762306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_D3, 1, 14, 1);
145862306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_CMD, 1, 13, 1);
145962306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD0_CLK, 1, 12, 1);
146062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD1_CMD, 1, 11, 1);
146162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD1_D0, 1, 6, 1);
146262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD1_D1, 1, 5, 1);
146362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD1_D2, 1, 4, 1);
146462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SD1_D3, 1, 3, 1);
146562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(UART0_RX, 1, 2, 1);
146662306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(UART0_TX, 1, 1, 1);
146762306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(CLKO_25M, 1, 0, 1);
146862306a36Sopenharmony_ci
146962306a36Sopenharmony_ci/* PAD_PULLCTL2 */
147062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SPI0_SCLK, 2, 12, 1);
147162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(SPI0_MOSI, 2, 11, 1);
147262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C1_SDATA, 2, 10, 1);
147362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C1_SCLK, 2, 9, 1);
147462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C2_SDATA, 2, 8, 1);
147562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(I2C2_SCLK, 2, 7, 1);
147662306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_DQSN, 2, 5, 2);
147762306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_DQS, 2, 3, 2);
147862306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D0, 2, 2, 1);
147962306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D1, 2, 2, 1);
148062306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D2, 2, 2, 1);
148162306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D3, 2, 2, 1);
148262306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D4, 2, 2, 1);
148362306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D5, 2, 2, 1);
148462306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D6, 2, 2, 1);
148562306a36Sopenharmony_cistatic PAD_PULLCTL_CONF(DNAND_D7, 2, 2, 1);
148662306a36Sopenharmony_ci
148762306a36Sopenharmony_ci/* Pad info table */
148862306a36Sopenharmony_cistatic const struct owl_padinfo s500_padinfo[NUM_PADS] = {
148962306a36Sopenharmony_ci	[DNAND_DQS] = PAD_INFO_PULLCTL(DNAND_DQS),
149062306a36Sopenharmony_ci	[DNAND_DQSN] = PAD_INFO_PULLCTL(DNAND_DQSN),
149162306a36Sopenharmony_ci	[ETH_TXD0] = PAD_INFO_ST(ETH_TXD0),
149262306a36Sopenharmony_ci	[ETH_TXD1] = PAD_INFO_ST(ETH_TXD1),
149362306a36Sopenharmony_ci	[ETH_TXEN] = PAD_INFO_ST(ETH_TXEN),
149462306a36Sopenharmony_ci	[ETH_RXER] = PAD_INFO_PULLCTL_ST(ETH_RXER),
149562306a36Sopenharmony_ci	[ETH_CRS_DV] = PAD_INFO_ST(ETH_CRS_DV),
149662306a36Sopenharmony_ci	[ETH_RXD1] = PAD_INFO_ST(ETH_RXD1),
149762306a36Sopenharmony_ci	[ETH_RXD0] = PAD_INFO_ST(ETH_RXD0),
149862306a36Sopenharmony_ci	[ETH_REF_CLK] = PAD_INFO_ST(ETH_REF_CLK),
149962306a36Sopenharmony_ci	[ETH_MDC] = PAD_INFO(ETH_MDC),
150062306a36Sopenharmony_ci	[ETH_MDIO] = PAD_INFO(ETH_MDIO),
150162306a36Sopenharmony_ci	[SIRQ0] = PAD_INFO_PULLCTL(SIRQ0),
150262306a36Sopenharmony_ci	[SIRQ1] = PAD_INFO_PULLCTL(SIRQ1),
150362306a36Sopenharmony_ci	[SIRQ2] = PAD_INFO_PULLCTL(SIRQ2),
150462306a36Sopenharmony_ci	[I2S_D0] = PAD_INFO(I2S_D0),
150562306a36Sopenharmony_ci	[I2S_BCLK0] = PAD_INFO_ST(I2S_BCLK0),
150662306a36Sopenharmony_ci	[I2S_LRCLK0] = PAD_INFO_ST(I2S_LRCLK0),
150762306a36Sopenharmony_ci	[I2S_MCLK0] = PAD_INFO_ST(I2S_MCLK0),
150862306a36Sopenharmony_ci	[I2S_D1] = PAD_INFO(I2S_D1),
150962306a36Sopenharmony_ci	[I2S_BCLK1] = PAD_INFO(I2S_BCLK1),
151062306a36Sopenharmony_ci	[I2S_LRCLK1] = PAD_INFO_ST(I2S_LRCLK1),
151162306a36Sopenharmony_ci	[I2S_MCLK1] = PAD_INFO_ST(I2S_MCLK1),
151262306a36Sopenharmony_ci	[KS_IN0] = PAD_INFO_PULLCTL_ST(KS_IN0),
151362306a36Sopenharmony_ci	[KS_IN1] = PAD_INFO_PULLCTL(KS_IN1),
151462306a36Sopenharmony_ci	[KS_IN2] = PAD_INFO_PULLCTL(KS_IN2),
151562306a36Sopenharmony_ci	[KS_IN3] = PAD_INFO_PULLCTL(KS_IN3),
151662306a36Sopenharmony_ci	[KS_OUT0] = PAD_INFO_PULLCTL_ST(KS_OUT0),
151762306a36Sopenharmony_ci	[KS_OUT1] = PAD_INFO_PULLCTL_ST(KS_OUT1),
151862306a36Sopenharmony_ci	[KS_OUT2] = PAD_INFO_PULLCTL_ST(KS_OUT2),
151962306a36Sopenharmony_ci	[LVDS_OEP] = PAD_INFO(LVDS_OEP),
152062306a36Sopenharmony_ci	[LVDS_OEN] = PAD_INFO(LVDS_OEN),
152162306a36Sopenharmony_ci	[LVDS_ODP] = PAD_INFO(LVDS_ODP),
152262306a36Sopenharmony_ci	[LVDS_ODN] = PAD_INFO(LVDS_ODN),
152362306a36Sopenharmony_ci	[LVDS_OCP] = PAD_INFO(LVDS_OCP),
152462306a36Sopenharmony_ci	[LVDS_OCN] = PAD_INFO(LVDS_OCN),
152562306a36Sopenharmony_ci	[LVDS_OBP] = PAD_INFO(LVDS_OBP),
152662306a36Sopenharmony_ci	[LVDS_OBN] = PAD_INFO(LVDS_OBN),
152762306a36Sopenharmony_ci	[LVDS_OAP] = PAD_INFO_ST(LVDS_OAP),
152862306a36Sopenharmony_ci	[LVDS_OAN] = PAD_INFO(LVDS_OAN),
152962306a36Sopenharmony_ci	[LVDS_EEP] = PAD_INFO(LVDS_EEP),
153062306a36Sopenharmony_ci	[LVDS_EEN] = PAD_INFO(LVDS_EEN),
153162306a36Sopenharmony_ci	[LVDS_EDP] = PAD_INFO(LVDS_EDP),
153262306a36Sopenharmony_ci	[LVDS_EDN] = PAD_INFO(LVDS_EDN),
153362306a36Sopenharmony_ci	[LVDS_ECP] = PAD_INFO(LVDS_ECP),
153462306a36Sopenharmony_ci	[LVDS_ECN] = PAD_INFO(LVDS_ECN),
153562306a36Sopenharmony_ci	[LVDS_EBP] = PAD_INFO(LVDS_EBP),
153662306a36Sopenharmony_ci	[LVDS_EBN] = PAD_INFO(LVDS_EBN),
153762306a36Sopenharmony_ci	[LVDS_EAP] = PAD_INFO(LVDS_EAP),
153862306a36Sopenharmony_ci	[LVDS_EAN] = PAD_INFO(LVDS_EAN),
153962306a36Sopenharmony_ci	[LCD0_D18] = PAD_INFO(LCD0_D18),
154062306a36Sopenharmony_ci	[LCD0_D17] = PAD_INFO_PULLCTL(LCD0_D17),
154162306a36Sopenharmony_ci	[DSI_DP3] = PAD_INFO(DSI_DP3),
154262306a36Sopenharmony_ci	[DSI_DN3] = PAD_INFO_PULLCTL(DSI_DN3),
154362306a36Sopenharmony_ci	[DSI_DP1] = PAD_INFO_PULLCTL(DSI_DP1),
154462306a36Sopenharmony_ci	[DSI_DN1] = PAD_INFO(DSI_DN1),
154562306a36Sopenharmony_ci	[DSI_CP] = PAD_INFO_PULLCTL(DSI_CP),
154662306a36Sopenharmony_ci	[DSI_CN] = PAD_INFO_PULLCTL(DSI_CN),
154762306a36Sopenharmony_ci	[DSI_DP0] = PAD_INFO_ST(DSI_DP0),
154862306a36Sopenharmony_ci	[DSI_DN0] = PAD_INFO_ST(DSI_DN0),
154962306a36Sopenharmony_ci	[DSI_DP2] = PAD_INFO_ST(DSI_DP2),
155062306a36Sopenharmony_ci	[DSI_DN2] = PAD_INFO_PULLCTL_ST(DSI_DN2),
155162306a36Sopenharmony_ci	[SD0_D0] = PAD_INFO_PULLCTL(SD0_D0),
155262306a36Sopenharmony_ci	[SD0_D1] = PAD_INFO_PULLCTL(SD0_D1),
155362306a36Sopenharmony_ci	[SD0_D2] = PAD_INFO_PULLCTL(SD0_D2),
155462306a36Sopenharmony_ci	[SD0_D3] = PAD_INFO_PULLCTL(SD0_D3),
155562306a36Sopenharmony_ci	[SD1_D0] = PAD_INFO_PULLCTL(SD1_D0),
155662306a36Sopenharmony_ci	[SD1_D1] = PAD_INFO_PULLCTL(SD1_D1),
155762306a36Sopenharmony_ci	[SD1_D2] = PAD_INFO_PULLCTL(SD1_D2),
155862306a36Sopenharmony_ci	[SD1_D3] = PAD_INFO_PULLCTL(SD1_D3),
155962306a36Sopenharmony_ci	[SD0_CMD] = PAD_INFO_PULLCTL(SD0_CMD),
156062306a36Sopenharmony_ci	[SD0_CLK] = PAD_INFO_PULLCTL_ST(SD0_CLK),
156162306a36Sopenharmony_ci	[SD1_CMD] = PAD_INFO_PULLCTL(SD1_CMD),
156262306a36Sopenharmony_ci	[SD1_CLK] = PAD_INFO(SD1_CLK),
156362306a36Sopenharmony_ci	[SPI0_SCLK] = PAD_INFO_PULLCTL_ST(SPI0_SCLK),
156462306a36Sopenharmony_ci	[SPI0_SS] = PAD_INFO_ST(SPI0_SS),
156562306a36Sopenharmony_ci	[SPI0_MISO] = PAD_INFO_ST(SPI0_MISO),
156662306a36Sopenharmony_ci	[SPI0_MOSI] = PAD_INFO_PULLCTL_ST(SPI0_MOSI),
156762306a36Sopenharmony_ci	[UART0_RX] = PAD_INFO_PULLCTL_ST(UART0_RX),
156862306a36Sopenharmony_ci	[UART0_TX] = PAD_INFO_PULLCTL_ST(UART0_TX),
156962306a36Sopenharmony_ci	[I2C0_SCLK] = PAD_INFO_PULLCTL_ST(I2C0_SCLK),
157062306a36Sopenharmony_ci	[I2C0_SDATA] = PAD_INFO_PULLCTL_ST(I2C0_SDATA),
157162306a36Sopenharmony_ci	[SENSOR0_PCLK] = PAD_INFO_ST(SENSOR0_PCLK),
157262306a36Sopenharmony_ci	[SENSOR0_CKOUT] = PAD_INFO(SENSOR0_CKOUT),
157362306a36Sopenharmony_ci	[DNAND_ALE] = PAD_INFO(DNAND_ALE),
157462306a36Sopenharmony_ci	[DNAND_CLE] = PAD_INFO(DNAND_CLE),
157562306a36Sopenharmony_ci	[DNAND_CEB0] = PAD_INFO(DNAND_CEB0),
157662306a36Sopenharmony_ci	[DNAND_CEB1] = PAD_INFO(DNAND_CEB1),
157762306a36Sopenharmony_ci	[DNAND_CEB2] = PAD_INFO(DNAND_CEB2),
157862306a36Sopenharmony_ci	[DNAND_CEB3] = PAD_INFO(DNAND_CEB3),
157962306a36Sopenharmony_ci	[UART2_RX] = PAD_INFO_ST(UART2_RX),
158062306a36Sopenharmony_ci	[UART2_TX] = PAD_INFO(UART2_TX),
158162306a36Sopenharmony_ci	[UART2_RTSB] = PAD_INFO_ST(UART2_RTSB),
158262306a36Sopenharmony_ci	[UART2_CTSB] = PAD_INFO_ST(UART2_CTSB),
158362306a36Sopenharmony_ci	[UART3_RX] = PAD_INFO_ST(UART3_RX),
158462306a36Sopenharmony_ci	[UART3_TX] = PAD_INFO(UART3_TX),
158562306a36Sopenharmony_ci	[UART3_RTSB] = PAD_INFO_ST(UART3_RTSB),
158662306a36Sopenharmony_ci	[UART3_CTSB] = PAD_INFO_ST(UART3_CTSB),
158762306a36Sopenharmony_ci	[PCM1_IN] = PAD_INFO_ST(PCM1_IN),
158862306a36Sopenharmony_ci	[PCM1_CLK] = PAD_INFO_ST(PCM1_CLK),
158962306a36Sopenharmony_ci	[PCM1_SYNC] = PAD_INFO_PULLCTL_ST(PCM1_SYNC),
159062306a36Sopenharmony_ci	[PCM1_OUT] = PAD_INFO_PULLCTL(PCM1_OUT),
159162306a36Sopenharmony_ci	[I2C1_SCLK] = PAD_INFO_PULLCTL_ST(I2C1_SCLK),
159262306a36Sopenharmony_ci	[I2C1_SDATA] = PAD_INFO_PULLCTL_ST(I2C1_SDATA),
159362306a36Sopenharmony_ci	[I2C2_SCLK] = PAD_INFO_PULLCTL_ST(I2C2_SCLK),
159462306a36Sopenharmony_ci	[I2C2_SDATA] = PAD_INFO_PULLCTL_ST(I2C2_SDATA),
159562306a36Sopenharmony_ci	[CSI_DN0] = PAD_INFO(CSI_DN0),
159662306a36Sopenharmony_ci	[CSI_DP0] = PAD_INFO(CSI_DP0),
159762306a36Sopenharmony_ci	[CSI_DN1] = PAD_INFO(CSI_DN1),
159862306a36Sopenharmony_ci	[CSI_DP1] = PAD_INFO(CSI_DP1),
159962306a36Sopenharmony_ci	[CSI_CN] = PAD_INFO(CSI_CN),
160062306a36Sopenharmony_ci	[CSI_CP] = PAD_INFO(CSI_CP),
160162306a36Sopenharmony_ci	[CSI_DN2] = PAD_INFO(CSI_DN2),
160262306a36Sopenharmony_ci	[CSI_DP2] = PAD_INFO(CSI_DP2),
160362306a36Sopenharmony_ci	[CSI_DN3] = PAD_INFO(CSI_DN3),
160462306a36Sopenharmony_ci	[CSI_DP3] = PAD_INFO(CSI_DP3),
160562306a36Sopenharmony_ci	[DNAND_D0] = PAD_INFO_PULLCTL(DNAND_D0),
160662306a36Sopenharmony_ci	[DNAND_D1] = PAD_INFO_PULLCTL(DNAND_D1),
160762306a36Sopenharmony_ci	[DNAND_D2] = PAD_INFO_PULLCTL(DNAND_D2),
160862306a36Sopenharmony_ci	[DNAND_D3] = PAD_INFO_PULLCTL(DNAND_D3),
160962306a36Sopenharmony_ci	[DNAND_D4] = PAD_INFO_PULLCTL(DNAND_D4),
161062306a36Sopenharmony_ci	[DNAND_D5] = PAD_INFO_PULLCTL(DNAND_D5),
161162306a36Sopenharmony_ci	[DNAND_D6] = PAD_INFO_PULLCTL(DNAND_D6),
161262306a36Sopenharmony_ci	[DNAND_D7] = PAD_INFO_PULLCTL(DNAND_D7),
161362306a36Sopenharmony_ci	[DNAND_WRB] = PAD_INFO(DNAND_WRB),
161462306a36Sopenharmony_ci	[DNAND_RDB] = PAD_INFO(DNAND_RDB),
161562306a36Sopenharmony_ci	[DNAND_RDBN] = PAD_INFO_PULLCTL(DNAND_RDBN),
161662306a36Sopenharmony_ci	[DNAND_RB] = PAD_INFO(DNAND_RB),
161762306a36Sopenharmony_ci	[PORB] = PAD_INFO(PORB),
161862306a36Sopenharmony_ci	[CLKO_25M] = PAD_INFO_PULLCTL(CLKO_25M),
161962306a36Sopenharmony_ci	[BSEL] = PAD_INFO(BSEL),
162062306a36Sopenharmony_ci	[PKG0] = PAD_INFO(PKG0),
162162306a36Sopenharmony_ci	[PKG1] = PAD_INFO(PKG1),
162262306a36Sopenharmony_ci	[PKG2] = PAD_INFO(PKG2),
162362306a36Sopenharmony_ci	[PKG3] = PAD_INFO(PKG3),
162462306a36Sopenharmony_ci};
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_cistatic const struct owl_gpio_port s500_gpio_ports[] = {
162762306a36Sopenharmony_ci	OWL_GPIO_PORT(A, 0x0000, 32, 0x0, 0x4, 0x8, 0x204, 0x208, 0x20C, 0x230, 0),
162862306a36Sopenharmony_ci	OWL_GPIO_PORT(B, 0x000C, 32, 0x0, 0x4, 0x8, 0x1F8, 0x204, 0x208, 0x22C, 1),
162962306a36Sopenharmony_ci	OWL_GPIO_PORT(C, 0x0018, 32, 0x0, 0x4, 0x8, 0x1EC, 0x200, 0x204, 0x228, 2),
163062306a36Sopenharmony_ci	OWL_GPIO_PORT(D, 0x0024, 32, 0x0, 0x4, 0x8, 0x1E0, 0x1FC, 0x200, 0x224, 3),
163162306a36Sopenharmony_ci	OWL_GPIO_PORT(E, 0x0030,  4, 0x0, 0x4, 0x8, 0x1D4, 0x1F8, 0x1FC, 0x220, 4),
163262306a36Sopenharmony_ci};
163362306a36Sopenharmony_ci
163462306a36Sopenharmony_cienum s500_pinconf_pull {
163562306a36Sopenharmony_ci	OWL_PINCONF_PULL_DOWN,
163662306a36Sopenharmony_ci	OWL_PINCONF_PULL_UP,
163762306a36Sopenharmony_ci};
163862306a36Sopenharmony_ci
163962306a36Sopenharmony_cistatic int s500_pad_pinconf_arg2val(const struct owl_padinfo *info,
164062306a36Sopenharmony_ci				    unsigned int param, u32 *arg)
164162306a36Sopenharmony_ci{
164262306a36Sopenharmony_ci	switch (param) {
164362306a36Sopenharmony_ci	case PIN_CONFIG_BIAS_PULL_DOWN:
164462306a36Sopenharmony_ci		*arg = OWL_PINCONF_PULL_DOWN;
164562306a36Sopenharmony_ci		break;
164662306a36Sopenharmony_ci	case PIN_CONFIG_BIAS_PULL_UP:
164762306a36Sopenharmony_ci		*arg = OWL_PINCONF_PULL_UP;
164862306a36Sopenharmony_ci		break;
164962306a36Sopenharmony_ci	case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
165062306a36Sopenharmony_ci		*arg = (*arg >= 1 ? 1 : 0);
165162306a36Sopenharmony_ci		break;
165262306a36Sopenharmony_ci	default:
165362306a36Sopenharmony_ci		return -EOPNOTSUPP;
165462306a36Sopenharmony_ci	}
165562306a36Sopenharmony_ci
165662306a36Sopenharmony_ci	return 0;
165762306a36Sopenharmony_ci}
165862306a36Sopenharmony_ci
165962306a36Sopenharmony_cistatic int s500_pad_pinconf_val2arg(const struct owl_padinfo *padinfo,
166062306a36Sopenharmony_ci				    unsigned int param, u32 *arg)
166162306a36Sopenharmony_ci{
166262306a36Sopenharmony_ci	switch (param) {
166362306a36Sopenharmony_ci	case PIN_CONFIG_BIAS_PULL_DOWN:
166462306a36Sopenharmony_ci		*arg = *arg == OWL_PINCONF_PULL_DOWN;
166562306a36Sopenharmony_ci		break;
166662306a36Sopenharmony_ci	case PIN_CONFIG_BIAS_PULL_UP:
166762306a36Sopenharmony_ci		*arg = *arg == OWL_PINCONF_PULL_UP;
166862306a36Sopenharmony_ci		break;
166962306a36Sopenharmony_ci	case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
167062306a36Sopenharmony_ci		*arg = *arg == 1;
167162306a36Sopenharmony_ci		break;
167262306a36Sopenharmony_ci	default:
167362306a36Sopenharmony_ci		return -EOPNOTSUPP;
167462306a36Sopenharmony_ci	}
167562306a36Sopenharmony_ci
167662306a36Sopenharmony_ci	return 0;
167762306a36Sopenharmony_ci}
167862306a36Sopenharmony_ci
167962306a36Sopenharmony_cistatic struct owl_pinctrl_soc_data s500_pinctrl_data = {
168062306a36Sopenharmony_ci	.padinfo = s500_padinfo,
168162306a36Sopenharmony_ci	.pins = (const struct pinctrl_pin_desc *)s500_pads,
168262306a36Sopenharmony_ci	.npins = ARRAY_SIZE(s500_pads),
168362306a36Sopenharmony_ci	.functions = s500_functions,
168462306a36Sopenharmony_ci	.nfunctions = ARRAY_SIZE(s500_functions),
168562306a36Sopenharmony_ci	.groups = s500_groups,
168662306a36Sopenharmony_ci	.ngroups = ARRAY_SIZE(s500_groups),
168762306a36Sopenharmony_ci	.ngpios = NUM_GPIOS,
168862306a36Sopenharmony_ci	.ports = s500_gpio_ports,
168962306a36Sopenharmony_ci	.nports = ARRAY_SIZE(s500_gpio_ports),
169062306a36Sopenharmony_ci	.padctl_arg2val = s500_pad_pinconf_arg2val,
169162306a36Sopenharmony_ci	.padctl_val2arg = s500_pad_pinconf_val2arg,
169262306a36Sopenharmony_ci};
169362306a36Sopenharmony_ci
169462306a36Sopenharmony_cistatic int s500_pinctrl_probe(struct platform_device *pdev)
169562306a36Sopenharmony_ci{
169662306a36Sopenharmony_ci	return owl_pinctrl_probe(pdev, &s500_pinctrl_data);
169762306a36Sopenharmony_ci}
169862306a36Sopenharmony_ci
169962306a36Sopenharmony_cistatic const struct of_device_id s500_pinctrl_of_match[] = {
170062306a36Sopenharmony_ci	{ .compatible = "actions,s500-pinctrl", },
170162306a36Sopenharmony_ci	{ }
170262306a36Sopenharmony_ci};
170362306a36Sopenharmony_ci
170462306a36Sopenharmony_cistatic struct platform_driver s500_pinctrl_driver = {
170562306a36Sopenharmony_ci	.driver = {
170662306a36Sopenharmony_ci		.name = "pinctrl-s500",
170762306a36Sopenharmony_ci		.of_match_table = of_match_ptr(s500_pinctrl_of_match),
170862306a36Sopenharmony_ci	},
170962306a36Sopenharmony_ci	.probe = s500_pinctrl_probe,
171062306a36Sopenharmony_ci};
171162306a36Sopenharmony_ci
171262306a36Sopenharmony_cistatic int __init s500_pinctrl_init(void)
171362306a36Sopenharmony_ci{
171462306a36Sopenharmony_ci	return platform_driver_register(&s500_pinctrl_driver);
171562306a36Sopenharmony_ci}
171662306a36Sopenharmony_ciarch_initcall(s500_pinctrl_init);
171762306a36Sopenharmony_ci
171862306a36Sopenharmony_cistatic void __exit s500_pinctrl_exit(void)
171962306a36Sopenharmony_ci{
172062306a36Sopenharmony_ci	platform_driver_unregister(&s500_pinctrl_driver);
172162306a36Sopenharmony_ci}
172262306a36Sopenharmony_cimodule_exit(s500_pinctrl_exit);
172362306a36Sopenharmony_ci
172462306a36Sopenharmony_ciMODULE_AUTHOR("Actions Semi Inc.");
172562306a36Sopenharmony_ciMODULE_AUTHOR("Cristian Ciocaltea <cristian.ciocaltea@gmail.com>");
172662306a36Sopenharmony_ciMODULE_DESCRIPTION("Actions Semi S500 SoC Pinctrl Driver");
1727