Merge branch 'irqdomain/next' of git://git.secretlab.ca/git/linux-2.6
authorNicolas Ferre <nicolas.ferre@atmel.com>
Thu, 1 Mar 2012 12:24:22 +0000 (13:24 +0100)
committerNicolas Ferre <nicolas.ferre@atmel.com>
Thu, 1 Mar 2012 12:26:51 +0000 (13:26 +0100)
1  2 
arch/arm/mach-exynos/common.c
arch/arm/mach-versatile/core.c
drivers/of/platform.c

@@@ -201,6 -201,14 +201,6 @@@ static struct map_desc exynos4_iodesc1[
        },
  };
  
 -static void exynos_idle(void)
 -{
 -      if (!need_resched())
 -              cpu_do_idle();
 -
 -      local_irq_enable();
 -}
 -
  void exynos4_restart(char mode, const char *cmd)
  {
        __raw_writel(0x1, S5P_SWRESET);
@@@ -394,7 -402,7 +394,7 @@@ void __init exynos4_init_irq(void
        gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000;
  
        if (!of_have_populated_dt())
-               gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset);
+               gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset, NULL);
  #ifdef CONFIG_OF
        else
                of_irq_init(exynos4_dt_irq_match);
@@@ -459,6 -467,10 +459,6 @@@ early_initcall(exynos4_l2x0_cache_init)
  int __init exynos_init(void)
  {
        printk(KERN_INFO "EXYNOS: Initializing architecture\n");
 -
 -      /* set idle function */
 -      pm_idle = exynos_idle;
 -
        return device_register(&exynos4_dev);
  }
  
@@@ -98,8 -98,11 +98,11 @@@ static const struct of_device_id sic_of
  
  void __init versatile_init_irq(void)
  {
-       vic_init(VA_VIC_BASE, IRQ_VIC_START, ~0, 0);
-       irq_domain_generate_simple(vic_of_match, VERSATILE_VIC_BASE, IRQ_VIC_START);
+       struct device_node *np;
+       np = of_find_matching_node_by_address(NULL, vic_of_match,
+                                             VERSATILE_VIC_BASE);
+       __vic_init(VA_VIC_BASE, IRQ_VIC_START, ~0, 0, np);
  
        writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR);
  
