]> Git Repo - linux.git/commitdiff
Merge tag 'pinctrl-v3.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
authorLinus Torvalds <[email protected]>
Tue, 3 Jun 2014 18:20:32 +0000 (11:20 -0700)
committerLinus Torvalds <[email protected]>
Tue, 3 Jun 2014 18:20:32 +0000 (11:20 -0700)
Pull pin control changes from Linus Walleij:
 "This is the bulk of pin control changes for the v3.16 development
  cycle:

   - Antoine Tenart made the get_group_pins() vtable entry optional.

   - Antoine also provides an entirely new driver for the Marvell Berlin
     SoC.  This is unrelated to the existing MVEBU hardware driver and
     warrants its own separate driver.

   - reflected from the GPIO subsystem there is a number of refactorings
     to make pin control drivers with gpiochips use the new gpiolib
     irqchip helpers.  The following drivers were converted to use the
     new infrastructure:
       * ST Microelectronics STiH416 and friends
       * The Atmel AT91
       * The CSR SiRF (Prima2)
       * The Qualcomm MSM series

   - massive improvements in the Qualcomm MSM driver from Bjorn
     Andersson, Andy Gross and Kumar Gala.  Among those new support for
     the IPQ8064 and MSM8x74 SoC variants.

   - support for the Freescale i.MX6 SoloX SoC variant.

   - massive improvements in the Allwinner sunxi driver from Boris
     Brezillon, Maxime Ripard and Chen-Yu Tsai.

   - Renesas PFC updates from Laurent Pinchart, Kuninori Morimoto,
     Wolfram Sang and Magnus Damm.

   - Cleanups and refactorings of the nVidia Tegra driver from Stepgen
     Warren.

   - the Exynos driver now supports the Exynos3250 SoC.

   - Intel BayTrail updates from Jin Yao, Mika Westerberg.

   - the MVEBU driver now supports the Orion5x SoC variants, which is
     part of the effort of getting rid of the old Marvell kludges in
     arch/arm/mach-orion5x

   - Rockchip driver updates from Heiko Stuebner.

   - a ton of cleanups and janitorial patches from Axel Lin.

   - some minor fixes and improvements here and there"

* tag 'pinctrl-v3.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (93 commits)
  pinctrl: sirf: fix a bad conflict resolution
  pinctrl: msm: Add more MSM8X74 pin definitions
  pinctrl: qcom: ipq8064: Fix naming convention
  pinctrl: msm: Add missing sdc1 and sdc3 groups
  pinctrl: sirf: switch to using allocated state container
  pinctrl: Enable "power-source" to be extracted from DT files
  pinctrl: sunxi: create irq/pin mapping during init
  pinctrl: pinconf-generic: Use kmemdup instead of kmalloc + memcpy
  pinctrl: berlin: Use devm_ioremap_resource()
  pinctrl: sirf: fix typo for GPIO bank number
  pinctrl: sunxi: depend on RESET_CONTROLLER
  pinctrl: sunxi: fix pin numbers passed to register offset helpers
  pinctrl: add pinctrl driver for imx6sx
  pinctrl/at91: Fix lockup when IRQ on PIOC and PIOD occurs
  pinctrl: msm: switch to using generic GPIO irqchip helpers
  pinctrl: sunxi: Fix multiple registration issue
  pinctrl: sunxi: Fix recursive dependency
  pinctrl: berlin: add the BG2CD pinctrl driver
  pinctrl: berlin: add the BG2 pinctrl driver
  pinctrl: berlin: add the BG2Q pinctrl driver
  ...

1  2 
arch/arm/Kconfig
drivers/pinctrl/sh-pfc/pfc-r8a7790.c
drivers/pinctrl/sh-pfc/pfc-r8a7791.c

diff --combined arch/arm/Kconfig
index 201f5e10548418db529d943a0c3e1bd490ec8830,a7bb61e31b69614ec39e1d2b5a99473fd868d616..071dce78959a466c5c7c68e5c803884ecab8102c
@@@ -30,9 -30,9 +30,9 @@@ config AR
        select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
        select HAVE_ARCH_TRACEHOOK
        select HAVE_BPF_JIT
 +      select HAVE_CC_STACKPROTECTOR
        select HAVE_CONTEXT_TRACKING
        select HAVE_C_RECORDMCOUNT
 -      select HAVE_CC_STACKPROTECTOR
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_API_DEBUG
        select HAVE_DMA_ATTRS
@@@ -311,10 -311,8 +311,10 @@@ config ARCH_MULTIPLATFOR
        select ARM_HAS_SG_CHAIN
        select ARM_PATCH_PHYS_VIRT
        select AUTO_ZRELADDR
 +      select CLKSRC_OF
        select COMMON_CLK
        select GENERIC_CLOCKEVENTS
 +      select MIGHT_HAVE_PCI
        select MULTI_IRQ_HANDLER
        select SPARSE_IRQ
        select USE_OF
