]> exis.tech > repos - linux.git/commitdiff
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Mar 2011 03:37:26 +0000 (20:37 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Mar 2011 03:37:26 +0000 (20:37 -0700)
* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (35 commits)
  ARM: Update (and cut down) mach-types
  ARM: 6771/1: vexpress: add support for multiple core tiles
  ARM: 6797/1: hw_breakpoint: Fix newlines in WARNings
  ARM: 6751/1: vexpress: select applicable errata workarounds in Kconfig
  ARM: 6753/1: omap4: Enable ARM local timers with OMAP4430 es1.0 exception
  ARM: 6759/1: smp: Select local timers vs broadcast timer support runtime
  ARM: pgtable: add pud-level code
  ARM: 6673/1: LPAE: use phys_addr_t instead of unsigned long for start of membanks
  ARM: Use long long format when printing meminfo physical addresses
  ARM: integrator: add Integrator/CP sched_clock support
  ARM: realview/vexpress: consolidate SMP bringup code
  ARM: realview/vexpress: consolidate localtimer support
  ARM: integrator/versatile: consolidate FPGA IRQ handling code
  ARM: rationalize versatile family Kconfig/Makefile
  ARM: realview: remove old AMBA device DMA definitions
  ARM: versatile: remove old AMBA device DMA definitions
  ARM: vexpress: use new init_early for clock tree and sched_clock init
  ARM: realview: use new init_early for clock tree and sched_clock init
  ARM: versatile: use new init_early for clock tree and sched_clock init
  ARM: integrator: use new init_early for clock tree init
  ...

1  2 
arch/arm/Kconfig
arch/arm/kernel/setup.c
arch/arm/mach-exynos4/localtimer.c
arch/arm/mach-msm/timer.c
arch/arm/mach-omap2/Kconfig

diff --combined arch/arm/Kconfig
index 599e1634840dae7cc5d20a7a3f53ef028c58104a,f785b49bf1f517b61ac52796371e3177f12be4ba..93d595a7477a174c41f5822372fef2700044261c
@@@ -235,6 -235,7 +235,7 @@@ config ARCH_INTEGRATO
        select ICST
        select GENERIC_CLOCKEVENTS
        select PLAT_VERSATILE
+       select PLAT_VERSATILE_FPGA_IRQ
        help
          Support for ARM's Integrator platform.
  
@@@ -242,11 -243,11 +243,11 @@@ config ARCH_REALVIE
        bool "ARM Ltd. RealView family"
        select ARM_AMBA
        select CLKDEV_LOOKUP
-       select HAVE_SCHED_CLOCK
        select ICST
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select PLAT_VERSATILE
+       select PLAT_VERSATILE_CLCD
        select ARM_TIMER_SP804
        select GPIO_PL061 if GPIOLIB
        help
@@@ -257,11 -258,12 +258,12 @@@ config ARCH_VERSATIL
        select ARM_AMBA
        select ARM_VIC
        select CLKDEV_LOOKUP
-       select HAVE_SCHED_CLOCK
        select ICST
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select PLAT_VERSATILE
+       select PLAT_VERSATILE_CLCD
+       select PLAT_VERSATILE_FPGA_IRQ
        select ARM_TIMER_SP804
        help
          This enables support for ARM Ltd Versatile board.
@@@ -274,9 -276,10 +276,10 @@@ config ARCH_VEXPRES
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
        select HAVE_CLK
-       select HAVE_SCHED_CLOCK
+       select HAVE_PATA_PLATFORM
        select ICST
        select PLAT_VERSATILE
+       select PLAT_VERSATILE_CLCD
        help
          This enables support for the ARM Ltd Versatile Express boards.
  
@@@ -626,7 -629,6 +629,7 @@@ config ARCH_MS
        select HAVE_CLK
        select GENERIC_CLOCKEVENTS
        select ARCH_REQUIRE_GPIOLIB
 +      select CLKDEV_LOOKUP
        help
          Support for Qualcomm MSM/QSD based systems.  This runs on the
          apps processor of the MSM/QSD and depends on a shared memory
@@@ -723,8 -725,7 +726,8 @@@ config ARCH_S5P64X
        select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 -      select ARCH_USES_GETTIMEOFFSET
 +      select GENERIC_CLOCKEVENTS
 +      select HAVE_SCHED_CLOCK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C_RTC if RTC_CLASS
        help
@@@ -762,16 -763,15 +765,16 @@@ config ARCH_S5PV21
        select HAVE_CLK
        select ARM_L1_CACHE_SHIFT_6
        select ARCH_HAS_CPUFREQ
 -      select ARCH_USES_GETTIMEOFFSET
 +      select GENERIC_CLOCKEVENTS
 +      select HAVE_SCHED_CLOCK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C_RTC if RTC_CLASS
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        help
          Samsung S5PV210/S5PC110 series based systems
  
 -config ARCH_S5PV310
 -      bool "Samsung S5PV310/S5PC210"
 +config ARCH_EXYNOS4
 +      bool "Samsung EXYNOS4"
        select CPU_V7
        select ARCH_SPARSEMEM_ENABLE
        select GENERIC_GPIO
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        help
 -        Samsung S5PV310 series based systems
 +        Samsung EXYNOS4 series based systems
  
  config ARCH_SHARK
        bool "Shark"
@@@ -996,7 -996,7 +999,7 @@@ source "arch/arm/mach-s5pc100/Kconfig
  
  source "arch/arm/mach-s5pv210/Kconfig"
  
 -source "arch/arm/mach-s5pv310/Kconfig"
 +source "arch/arm/mach-exynos4/Kconfig"
  
  source "arch/arm/mach-shmobile/Kconfig"
  
@@@ -1011,6 -1011,7 +1014,7 @@@ source "arch/arm/mach-ux500/Kconfig
  source "arch/arm/mach-versatile/Kconfig"
  
  source "arch/arm/mach-vexpress/Kconfig"
+ source "arch/arm/plat-versatile/Kconfig"
  
  source "arch/arm/mach-vt8500/Kconfig"
  
@@@ -1318,7 -1319,7 +1322,7 @@@ config SM
        depends on GENERIC_CLOCKEVENTS
        depends on REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP || \
                 MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \
 -               ARCH_S5PV310 || ARCH_TEGRA || ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || \
 +               ARCH_EXYNOS4 || ARCH_TEGRA || ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || \
                 ARCH_MSM_SCORPIONMP || ARCH_SHMOBILE
        select USE_GENERIC_SMP_HELPERS
        select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
@@@ -1406,7 -1407,7 +1410,7 @@@ config LOCAL_TIMER
        bool "Use local timer interrupts"
        depends on SMP
        default y
 -      select HAVE_ARM_TWD if !ARCH_MSM_SCORPIONMP
 +      select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT)
        help
          Enable support for local timers on SMP platforms, rather then the
          legacy IPI broadcast method.  Local timers allows the system