@@@ -582,58 -585,58 +585,58 @@@ static struct pl022_ssp_controller ssp0
        .num_chipselect = 1,
  };
  
 -#define AACI_IRQ      { IRQ_AACI, NO_IRQ }
 +#define AACI_IRQ      { IRQ_AACI }
  #define MMCI0_IRQ     { IRQ_MMCI0A,IRQ_SIC_MMCI0B }
 -#define KMI0_IRQ      { IRQ_SIC_KMI0, NO_IRQ }
 -#define KMI1_IRQ      { IRQ_SIC_KMI1, NO_IRQ }
 +#define KMI0_IRQ      { IRQ_SIC_KMI0 }
 +#define KMI1_IRQ      { IRQ_SIC_KMI1 }
  
  /*
   * These devices are connected directly to the multi-layer AHB switch
   */
 -#define SMC_IRQ               { NO_IRQ, NO_IRQ }
 -#define MPMC_IRQ      { NO_IRQ, NO_IRQ }
 -#define CLCD_IRQ      { IRQ_CLCDINT, NO_IRQ }
 -#define DMAC_IRQ      { IRQ_DMAINT, NO_IRQ }
 +#define SMC_IRQ               { }
 +#define MPMC_IRQ      { }
 +#define CLCD_IRQ      { IRQ_CLCDINT }
 +#define DMAC_IRQ      { IRQ_DMAINT }
  
  /*
   * These devices are connected via the core APB bridge
   */
 -#define SCTL_IRQ      { NO_IRQ, NO_IRQ }
 -#define WATCHDOG_IRQ  { IRQ_WDOGINT, NO_IRQ }
 -#define GPIO0_IRQ     { IRQ_GPIOINT0, NO_IRQ }
 -#define GPIO1_IRQ     { IRQ_GPIOINT1, NO_IRQ }
 -#define RTC_IRQ               { IRQ_RTCINT, NO_IRQ }
 +#define SCTL_IRQ      { }
 +#define WATCHDOG_IRQ  { IRQ_WDOGINT }
 +#define GPIO0_IRQ     { IRQ_GPIOINT0 }
 +#define GPIO1_IRQ     { IRQ_GPIOINT1 }
 +#define RTC_IRQ               { IRQ_RTCINT }
  
  /*
   * These devices are connected via the DMA APB bridge
   */
 -#define SCI_IRQ               { IRQ_SCIINT, NO_IRQ }
 -#define UART0_IRQ     { IRQ_UARTINT0, NO_IRQ }
 -#define UART1_IRQ     { IRQ_UARTINT1, NO_IRQ }
 -#define UART2_IRQ     { IRQ_UARTINT2, NO_IRQ }
 -#define SSP_IRQ               { IRQ_SSPINT, NO_IRQ }
 +#define SCI_IRQ               { IRQ_SCIINT }
 +#define UART0_IRQ     { IRQ_UARTINT0 }
 +#define UART1_IRQ     { IRQ_UARTINT1 }
 +#define UART2_IRQ     { IRQ_UARTINT2 }
 +#define SSP_IRQ               { IRQ_SSPINT }
  
  /* FPGA Primecells */
 -AMBA_DEVICE(aaci,  "fpga:04", AACI,     NULL);
 -AMBA_DEVICE(mmc0,  "fpga:05", MMCI0,    &mmc0_plat_data);
 -AMBA_DEVICE(kmi0,  "fpga:06", KMI0,     NULL);
 -AMBA_DEVICE(kmi1,  "fpga:07", KMI1,     NULL);
 +APB_DEVICE(aaci,  "fpga:04", AACI,     NULL);
 +APB_DEVICE(mmc0,  "fpga:05", MMCI0,    &mmc0_plat_data);
 +APB_DEVICE(kmi0,  "fpga:06", KMI0,     NULL);
 +APB_DEVICE(kmi1,  "fpga:07", KMI1,     NULL);
  
  /* DevChip Primecells */
 -AMBA_DEVICE(smc,   "dev:00",  SMC,      NULL);
 -AMBA_DEVICE(mpmc,  "dev:10",  MPMC,     NULL);
 -AMBA_DEVICE(clcd,  "dev:20",  CLCD,     &clcd_plat_data);
 -AMBA_DEVICE(dmac,  "dev:30",  DMAC,     NULL);
 -AMBA_DEVICE(sctl,  "dev:e0",  SCTL,     NULL);
 -AMBA_DEVICE(wdog,  "dev:e1",  WATCHDOG, NULL);
 -AMBA_DEVICE(gpio0, "dev:e4",  GPIO0,    &gpio0_plat_data);
 -AMBA_DEVICE(gpio1, "dev:e5",  GPIO1,    &gpio1_plat_data);
 -AMBA_DEVICE(rtc,   "dev:e8",  RTC,      NULL);
 -AMBA_DEVICE(sci0,  "dev:f0",  SCI,      NULL);
 -AMBA_DEVICE(uart0, "dev:f1",  UART0,    NULL);
 -AMBA_DEVICE(uart1, "dev:f2",  UART1,    NULL);
 -AMBA_DEVICE(uart2, "dev:f3",  UART2,    NULL);
 -AMBA_DEVICE(ssp0,  "dev:f4",  SSP,      &ssp0_plat_data);
 +AHB_DEVICE(smc,   "dev:00",  SMC,      NULL);
 +AHB_DEVICE(mpmc,  "dev:10",  MPMC,     NULL);
 +AHB_DEVICE(clcd,  "dev:20",  CLCD,     &clcd_plat_data);
 +AHB_DEVICE(dmac,  "dev:30",  DMAC,     NULL);
 +APB_DEVICE(sctl,  "dev:e0",  SCTL,     NULL);
 +APB_DEVICE(wdog,  "dev:e1",  WATCHDOG, NULL);
 +APB_DEVICE(gpio0, "dev:e4",  GPIO0,    &gpio0_plat_data);
 +APB_DEVICE(gpio1, "dev:e5",  GPIO1,    &gpio1_plat_data);
 +APB_DEVICE(rtc,   "dev:e8",  RTC,      NULL);
 +APB_DEVICE(sci0,  "dev:f0",  SCI,      NULL);
 +APB_DEVICE(uart0, "dev:f1",  UART0,    NULL);
 +APB_DEVICE(uart1, "dev:f2",  UART1,    NULL);
 +APB_DEVICE(uart2, "dev:f3",  UART2,    NULL);
 +APB_DEVICE(ssp0,  "dev:f4",  SSP,      &ssp0_plat_data);
  
  static struct amba_device *amba_devs[] __initdata = {
        &dmac_device,
diff --combined drivers/of/platform.c
@@@ -55,7 -55,7 +55,7 @@@ EXPORT_SYMBOL(of_find_device_by_node)
  #include <asm/dcr.h>
  #endif
  
- #if !defined(CONFIG_SPARC)
+ #ifdef CONFIG_OF_ADDRESS
  /*
   * The following routines scan a subtree and registers a device for
   * each applicable node.
@@@ -253,7 -253,7 +253,7 @@@ static struct amba_device *of_amba_devi
        if (!of_device_is_available(node))
                return NULL;
  
 -      dev = kzalloc(sizeof(*dev), GFP_KERNEL);
 +      dev = amba_device_alloc(NULL, 0, 0);
        if (!dev)
                return NULL;
  
        if (ret)
                goto err_free;
  
 -      ret = amba_device_register(dev, &iomem_resource);
 +      ret = amba_device_add(dev, &iomem_resource);
        if (ret)
                goto err_free;
  
        return dev;
  
  err_free:
 -      kfree(dev);
 +      amba_device_put(dev);
        return NULL;
  }
  #else /* CONFIG_ARM_AMBA */
@@@ -462,4 -462,4 +462,4 @@@ int of_platform_populate(struct device_
        of_node_put(root);
        return rc;
  }
- #endif /* !CONFIG_SPARC */
+ #endif /* CONFIG_OF_ADDRESS */