@@@ -377,6 -375,7 +377,6 @@@ config ARCH_AT9
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select IRQ_DOMAIN
 -      select NEED_MACH_GPIO_H
        select NEED_MACH_IO_H if PCCARD
        select PINCTRL
        select PINCTRL_AT91 if USE_OF
@@@ -423,8 -422,8 +423,8 @@@ config ARCH_EFM3
        bool "Energy Micro efm32"
        depends on !MMU
        select ARCH_REQUIRE_GPIOLIB
 -      select AUTO_ZRELADDR
        select ARM_NVIC
 +      select AUTO_ZRELADDR
        select CLKSRC_OF
        select COMMON_CLK
        select CPU_V7M
@@@ -512,8 -511,8 +512,8 @@@ config ARCH_IXP4X
        bool "IXP4xx-based"
        depends on MMU
        select ARCH_HAS_DMA_SET_COHERENT_MASK
 -      select ARCH_SUPPORTS_BIG_ENDIAN
        select ARCH_REQUIRE_GPIOLIB
 +      select ARCH_SUPPORTS_BIG_ENDIAN
        select CLKSRC_MMIO
        select CPU_XSCALE
        select DMABOUNCE if PCI
@@@ -755,7 -754,7 +755,7 @@@ config ARCH_S3C64X
        select ATAGS
        select CLKDEV_LOOKUP
        select CLKSRC_SAMSUNG_PWM
 -      select COMMON_CLK
 +      select COMMON_CLK_SAMSUNG
        select CPU_V6K
        select GENERIC_CLOCKEVENTS
        select GPIO_SAMSUNG
@@@ -829,6 -828,25 +829,6 @@@ config ARCH_S5PV21
        help
          Samsung S5PV210/S5PC110 series based systems
  
 -config ARCH_EXYNOS
 -      bool "Samsung EXYNOS"
 -      select ARCH_HAS_CPUFREQ
 -      select ARCH_HAS_HOLES_MEMORYMODEL
 -      select ARCH_REQUIRE_GPIOLIB
 -      select ARCH_SPARSEMEM_ENABLE
 -      select ARM_GIC
 -      select COMMON_CLK
 -      select CPU_V7
 -      select GENERIC_CLOCKEVENTS
 -      select HAVE_S3C2410_I2C if I2C
 -      select HAVE_S3C2410_WATCHDOG if WATCHDOG
 -      select HAVE_S3C_RTC if RTC_CLASS
 -      select NEED_MACH_MEMORY_H
 -      select SPARSE_IRQ
 -      select USE_OF
 -      help
 -        Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
 -
  config ARCH_DAVINCI
        bool "TI DaVinci"
        select ARCH_HAS_HOLES_MEMORYMODEL
@@@ -932,8 -950,6 +932,8 @@@ source "arch/arm/mach-mvebu/Kconfig
  
  source "arch/arm/mach-at91/Kconfig"
  
 +source "arch/arm/mach-axxia/Kconfig"
 +
  source "arch/arm/mach-bcm/Kconfig"
  
  source "arch/arm/mach-berlin/Kconfig"
@@@ -1094,9 -1110,9 +1094,9 @@@ config ARM_NR_BANK
        default 8
  
  config IWMMXT
 -      bool "Enable iWMMXt support" if !CPU_PJ4
 -      depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
 -      default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4
 +      bool "Enable iWMMXt support"
 +      depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 || CPU_PJ4B
 +      default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 || CPU_PJ4B
        help
          Enable support for iWMMXt context switching at run time if
          running on a CPU that supports it.
@@@ -1559,8 -1575,8 +1559,8 @@@ config BIG_LITTL
  config BL_SWITCHER
        bool "big.LITTLE switcher support"
        depends on BIG_LITTLE && MCPM && HOTPLUG_CPU
 -      select CPU_PM
        select ARM_CPU_SUSPEND
 +      select CPU_PM
        help
          The big.LITTLE "switcher" provides the core functionality to
          transparently handle transition between a cluster of A15's
@@@ -1629,9 -1645,9 +1629,9 @@@ config ARCH_NR_GPI
        int
        default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
        default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX
+       default 416 if ARCH_SUNXI
        default 392 if ARCH_U8500
        default 352 if ARCH_VT8500
-       default 288 if ARCH_SUNXI
        default 264 if MACH_H4700
        default 0
        help
@@@ -1904,9 -1920,9 +1904,9 @@@ config XE
        depends on CPU_V7 && !CPU_V6
        depends on !GENERIC_ATOMIC64
        depends on MMU
 +      select ARCH_DMA_ADDR_T_64BIT
        select ARM_PSCI
        select SWIOTLB_XEN
 -      select ARCH_DMA_ADDR_T_64BIT
        help
          Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
  