@@@ -1418,7 -1419,7 +1422,7 @@@ source kernel/Kconfig.preemp
  config HZ
        int
        default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \
 -              ARCH_S5P6442 || ARCH_S5PV210 || ARCH_S5PV310
 +              ARCH_S5P6442 || ARCH_S5PV210 || ARCH_EXYNOS4
        default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
        default AT91_TIMER_HZ if ARCH_AT91
        default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
diff --combined arch/arm/kernel/setup.c
index c36c1a4250f3e867e9114c3628fb4375212a09f4,d149539ccd68438deaa99a814d97ae9d0d749097..006c1e884eafedbbfab80caf6a53f3c24fc47a10
@@@ -466,13 -466,13 +466,13 @@@ static struct machine_desc * __init set
                /* can't use cpu_relax() here as it may require MMU setup */;
  }
  
- static int __init arm_add_memory(unsigned long start, unsigned long size)
+ static int __init arm_add_memory(phys_addr_t start, unsigned long size)
  {
        struct membank *bank = &meminfo.bank[meminfo.nr_banks];
  
        if (meminfo.nr_banks >= NR_BANKS) {
                printk(KERN_CRIT "NR_BANKS too low, "
-                       "ignoring memory at %#lx\n", start);
+                       "ignoring memory at 0x%08llx\n", (long long)start);
                return -EINVAL;
        }
  
  static int __init early_mem(char *p)
  {
        static int usermem __initdata = 0;
-       unsigned long size, start;
+       unsigned long size;
+       phys_addr_t start;
        char *endp;
  
        /*
@@@ -788,6 -789,30 +789,6 @@@ static void __init reserve_crashkernel(
  static inline void reserve_crashkernel(void) {}
  #endif /* CONFIG_KEXEC */
  
 -/*
 - * Note: elfcorehdr_addr is not just limited to vmcore. It is also used by
 - * is_kdump_kernel() to determine if we are booting after a panic. Hence
 - * ifdef it under CONFIG_CRASH_DUMP and not CONFIG_PROC_VMCORE.
 - */
 -
 -#ifdef CONFIG_CRASH_DUMP
 -/*
 - * elfcorehdr= specifies the location of elf core header stored by the crashed
 - * kernel. This option will be passed by kexec loader to the capture kernel.
 - */
 -static int __init setup_elfcorehdr(char *arg)
 -{
 -      char *end;
 -
 -      if (!arg)
 -              return -EINVAL;
 -
 -      elfcorehdr_addr = memparse(arg, &end);
 -      return end > arg ? 0 : -EINVAL;
 -}
 -early_param("elfcorehdr", setup_elfcorehdr);
 -#endif /* CONFIG_CRASH_DUMP */
 -
  static void __init squash_mem_tags(struct tag *tag)
  {
        for (; tag->hdr.size; tag = tag_next(tag))
index 2a2993ae8d86b01540040da27454642b2dc898d0,8239c6a684a1c36286f422b5a9a5ef723b5594b6..6bf3d0ab96278b1c31571f9263e31ef0691265cf
@@@ -1,4 -1,4 +1,4 @@@
 -/* linux/arch/arm/mach-s5pv310/localtimer.c
 +/* linux/arch/arm/mach-exynos4/localtimer.c
   *
   * Cloned from linux/arch/arm/mach-realview/localtimer.c
   *
@@@ -18,8 -18,9 +18,9 @@@
  /*
   * Setup the local clock events for a CPU.
   */
void __cpuinit local_timer_setup(struct clock_event_device *evt)
int __cpuinit local_timer_setup(struct clock_event_device *evt)
  {
        evt->irq = IRQ_LOCALTIMER;
        twd_timer_setup(evt);
+       return 0;
  }
index e7f8e5a4d48f26331921089f819a9992864378e1,ae85aa951806a46279d8c9cfb9fc2a2a977f843d..56f920c55b6aaaaa45737aeeddffadfa1b1a12d2
  
  #include <asm/mach/time.h>
  #include <mach/msm_iomap.h>
 -
 -#ifndef MSM_DGT_BASE
 -#define MSM_DGT_BASE (MSM_GPT_BASE + 0x10)
 -#endif
 +#include <mach/cpu.h>
  
  #define TIMER_MATCH_VAL         0x0000
  #define TIMER_COUNT_VAL         0x0004
@@@ -49,14 -52,18 +49,14 @@@ enum timer_location 
        GLOBAL_TIMER = 1,
  };
  
 -#ifdef MSM_TMR0_BASE
 -#define MSM_TMR_GLOBAL                (MSM_TMR0_BASE - MSM_TMR_BASE)
 -#else
 -#define MSM_TMR_GLOBAL                0
 -#endif
 -
  #define MSM_GLOBAL_TIMER MSM_CLOCK_DGT
  
 +/* TODO: Remove these ifdefs */
  #if defined(CONFIG_ARCH_QSD8X50)
  #define DGT_HZ (19200000 / 4) /* 19.2 MHz / 4 by default */
  #define MSM_DGT_SHIFT (0)
 -#elif defined(CONFIG_ARCH_MSM7X30) || defined(CONFIG_ARCH_MSM8X60)
 +#elif defined(CONFIG_ARCH_MSM7X30) || defined(CONFIG_ARCH_MSM8X60) || \
 +                                    defined(CONFIG_ARCH_MSM8960)
  #define DGT_HZ (24576000 / 4) /* 24.576 MHz (LPXO) / 4 by default */
  #define MSM_DGT_SHIFT (0)
  #else
@@@ -170,7 -177,11 +170,7 @@@ static struct msm_clock msm_clocks[] = 
                        .dev_id  = &msm_clocks[0].clockevent,
                        .irq     = INT_GP_TIMER_EXP
                },
 -              .regbase = MSM_GPT_BASE,
                .freq = GPT_HZ,
 -              .local_counter = MSM_GPT_BASE + TIMER_COUNT_VAL,
 -              .global_counter = MSM_GPT_BASE + TIMER_COUNT_VAL +
 -                      MSM_TMR_GLOBAL,
        },
        [MSM_CLOCK_DGT] = {
                .clockevent = {
                        .dev_id  = &msm_clocks[1].clockevent,
                        .irq     = INT_DEBUG_TIMER_EXP
                },
 -              .regbase = MSM_DGT_BASE,
                .freq = DGT_HZ >> MSM_DGT_SHIFT,
                .shift = MSM_DGT_SHIFT,
 -              .local_counter = MSM_DGT_BASE + TIMER_COUNT_VAL,
 -              .global_counter = MSM_DGT_BASE + TIMER_COUNT_VAL +
 -                      MSM_TMR_GLOBAL,
        }
  };
  
