#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinconf-generic.h>
#include "pinctrl-owl.h"
#define MFCTL0 …
#define MFCTL1 …
#define MFCTL2 …
#define MFCTL3 …
#define PAD_PULLCTL0 …
#define PAD_PULLCTL1 …
#define PAD_PULLCTL2 …
#define PAD_ST0 …
#define PAD_ST1 …
#define PAD_CTL …
#define PAD_DRV0 …
#define PAD_DRV1 …
#define PAD_DRV2 …
#define PAD_SR0 …
#define PAD_SR1 …
#define PAD_SR2 …
#define _GPIOA(offset) …
#define _GPIOB(offset) …
#define _GPIOC(offset) …
#define _GPIOD(offset) …
#define _GPIOE(offset) …
#define _GPIOF(offset) …
#define NUM_GPIOS …
#define _PIN(offset) …
#define ETH_TXD0 …
#define ETH_TXD1 …
#define ETH_TXEN …
#define ETH_RXER …
#define ETH_CRS_DV …
#define ETH_RXD1 …
#define ETH_RXD0 …
#define ETH_REF_CLK …
#define ETH_MDC …
#define ETH_MDIO …
#define SIRQ0 …
#define SIRQ1 …
#define SIRQ2 …
#define I2S_D0 …
#define I2S_BCLK0 …
#define I2S_LRCLK0 …
#define I2S_MCLK0 …
#define I2S_D1 …
#define I2S_BCLK1 …
#define I2S_LRCLK1 …
#define I2S_MCLK1 …
#define ERAM_A5 …
#define ERAM_A6 …
#define ERAM_A7 …
#define ERAM_A8 …
#define ERAM_A9 …
#define ERAM_A10 …
#define ERAM_A11 …
#define SD0_D0 …
#define SD0_D1 …
#define SD0_D2 …
#define SD0_D3 …
#define SD1_D0 …
#define SD1_D1 …
#define SD1_D2 …
#define SD1_D3 …
#define SD0_CMD …
#define SD0_CLK …
#define SD1_CMD …
#define SD1_CLK …
#define SPI0_SCLK …
#define SPI0_SS …
#define SPI0_MISO …
#define SPI0_MOSI …
#define UART0_RX …
#define UART0_TX …
#define UART2_RX …
#define UART2_TX …
#define UART2_RTSB …
#define UART2_CTSB …
#define UART4_RX …
#define UART4_TX …
#define I2C0_SCLK …
#define I2C0_SDATA …
#define I2C1_SCLK …
#define I2C1_SDATA …
#define I2C2_SCLK …
#define I2C2_SDATA …
#define CSI0_DN0 …
#define CSI0_DP0 …
#define CSI0_DN1 …
#define CSI0_DP1 …
#define CSI0_CN …
#define CSI0_CP …
#define CSI0_DN2 …
#define CSI0_DP2 …
#define CSI0_DN3 …
#define CSI0_DP3 …
#define SENSOR0_PCLK …
#define CSI1_DN0 …
#define CSI1_DP0 …
#define CSI1_DN1 …
#define CSI1_DP1 …
#define CSI1_CN …
#define CSI1_CP …
#define SENSOR0_CKOUT …
#define LVDS_OEP …
#define LVDS_OEN …
#define LVDS_ODP …
#define LVDS_ODN …
#define LVDS_OCP …
#define LVDS_OCN …
#define LVDS_OBP …
#define LVDS_OBN …
#define LVDS_OAP …
#define LVDS_OAN …
#define LVDS_EEP …
#define LVDS_EEN …
#define LVDS_EDP …
#define LVDS_EDN …
#define LVDS_ECP …
#define LVDS_ECN …
#define LVDS_EBP …
#define LVDS_EBN …
#define LVDS_EAP …
#define LVDS_EAN …
#define DSI_DP3 …
#define DSI_DN3 …
#define DSI_DP1 …
#define DSI_DN1 …
#define DSI_CP …
#define DSI_CN …
#define DSI_DP0 …
#define DSI_DN0 …
#define DSI_DP2 …
#define DSI_DN2 …
#define NAND0_D0 …
#define NAND0_D1 …
#define NAND0_D2 …
#define NAND0_D3 …
#define NAND0_D4 …
#define NAND0_D5 …
#define NAND0_D6 …
#define NAND0_D7 …
#define NAND0_DQS …
#define NAND0_DQSN …
#define NAND0_ALE …
#define NAND0_CLE …
#define NAND0_CEB0 …
#define NAND0_CEB1 …
#define NAND0_CEB2 …
#define NAND0_CEB3 …
#define NAND1_D0 …
#define NAND1_D1 …
#define NAND1_D2 …
#define NAND1_D3 …
#define NAND1_D4 …
#define NAND1_D5 …
#define NAND1_D6 …
#define NAND1_D7 …
#define NAND1_DQS …
#define NAND1_DQSN …
#define NAND1_ALE …
#define NAND1_CLE …
#define NAND1_CEB0 …
#define NAND1_CEB1 …
#define NAND1_CEB2 …
#define NAND1_CEB3 …
#define PCM1_IN …
#define PCM1_CLK …
#define PCM1_SYNC …
#define PCM1_OUT …
#define UART3_RX …
#define UART3_TX …
#define UART3_RTSB …
#define UART3_CTSB …
#define SGPIO0 …
#define SGPIO1 …
#define SGPIO2 …
#define SGPIO3 …
#define NUM_PADS …
static const struct pinctrl_pin_desc s900_pads[] = …;
enum s900_pinmux_functions { … };
static unsigned int lvds_oxx_uart4_mfp_pads[] = …;
static unsigned int lvds_oxx_uart4_mfp_funcs[] = …;
static unsigned int rmii_mdc_mfp_pads[] = …;
static unsigned int rmii_mdc_mfp_funcs[] = …;
static unsigned int rmii_mdio_mfp_pads[] = …;
static unsigned int rmii_mdio_mfp_funcs[] = …;
static unsigned int sirq0_mfp_pads[] = …;
static unsigned int sirq0_mfp_funcs[] = …;
static unsigned int sirq1_mfp_pads[] = …;
static unsigned int sirq1_mfp_funcs[] = …;
static unsigned int rmii_txd0_mfp_pads[] = …;
static unsigned int rmii_txd0_mfp_funcs[] = …;
static unsigned int rmii_txd1_mfp_pads[] = …;
static unsigned int rmii_txd1_mfp_funcs[] = …;
static unsigned int rmii_txen_mfp_pads[] = …;
static unsigned int rmii_txen_mfp_funcs[] = …;
static unsigned int rmii_rxer_mfp_pads[] = …;
static unsigned int rmii_rxer_mfp_funcs[] = …;
static unsigned int rmii_crs_dv_mfp_pads[] = …;
static unsigned int rmii_crs_dv_mfp_funcs[] = …;
static unsigned int rmii_rxd1_mfp_pads[] = …;
static unsigned int rmii_rxd1_mfp_funcs[] = …;
static unsigned int rmii_rxd0_mfp_pads[] = …;
static unsigned int rmii_rxd0_mfp_funcs[] = …;
static unsigned int rmii_ref_clk_mfp_pads[] = …;
static unsigned int rmii_ref_clk_mfp_funcs[] = …;
static unsigned int i2s_d0_mfp_pads[] = …;
static unsigned int i2s_d0_mfp_funcs[] = …;
static unsigned int i2s_d1_mfp_pads[] = …;
static unsigned int i2s_d1_mfp_funcs[] = …;
static unsigned int i2s_lr_m_clk0_mfp_pads[] = …;
static unsigned int i2s_lr_m_clk0_mfp_funcs[] = …;
static unsigned int i2s_bclk0_mfp_pads[] = …;
static unsigned int i2s_bclk0_mfp_funcs[] = …;
static unsigned int i2s_bclk1_mclk1_mfp_pads[] = …;
static unsigned int i2s_bclk1_mclk1_mfp_funcs[] = …;
static unsigned int pcm1_in_out_mfp_pads[] = …;
static unsigned int pcm1_in_out_mfp_funcs[] = …;
static unsigned int pcm1_clk_mfp_pads[] = …;
static unsigned int pcm1_clk_mfp_funcs[] = …;
static unsigned int pcm1_sync_mfp_pads[] = …;
static unsigned int pcm1_sync_mfp_funcs[] = …;
static unsigned int eram_a5_mfp_pads[] = …;
static unsigned int eram_a5_mfp_funcs[] = …;
static unsigned int eram_a6_mfp_pads[] = …;
static unsigned int eram_a6_mfp_funcs[] = …;
static unsigned int eram_a7_mfp_pads[] = …;
static unsigned int eram_a7_mfp_funcs[] = …;
static unsigned int eram_a8_mfp_pads[] = …;
static unsigned int eram_a8_mfp_funcs[] = …;
static unsigned int eram_a9_mfp_pads[] = …;
static unsigned int eram_a9_mfp_funcs[] = …;
static unsigned int eram_a10_mfp_pads[] = …;
static unsigned int eram_a10_mfp_funcs[] = …;
static unsigned int eram_a11_mfp_pads[] = …;
static unsigned int eram_a11_mfp_funcs[] = …;
static unsigned int lvds_oep_odn_mfp_pads[] = …;
static unsigned int lvds_oep_odn_mfp_funcs[] = …;
static unsigned int lvds_ocp_obn_mfp_pads[] = …;
static unsigned int lvds_ocp_obn_mfp_funcs[] = …;
static unsigned int lvds_oap_oan_mfp_pads[] = …;
static unsigned int lvds_oap_oan_mfp_funcs[] = …;
static unsigned int lvds_e_mfp_pads[] = …;
static unsigned int lvds_e_mfp_funcs[] = …;
static unsigned int spi0_sclk_mosi_mfp_pads[] = …;
static unsigned int spi0_sclk_mosi_mfp_funcs[] = …;
static unsigned int spi0_ss_mfp_pads[] = …;
static unsigned int spi0_ss_mfp_funcs[] = …;
static unsigned int spi0_miso_mfp_pads[] = …;
static unsigned int spi0_miso_mfp_funcs[] = …;
static unsigned int uart2_rtsb_mfp_pads[] = …;
static unsigned int uart2_rtsb_mfp_funcs[] = …;
static unsigned int uart2_ctsb_mfp_pads[] = …;
static unsigned int uart2_ctsb_mfp_funcs[] = …;
static unsigned int uart3_rtsb_mfp_pads[] = …;
static unsigned int uart3_rtsb_mfp_funcs[] = …;
static unsigned int uart3_ctsb_mfp_pads[] = …;
static unsigned int uart3_ctsb_mfp_funcs[] = …;
static unsigned int sd0_d0_mfp_pads[] = …;
static unsigned int sd0_d0_mfp_funcs[] = …;
static unsigned int sd0_d1_mfp_pads[] = …;
static unsigned int sd0_d1_mfp_funcs[] = …;
static unsigned int sd0_d2_d3_mfp_pads[] = …;
static unsigned int sd0_d2_d3_mfp_funcs[] = …;
static unsigned int sd1_d0_d3_mfp_pads[] = …;
static unsigned int sd1_d0_d3_mfp_funcs[] = …;
static unsigned int sd0_cmd_mfp_pads[] = …;
static unsigned int sd0_cmd_mfp_funcs[] = …;
static unsigned int sd0_clk_mfp_pads[] = …;
static unsigned int sd0_clk_mfp_funcs[] = …;
static unsigned int sd1_cmd_clk_mfp_pads[] = …;
static unsigned int sd1_cmd_clk_mfp_funcs[] = …;
static unsigned int uart0_rx_mfp_pads[] = …;
static unsigned int uart0_rx_mfp_funcs[] = …;
static unsigned int nand0_d0_ceb3_mfp_pads[] = …;
static unsigned int nand0_d0_ceb3_mfp_funcs[] = …;
static unsigned int uart0_tx_mfp_pads[] = …;
static unsigned int uart0_tx_mfp_funcs[] = …;
static unsigned int i2c0_mfp_pads[] = …;
static unsigned int i2c0_mfp_funcs[] = …;
static unsigned int csi0_cn_cp_mfp_pads[] = …;
static unsigned int csi0_cn_cp_mfp_funcs[] = …;
static unsigned int csi0_dn0_dp3_mfp_pads[] = …;
static unsigned int csi0_dn0_dp3_mfp_funcs[] = …;
static unsigned int csi1_dn0_cp_mfp_pads[] = …;
static unsigned int csi1_dn0_cp_mfp_funcs[] = …;
static unsigned int dsi_dp3_dn1_mfp_pads[] = …;
static unsigned int dsi_dp3_dn1_mfp_funcs[] = …;
static unsigned int dsi_cp_dn0_mfp_pads[] = …;
static unsigned int dsi_cp_dn0_mfp_funcs[] = …;
static unsigned int dsi_dp2_dn2_mfp_pads[] = …;
static unsigned int dsi_dp2_dn2_mfp_funcs[] = …;
static unsigned int nand1_d0_ceb1_mfp_pads[] = …;
static unsigned int nand1_d0_ceb1_mfp_funcs[] = …;
static unsigned int nand1_ceb3_mfp_pads[] = …;
static unsigned int nand1_ceb3_mfp_funcs[] = …;
static unsigned int nand1_ceb0_mfp_pads[] = …;
static unsigned int nand1_ceb0_mfp_funcs[] = …;
static unsigned int csi1_dn0_dp0_mfp_pads[] = …;
static unsigned int csi1_dn0_dp0_mfp_funcs[] = …;
static unsigned int uart4_rx_tx_mfp_pads[] = …;
static unsigned int uart4_rx_tx_mfp_funcs[] = …;
static unsigned int sgpio3_drv_pads[] = …;
static unsigned int sgpio2_drv_pads[] = …;
static unsigned int sgpio1_drv_pads[] = …;
static unsigned int sgpio0_drv_pads[] = …;
static unsigned int rmii_tx_d0_d1_drv_pads[] = …;
static unsigned int rmii_txen_rxer_drv_pads[] = …;
static unsigned int rmii_crs_dv_drv_pads[] = …;
static unsigned int rmii_rx_d1_d0_drv_pads[] = …;
static unsigned int rmii_ref_clk_drv_pads[] = …;
static unsigned int rmii_mdc_mdio_drv_pads[] = …;
static unsigned int sirq_0_1_drv_pads[] = …;
static unsigned int sirq2_drv_pads[] = …;
static unsigned int i2s_d0_d1_drv_pads[] = …;
static unsigned int i2s_lr_m_clk0_drv_pads[] = …;
static unsigned int i2s_blk1_mclk1_drv_pads[] = …;
static unsigned int pcm1_in_out_drv_pads[] = …;
static unsigned int lvds_oap_oan_drv_pads[] = …;
static unsigned int lvds_oep_odn_drv_pads[] = …;
static unsigned int lvds_ocp_obn_drv_pads[] = …;
static unsigned int lvds_e_drv_pads[] = …;
static unsigned int sd0_d3_d0_drv_pads[] = …;
static unsigned int sd1_d3_d0_drv_pads[] = …;
static unsigned int sd0_sd1_cmd_clk_drv_pads[] = …;
static unsigned int spi0_sclk_mosi_drv_pads[] = …;
static unsigned int spi0_ss_miso_drv_pads[] = …;
static unsigned int uart0_rx_tx_drv_pads[] = …;
static unsigned int uart4_rx_tx_drv_pads[] = …;
static unsigned int uart2_drv_pads[] = …;
static unsigned int uart3_drv_pads[] = …;
static unsigned int i2c0_drv_pads[] = …;
static unsigned int i2c1_drv_pads[] = …;
static unsigned int i2c2_drv_pads[] = …;
static unsigned int sensor0_drv_pads[] = …;
static unsigned int sgpio3_sr_pads[] = …;
static unsigned int sgpio2_sr_pads[] = …;
static unsigned int sgpio1_sr_pads[] = …;
static unsigned int sgpio0_sr_pads[] = …;
static unsigned int rmii_tx_d0_d1_sr_pads[] = …;
static unsigned int rmii_txen_rxer_sr_pads[] = …;
static unsigned int rmii_crs_dv_sr_pads[] = …;
static unsigned int rmii_rx_d1_d0_sr_pads[] = …;
static unsigned int rmii_ref_clk_sr_pads[] = …;
static unsigned int rmii_mdc_mdio_sr_pads[] = …;
static unsigned int sirq_0_1_sr_pads[] = …;
static unsigned int sirq2_sr_pads[] = …;
static unsigned int i2s_do_d1_sr_pads[] = …;
static unsigned int i2s_lr_m_clk0_sr_pads[] = …;
static unsigned int i2s_bclk0_mclk1_sr_pads[] = …;
static unsigned int pcm1_in_out_sr_pads[] = …;
static unsigned int sd1_d3_d0_sr_pads[] = …;
static unsigned int sd0_sd1_clk_cmd_sr_pads[] = …;
static unsigned int spi0_sclk_mosi_sr_pads[] = …;
static unsigned int spi0_ss_miso_sr_pads[] = …;
static unsigned int uart0_rx_tx_sr_pads[] = …;
static unsigned int uart4_rx_tx_sr_pads[] = …;
static unsigned int uart2_sr_pads[] = …;
static unsigned int uart3_sr_pads[] = …;
static unsigned int i2c0_sr_pads[] = …;
static unsigned int i2c1_sr_pads[] = …;
static unsigned int i2c2_sr_pads[] = …;
static unsigned int sensor0_sr_pads[] = …;
static const struct owl_pingroup s900_groups[] = …;
static const char * const eram_groups[] = …;
static const char * const eth_rmii_groups[] = …;
static const char * const eth_smii_groups[] = …;
static const char * const spi0_groups[] = …;
static const char * const spi1_groups[] = …;
static const char * const spi2_groups[] = …;
static const char * const spi3_groups[] = …;
static const char * const sens0_groups[] = …;
static const char * const uart0_groups[] = …;
static const char * const uart1_groups[] = …;
static const char * const uart2_groups[] = …;
static const char * const uart3_groups[] = …;
static const char * const uart4_groups[] = …;
static const char * const uart5_groups[] = …;
static const char * const uart6_groups[] = …;
static const char * const i2s0_groups[] = …;
static const char * const i2s1_groups[] = …;
static const char * const pcm0_groups[] = …;
static const char * const pcm1_groups[] = …;
static const char * const jtag_groups[] = …;
static const char * const pwm0_groups[] = …;
static const char * const pwm1_groups[] = …;
static const char * const pwm2_groups[] = …;
static const char * const pwm3_groups[] = …;
static const char * const pwm4_groups[] = …;
static const char * const pwm5_groups[] = …;
static const char * const sd0_groups[] = …;
static const char * const sd1_groups[] = …;
static const char * const sd2_groups[] = …;
static const char * const sd3_groups[] = …;
static const char * const i2c0_groups[] = …;
static const char * const i2c1_groups[] = …;
static const char * const i2c2_groups[] = …;
static const char * const i2c3_groups[] = …;
static const char * const i2c4_groups[] = …;
static const char * const i2c5_groups[] = …;
static const char * const lvds_groups[] = …;
static const char * const usb20_groups[] = …;
static const char * const usb30_groups[] = …;
static const char * const gpu_groups[] = …;
static const char * const mipi_csi0_groups[] = …;
static const char * const mipi_csi1_groups[] = …;
static const char * const mipi_dsi_groups[] = …;
static const char * const nand0_groups[] = …;
static const char * const nand1_groups[] = …;
static const char * const spdif_groups[] = …;
static const char * const sirq0_groups[] = …;
static const char * const sirq1_groups[] = …;
static const char * const sirq2_groups[] = …;
static const struct owl_pinmux_func s900_functions[] = …;
static PAD_PULLCTL_CONF(ETH_RXER, 0, 18, 2);
static PAD_PULLCTL_CONF(SIRQ0, 0, 16, 2);
static PAD_PULLCTL_CONF(SIRQ1, 0, 14, 2);
static PAD_PULLCTL_CONF(SIRQ2, 0, 12, 2);
static PAD_PULLCTL_CONF(I2C0_SDATA, 0, 10, 2);
static PAD_PULLCTL_CONF(I2C0_SCLK, 0, 8, 2);
static PAD_PULLCTL_CONF(ERAM_A5, 0, 6, 2);
static PAD_PULLCTL_CONF(ERAM_A6, 0, 4, 2);
static PAD_PULLCTL_CONF(ERAM_A7, 0, 2, 2);
static PAD_PULLCTL_CONF(ERAM_A10, 0, 0, 2);
static PAD_PULLCTL_CONF(PCM1_IN, 1, 30, 2);
static PAD_PULLCTL_CONF(PCM1_OUT, 1, 28, 2);
static PAD_PULLCTL_CONF(SD0_D0, 1, 26, 2);
static PAD_PULLCTL_CONF(SD0_D1, 1, 24, 2);
static PAD_PULLCTL_CONF(SD0_D2, 1, 22, 2);
static PAD_PULLCTL_CONF(SD0_D3, 1, 20, 2);
static PAD_PULLCTL_CONF(SD0_CMD, 1, 18, 2);
static PAD_PULLCTL_CONF(SD0_CLK, 1, 16, 2);
static PAD_PULLCTL_CONF(SD1_CMD, 1, 14, 2);
static PAD_PULLCTL_CONF(SD1_D0, 1, 12, 2);
static PAD_PULLCTL_CONF(SD1_D1, 1, 10, 2);
static PAD_PULLCTL_CONF(SD1_D2, 1, 8, 2);
static PAD_PULLCTL_CONF(SD1_D3, 1, 6, 2);
static PAD_PULLCTL_CONF(UART0_RX, 1, 4, 2);
static PAD_PULLCTL_CONF(UART0_TX, 1, 2, 2);
static PAD_PULLCTL_CONF(I2C2_SDATA, 2, 26, 2);
static PAD_PULLCTL_CONF(I2C2_SCLK, 2, 24, 2);
static PAD_PULLCTL_CONF(SPI0_SCLK, 2, 22, 2);
static PAD_PULLCTL_CONF(SPI0_MOSI, 2, 20, 2);
static PAD_PULLCTL_CONF(I2C1_SDATA, 2, 18, 2);
static PAD_PULLCTL_CONF(I2C1_SCLK, 2, 16, 2);
static PAD_PULLCTL_CONF(NAND0_D0, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D1, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D2, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D3, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D4, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D5, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D6, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_D7, 2, 15, 1);
static PAD_PULLCTL_CONF(NAND0_DQSN, 2, 14, 1);
static PAD_PULLCTL_CONF(NAND0_DQS, 2, 13, 1);
static PAD_PULLCTL_CONF(NAND1_D0, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D1, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D2, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D3, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D4, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D5, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D6, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_D7, 2, 12, 1);
static PAD_PULLCTL_CONF(NAND1_DQSN, 2, 11, 1);
static PAD_PULLCTL_CONF(NAND1_DQS, 2, 10, 1);
static PAD_PULLCTL_CONF(SGPIO2, 2, 8, 2);
static PAD_PULLCTL_CONF(SGPIO3, 2, 6, 2);
static PAD_PULLCTL_CONF(UART4_RX, 2, 4, 2);
static PAD_PULLCTL_CONF(UART4_TX, 2, 2, 2);
static PAD_ST_CONF(I2C0_SDATA, 0, 30, 1);
static PAD_ST_CONF(UART0_RX, 0, 29, 1);
static PAD_ST_CONF(ETH_MDC, 0, 28, 1);
static PAD_ST_CONF(I2S_MCLK1, 0, 23, 1);
static PAD_ST_CONF(ETH_REF_CLK, 0, 22, 1);
static PAD_ST_CONF(ETH_TXEN, 0, 21, 1);
static PAD_ST_CONF(ETH_TXD0, 0, 20, 1);
static PAD_ST_CONF(I2S_LRCLK1, 0, 19, 1);
static PAD_ST_CONF(SGPIO2, 0, 18, 1);
static PAD_ST_CONF(SGPIO3, 0, 17, 1);
static PAD_ST_CONF(UART4_TX, 0, 16, 1);
static PAD_ST_CONF(I2S_D1, 0, 15, 1);
static PAD_ST_CONF(UART0_TX, 0, 14, 1);
static PAD_ST_CONF(SPI0_SCLK, 0, 13, 1);
static PAD_ST_CONF(SD0_CLK, 0, 12, 1);
static PAD_ST_CONF(ERAM_A5, 0, 11, 1);
static PAD_ST_CONF(I2C0_SCLK, 0, 7, 1);
static PAD_ST_CONF(ERAM_A9, 0, 6, 1);
static PAD_ST_CONF(LVDS_OEP, 0, 5, 1);
static PAD_ST_CONF(LVDS_ODN, 0, 4, 1);
static PAD_ST_CONF(LVDS_OAP, 0, 3, 1);
static PAD_ST_CONF(I2S_BCLK1, 0, 2, 1);
static PAD_ST_CONF(I2S_LRCLK0, 1, 29, 1);
static PAD_ST_CONF(UART4_RX, 1, 28, 1);
static PAD_ST_CONF(UART3_CTSB, 1, 27, 1);
static PAD_ST_CONF(UART3_RTSB, 1, 26, 1);
static PAD_ST_CONF(UART3_RX, 1, 25, 1);
static PAD_ST_CONF(UART2_RTSB, 1, 24, 1);
static PAD_ST_CONF(UART2_CTSB, 1, 23, 1);
static PAD_ST_CONF(UART2_RX, 1, 22, 1);
static PAD_ST_CONF(ETH_RXD0, 1, 21, 1);
static PAD_ST_CONF(ETH_RXD1, 1, 20, 1);
static PAD_ST_CONF(ETH_CRS_DV, 1, 19, 1);
static PAD_ST_CONF(ETH_RXER, 1, 18, 1);
static PAD_ST_CONF(ETH_TXD1, 1, 17, 1);
static PAD_ST_CONF(LVDS_OCP, 1, 16, 1);
static PAD_ST_CONF(LVDS_OBP, 1, 15, 1);
static PAD_ST_CONF(LVDS_OBN, 1, 14, 1);
static PAD_ST_CONF(PCM1_OUT, 1, 12, 1);
static PAD_ST_CONF(PCM1_CLK, 1, 11, 1);
static PAD_ST_CONF(PCM1_IN, 1, 10, 1);
static PAD_ST_CONF(PCM1_SYNC, 1, 9, 1);
static PAD_ST_CONF(I2C1_SCLK, 1, 8, 1);
static PAD_ST_CONF(I2C1_SDATA, 1, 7, 1);
static PAD_ST_CONF(I2C2_SCLK, 1, 6, 1);
static PAD_ST_CONF(I2C2_SDATA, 1, 5, 1);
static PAD_ST_CONF(SPI0_MOSI, 1, 4, 1);
static PAD_ST_CONF(SPI0_MISO, 1, 3, 1);
static PAD_ST_CONF(SPI0_SS, 1, 2, 1);
static PAD_ST_CONF(I2S_BCLK0, 1, 1, 1);
static PAD_ST_CONF(I2S_MCLK0, 1, 0, 1);
static const struct owl_padinfo s900_padinfo[NUM_PADS] = …;
static const struct owl_gpio_port s900_gpio_ports[] = …;
enum s900_pinconf_pull { … };
static int s900_pad_pinconf_arg2val(const struct owl_padinfo *info,
unsigned int param,
u32 *arg)
{ … }
static int s900_pad_pinconf_val2arg(const struct owl_padinfo *padinfo,
unsigned int param,
u32 *arg)
{ … }
static struct owl_pinctrl_soc_data s900_pinctrl_data = …;
static int s900_pinctrl_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id s900_pinctrl_of_match[] = …;
static struct platform_driver s900_pinctrl_driver = …;
static int __init s900_pinctrl_init(void)
{ … }
arch_initcall(s900_pinctrl_init);
static void __exit s900_pinctrl_exit(void)
{ … }
module_exit(s900_pinctrl_exit);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;