index f5cd3f9618083bacca6414489db5e83b3dc128d9,d79e0ba365a6e0f9fba30f61e862e21d6261cb4f..9a179c94b4dcd306765ea0bef511001fc48b8ac2
@@@ -782,7 -782,8 +782,8 @@@ enum 
        USB1_PWEN_MARK, AUDIO_CLKOUT_D_MARK, USB1_OVC_MARK,
        TCLK1_B_MARK,
  
-       I2C3_SCL_MARK, I2C3_SDA_MARK,
+       IIC0_SCL_MARK, IIC0_SDA_MARK, I2C0_SCL_MARK, I2C0_SDA_MARK,
+       IIC3_SCL_MARK, IIC3_SDA_MARK, I2C3_SCL_MARK, I2C3_SDA_MARK,
        PINMUX_MARK_END,
  };
  
@@@ -1722,6 -1723,13 +1723,13 @@@ static const u16 pinmux_data[] = 
        PINMUX_IPSR_DATA(IP16_7, USB1_OVC),
        PINMUX_IPSR_MODSEL_DATA(IP16_7, TCLK1_B, SEL_TMU1_1),
  
+       PINMUX_DATA(IIC0_SCL_MARK, FN_SEL_IIC0_0),
+       PINMUX_DATA(IIC0_SDA_MARK, FN_SEL_IIC0_0),
+       PINMUX_DATA(I2C0_SCL_MARK, FN_SEL_IIC0_1),
+       PINMUX_DATA(I2C0_SDA_MARK, FN_SEL_IIC0_1),
+       PINMUX_DATA(IIC3_SCL_MARK, FN_SEL_IICDVFS_0),
+       PINMUX_DATA(IIC3_SDA_MARK, FN_SEL_IICDVFS_0),
        PINMUX_DATA(I2C3_SCL_MARK, FN_SEL_IICDVFS_1),
        PINMUX_DATA(I2C3_SDA_MARK, FN_SEL_IICDVFS_1),
  };
@@@ -1735,8 -1743,10 +1743,10 @@@ static const struct sh_pfc_pin pinmux_p
        PINMUX_GPIO_GP_ALL(),
  
        /* Pins not associated with a GPIO port */
-       SH_PFC_PIN_NAMED(ROW_GROUP_A('J'), 15, AJ15),
+       SH_PFC_PIN_NAMED(ROW_GROUP_A('F'), 15, AF15),
+       SH_PFC_PIN_NAMED(ROW_GROUP_A('G'), 15, AG15),
        SH_PFC_PIN_NAMED(ROW_GROUP_A('H'), 15, AH15),
+       SH_PFC_PIN_NAMED(ROW_GROUP_A('J'), 15, AJ15),
  };
  
  /* - AUDIO CLOCK ------------------------------------------------------------ */
@@@ -2054,6 -2064,14 +2064,14 @@@ static const unsigned int hscif1_ctrl_b
  static const unsigned int hscif1_ctrl_b_mux[] = {
        HRTS1_N_B_MARK, HCTS1_N_B_MARK,
  };
