#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/pinctrl/pinctrl.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 _GPIOA(offset) …
#define _GPIOB(offset) …
#define _GPIOC(offset) …
#define _GPIOD(offset) …
#define _GPIOE(offset) …
#define NUM_GPIOS …
#define _PIN(offset) …
#define DNAND_DQS …
#define DNAND_DQSN …
#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 KS_IN0 …
#define KS_IN1 …
#define KS_IN2 …
#define KS_IN3 …
#define KS_OUT0 …
#define KS_OUT1 …
#define KS_OUT2 …
#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 LCD0_D18 …
#define LCD0_D17 …
#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 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 I2C0_SCLK …
#define I2C0_SDATA …
#define SENSOR0_PCLK …
#define SENSOR0_CKOUT …
#define DNAND_ALE …
#define DNAND_CLE …
#define DNAND_CEB0 …
#define DNAND_CEB1 …
#define DNAND_CEB2 …
#define DNAND_CEB3 …
#define UART2_RX …
#define UART2_TX …
#define UART2_RTSB …
#define UART2_CTSB …
#define UART3_RX …
#define UART3_TX …
#define UART3_RTSB …
#define UART3_CTSB …
#define PCM1_IN …
#define PCM1_CLK …
#define PCM1_SYNC …
#define PCM1_OUT …
#define I2C1_SCLK …
#define I2C1_SDATA …
#define I2C2_SCLK …
#define I2C2_SDATA …
#define CSI_DN0 …
#define CSI_DP0 …
#define CSI_DN1 …
#define CSI_DP1 …
#define CSI_CN …
#define CSI_CP …
#define CSI_DN2 …
#define CSI_DP2 …
#define CSI_DN3 …
#define CSI_DP3 …
#define DNAND_D0 …
#define DNAND_D1 …
#define DNAND_D2 …
#define DNAND_D3 …
#define DNAND_D4 …
#define DNAND_D5 …
#define DNAND_D6 …
#define DNAND_D7 …
#define DNAND_WRB …
#define DNAND_RDB …
#define DNAND_RDBN …
#define DNAND_RB …
#define PORB …
#define CLKO_25M …
#define BSEL …
#define PKG0 …
#define PKG1 …
#define PKG2 …
#define PKG3 …
#define _FIRSTPAD …
#define _LASTPAD …
#define NUM_PADS …
static const struct pinctrl_pin_desc s500_pads[] = …;
enum s500_pinmux_functions { … };
static unsigned int lcd0_d18_mfp_pads[] = …;
static unsigned int lcd0_d18_mfp_funcs[] = …;
static unsigned int rmii_crs_dv_mfp_pads[] = …;
static unsigned int rmii_crs_dv_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_rxen_mfp_pads[] = …;
static unsigned int rmii_rxen_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_pcm1_mfp_pads[] = …;
static unsigned int i2s_pcm1_mfp_funcs[] = …;
static unsigned int i2s0_pcm0_mfp_pads[] = …;
static unsigned int i2s0_pcm0_mfp_funcs[] = …;
static unsigned int i2s1_pcm0_mfp_pads[] = …;
static unsigned int i2s1_pcm0_mfp_funcs[] = …;
static unsigned int i2s_d1_mfp_pads[] = …;
static unsigned int i2s_d1_mfp_funcs[] = …;
static unsigned int ks_in0_mfp_pads[] = …;
static unsigned int ks_in0_mfp_funcs[] = …;
static unsigned int ks_in1_mfp_pads[] = …;
static unsigned int ks_in1_mfp_funcs[] = …;
static unsigned int ks_in2_mfp_pads[] = …;
static unsigned int ks_in2_mfp_funcs[] = …;
static unsigned int ks_in3_mfp_pads[] = …;
static unsigned int ks_in3_mfp_funcs[] = …;
static unsigned int ks_out0_mfp_pads[] = …;
static unsigned int ks_out0_mfp_funcs[] = …;
static unsigned int ks_out1_mfp_pads[] = …;
static unsigned int ks_out1_mfp_funcs[] = …;
static unsigned int ks_out2_mfp_pads[] = …;
static unsigned int ks_out2_mfp_funcs[] = …;
static unsigned int lvds_o_pn_mfp_pads[] = …;
static unsigned int lvds_o_pn_mfp_funcs[] = …;
static unsigned int dsi_dn0_mfp_pads[] = …;
static unsigned int dsi_dn0_mfp_funcs[] = …;
static unsigned int dsi_dp2_mfp_pads[] = …;
static unsigned int dsi_dp2_mfp_funcs[] = …;
static unsigned int lcd0_d17_mfp_pads[] = …;
static unsigned int lcd0_d17_mfp_funcs[] = …;
static unsigned int dsi_dp3_mfp_pads[] = …;
static unsigned int dsi_dp3_mfp_funcs[] = …;
static unsigned int dsi_dn3_mfp_pads[] = …;
static unsigned int dsi_dn3_mfp_funcs[] = …;
static unsigned int dsi_dp0_mfp_pads[] = …;
static unsigned int dsi_dp0_mfp_funcs[] = …;
static unsigned int lvds_ee_pn_mfp_pads[] = …;
static unsigned int lvds_ee_pn_mfp_funcs[] = …;
static unsigned int spi0_i2c_pcm_mfp_pads[] = …;
static unsigned int spi0_i2c_pcm_mfp_funcs[] = …;
static unsigned int spi0_i2s_pcm_mfp_pads[] = …;
static unsigned int spi0_i2s_pcm_mfp_funcs[] = …;
static unsigned int dsi_dnp1_cp_mfp_pads[] = …;
static unsigned int dsi_dnp1_cp_mfp_funcs[] = …;
static unsigned int lvds_e_pn_mfp_pads[] = …;
static unsigned int lvds_e_pn_mfp_funcs[] = …;
static unsigned int dsi_dn2_mfp_pads[] = …;
static unsigned int dsi_dn2_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_mfp_pads[] = …;
static unsigned int sd1_cmd_mfp_funcs[] = …;
static unsigned int uart0_rx_mfp_pads[] = …;
static unsigned int uart0_rx_mfp_funcs[] = …;
static unsigned int clko_25m_mfp_pads[] = …;
static unsigned int clko_25m_mfp_funcs[] = …;
static unsigned int csi_cn_cp_mfp_pads[] = …;
static unsigned int csi_cn_cp_mfp_funcs[] = …;
static unsigned int sens0_ckout_mfp_pads[] = …;
static unsigned int sens0_ckout_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 csi_dn_dp_mfp_pads[] = …;
static unsigned int csi_dn_dp_mfp_funcs[] = …;
static unsigned int sen0_pclk_mfp_pads[] = …;
static unsigned int sen0_pclk_mfp_funcs[] = …;
static unsigned int pcm1_in_mfp_pads[] = …;
static unsigned int pcm1_in_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 pcm1_out_mfp_pads[] = …;
static unsigned int pcm1_out_mfp_funcs[] = …;
static unsigned int dnand_data_wr_mfp_pads[] = …;
static unsigned int dnand_data_wr_mfp_funcs[] = …;
static unsigned int dnand_acle_ce0_mfp_pads[] = …;
static unsigned int dnand_acle_ce0_mfp_funcs[] = …;
static unsigned int nand_ceb2_mfp_pads[] = …;
static unsigned int nand_ceb2_mfp_funcs[] = …;
static unsigned int nand_ceb3_mfp_pads[] = …;
static unsigned int nand_ceb3_mfp_funcs[] = …;
static unsigned int sirq_drv_pads[] = …;
static unsigned int rmii_txd01_txen_drv_pads[] = …;
static unsigned int rmii_rxer_drv_pads[] = …;
static unsigned int rmii_crs_drv_pads[] = …;
static unsigned int rmii_rxd10_drv_pads[] = …;
static unsigned int rmii_ref_clk_drv_pads[] = …;
static unsigned int smi_mdc_mdio_drv_pads[] = …;
static unsigned int i2s_d0_drv_pads[] = …;
static unsigned int i2s_bclk0_drv_pads[] = …;
static unsigned int i2s3_drv_pads[] = …;
static unsigned int i2s13_drv_pads[] = …;
static unsigned int pcm1_drv_pads[] = …;
static unsigned int ks_in_drv_pads[] = …;
static unsigned int ks_out_drv_pads[] = …;
static unsigned int lvds_all_drv_pads[] = …;
static unsigned int lcd_dsi_drv_pads[] = …;
static unsigned int dsi_drv_pads[] = …;
static unsigned int sd0_d0_d3_drv_pads[] = …;
static unsigned int sd1_d0_d3_drv_pads[] = …;
static unsigned int sd0_cmd_drv_pads[] = …;
static unsigned int sd0_clk_drv_pads[] = …;
static unsigned int sd1_cmd_drv_pads[] = …;
static unsigned int sd1_clk_drv_pads[] = …;
static unsigned int spi0_all_drv_pads[] = …;
static unsigned int uart0_rx_drv_pads[] = …;
static unsigned int uart0_tx_drv_pads[] = …;
static unsigned int uart2_all_drv_pads[] = …;
static unsigned int i2c0_all_drv_pads[] = …;
static unsigned int i2c12_all_drv_pads[] = …;
static unsigned int sens0_pclk_drv_pads[] = …;
static unsigned int sens0_ckout_drv_pads[] = …;
static unsigned int uart3_all_drv_pads[] = …;
static const struct owl_pingroup s500_groups[] = …;
static const char * const nor_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 sens1_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 pcm1_groups[] = …;
static const char * const pcm0_groups[] = …;
static const char * const ks_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 p0_groups[] = …;
static const char * const sd0_groups[] = …;
static const char * const sd1_groups[] = …;
static const char * const sd2_groups[] = …;
static const char * const i2c0_groups[] = …;
static const char * const i2c1_groups[] = …;
static const char * const i2c3_groups[] = …;
static const char * const lvds_groups[] = …;
static const char * const ts_groups[] = …;
static const char * const lcd0_groups[] = …;
static const char * const usb30_groups[] = …;
static const char * const clko_25m_groups[] = …;
static const char * const mipi_csi_groups[] = …;
static const char * const dsi_groups[] = …;
static const char * const nand_groups[] = …;
static const char * const spdif_groups[] = …;
static const struct owl_pinmux_func s500_functions[] = …;
static PAD_ST_CONF(I2C0_SDATA, 0, 30, 1);
static PAD_ST_CONF(UART0_RX, 0, 29, 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(DSI_DP0, 0, 16, 1);
static PAD_ST_CONF(DSI_DN0, 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(KS_IN0, 0, 11, 1);
static PAD_ST_CONF(SENSOR0_PCLK, 0, 9, 1);
static PAD_ST_CONF(I2C0_SCLK, 0, 7, 1);
static PAD_ST_CONF(KS_OUT0, 0, 6, 1);
static PAD_ST_CONF(KS_OUT1, 0, 5, 1);
static PAD_ST_CONF(KS_OUT2, 0, 4, 1);
static PAD_ST_CONF(DSI_DP2, 1, 31, 1);
static PAD_ST_CONF(DSI_DN2, 1, 30, 1);
static PAD_ST_CONF(I2S_LRCLK0, 1, 29, 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_OAP, 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 PAD_PULLCTL_CONF(PCM1_SYNC, 0, 30, 1);
static PAD_PULLCTL_CONF(PCM1_OUT, 0, 29, 1);
static PAD_PULLCTL_CONF(KS_OUT2, 0, 28, 1);
static PAD_PULLCTL_CONF(LCD0_D17, 0, 27, 1);
static PAD_PULLCTL_CONF(DSI_DN3, 0, 26, 1);
static PAD_PULLCTL_CONF(ETH_RXER, 0, 16, 1);
static PAD_PULLCTL_CONF(SIRQ0, 0, 14, 2);
static PAD_PULLCTL_CONF(SIRQ1, 0, 12, 2);
static PAD_PULLCTL_CONF(SIRQ2, 0, 10, 2);
static PAD_PULLCTL_CONF(I2C0_SDATA, 0, 9, 1);
static PAD_PULLCTL_CONF(I2C0_SCLK, 0, 8, 1);
static PAD_PULLCTL_CONF(KS_IN0, 0, 7, 1);
static PAD_PULLCTL_CONF(KS_IN1, 0, 6, 1);
static PAD_PULLCTL_CONF(KS_IN2, 0, 5, 1);
static PAD_PULLCTL_CONF(KS_IN3, 0, 4, 1);
static PAD_PULLCTL_CONF(KS_OUT0, 0, 2, 1);
static PAD_PULLCTL_CONF(KS_OUT1, 0, 1, 1);
static PAD_PULLCTL_CONF(DSI_DP1, 0, 0, 1);
static PAD_PULLCTL_CONF(DSI_CP, 1, 31, 1);
static PAD_PULLCTL_CONF(DSI_CN, 1, 30, 1);
static PAD_PULLCTL_CONF(DSI_DN2, 1, 28, 1);
static PAD_PULLCTL_CONF(DNAND_RDBN, 1, 25, 1);
static PAD_PULLCTL_CONF(SD0_D0, 1, 17, 1);
static PAD_PULLCTL_CONF(SD0_D1, 1, 16, 1);
static PAD_PULLCTL_CONF(SD0_D2, 1, 15, 1);
static PAD_PULLCTL_CONF(SD0_D3, 1, 14, 1);
static PAD_PULLCTL_CONF(SD0_CMD, 1, 13, 1);
static PAD_PULLCTL_CONF(SD0_CLK, 1, 12, 1);
static PAD_PULLCTL_CONF(SD1_CMD, 1, 11, 1);
static PAD_PULLCTL_CONF(SD1_D0, 1, 6, 1);
static PAD_PULLCTL_CONF(SD1_D1, 1, 5, 1);
static PAD_PULLCTL_CONF(SD1_D2, 1, 4, 1);
static PAD_PULLCTL_CONF(SD1_D3, 1, 3, 1);
static PAD_PULLCTL_CONF(UART0_RX, 1, 2, 1);
static PAD_PULLCTL_CONF(UART0_TX, 1, 1, 1);
static PAD_PULLCTL_CONF(CLKO_25M, 1, 0, 1);
static PAD_PULLCTL_CONF(SPI0_SCLK, 2, 12, 1);
static PAD_PULLCTL_CONF(SPI0_MOSI, 2, 11, 1);
static PAD_PULLCTL_CONF(I2C1_SDATA, 2, 10, 1);
static PAD_PULLCTL_CONF(I2C1_SCLK, 2, 9, 1);
static PAD_PULLCTL_CONF(I2C2_SDATA, 2, 8, 1);
static PAD_PULLCTL_CONF(I2C2_SCLK, 2, 7, 1);
static PAD_PULLCTL_CONF(DNAND_DQSN, 2, 5, 2);
static PAD_PULLCTL_CONF(DNAND_DQS, 2, 3, 2);
static PAD_PULLCTL_CONF(DNAND_D0, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D1, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D2, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D3, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D4, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D5, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D6, 2, 2, 1);
static PAD_PULLCTL_CONF(DNAND_D7, 2, 2, 1);
static const struct owl_padinfo s500_padinfo[NUM_PADS] = …;
static const struct owl_gpio_port s500_gpio_ports[] = …;
enum s500_pinconf_pull { … };
static int s500_pad_pinconf_arg2val(const struct owl_padinfo *info,
unsigned int param, u32 *arg)
{ … }
static int s500_pad_pinconf_val2arg(const struct owl_padinfo *padinfo,
unsigned int param, u32 *arg)
{ … }
static struct owl_pinctrl_soc_data s500_pinctrl_data = …;
static int s500_pinctrl_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id s500_pinctrl_of_match[] = …;
static struct platform_driver s500_pinctrl_driver = …;
static int __init s500_pinctrl_init(void)
{ … }
arch_initcall(s500_pinctrl_init);
static void __exit s500_pinctrl_exit(void)
{ … }
module_exit(s500_pinctrl_exit);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;