Merge branch 'soc' into pinmux-base
authorSimon Horman <horms+renesas@verge.net.au>
Tue, 2 Apr 2013 02:08:34 +0000 (11:08 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Tue, 2 Apr 2013 02:08:34 +0000 (11:08 +0900)
Conflicts:
drivers/pinctrl/sh-pfc/pfc-r8a7740.c

This merge is to provide r8a73a4 SoC files, which are added in the
soc branch and depended on by r8a73a4 pfc-changes which are to
be added to the pinmux branch.

1  2 
arch/arm/mach-shmobile/board-armadillo800eva.c
arch/arm/mach-shmobile/board-kzm9g.c
arch/arm/mach-shmobile/include/mach/r8a7740.h
arch/arm/mach-shmobile/include/mach/r8a7779.h
arch/arm/mach-shmobile/include/mach/sh7372.h
arch/arm/mach-shmobile/include/mach/sh73a0.h
drivers/pinctrl/sh-pfc/pfc-r8a7740.c
drivers/pinctrl/sh-pfc/pfc-sh73a0.c

Simple merge
@@@ -2993,43 -2544,46 +2993,43 @@@ static const struct pinmux_data_reg pin
        { },
  };
  
 -static struct pinmux_irq pinmux_irqs[] = {
 +static const struct pinmux_irq pinmux_irqs[] = {
-       PINMUX_IRQ(evt2irq(0x0200), GPIO_PORT2,   GPIO_PORT13), /* IRQ0A */
-       PINMUX_IRQ(evt2irq(0x0220), GPIO_PORT20),               /* IRQ1A */
-       PINMUX_IRQ(evt2irq(0x0240), GPIO_PORT11,  GPIO_PORT12), /* IRQ2A */
-       PINMUX_IRQ(evt2irq(0x0260), GPIO_PORT10,  GPIO_PORT14), /* IRQ3A */
-       PINMUX_IRQ(evt2irq(0x0280), GPIO_PORT15,  GPIO_PORT172),/* IRQ4A */
-       PINMUX_IRQ(evt2irq(0x02A0), GPIO_PORT0,   GPIO_PORT1),  /* IRQ5A */
-       PINMUX_IRQ(evt2irq(0x02C0), GPIO_PORT121, GPIO_PORT173),/* IRQ6A */
-       PINMUX_IRQ(evt2irq(0x02E0), GPIO_PORT120, GPIO_PORT209),/* IRQ7A */
-       PINMUX_IRQ(evt2irq(0x0300), GPIO_PORT119),              /* IRQ8A */
-       PINMUX_IRQ(evt2irq(0x0320), GPIO_PORT118, GPIO_PORT210),/* IRQ9A */
-       PINMUX_IRQ(evt2irq(0x0340), GPIO_PORT19),               /* IRQ10A */
-       PINMUX_IRQ(evt2irq(0x0360), GPIO_PORT104),              /* IRQ11A */
-       PINMUX_IRQ(evt2irq(0x0380), GPIO_PORT42,  GPIO_PORT97), /* IRQ12A */
-       PINMUX_IRQ(evt2irq(0x03A0), GPIO_PORT64,  GPIO_PORT98), /* IRQ13A */
-       PINMUX_IRQ(evt2irq(0x03C0), GPIO_PORT63,  GPIO_PORT99), /* IRQ14A */
-       PINMUX_IRQ(evt2irq(0x03E0), GPIO_PORT62,  GPIO_PORT100),/* IRQ15A */
-       PINMUX_IRQ(evt2irq(0x3200), GPIO_PORT68,  GPIO_PORT211),/* IRQ16A */
-       PINMUX_IRQ(evt2irq(0x3220), GPIO_PORT69),               /* IRQ17A */
-       PINMUX_IRQ(evt2irq(0x3240), GPIO_PORT70),               /* IRQ18A */
-       PINMUX_IRQ(evt2irq(0x3260), GPIO_PORT71),               /* IRQ19A */
-       PINMUX_IRQ(evt2irq(0x3280), GPIO_PORT67),               /* IRQ20A */
-       PINMUX_IRQ(evt2irq(0x32A0), GPIO_PORT202),              /* IRQ21A */
-       PINMUX_IRQ(evt2irq(0x32C0), GPIO_PORT95),               /* IRQ22A */
-       PINMUX_IRQ(evt2irq(0x32E0), GPIO_PORT96),               /* IRQ23A */
-       PINMUX_IRQ(evt2irq(0x3300), GPIO_PORT180),              /* IRQ24A */
-       PINMUX_IRQ(evt2irq(0x3320), GPIO_PORT38),               /* IRQ25A */
-       PINMUX_IRQ(evt2irq(0x3340), GPIO_PORT58,  GPIO_PORT81), /* IRQ26A */
-       PINMUX_IRQ(evt2irq(0x3360), GPIO_PORT57,  GPIO_PORT168),/* IRQ27A */
-       PINMUX_IRQ(evt2irq(0x3380), GPIO_PORT56,  GPIO_PORT169),/* IRQ28A */
-       PINMUX_IRQ(evt2irq(0x33A0), GPIO_PORT50,  GPIO_PORT170),/* IRQ29A */
-       PINMUX_IRQ(evt2irq(0x33C0), GPIO_PORT49,  GPIO_PORT171),/* IRQ30A */
-       PINMUX_IRQ(evt2irq(0x33E0), GPIO_PORT41,  GPIO_PORT167),/* IRQ31A */
+       PINMUX_IRQ(irq_pin(0), GPIO_PORT2,   GPIO_PORT13),      /* IRQ0A */
+       PINMUX_IRQ(irq_pin(1), GPIO_PORT20),            /* IRQ1A */
+       PINMUX_IRQ(irq_pin(2), GPIO_PORT11,  GPIO_PORT12),      /* IRQ2A */
+       PINMUX_IRQ(irq_pin(3), GPIO_PORT10,  GPIO_PORT14),      /* IRQ3A */
+       PINMUX_IRQ(irq_pin(4), GPIO_PORT15,  GPIO_PORT172),/* IRQ4A */
+       PINMUX_IRQ(irq_pin(5), GPIO_PORT0,   GPIO_PORT1),       /* IRQ5A */
+       PINMUX_IRQ(irq_pin(6), GPIO_PORT121, GPIO_PORT173),/* IRQ6A */
+       PINMUX_IRQ(irq_pin(7), GPIO_PORT120, GPIO_PORT209),/* IRQ7A */
+       PINMUX_IRQ(irq_pin(8), GPIO_PORT119),           /* IRQ8A */
+       PINMUX_IRQ(irq_pin(9), GPIO_PORT118, GPIO_PORT210),/* IRQ9A */
+       PINMUX_IRQ(irq_pin(10), GPIO_PORT19),           /* IRQ10A */
+       PINMUX_IRQ(irq_pin(11), GPIO_PORT104),          /* IRQ11A */
+       PINMUX_IRQ(irq_pin(12), GPIO_PORT42,  GPIO_PORT97),     /* IRQ12A */
+       PINMUX_IRQ(irq_pin(13), GPIO_PORT64,  GPIO_PORT98),     /* IRQ13A */
+       PINMUX_IRQ(irq_pin(14), GPIO_PORT63,  GPIO_PORT99),     /* IRQ14A */
+       PINMUX_IRQ(irq_pin(15), GPIO_PORT62,  GPIO_PORT100),/* IRQ15A */
+       PINMUX_IRQ(irq_pin(16), GPIO_PORT68,  GPIO_PORT211),/* IRQ16A */
+       PINMUX_IRQ(irq_pin(17), GPIO_PORT69),           /* IRQ17A */
+       PINMUX_IRQ(irq_pin(18), GPIO_PORT70),           /* IRQ18A */
+       PINMUX_IRQ(irq_pin(19), GPIO_PORT71),           /* IRQ19A */
+       PINMUX_IRQ(irq_pin(20), GPIO_PORT67),           /* IRQ20A */
+       PINMUX_IRQ(irq_pin(21), GPIO_PORT202),          /* IRQ21A */
+       PINMUX_IRQ(irq_pin(22), GPIO_PORT95),           /* IRQ22A */
+       PINMUX_IRQ(irq_pin(23), GPIO_PORT96),           /* IRQ23A */
+       PINMUX_IRQ(irq_pin(24), GPIO_PORT180),          /* IRQ24A */
+       PINMUX_IRQ(irq_pin(25), GPIO_PORT38),           /* IRQ25A */
+       PINMUX_IRQ(irq_pin(26), GPIO_PORT58,  GPIO_PORT81),     /* IRQ26A */
+       PINMUX_IRQ(irq_pin(27), GPIO_PORT57,  GPIO_PORT168),/* IRQ27A */
+       PINMUX_IRQ(irq_pin(28), GPIO_PORT56,  GPIO_PORT169),/* IRQ28A */
+       PINMUX_IRQ(irq_pin(29), GPIO_PORT50,  GPIO_PORT170),/* IRQ29A */
+       PINMUX_IRQ(irq_pin(30), GPIO_PORT49,  GPIO_PORT171),/* IRQ30A */
+       PINMUX_IRQ(irq_pin(31), GPIO_PORT41,  GPIO_PORT167),/* IRQ31A */
  };
  
 -struct sh_pfc_soc_info r8a7740_pinmux_info = {
 +const struct sh_pfc_soc_info r8a7740_pinmux_info = {
        .name           = "r8a7740_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,
@@@ -3849,116 -2733,60 +3849,116 @@@ static const struct pinmux_data_reg pin
        { },
  };
  
- /* IRQ pins through INTCS with IRQ0->15 from 0x200 and IRQ16-31 from 0x3200 */
- #define EXT_IRQ16L(n) intcs_evt2irq(0x200 + ((n) << 5))
- #define EXT_IRQ16H(n) intcs_evt2irq(0x3200 + ((n - 16) << 5))
+ /* External IRQ pins mapped at IRQPIN_BASE */
+ #define EXT_IRQ16L(n) irq_pin(n)
+ #define EXT_IRQ16H(n) irq_pin(n)
  
 -static struct pinmux_irq pinmux_irqs[] = {
 -      PINMUX_IRQ(EXT_IRQ16H(19), PORT9_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(1), PORT10_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(0), PORT11_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(18), PORT13_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(20), PORT14_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(21), PORT15_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(31), PORT26_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(30), PORT27_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(29), PORT28_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(22), PORT40_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(23), PORT53_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(10), PORT54_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(9), PORT56_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(26), PORT115_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(27), PORT116_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(28), PORT117_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(24), PORT118_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(6), PORT147_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(2), PORT149_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(7), PORT150_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(12), PORT156_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(4), PORT159_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(25), PORT164_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(8), PORT223_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(3), PORT224_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(5), PORT227_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(17), PORT234_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(11), PORT238_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(13), PORT239_FN0),
 -      PINMUX_IRQ(EXT_IRQ16H(16), PORT249_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(14), PORT251_FN0),
 -      PINMUX_IRQ(EXT_IRQ16L(9), PORT308_FN0),
 -};
 -
 -struct sh_pfc_soc_info sh73a0_pinmux_info = {
 +static const struct pinmux_irq pinmux_irqs[] = {
 +      PINMUX_IRQ(EXT_IRQ16H(19), 9),
 +      PINMUX_IRQ(EXT_IRQ16L(1), 10),
 +      PINMUX_IRQ(EXT_IRQ16L(0), 11),
 +      PINMUX_IRQ(EXT_IRQ16H(18), 13),
 +      PINMUX_IRQ(EXT_IRQ16H(20), 14),
 +      PINMUX_IRQ(EXT_IRQ16H(21), 15),
 +      PINMUX_IRQ(EXT_IRQ16H(31), 26),
 +      PINMUX_IRQ(EXT_IRQ16H(30), 27),
 +      PINMUX_IRQ(EXT_IRQ16H(29), 28),
 +      PINMUX_IRQ(EXT_IRQ16H(22), 40),
 +      PINMUX_IRQ(EXT_IRQ16H(23), 53),
 +      PINMUX_IRQ(EXT_IRQ16L(10), 54),
 +      PINMUX_IRQ(EXT_IRQ16L(9), 56),
 +      PINMUX_IRQ(EXT_IRQ16H(26), 115),
 +      PINMUX_IRQ(EXT_IRQ16H(27), 116),
 +      PINMUX_IRQ(EXT_IRQ16H(28), 117),
 +      PINMUX_IRQ(EXT_IRQ16H(24), 118),
 +      PINMUX_IRQ(EXT_IRQ16L(6), 147),
 +      PINMUX_IRQ(EXT_IRQ16L(2), 149),
 +      PINMUX_IRQ(EXT_IRQ16L(7), 150),
 +      PINMUX_IRQ(EXT_IRQ16L(12), 156),
 +      PINMUX_IRQ(EXT_IRQ16L(4), 159),
 +      PINMUX_IRQ(EXT_IRQ16H(25), 164),
 +      PINMUX_IRQ(EXT_IRQ16L(8), 223),
 +      PINMUX_IRQ(EXT_IRQ16L(3), 224),
 +      PINMUX_IRQ(EXT_IRQ16L(5), 227),
 +      PINMUX_IRQ(EXT_IRQ16H(17), 234),
 +      PINMUX_IRQ(EXT_IRQ16L(11), 238),
 +      PINMUX_IRQ(EXT_IRQ16L(13), 239),
 +      PINMUX_IRQ(EXT_IRQ16H(16), 249),
 +      PINMUX_IRQ(EXT_IRQ16L(14), 251),
 +      PINMUX_IRQ(EXT_IRQ16L(9), 308),
 +};
 +
 +#define PORTnCR_PULMD_OFF     (0 << 6)
 +#define PORTnCR_PULMD_DOWN    (2 << 6)
 +#define PORTnCR_PULMD_UP      (3 << 6)
 +#define PORTnCR_PULMD_MASK    (3 << 6)
 +
 +static const unsigned int sh73a0_portcr_offsets[] = {
 +      0x00000000, 0x00001000, 0x00001000, 0x00002000, 0x00002000,
 +      0x00002000, 0x00002000, 0x00003000, 0x00003000, 0x00002000,
 +};
 +
 +static unsigned int sh73a0_pinmux_get_bias(struct sh_pfc *pfc, unsigned int pin)
 +{
 +      void __iomem *addr = pfc->window->virt
 +                         + sh73a0_portcr_offsets[pin >> 5] + pin;
 +      u32 value = ioread8(addr) & PORTnCR_PULMD_MASK;
 +
 +      switch (value) {
 +      case PORTnCR_PULMD_UP:
 +              return PIN_CONFIG_BIAS_PULL_UP;
 +      case PORTnCR_PULMD_DOWN:
 +              return PIN_CONFIG_BIAS_PULL_DOWN;
 +      case PORTnCR_PULMD_OFF:
 +      default:
 +              return PIN_CONFIG_BIAS_DISABLE;
 +      }
 +}
 +
 +static void sh73a0_pinmux_set_bias(struct sh_pfc *pfc, unsigned int pin,
 +                                 unsigned int bias)
 +{
 +      void __iomem *addr = pfc->window->virt
 +                         + sh73a0_portcr_offsets[pin >> 5] + pin;
 +      u32 value = ioread8(addr) & ~PORTnCR_PULMD_MASK;
 +
 +      switch (bias) {
 +      case PIN_CONFIG_BIAS_PULL_UP:
 +              value |= PORTnCR_PULMD_UP;
 +              break;
 +      case PIN_CONFIG_BIAS_PULL_DOWN:
 +              value |= PORTnCR_PULMD_DOWN;
 +              break;
 +      }
 +
 +      iowrite8(value, addr);
 +}
 +
 +static const struct sh_pfc_soc_operations sh73a0_pinmux_ops = {
 +      .get_bias = sh73a0_pinmux_get_bias,
 +      .set_bias = sh73a0_pinmux_set_bias,
 +};
 +
 +const struct sh_pfc_soc_info sh73a0_pinmux_info = {
        .name = "sh73a0_pfc",
 -      .reserved_id = PINMUX_RESERVED,
 -      .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
 +      .ops = &sh73a0_pinmux_ops,
 +
        .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
 -      .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
 -      .input_pd = { PINMUX_INPUT_PULLDOWN_BEGIN, PINMUX_INPUT_PULLDOWN_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_PORT0,
 -      .last_gpio = GPIO_FN_FSIAISLD_PU,
 +      .pins = pinmux_pins,
 +      .nr_pins = ARRAY_SIZE(pinmux_pins),
 +      .ranges = pinmux_ranges,
 +      .nr_ranges = ARRAY_SIZE(pinmux_ranges),
 +      .groups = pinmux_groups,
 +      .nr_groups = ARRAY_SIZE(pinmux_groups),
 +      .functions = pinmux_functions,
 +      .nr_functions = ARRAY_SIZE(pinmux_functions),
 +
 +      .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,