+ /* - I2C0 ------------------------------------------------------------------- */
+ static const unsigned int i2c0_pins[] = {
+       /* SCL, SDA */
+       PIN_A_NUMBER('G', 15), PIN_A_NUMBER('F', 15),
+ };
+ static const unsigned int i2c0_mux[] = {
+       I2C0_SCL_MARK, I2C0_SDA_MARK,
+ };
  /* - I2C1 ------------------------------------------------------------------- */
  static const unsigned int i2c1_pins[] = {
        /* SCL, SDA */
@@@ -2120,6 -2138,80 +2138,80 @@@ static const unsigned int i2c3_pins[] 
  static const unsigned int i2c3_mux[] = {
        I2C3_SCL_MARK, I2C3_SDA_MARK,
  };
+ /* - IIC0 (I2C4) ------------------------------------------------------------ */
+ static const unsigned int iic0_pins[] = {
+       /* SCL, SDA */
+       PIN_A_NUMBER('G', 15), PIN_A_NUMBER('F', 15),
+ };
+ static const unsigned int iic0_mux[] = {
+       IIC0_SCL_MARK, IIC0_SDA_MARK,
+ };
+ /* - IIC1 (I2C5) ------------------------------------------------------------ */
+ static const unsigned int iic1_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(1, 16), RCAR_GP_PIN(1, 17),
+ };
+ static const unsigned int iic1_mux[] = {
+       IIC1_SCL_MARK, IIC1_SDA_MARK,
+ };
+ static const unsigned int iic1_b_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(3, 6), RCAR_GP_PIN(3, 7),
+ };
+ static const unsigned int iic1_b_mux[] = {
+       IIC1_SCL_B_MARK, IIC1_SDA_B_MARK,
+ };
+ static const unsigned int iic1_c_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(4, 30), RCAR_GP_PIN(4, 27),
+ };
+ static const unsigned int iic1_c_mux[] = {
+       IIC1_SCL_C_MARK, IIC1_SDA_C_MARK,
+ };
+ /* - IIC2 (I2C6) ------------------------------------------------------------ */
+ static const unsigned int iic2_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(5, 5), RCAR_GP_PIN(5, 6),
+ };
+ static const unsigned int iic2_mux[] = {
+       IIC2_SCL_MARK, IIC2_SDA_MARK,
+ };
+ static const unsigned int iic2_b_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(4, 0), RCAR_GP_PIN(4, 1),
+ };
+ static const unsigned int iic2_b_mux[] = {
+       IIC2_SCL_B_MARK, IIC2_SDA_B_MARK,
+ };
+ static const unsigned int iic2_c_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(0, 6), RCAR_GP_PIN(0, 7),
+ };
+ static const unsigned int iic2_c_mux[] = {
+       IIC2_SCL_C_MARK, IIC2_SDA_C_MARK,
+ };
+ static const unsigned int iic2_d_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(3, 14), RCAR_GP_PIN(3, 15),
+ };
+ static const unsigned int iic2_d_mux[] = {
+       IIC2_SCL_D_MARK, IIC2_SDA_D_MARK,
+ };
+ static const unsigned int iic2_e_pins[] = {
+       /* SCL, SDA */
+       RCAR_GP_PIN(2, 18), RCAR_GP_PIN(2, 19),
+ };
+ static const unsigned int iic2_e_mux[] = {
+       IIC2_SCL_E_MARK, IIC2_SDA_E_MARK,
+ };
+ /* - IIC3 (I2C7) ------------------------------------------------------------ */
+ static const unsigned int iic3_pins[] = {
+ /* SCL, SDA */
+       PIN_A_NUMBER('J', 15), PIN_A_NUMBER('H', 15),
+ };
+ static const unsigned int iic3_mux[] = {
+       IIC3_SCL_MARK, IIC3_SDA_MARK,
+ };
  /* - INTC ------------------------------------------------------------------- */
  static const unsigned int intc_irq0_pins[] = {
        /* IRQ */
@@@ -3757,6 -3849,7 +3849,7 @@@ static const struct sh_pfc_pin_group pi
        SH_PFC_PIN_GROUP(hscif1_data_b),
        SH_PFC_PIN_GROUP(hscif1_clk_b),
        SH_PFC_PIN_GROUP(hscif1_ctrl_b),
+       SH_PFC_PIN_GROUP(i2c0),
        SH_PFC_PIN_GROUP(i2c1),
        SH_PFC_PIN_GROUP(i2c1_b),
        SH_PFC_PIN_GROUP(i2c1_c),
        SH_PFC_PIN_GROUP(i2c2_d),
        SH_PFC_PIN_GROUP(i2c2_e),
        SH_PFC_PIN_GROUP(i2c3),
+       SH_PFC_PIN_GROUP(iic0),
+       SH_PFC_PIN_GROUP(iic1),
+       SH_PFC_PIN_GROUP(iic1_b),
+       SH_PFC_PIN_GROUP(iic1_c),
+       SH_PFC_PIN_GROUP(iic2),
+       SH_PFC_PIN_GROUP(iic2_b),
+       SH_PFC_PIN_GROUP(iic2_c),
+       SH_PFC_PIN_GROUP(iic2_d),
+       SH_PFC_PIN_GROUP(iic2_e),
+       SH_PFC_PIN_GROUP(iic3),
        SH_PFC_PIN_GROUP(intc_irq0),
        SH_PFC_PIN_GROUP(intc_irq1),
        SH_PFC_PIN_GROUP(intc_irq2),
@@@ -4044,6 -4147,10 +4147,10 @@@ static const char * const hscif1_groups
        "hscif1_ctrl_b",
  };
  
