Merge tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Tue, 7 May 2013 18:28:42 +0000 (11:28 -0700)]
Pull late ARM Exynos multiplatform changes from Arnd Bergmann:
 "These continue the multiplatform support for exynos, adding support
  for building most of the essential drivers (clocksource, clk, irqchip)
  when combined with other platforms.  As a result, it should become
  really easy to add full multiplatform exynos support in 3.11, although
  we don't yet enable it for 3.10.

  The changes were not included in the earlier multiplatform series in
  order to avoid clashes with the other Exynos updates.

  This also includes work from Tomasz Figa to fix the pwm clocksource
  code on Exynos, which is not strictly required for multiplatform, but
  related to the other patches in this set and needed as a bug fix for
  at least one board."

* tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
  ARM: dts: exynops4210: really add universal_c210 dts
  ARM: dts: exynos4210: Add basic dts file for universal_c210 board
  ARM: dts: exynos4: Add node for PWM device
  ARM: SAMSUNG: Do not register legacy timer interrupts on Exynos
  clocksource: samsung_pwm_timer: Work around rounding errors in clockevents core
  clocksource: samsung_pwm_timer: Correct programming of clock events
  clocksource: samsung_pwm_timer: Use proper clockevents max_delta
  clocksource: samsung_pwm_timer: Add support for non-DT platforms
  clocksource: samsung_pwm_timer: Drop unused samsung_pwm struct
  clocksource: samsung_pwm_timer: Keep all driver data in a structure
  clocksource: samsung_pwm_timer: Make PWM spinlock global
  clocksource: samsung_pwm_timer: Let platforms select the driver
  Documentation: Add device tree bindings for Samsung PWM timers
  clocksource: add samsung pwm timer driver
  irqchip: exynos: look up irq using irq_find_mapping
  irqchip: exynos: pass irq_base from platform
  irqchip: exynos: localize irq lookup for ATAGS
  irqchip: exynos: allocate combiner_data dynamically
  irqchip: exynos: pass max combiner number to combiner_init
  ARM: exynos: add missing properties for combiner IRQs
  ...

12 files changed:
1  2 
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4412.dtsi
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.h
arch/arm/plat-samsung/Kconfig
drivers/clk/samsung/clk-exynos5250.c
drivers/clocksource/Kconfig
drivers/clocksource/Makefile
drivers/clocksource/exynos_mct.c
drivers/irqchip/exynos-combiner.c

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -473,16 -447,8 +486,10 @@@ void __init exynos4_init_irq(void
  #endif
  
        if (!of_have_populated_dt())
-               combiner_init(S5P_VA_COMBINER_BASE, NULL);
-       /*
-        * The parameters of s5p_init_irq() are for VIC init.
-        * Theses parameters should be NULL and 0 because EXYNOS4
-        * uses GIC instead of VIC.
-        */
-       s5p_init_irq(NULL, 0);
+               combiner_init(S5P_VA_COMBINER_BASE, NULL,
+                             max_combiner_nr(), COMBINER_IRQ(0, 0));
 +
 +      gic_arch_extn.irq_set_wake = s3c_irq_wake;
  }
  
  void __init exynos5_init_irq(void)
@@@ -27,11 -27,9 +27,11 @@@ void exynos5_restart(char mode, const c
  void exynos_init_late(void);
  
  /* ToDo: remove these after migrating legacy exynos4 platforms to dt */
- void exynos4_clk_init(struct device_node *np);
+ void exynos4_clk_init(struct device_node *np, int is_exynos4210, void __iomem *reg_base, unsigned long xom);
  void exynos4_clk_register_fixed_ext(unsigned long, unsigned long);
  
 +void exynos_firmware_init(void);
 +
  #ifdef CONFIG_PM_GENERIC_DOMAINS
  int exynos_pm_late_initcall(void);
  #else
Simple merge
Simple merge
Simple merge
@@@ -16,15 -16,12 +16,16 @@@ obj-$(CONFIG_CLKSRC_NOMADIK_MTU)   += nom
  obj-$(CONFIG_CLKSRC_DBX500_PRCMU)     += clksrc-dbx500-prcmu.o
  obj-$(CONFIG_ARMADA_370_XP_TIMER)     += time-armada-370-xp.o
  obj-$(CONFIG_ARCH_BCM2835)    += bcm2835_timer.o
 -obj-$(CONFIG_SUNXI_TIMER)     += sunxi_timer.o
 +obj-$(CONFIG_ARCH_MARCO)      += timer-marco.o
 +obj-$(CONFIG_ARCH_MXS)                += mxs_timer.o
 +obj-$(CONFIG_ARCH_PRIMA2)     += timer-prima2.o
 +obj-$(CONFIG_SUN4I_TIMER)     += sun4i_timer.o
  obj-$(CONFIG_ARCH_TEGRA)      += tegra20_timer.o
  obj-$(CONFIG_VT8500_TIMER)    += vt8500_timer.o
 +obj-$(CONFIG_ARCH_BCM)                += bcm_kona_timer.o
  obj-$(CONFIG_CADENCE_TTC_TIMER)       += cadence_ttc_timer.o
  obj-$(CONFIG_CLKSRC_EXYNOS_MCT)       += exynos_mct.o
+ obj-$(CONFIG_CLKSRC_SAMSUNG_PWM)      += samsung_pwm_timer.o
  
  obj-$(CONFIG_ARM_ARCH_TIMER)          += arm_arch_timer.o
  obj-$(CONFIG_CLKSRC_METAG_GENERIC)    += metag_generic.o
  #include <linux/of_address.h>
  #include <linux/clocksource.h>
  
 -#include <asm/arch_timer.h>
  #include <asm/localtimer.h>
- #include <plat/cpu.h>
- #include <mach/map.h>
- #include <mach/irqs.h>
  #include <asm/mach/time.h>
  
  #define EXYNOS4_MCTREG(x)             (x)
@@@ -12,8 -12,8 +12,9 @@@
  #include <linux/export.h>
  #include <linux/init.h>
  #include <linux/io.h>
+ #include <linux/slab.h>
  #include <linux/irqdomain.h>
 +#include <linux/irqchip/chained_irq.h>
  #include <linux/of_address.h>
  #include <linux/of_irq.h>
  #include <asm/mach/irq.h>