@@@ -204,25 -219,6 +204,25 @@@ static void __init msm_timer_init(void
  {
        int i;
        int res;
 +      int global_offset = 0;
 +
 +      if (cpu_is_msm7x01()) {
 +              msm_clocks[MSM_CLOCK_GPT].regbase = MSM_CSR_BASE;
 +              msm_clocks[MSM_CLOCK_DGT].regbase = MSM_CSR_BASE + 0x10;
 +      } else if (cpu_is_msm7x30()) {
 +              msm_clocks[MSM_CLOCK_GPT].regbase = MSM_CSR_BASE + 0x04;
 +              msm_clocks[MSM_CLOCK_DGT].regbase = MSM_CSR_BASE + 0x24;
 +      } else if (cpu_is_qsd8x50()) {
 +              msm_clocks[MSM_CLOCK_GPT].regbase = MSM_CSR_BASE;
 +              msm_clocks[MSM_CLOCK_DGT].regbase = MSM_CSR_BASE + 0x10;
 +      } else if (cpu_is_msm8x60() || cpu_is_msm8960()) {
 +              msm_clocks[MSM_CLOCK_GPT].regbase = MSM_TMR_BASE + 0x04;
 +              msm_clocks[MSM_CLOCK_DGT].regbase = MSM_TMR_BASE + 0x24;
 +
 +              /* Use CPU0's timer as the global timer. */
 +              global_offset = MSM_TMR0_BASE - MSM_TMR_BASE;
 +      } else
 +              BUG();
  
  #ifdef CONFIG_ARCH_MSM_SCORPIONMP
        writel(DGT_CLK_CTL_DIV_4, MSM_TMR_BASE + DGT_CLK_CTL);
                struct msm_clock *clock = &msm_clocks[i];
                struct clock_event_device *ce = &clock->clockevent;
                struct clocksource *cs = &clock->clocksource;
 +
 +              clock->local_counter = clock->regbase + TIMER_COUNT_VAL;
 +              clock->global_counter = clock->local_counter + global_offset;
 +
                writel(0, clock->regbase + TIMER_ENABLE);
                writel(0, clock->regbase + TIMER_CLEAR);
                writel(~0, clock->regbase + TIMER_MATCH_VAL);
  }
  
  #ifdef CONFIG_SMP
void __cpuinit local_timer_setup(struct clock_event_device *evt)
int __cpuinit local_timer_setup(struct clock_event_device *evt)
  {
        struct msm_clock *clock = &msm_clocks[MSM_GLOBAL_TIMER];
  
        gic_enable_ppi(clock->irq.irq);
  
        clockevents_register_device(evt);
+       return 0;
  }
  
  inline int local_timer_ack(void)
index eeab35dea07e343f17e4c741b2a6ee1259feee52,6819c64594efffae9906ec1cf081cfaa013de50f..b997a35830fce5e36f1624773916a90159a02865
@@@ -44,6 -44,7 +44,7 @@@ config ARCH_OMAP
        depends on ARCH_OMAP2PLUS
        select CPU_V7
        select ARM_GIC
+       select LOCAL_TIMERS if SMP
        select PL310_ERRATA_588369
        select PL310_ERRATA_727915
        select ARM_ERRATA_720789
  comment "OMAP Core Type"
        depends on ARCH_OMAP2
  
 -config ARCH_OMAP2420
 +config SOC_OMAP2420
        bool "OMAP2420 support"
        depends on ARCH_OMAP2
        default y
        select OMAP_DM_TIMER
        select ARCH_OMAP_OTG
  
 -config ARCH_OMAP2430
 +config SOC_OMAP2430
        bool "OMAP2430 support"
        depends on ARCH_OMAP2
        default y
        select ARCH_OMAP_OTG
  
 -config ARCH_OMAP3430
 +config SOC_OMAP3430
        bool "OMAP3430 support"
        depends on ARCH_OMAP3
        default y
        select ARCH_OMAP_OTG
  
 +config SOC_OMAPTI816X
 +      bool "TI816X support"
 +      depends on ARCH_OMAP3
 +      default y
 +
  config OMAP_PACKAGE_ZAF
         bool
  
@@@ -112,25 -108,25 +113,25 @@@ config MACH_OMAP_GENERI
  
  config MACH_OMAP2_TUSB6010
        bool
 -      depends on ARCH_OMAP2 && ARCH_OMAP2420
 +      depends on ARCH_OMAP2 && SOC_OMAP2420
        default y if MACH_NOKIA_N8X0
  
  config MACH_OMAP_H4
        bool "OMAP 2420 H4 board"
 -      depends on ARCH_OMAP2420
 +      depends on SOC_OMAP2420
        default y
        select OMAP_PACKAGE_ZAF
        select OMAP_DEBUG_DEVICES
  
  config MACH_OMAP_APOLLON
        bool "OMAP 2420 Apollon board"
 -      depends on ARCH_OMAP2420
 +      depends on SOC_OMAP2420
        default y
        select OMAP_PACKAGE_ZAC
  
  config MACH_OMAP_2430SDP
        bool "OMAP 2430 SDP board"
 -      depends on ARCH_OMAP2430
 +      depends on SOC_OMAP2430
        default y
        select OMAP_PACKAGE_ZAC
  
@@@ -225,7 -221,7 +226,7 @@@ config MACH_NOKIA_N810_WIMA
  
  config MACH_NOKIA_N8X0
        bool "Nokia N800/N810"
 -      depends on ARCH_OMAP2420
 +      depends on SOC_OMAP2420
        default y
        select OMAP_PACKAGE_ZAC
        select MACH_NOKIA_N800
@@@ -300,18 -296,12 +301,18 @@@ config MACH_OMAP_3630SD
        default y
        select OMAP_PACKAGE_CBP
  
 +config MACH_TI8168EVM
 +      bool "TI8168 Evaluation Module"
 +      depends on SOC_OMAPTI816X
 +      default y
 +
  config MACH_OMAP_4430SDP
        bool "OMAP 4430 SDP board"
        default y
        depends on ARCH_OMAP4
        select OMAP_PACKAGE_CBL
        select OMAP_PACKAGE_CBS
 +      select REGULATOR_FIXED_VOLTAGE
  
  config MACH_OMAP4_PANDA
        bool "OMAP4 Panda Board"
        depends on ARCH_OMAP4
        select OMAP_PACKAGE_CBL
        select OMAP_PACKAGE_CBS
 +      select REGULATOR_FIXED_VOLTAGE
  
  config OMAP3_EMU
        bool "OMAP3 debugging peripherals"