+ static const char * const i2c0_groups[] = {
+       "i2c0",
+ };
  static const char * const i2c1_groups[] = {
        "i2c1",
        "i2c1_b",
@@@ -4062,6 -4169,28 +4169,28 @@@ static const char * const i2c3_groups[
        "i2c3",
  };
  
+ static const char * const iic0_groups[] = {
+       "iic0",
+ };
+ static const char * const iic1_groups[] = {
+       "iic1",
+       "iic1_b",
+       "iic1_c",
+ };
+ static const char * const iic2_groups[] = {
+       "iic2",
+       "iic2_b",
+       "iic2_c",
+       "iic2_d",
+       "iic2_e",
+ };
+ static const char * const iic3_groups[] = {
+       "iic3",
+ };
  static const char * const intc_groups[] = {
        "intc_irq0",
        "intc_irq1",
@@@ -4373,9 -4502,14 +4502,14 @@@ static const struct sh_pfc_function pin
        SH_PFC_FUNCTION(eth),
        SH_PFC_FUNCTION(hscif0),
        SH_PFC_FUNCTION(hscif1),
+       SH_PFC_FUNCTION(i2c0),
        SH_PFC_FUNCTION(i2c1),
        SH_PFC_FUNCTION(i2c2),
        SH_PFC_FUNCTION(i2c3),
+       SH_PFC_FUNCTION(iic0),
+       SH_PFC_FUNCTION(iic1),
+       SH_PFC_FUNCTION(iic2),
+       SH_PFC_FUNCTION(iic3),
        SH_PFC_FUNCTION(intc),
        SH_PFC_FUNCTION(mmc0),
        SH_PFC_FUNCTION(mmc1),
@@@ -4794,7 -4928,8 +4928,7 @@@ static const struct pinmux_cfg_reg pinm
                FN_MSIOF0_SCK_B, 0,
                /* IP5_23_21 [3] */
                FN_WE1_N, FN_IERX, FN_CAN1_RX, FN_VI1_G4,
 -              FN_VI1_G4_B, FN_VI2_R6, FN_SCIFA0_CTS_N_B,
 -              FN_IERX_C, 0,
 +              FN_VI1_G4_B, FN_VI2_R6, FN_SCIFA0_CTS_N_B, FN_IERX_C,
                /* IP5_20_18 [3] */
                FN_WE0_N, FN_IECLK, FN_CAN_CLK,
                FN_VI2_VSYNC_N, FN_SCIFA0_TXD_B, FN_VI2_VSYNC_N_B, 0, 0,
index 7868bf3a0f911dccfbe7b516c469ac63f6422e4c,8be969a8ff9a8d84c22e852ff0fe2cce616df199..2e688dc4a3c8393a69928ba16a75828549ba7b96
@@@ -1680,6 -1680,53 +1680,53 @@@ static const struct sh_pfc_pin pinmux_p
        PINMUX_GPIO_GP_ALL(),
  };
  
+ /* - Audio Clock ------------------------------------------------------------ */
+ static const unsigned int audio_clk_a_pins[] = {
+       /* CLK */
+       RCAR_GP_PIN(2, 28),
+ };
+ static const unsigned int audio_clk_a_mux[] = {
+       AUDIO_CLKA_MARK,
+ };
+ static const unsigned int audio_clk_b_pins[] = {
+       /* CLK */
+       RCAR_GP_PIN(2, 29),
+ };
+ static const unsigned int audio_clk_b_mux[] = {
+       AUDIO_CLKB_MARK,
+ };
+ static const unsigned int audio_clk_b_b_pins[] = {
+       /* CLK */
+       RCAR_GP_PIN(7, 20),
+ };
+ static const unsigned int audio_clk_b_b_mux[] = {
+       AUDIO_CLKB_B_MARK,
+ };
+ static const unsigned int audio_clk_c_pins[] = {
+       /* CLK */
+       RCAR_GP_PIN(2, 30),
+ };
+ static const unsigned int audio_clk_c_mux[] = {
+       AUDIO_CLKC_MARK,
+ };
+ static const unsigned int audio_clkout_pins[] = {
+       /* CLK */
+       RCAR_GP_PIN(2, 31),
+ };
+ static const unsigned int audio_clkout_mux[] = {
+       AUDIO_CLKOUT_MARK,
+ };
  /* - DU --------------------------------------------------------------------- */
  static const unsigned int du_rgb666_pins[] = {
        /* R[7:2], G[7:2], B[7:2] */
@@@ -1733,19 -1780,32 +1780,32 @@@ static const unsigned int du_clk_out_1_
        DU1_DOTCLKOUT1_MARK
  };
  static const unsigned int du_sync_pins[] = {
-       /* EXVSYNC/VSYNC, EXHSYNC/HSYNC, EXDISP/EXODDF/EXCDE */
-       RCAR_GP_PIN(3, 29), RCAR_GP_PIN(3, 28), RCAR_GP_PIN(3, 27),
+       /* EXVSYNC/VSYNC, EXHSYNC/HSYNC */
+       RCAR_GP_PIN(3, 28), RCAR_GP_PIN(3, 27),
  };
  static const unsigned int du_sync_mux[] = {
-       DU1_EXODDF_DU1_ODDF_DISP_CDE_MARK,
        DU1_EXVSYNC_DU1_VSYNC_MARK, DU1_EXHSYNC_DU1_HSYNC_MARK
  };
- static const unsigned int du_cde_disp_pins[] = {
-       /* CDE DISP */
-       RCAR_GP_PIN(3, 31), RCAR_GP_PIN(3, 30),
+ static const unsigned int du_oddf_pins[] = {
+       /* EXDISP/EXODDF/EXCDE */
+       RCAR_GP_PIN(3, 29),
+ };
+ static const unsigned int du_oddf_mux[] = {
+       DU1_EXODDF_DU1_ODDF_DISP_CDE_MARK,
+ };
+ static const unsigned int du_cde_pins[] = {
+       /* CDE */
+       RCAR_GP_PIN(3, 31),
  };
- static const unsigned int du_cde_disp_mux[] = {
-       DU1_CDE_MARK, DU1_DISP_MARK
+ static const unsigned int du_cde_mux[] = {
+       DU1_CDE_MARK,
+ };
+ static const unsigned int du_disp_pins[] = {
+       /* DISP */
+       RCAR_GP_PIN(3, 30),
+ };
+ static const unsigned int du_disp_mux[] = {
+       DU1_DISP_MARK,
  };
  static const unsigned int du0_clk_in_pins[] = {
        /* CLKIN */
@@@ -3246,6 -3306,260 +3306,260 @@@ static const unsigned int sdhi2_wp_pins
  static const unsigned int sdhi2_wp_mux[] = {
        SD2_WP_MARK,
  };
+ /* - SSI -------------------------------------------------------------------- */
+ static const unsigned int ssi0_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 2),
+ };
+ static const unsigned int ssi0_data_mux[] = {
+       SSI_SDATA0_MARK,
+ };
+ static const unsigned int ssi0_data_b_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(3, 4),
+ };
+ static const unsigned int ssi0_data_b_mux[] = {
+       SSI_SDATA0_B_MARK,
+ };
+ static const unsigned int ssi0129_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 0), RCAR_GP_PIN(2, 1),
+ };
+ static const unsigned int ssi0129_ctrl_mux[] = {
+       SSI_SCK0129_MARK, SSI_WS0129_MARK,
+ };
+ static const unsigned int ssi0129_ctrl_b_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(3, 2), RCAR_GP_PIN(3, 3),
+ };
+ static const unsigned int ssi0129_ctrl_b_mux[] = {
+       SSI_SCK0129_B_MARK, SSI_WS0129_B_MARK,
+ };
+ static const unsigned int ssi1_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 5),
+ };
+ static const unsigned int ssi1_data_mux[] = {
+       SSI_SDATA1_MARK,
+ };
+ static const unsigned int ssi1_data_b_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(3, 7),
+ };
+ static const unsigned int ssi1_data_b_mux[] = {
+       SSI_SDATA1_B_MARK,
+ };
+ static const unsigned int ssi1_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 3), RCAR_GP_PIN(2, 4),
+ };
+ static const unsigned int ssi1_ctrl_mux[] = {
+       SSI_SCK1_MARK, SSI_WS1_MARK,
+ };
+ static const unsigned int ssi1_ctrl_b_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(3, 5), RCAR_GP_PIN(3, 6),
+ };
+ static const unsigned int ssi1_ctrl_b_mux[] = {
+       SSI_SCK1_B_MARK, SSI_WS1_B_MARK,
+ };
+ static const unsigned int ssi2_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 8),
+ };
+ static const unsigned int ssi2_data_mux[] = {
+       SSI_SDATA2_MARK,
+ };
+ static const unsigned int ssi2_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 6), RCAR_GP_PIN(2, 7),
+ };
+ static const unsigned int ssi2_ctrl_mux[] = {
+       SSI_SCK2_MARK, SSI_WS2_MARK,
+ };
+ static const unsigned int ssi3_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 11),
+ };
+ static const unsigned int ssi3_data_mux[] = {
+       SSI_SDATA3_MARK,
+ };
+ static const unsigned int ssi34_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 9), RCAR_GP_PIN(2, 10),
+ };
+ static const unsigned int ssi34_ctrl_mux[] = {
+       SSI_SCK34_MARK, SSI_WS34_MARK,
+ };
+ static const unsigned int ssi4_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 14),
+ };
+ static const unsigned int ssi4_data_mux[] = {
+       SSI_SDATA4_MARK,
+ };
+ static const unsigned int ssi4_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 12), RCAR_GP_PIN(2, 13),
+ };
+ static const unsigned int ssi4_ctrl_mux[] = {
+       SSI_SCK4_MARK, SSI_WS4_MARK,
+ };
+ static const unsigned int ssi5_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 17),
+ };
+ static const unsigned int ssi5_data_mux[] = {
+       SSI_SDATA5_MARK,
+ };
+ static const unsigned int ssi5_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 15), RCAR_GP_PIN(2, 16),
+ };
+ static const unsigned int ssi5_ctrl_mux[] = {
+       SSI_SCK5_MARK, SSI_WS5_MARK,
+ };
+ static const unsigned int ssi6_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 20),
+ };
+ static const unsigned int ssi6_data_mux[] = {
+       SSI_SDATA6_MARK,
+ };
+ static const unsigned int ssi6_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 18), RCAR_GP_PIN(2, 19),
+ };
+ static const unsigned int ssi6_ctrl_mux[] = {
+       SSI_SCK6_MARK, SSI_WS6_MARK,
+ };
+ static const unsigned int ssi7_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 23),
+ };
+ static const unsigned int ssi7_data_mux[] = {
+       SSI_SDATA7_MARK,
+ };
+ static const unsigned int ssi7_data_b_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(3, 12),
+ };
+ static const unsigned int ssi7_data_b_mux[] = {
+       SSI_SDATA7_B_MARK,
+ };
+ static const unsigned int ssi78_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 21), RCAR_GP_PIN(2, 22),
+ };
+ static const unsigned int ssi78_ctrl_mux[] = {
+       SSI_SCK78_MARK, SSI_WS78_MARK,
+ };
+ static const unsigned int ssi78_ctrl_b_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(3, 10), RCAR_GP_PIN(3, 11),
+ };
+ static const unsigned int ssi78_ctrl_b_mux[] = {
+       SSI_SCK78_B_MARK, SSI_WS78_B_MARK,
+ };
+ static const unsigned int ssi8_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 24),
+ };
+ static const unsigned int ssi8_data_mux[] = {
+       SSI_SDATA8_MARK,
+ };
+ static const unsigned int ssi8_data_b_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(3, 13),
+ };
+ static const unsigned int ssi8_data_b_mux[] = {
+       SSI_SDATA8_B_MARK,
+ };
+ static const unsigned int ssi9_data_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(2, 27),
+ };
+ static const unsigned int ssi9_data_mux[] = {
+       SSI_SDATA9_MARK,
+ };
+ static const unsigned int ssi9_data_b_pins[] = {
+       /* SDATA */
+       RCAR_GP_PIN(3, 18),
+ };
+ static const unsigned int ssi9_data_b_mux[] = {
+       SSI_SDATA9_B_MARK,
+ };
+ static const unsigned int ssi9_ctrl_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(2, 25), RCAR_GP_PIN(2, 26),
+ };
+ static const unsigned int ssi9_ctrl_mux[] = {
+       SSI_SCK9_MARK, SSI_WS9_MARK,
+ };
+ static const unsigned int ssi9_ctrl_b_pins[] = {
+       /* SCK, WS */
+       RCAR_GP_PIN(3, 14), RCAR_GP_PIN(3, 15),
+ };
+ static const unsigned int ssi9_ctrl_b_mux[] = {
+       SSI_SCK9_B_MARK, SSI_WS9_B_MARK,
+ };
  /* - USB0 ------------------------------------------------------------------- */
  static const unsigned int usb0_pins[] = {
        RCAR_GP_PIN(7, 23), /* PWEN */
@@@ -3550,12 -3864,19 +3864,19 @@@ static const unsigned int vin2_clk_mux[
  };
  
  static const struct sh_pfc_pin_group pinmux_groups[] = {
+       SH_PFC_PIN_GROUP(audio_clk_a),
+       SH_PFC_PIN_GROUP(audio_clk_b),
+       SH_PFC_PIN_GROUP(audio_clk_b_b),
+       SH_PFC_PIN_GROUP(audio_clk_c),
+       SH_PFC_PIN_GROUP(audio_clkout),
        SH_PFC_PIN_GROUP(du_rgb666),
        SH_PFC_PIN_GROUP(du_rgb888),
        SH_PFC_PIN_GROUP(du_clk_out_0),
        SH_PFC_PIN_GROUP(du_clk_out_1),
        SH_PFC_PIN_GROUP(du_sync),
-       SH_PFC_PIN_GROUP(du_cde_disp),
+       SH_PFC_PIN_GROUP(du_oddf),
+       SH_PFC_PIN_GROUP(du_cde),
+       SH_PFC_PIN_GROUP(du_disp),
        SH_PFC_PIN_GROUP(du0_clk_in),
        SH_PFC_PIN_GROUP(du1_clk_in),
        SH_PFC_PIN_GROUP(du1_clk_in_b),
        SH_PFC_PIN_GROUP(sdhi2_ctrl),
        SH_PFC_PIN_GROUP(sdhi2_cd),
        SH_PFC_PIN_GROUP(sdhi2_wp),
+       SH_PFC_PIN_GROUP(ssi0_data),
+       SH_PFC_PIN_GROUP(ssi0_data_b),
+       SH_PFC_PIN_GROUP(ssi0129_ctrl),
+       SH_PFC_PIN_GROUP(ssi0129_ctrl_b),
+       SH_PFC_PIN_GROUP(ssi1_data),
+       SH_PFC_PIN_GROUP(ssi1_data_b),
+       SH_PFC_PIN_GROUP(ssi1_ctrl),
+       SH_PFC_PIN_GROUP(ssi1_ctrl_b),
+       SH_PFC_PIN_GROUP(ssi2_data),
+       SH_PFC_PIN_GROUP(ssi2_ctrl),
+       SH_PFC_PIN_GROUP(ssi3_data),
+       SH_PFC_PIN_GROUP(ssi34_ctrl),
+       SH_PFC_PIN_GROUP(ssi4_data),
+       SH_PFC_PIN_GROUP(ssi4_ctrl),
+       SH_PFC_PIN_GROUP(ssi5_data),
+       SH_PFC_PIN_GROUP(ssi5_ctrl),
+       SH_PFC_PIN_GROUP(ssi6_data),
+       SH_PFC_PIN_GROUP(ssi6_ctrl),
+       SH_PFC_PIN_GROUP(ssi7_data),
+       SH_PFC_PIN_GROUP(ssi7_data_b),
+       SH_PFC_PIN_GROUP(ssi78_ctrl),
+       SH_PFC_PIN_GROUP(ssi78_ctrl_b),
+       SH_PFC_PIN_GROUP(ssi8_data),
+       SH_PFC_PIN_GROUP(ssi8_data_b),
+       SH_PFC_PIN_GROUP(ssi9_data),
+       SH_PFC_PIN_GROUP(ssi9_data_b),
+       SH_PFC_PIN_GROUP(ssi9_ctrl),
+       SH_PFC_PIN_GROUP(ssi9_ctrl_b),
        SH_PFC_PIN_GROUP(usb0),
        SH_PFC_PIN_GROUP(usb1),
        VIN_DATA_PIN_GROUP(vin0_data, 24),
        SH_PFC_PIN_GROUP(vin2_clk),
  };
  
+ static const char * const audio_clk_groups[] = {
+       "audio_clk_a",
+       "audio_clk_b",
+       "audio_clk_b_b",
+       "audio_clk_c",
+       "audio_clkout",
+ };
  static const char * const du_groups[] = {
        "du_rgb666",
        "du_rgb888",
        "du_clk_out_0",
        "du_clk_out_1",
        "du_sync",
-       "du_cde_disp",
+       "du_oddf",
+       "du_cde",
+       "du_disp",
  };
  
  static const char * const du0_groups[] = {
@@@ -4103,6 -4462,37 +4462,37 @@@ static const char * const sdhi2_groups[
        "sdhi2_wp",
  };
  
+ static const char * const ssi_groups[] = {
+       "ssi0_data",
+       "ssi0_data_b",
+       "ssi0129_ctrl",
+       "ssi0129_ctrl_b",
+       "ssi1_data",
+       "ssi1_data_b",
+       "ssi1_ctrl",
+       "ssi1_ctrl_b",
+       "ssi2_data",
+       "ssi2_ctrl",
+       "ssi3_data",
+       "ssi34_ctrl",
+       "ssi4_data",
+       "ssi4_ctrl",
+       "ssi5_data",
+       "ssi5_ctrl",
+       "ssi6_data",
+       "ssi6_ctrl",
+       "ssi7_data",
+       "ssi7_data_b",
+       "ssi78_ctrl",
+       "ssi78_ctrl_b",
+       "ssi8_data",
+       "ssi8_data_b",
+       "ssi9_data",
+       "ssi9_data_b",
+       "ssi9_ctrl",
+       "ssi9_ctrl_b",
+ };
  static const char * const usb0_groups[] = {
        "usb0",
  };
@@@ -4152,6 -4542,7 +4542,7 @@@ static const char * const vin2_groups[
  };
  
  static const struct sh_pfc_function pinmux_functions[] = {
+       SH_PFC_FUNCTION(audio_clk),
        SH_PFC_FUNCTION(du),
        SH_PFC_FUNCTION(du0),
        SH_PFC_FUNCTION(du1),
        SH_PFC_FUNCTION(sdhi0),
        SH_PFC_FUNCTION(sdhi1),
        SH_PFC_FUNCTION(sdhi2),
+       SH_PFC_FUNCTION(ssi),
        SH_PFC_FUNCTION(usb0),
        SH_PFC_FUNCTION(usb1),
        SH_PFC_FUNCTION(vin0),
@@@ -5288,7 -5680,7 +5680,7 @@@ static const struct pinmux_cfg_reg pinm
                /* SEL_SCIF3 [2] */
                FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, FN_SEL_SCIF3_2, FN_SEL_SCIF3_3,
                /* SEL_IEB [2] */
 -              FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2,
 +              FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, 0,
                /* SEL_MMC [1] */
                FN_SEL_MMC_0, FN_SEL_MMC_1,
                /* SEL_SCIF5 [1] */
This page took 0.095385 seconds and 4 git commands to generate.