]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/pinctrl/sh-pfc/pfc-sh7786.c
Merge tag 'imx-soc-3.10' of git://git.linaro.org/people/shawnguo/linux-2.6 into next...
[karo-tx-linux.git] / drivers / pinctrl / sh-pfc / pfc-sh7786.c
index 1e18b58f9e5fba7659e129e8cdfe95eaf4e08bf8..8ae0e32844e953eccac3c473ccdeb4fda2200b52 100644 (file)
@@ -191,7 +191,7 @@ enum {
        PINMUX_MARK_END,
 };
 
-static pinmux_enum_t pinmux_data[] = {
+static const pinmux_enum_t pinmux_data[] = {
 
        /* PA GPIO */
        PINMUX_DATA(PA7_DATA, PA7_IN, PA7_OUT, PA7_IN_PU),
@@ -427,7 +427,7 @@ static pinmux_enum_t pinmux_data[] = {
        PINMUX_DATA(SSI3_SCK_MARK,      P2MSEL6_1, P2MSEL5_1, PJ1_FN),
 };
 
-static struct pinmux_gpio pinmux_gpios[] = {
+static struct sh_pfc_pin pinmux_pins[] = {
        /* PA */
        PINMUX_GPIO(GPIO_PA7, PA7_DATA),
        PINMUX_GPIO(GPIO_PA6, PA6_DATA),
@@ -505,147 +505,151 @@ static struct pinmux_gpio pinmux_gpios[] = {
        PINMUX_GPIO(GPIO_PJ3, PJ3_DATA),
        PINMUX_GPIO(GPIO_PJ2, PJ2_DATA),
        PINMUX_GPIO(GPIO_PJ1, PJ1_DATA),
+};
+
+#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)
 
+static const struct pinmux_func pinmux_func_gpios[] = {
        /* FN */
-       PINMUX_GPIO(GPIO_FN_CDE,                CDE_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_MAGIC,          ETH_MAGIC_MARK),
-       PINMUX_GPIO(GPIO_FN_DISP,               DISP_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_LINK,           ETH_LINK_MARK),
-       PINMUX_GPIO(GPIO_FN_DR5,                DR5_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TX_ER,          ETH_TX_ER_MARK),
-       PINMUX_GPIO(GPIO_FN_DR4,                DR4_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TX_EN,          ETH_TX_EN_MARK),
-       PINMUX_GPIO(GPIO_FN_DR3,                DR3_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TXD3,           ETH_TXD3_MARK),
-       PINMUX_GPIO(GPIO_FN_DR2,                DR2_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TXD2,           ETH_TXD2_MARK),
-       PINMUX_GPIO(GPIO_FN_DR1,                DR1_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TXD1,           ETH_TXD1_MARK),
-       PINMUX_GPIO(GPIO_FN_DR0,                DR0_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TXD0,           ETH_TXD0_MARK),
-       PINMUX_GPIO(GPIO_FN_VSYNC,              VSYNC_MARK),
-       PINMUX_GPIO(GPIO_FN_HSPI_CLK,           HSPI_CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_ODDF,               ODDF_MARK),
-       PINMUX_GPIO(GPIO_FN_HSPI_CS,            HSPI_CS_MARK),
-       PINMUX_GPIO(GPIO_FN_DG5,                DG5_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_MDIO,           ETH_MDIO_MARK),
-       PINMUX_GPIO(GPIO_FN_DG4,                DG4_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RX_CLK,         ETH_RX_CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_DG3,                DG3_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_MDC,            ETH_MDC_MARK),
-       PINMUX_GPIO(GPIO_FN_DG2,                DG2_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_COL,            ETH_COL_MARK),
-       PINMUX_GPIO(GPIO_FN_DG1,                DG1_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_TX_CLK,         ETH_TX_CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_DG0,                DG0_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_CRS,            ETH_CRS_MARK),
-       PINMUX_GPIO(GPIO_FN_DCLKIN,             DCLKIN_MARK),
-       PINMUX_GPIO(GPIO_FN_HSPI_RX,            HSPI_RX_MARK),
-       PINMUX_GPIO(GPIO_FN_HSYNC,              HSYNC_MARK),
-       PINMUX_GPIO(GPIO_FN_HSPI_TX,            HSPI_TX_MARK),
-       PINMUX_GPIO(GPIO_FN_DB5,                DB5_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RXD3,           ETH_RXD3_MARK),
-       PINMUX_GPIO(GPIO_FN_DB4,                DB4_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RXD2,           ETH_RXD2_MARK),
-       PINMUX_GPIO(GPIO_FN_DB3,                DB3_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RXD1,           ETH_RXD1_MARK),
-       PINMUX_GPIO(GPIO_FN_DB2,                DB2_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RXD0,           ETH_RXD0_MARK),
-       PINMUX_GPIO(GPIO_FN_DB1,                DB1_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RX_DV,          ETH_RX_DV_MARK),
-       PINMUX_GPIO(GPIO_FN_DB0,                DB0_MARK),
-       PINMUX_GPIO(GPIO_FN_ETH_RX_ER,          ETH_RX_ER_MARK),
-       PINMUX_GPIO(GPIO_FN_DCLKOUT,            DCLKOUT_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF1_SCK,          SCIF1_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF1_RXD,          SCIF1_RXD_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF1_TXD,          SCIF1_TXD_MARK),
-       PINMUX_GPIO(GPIO_FN_DACK1,              DACK1_MARK),
-       PINMUX_GPIO(GPIO_FN_BACK,               BACK_MARK),
-       PINMUX_GPIO(GPIO_FN_FALE,               FALE_MARK),
-       PINMUX_GPIO(GPIO_FN_DACK0,              DACK0_MARK),
-       PINMUX_GPIO(GPIO_FN_FCLE,               FCLE_MARK),
-       PINMUX_GPIO(GPIO_FN_DREQ1,              DREQ1_MARK),
-       PINMUX_GPIO(GPIO_FN_BREQ,               BREQ_MARK),
-       PINMUX_GPIO(GPIO_FN_USB_OVC1,           USB_OVC1_MARK),
-       PINMUX_GPIO(GPIO_FN_DREQ0,              DREQ0_MARK),
-       PINMUX_GPIO(GPIO_FN_USB_OVC0,           USB_OVC0_MARK),
-       PINMUX_GPIO(GPIO_FN_USB_PENC1,          USB_PENC1_MARK),
-       PINMUX_GPIO(GPIO_FN_USB_PENC0,          USB_PENC0_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC1_SDOUT,         HAC1_SDOUT_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI1_SDATA,         SSI1_SDATA_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1CMD,           SDIF1CMD_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC1_SDIN,          HAC1_SDIN_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI1_SCK,           SSI1_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1CD,            SDIF1CD_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC1_SYNC,          HAC1_SYNC_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI1_WS,            SSI1_WS_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1WP,            SDIF1WP_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC1_BITCLK,        HAC1_BITCLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI1_CLK,           SSI1_CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1CLK,           SDIF1CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC0_SDOUT,         HAC0_SDOUT_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI0_SDATA,         SSI0_SDATA_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1D3,            SDIF1D3_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC0_SDIN,          HAC0_SDIN_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI0_SCK,           SSI0_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1D2,            SDIF1D2_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC0_SYNC,          HAC0_SYNC_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI0_WS,            SSI0_WS_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1D1,            SDIF1D1_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC0_BITCLK,        HAC0_BITCLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI0_CLK,           SSI0_CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF1D0,            SDIF1D0_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF3_SCK,          SCIF3_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI2_SDATA,         SSI2_SDATA_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF3_RXD,          SCIF3_RXD_MARK),
-       PINMUX_GPIO(GPIO_FN_TCLK,               TCLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI2_SCK,           SSI2_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF3_TXD,          SCIF3_TXD_MARK),
-       PINMUX_GPIO(GPIO_FN_HAC_RES,            HAC_RES_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI2_WS,            SSI2_WS_MARK),
-       PINMUX_GPIO(GPIO_FN_DACK3,              DACK3_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0CMD,           SDIF0CMD_MARK),
-       PINMUX_GPIO(GPIO_FN_DACK2,              DACK2_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0CD,            SDIF0CD_MARK),
-       PINMUX_GPIO(GPIO_FN_DREQ3,              DREQ3_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0WP,            SDIF0WP_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF0_CTS,          SCIF0_CTS_MARK),
-       PINMUX_GPIO(GPIO_FN_DREQ2,              DREQ2_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0CLK,           SDIF0CLK_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF0_RTS,          SCIF0_RTS_MARK),
-       PINMUX_GPIO(GPIO_FN_IRL7,               IRL7_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0D3,            SDIF0D3_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF0_SCK,          SCIF0_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_IRL6,               IRL6_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0D2,            SDIF0D2_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF0_RXD,          SCIF0_RXD_MARK),
-       PINMUX_GPIO(GPIO_FN_IRL5,               IRL5_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0D1,            SDIF0D1_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF0_TXD,          SCIF0_TXD_MARK),
-       PINMUX_GPIO(GPIO_FN_IRL4,               IRL4_MARK),
-       PINMUX_GPIO(GPIO_FN_SDIF0D0,            SDIF0D0_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF5_SCK,          SCIF5_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_FRB,                FRB_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF5_RXD,          SCIF5_RXD_MARK),
-       PINMUX_GPIO(GPIO_FN_IOIS16,             IOIS16_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF5_TXD,          SCIF5_TXD_MARK),
-       PINMUX_GPIO(GPIO_FN_CE2B,               CE2B_MARK),
-       PINMUX_GPIO(GPIO_FN_DRAK3,              DRAK3_MARK),
-       PINMUX_GPIO(GPIO_FN_CE2A,               CE2A_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF4_SCK,          SCIF4_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_DRAK2,              DRAK2_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI3_WS,            SSI3_WS_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF4_RXD,          SCIF4_RXD_MARK),
-       PINMUX_GPIO(GPIO_FN_DRAK1,              DRAK1_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI3_SDATA,         SSI3_SDATA_MARK),
-       PINMUX_GPIO(GPIO_FN_FSTATUS,            FSTATUS_MARK),
-       PINMUX_GPIO(GPIO_FN_SCIF4_TXD,          SCIF4_TXD_MARK),
-       PINMUX_GPIO(GPIO_FN_DRAK0,              DRAK0_MARK),
-       PINMUX_GPIO(GPIO_FN_SSI3_SCK,           SSI3_SCK_MARK),
-       PINMUX_GPIO(GPIO_FN_FSE,                FSE_MARK),
+       GPIO_FN(CDE),
+       GPIO_FN(ETH_MAGIC),
+       GPIO_FN(DISP),
+       GPIO_FN(ETH_LINK),
+       GPIO_FN(DR5),
+       GPIO_FN(ETH_TX_ER),
+       GPIO_FN(DR4),
+       GPIO_FN(ETH_TX_EN),
+       GPIO_FN(DR3),
+       GPIO_FN(ETH_TXD3),
+       GPIO_FN(DR2),
+       GPIO_FN(ETH_TXD2),
+       GPIO_FN(DR1),
+       GPIO_FN(ETH_TXD1),
+       GPIO_FN(DR0),
+       GPIO_FN(ETH_TXD0),
+       GPIO_FN(VSYNC),
+       GPIO_FN(HSPI_CLK),
+       GPIO_FN(ODDF),
+       GPIO_FN(HSPI_CS),
+       GPIO_FN(DG5),
+       GPIO_FN(ETH_MDIO),
+       GPIO_FN(DG4),
+       GPIO_FN(ETH_RX_CLK),
+       GPIO_FN(DG3),
+       GPIO_FN(ETH_MDC),
+       GPIO_FN(DG2),
+       GPIO_FN(ETH_COL),
+       GPIO_FN(DG1),
+       GPIO_FN(ETH_TX_CLK),
+       GPIO_FN(DG0),
+       GPIO_FN(ETH_CRS),
+       GPIO_FN(DCLKIN),
+       GPIO_FN(HSPI_RX),
+       GPIO_FN(HSYNC),
+       GPIO_FN(HSPI_TX),
+       GPIO_FN(DB5),
+       GPIO_FN(ETH_RXD3),
+       GPIO_FN(DB4),
+       GPIO_FN(ETH_RXD2),
+       GPIO_FN(DB3),
+       GPIO_FN(ETH_RXD1),
+       GPIO_FN(DB2),
+       GPIO_FN(ETH_RXD0),
+       GPIO_FN(DB1),
+       GPIO_FN(ETH_RX_DV),
+       GPIO_FN(DB0),
+       GPIO_FN(ETH_RX_ER),
+       GPIO_FN(DCLKOUT),
+       GPIO_FN(SCIF1_SCK),
+       GPIO_FN(SCIF1_RXD),
+       GPIO_FN(SCIF1_TXD),
+       GPIO_FN(DACK1),
+       GPIO_FN(BACK),
+       GPIO_FN(FALE),
+       GPIO_FN(DACK0),
+       GPIO_FN(FCLE),
+       GPIO_FN(DREQ1),
+       GPIO_FN(BREQ),
+       GPIO_FN(USB_OVC1),
+       GPIO_FN(DREQ0),
+       GPIO_FN(USB_OVC0),
+       GPIO_FN(USB_PENC1),
+       GPIO_FN(USB_PENC0),
+       GPIO_FN(HAC1_SDOUT),
+       GPIO_FN(SSI1_SDATA),
+       GPIO_FN(SDIF1CMD),
+       GPIO_FN(HAC1_SDIN),
+       GPIO_FN(SSI1_SCK),
+       GPIO_FN(SDIF1CD),
+       GPIO_FN(HAC1_SYNC),
+       GPIO_FN(SSI1_WS),
+       GPIO_FN(SDIF1WP),
+       GPIO_FN(HAC1_BITCLK),
+       GPIO_FN(SSI1_CLK),
+       GPIO_FN(SDIF1CLK),
+       GPIO_FN(HAC0_SDOUT),
+       GPIO_FN(SSI0_SDATA),
+       GPIO_FN(SDIF1D3),
+       GPIO_FN(HAC0_SDIN),
+       GPIO_FN(SSI0_SCK),
+       GPIO_FN(SDIF1D2),
+       GPIO_FN(HAC0_SYNC),
+       GPIO_FN(SSI0_WS),
+       GPIO_FN(SDIF1D1),
+       GPIO_FN(HAC0_BITCLK),
+       GPIO_FN(SSI0_CLK),
+       GPIO_FN(SDIF1D0),
+       GPIO_FN(SCIF3_SCK),
+       GPIO_FN(SSI2_SDATA),
+       GPIO_FN(SCIF3_RXD),
+       GPIO_FN(TCLK),
+       GPIO_FN(SSI2_SCK),
+       GPIO_FN(SCIF3_TXD),
+       GPIO_FN(HAC_RES),
+       GPIO_FN(SSI2_WS),
+       GPIO_FN(DACK3),
+       GPIO_FN(SDIF0CMD),
+       GPIO_FN(DACK2),
+       GPIO_FN(SDIF0CD),
+       GPIO_FN(DREQ3),
+       GPIO_FN(SDIF0WP),
+       GPIO_FN(SCIF0_CTS),
+       GPIO_FN(DREQ2),
+       GPIO_FN(SDIF0CLK),
+       GPIO_FN(SCIF0_RTS),
+       GPIO_FN(IRL7),
+       GPIO_FN(SDIF0D3),
+       GPIO_FN(SCIF0_SCK),
+       GPIO_FN(IRL6),
+       GPIO_FN(SDIF0D2),
+       GPIO_FN(SCIF0_RXD),
+       GPIO_FN(IRL5),
+       GPIO_FN(SDIF0D1),
+       GPIO_FN(SCIF0_TXD),
+       GPIO_FN(IRL4),
+       GPIO_FN(SDIF0D0),
+       GPIO_FN(SCIF5_SCK),
+       GPIO_FN(FRB),
+       GPIO_FN(SCIF5_RXD),
+       GPIO_FN(IOIS16),
+       GPIO_FN(SCIF5_TXD),
+       GPIO_FN(CE2B),
+       GPIO_FN(DRAK3),
+       GPIO_FN(CE2A),
+       GPIO_FN(SCIF4_SCK),
+       GPIO_FN(DRAK2),
+       GPIO_FN(SSI3_WS),
+       GPIO_FN(SCIF4_RXD),
+       GPIO_FN(DRAK1),
+       GPIO_FN(SSI3_SDATA),
+       GPIO_FN(FSTATUS),
+       GPIO_FN(SCIF4_TXD),
+       GPIO_FN(DRAK0),
+       GPIO_FN(SSI3_SCK),
+       GPIO_FN(FSE),
 };
 
-static struct pinmux_cfg_reg pinmux_config_regs[] = {
+static const struct pinmux_cfg_reg pinmux_config_regs[] = {
        { PINMUX_CFG_REG("PACR", 0xffcc0000, 16, 2) {
                PA7_FN, PA7_OUT, PA7_IN, PA7_IN_PU,
                PA6_FN, PA6_OUT, PA6_IN, PA6_IN_PU,
@@ -775,7 +779,7 @@ static struct pinmux_cfg_reg pinmux_config_regs[] = {
        {}
 };
 
-static struct pinmux_data_reg pinmux_data_regs[] = {
+static const struct pinmux_data_reg pinmux_data_regs[] = {
        { PINMUX_DATA_REG("PADR", 0xffcc0020, 8) {
                PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA,
                PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA }
@@ -815,20 +819,18 @@ static struct pinmux_data_reg pinmux_data_regs[] = {
        { },
 };
 
-struct sh_pfc_soc_info sh7786_pinmux_info = {
+const struct sh_pfc_soc_info sh7786_pinmux_info = {
        .name = "sh7786_pfc",
-       .reserved_id = PINMUX_RESERVED,
-       .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
        .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
        .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
        .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
-       .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
        .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
 
-       .first_gpio = GPIO_PA7,
-       .last_gpio = GPIO_FN_IRL4,
+       .pins = pinmux_pins,
+       .nr_pins = ARRAY_SIZE(pinmux_pins),
+       .func_gpios = pinmux_func_gpios,
+       .nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),
 
-       .gpios = pinmux_gpios,
        .cfg_regs = pinmux_config_regs,
        .data_regs = pinmux_data_regs,