]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'exynos/dt' into late/dt
authorOlof Johansson <olof@lixom.net>
Sun, 28 Apr 2013 19:03:33 +0000 (12:03 -0700)
committerOlof Johansson <olof@lixom.net>
Sun, 28 Apr 2013 19:03:33 +0000 (12:03 -0700)
* exynos/dt: (125 commits)
  ARM: dts: add PDMA0 changes for exynos5440
  ARM: dts: Add cpufreq controller node for Exynos5440 SoC
  ARM: dts: Fix gmac clock ids due to changes in Exynos5440
  ARM: dts: add device tree file for SD5v1 board
  ARM: dts: update bootargs to boot from sda2 for exynos5440-ssdk5440
  ARM: dts: add PMU support in exynos5440
  ARM: dts: Add node for GMAC for exynos5440
  ARM: dts: list the interrupts generated by pin-controller on Exynos5440
  ARM: dts: Add FIMD DT binding Documentation
  ARM: dts: Add FIMD node and display timing node to exynos4412-origen.dts
  ARM: dts: Add FIMD node to exynos4
  ARM: dts: Add SYSREG block node for S5P/Exynos4 SoC series
  ARM: dts: Add display timing node to exynos5250-smdk5250.dts
  ARM: dts: Add FIMD node to exynos5
  ARM: dts: Add virtual GIC DT bindings for exynos5440
  ARM: dts: Document usb clocks in samsung,exynos4210-ehci/ohci bindings
  ARM: dts: add usb 2.0 clock references to exynos5250 device tree
  ARM: dts: Add architected timer nodes for exynos5250
  ARM: dts: Declare the gic as a15 compatible for exynos5250
  ARM: dts: Add HDMI HPD and regulator node for Arndale board
  ...

1  2 
arch/arm/Kconfig
arch/arm/mach-exynos/common.c
arch/arm/mach-s3c24xx/irq.c

diff --combined arch/arm/Kconfig
index 1cacda426a0ea6699528dd0eeedf83032825e09e,8ffab890d7aab0f424ea4eb440efd8501355dedd..be23497f5b2982b7c6c61bcfbe0324176a4c8ccc
@@@ -769,8 -769,10 +769,10 @@@ config ARCH_SA110
  config ARCH_S3C24XX
        bool "Samsung S3C24XX SoCs"
        select ARCH_HAS_CPUFREQ
-       select ARCH_USES_GETTIMEOFFSET
        select CLKDEV_LOOKUP
+       select CLKSRC_MMIO
+       select GENERIC_CLOCKEVENTS
+       select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -787,10 -789,11 +789,11 @@@ config ARCH_S3C64X
        bool "Samsung S3C64XX"
        select ARCH_HAS_CPUFREQ
        select ARCH_REQUIRE_GPIOLIB
-       select ARCH_USES_GETTIMEOFFSET
        select ARM_VIC
        select CLKDEV_LOOKUP
+       select CLKSRC_MMIO
        select CPU_V6
+       select GENERIC_CLOCKEVENTS
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -824,9 -827,11 +827,11 @@@ config ARCH_S5P64X
  
  config ARCH_S5PC100
        bool "Samsung S5PC100"
-       select ARCH_USES_GETTIMEOFFSET
        select CLKDEV_LOOKUP
+       select CLKSRC_MMIO
        select CPU_V7
+       select GENERIC_CLOCKEVENTS
+       select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -859,6 -864,7 +864,7 @@@ config ARCH_EXYNO
        select ARCH_HAS_HOLES_MEMORYMODEL
        select ARCH_SPARSEMEM_ENABLE
        select CLKDEV_LOOKUP
+       select COMMON_CLK
        select CPU_V7
        select GENERIC_CLOCKEVENTS
        select HAVE_CLK
@@@ -1183,9 -1189,9 +1189,9 @@@ config ARM_NR_BANK
        default 8
  
  config IWMMXT
 -      bool "Enable iWMMXt support"
 +      bool "Enable iWMMXt support" if !CPU_PJ4
        depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
 -      default y if PXA27x || PXA3xx || ARCH_MMP
 +      default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4
        help
          Enable support for iWMMXt context switching at run time if
          running on a CPU that supports it.
@@@ -1439,16 -1445,6 +1445,16 @@@ config ARM_ERRATA_77542
         to deadlock. This workaround puts DSB before executing ISB if
         an abort may occur on cache maintenance.
  
 +config ARM_ERRATA_798181
 +      bool "ARM errata: TLBI/DSB failure on Cortex-A15"
 +      depends on CPU_V7 && SMP
 +      help
 +        On Cortex-A15 (r0p0..r3p2) the TLBI*IS/DSB operations are not
 +        adequately shooting down all use of the old entries. This
 +        option enables the Linux kernel workaround for this erratum
 +        which sends an IPI to the CPUs that are running the same ASID
 +        as the one being invalidated.
 +
  endmenu
  
  source "arch/arm/common/Kconfig"
@@@ -1656,7 -1652,7 +1662,7 @@@ config LOCAL_TIMER
        bool "Use local timer interrupts"
        depends on SMP
        default y
-       select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT)
+       select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !CLKSRC_EXYNOS_MCT)
        help
          Enable support for local timers on SMP platforms, rather then the
          legacy IPI broadcast method.  Local timers allows the system
index bdd957978d9ba8d003f138432e6d45bfc9fffdd1,02e35abd136b4ae39aba1c70a7068715cfdab0c8..d3efd6768ff8c1b35dc51054bbee40e6d321baa6
@@@ -25,6 -25,8 +25,8 @@@
  #include <linux/irqdomain.h>
  #include <linux/irqchip.h>
  #include <linux/of_address.h>
+ #include <linux/clocksource.h>
+ #include <linux/clk-provider.h>
  #include <linux/irqchip/arm-gic.h>
  
  #include <asm/proc-fns.h>
@@@ -39,7 -41,6 +41,6 @@@
  #include <mach/regs-gpio.h>
  
  #include <plat/cpu.h>
- #include <plat/clock.h>
  #include <plat/devs.h>
  #include <plat/pm.h>
  #include <plat/sdhci.h>
@@@ -65,17 -66,16 +66,16 @@@ static const char name_exynos5440[] = "
  static void exynos4_map_io(void);
  static void exynos5_map_io(void);
  static void exynos5440_map_io(void);
- static void exynos4_init_clocks(int xtal);
- static void exynos5_init_clocks(int xtal);
  static void exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no);
  static int exynos_init(void);
  
+ unsigned long xxti_f = 0, xusbxti_f = 0;
  static struct cpu_table cpu_ids[] __initdata = {
        {
                .idcode         = EXYNOS4210_CPU_ID,
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
-               .init_clocks    = exynos4_init_clocks,
                .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4210,
@@@ -83,7 -83,6 +83,6 @@@
                .idcode         = EXYNOS4212_CPU_ID,
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
-               .init_clocks    = exynos4_init_clocks,
                .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4212,
@@@ -91,7 -90,6 +90,6 @@@
                .idcode         = EXYNOS4412_CPU_ID,
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
-               .init_clocks    = exynos4_init_clocks,
                .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4412,
@@@ -99,7 -97,6 +97,6 @@@
                .idcode         = EXYNOS5250_SOC_ID,
                .idmask         = EXYNOS5_SOC_MASK,
                .map_io         = exynos5_map_io,
-               .init_clocks    = exynos5_init_clocks,
                .init           = exynos_init,
                .name           = name_exynos5250,
        }, {
@@@ -256,11 -253,6 +253,6 @@@ static struct map_desc exynos5_iodesc[
                .pfn            = __phys_to_pfn(EXYNOS5_PA_SROMC),
                .length         = SZ_4K,
                .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_SYSTIMER,
-               .pfn            = __phys_to_pfn(EXYNOS5_PA_SYSTIMER),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
        }, {
                .virtual        = (unsigned long)S5P_VA_SYSRAM,
                .pfn            = __phys_to_pfn(EXYNOS5_PA_SYSRAM),
@@@ -402,43 -394,26 +394,26 @@@ static void __init exynos5_map_io(void
        iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc));
  }
  
- static void __init exynos4_init_clocks(int xtal)
- {
-       printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
-       s3c24xx_register_baseclocks(xtal);
-       s5p_register_clocks(xtal);
-       if (soc_is_exynos4210())
-               exynos4210_register_clocks();
-       else if (soc_is_exynos4212() || soc_is_exynos4412())
-               exynos4212_register_clocks();
-       exynos4_register_clocks();
-       exynos4_setup_clocks();
- }
  static void __init exynos5440_map_io(void)
  {
        iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0));
  }
  
static void __init exynos5_init_clocks(int xtal)
void __init exynos_init_time(void)
  {
-       printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
-       /* EXYNOS5440 can support only common clock framework */
-       if (soc_is_exynos5440())
-               return;
- #ifdef CONFIG_SOC_EXYNOS5250
-       s3c24xx_register_baseclocks(xtal);
-       s5p_register_clocks(xtal);
-       exynos5_register_clocks();
-       exynos5_setup_clocks();
+       if (of_have_populated_dt()) {
+ #ifdef CONFIG_OF
+               of_clk_init(NULL);
+               clocksource_of_init();
+ #endif
+       } else {
+               /* todo: remove after migrating legacy E4 platforms to dt */
+ #ifdef CONFIG_ARCH_EXYNOS4
+               exynos4_clk_init(NULL);
+               exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f);
  #endif
+               mct_init();
+       }
  }
  
  void __init exynos4_init_irq(void)
@@@ -822,7 -797,6 +797,7 @@@ static int __init exynos_init_irq_eint(
        static const struct of_device_id exynos_pinctrl_ids[] = {
                { .compatible = "samsung,exynos4210-pinctrl", },
                { .compatible = "samsung,exynos4x12-pinctrl", },
 +              { .compatible = "samsung,exynos5250-pinctrl", },
        };
        struct device_node *pctrl_np, *wkup_np;
        const char *wkup_compat = "samsung,exynos4210-wakeup-eint";
index d8ba9bee4c7e61434aa90852ce7f4e66ff4a5ebd,c1b96f7cc587e310d5cf594449a75a688dd8a2e9..e0769fb03e94be9d179f81baa3c98950e40a31da
@@@ -34,7 -34,6 +34,6 @@@
  #include <plat/cpu.h>
  #include <plat/regs-irqtype.h>
  #include <plat/pm.h>
- #include <plat/irq.h>
  
  #define S3C_IRQTYPE_NONE      0
  #define S3C_IRQTYPE_EINT      1
@@@ -175,8 -174,7 +174,7 @@@ static int s3c_irqext_type_set(void __i
        return 0;
  }
  
- /* FIXME: make static when it's out of plat-samsung/irq.h */
- int s3c_irqext_type(struct irq_data *data, unsigned int type)
+ static int s3c_irqext_type(struct irq_data *data, unsigned int type)
  {
        void __iomem *extint_reg;
        void __iomem *gpcon_reg;
@@@ -224,7 -222,7 +222,7 @@@ static int s3c_irqext0_type(struct irq_
                                   extint_offset, type);
  }
  
- struct irq_chip s3c_irq_chip = {
+ static struct irq_chip s3c_irq_chip = {
        .name           = "s3c",
        .irq_ack        = s3c_irq_ack,
        .irq_mask       = s3c_irq_mask,
        .irq_set_wake   = s3c_irq_wake
  };
  
- struct irq_chip s3c_irq_level_chip = {
+ static struct irq_chip s3c_irq_level_chip = {
        .name           = "s3c-level",
        .irq_mask       = s3c_irq_mask,
        .irq_unmask     = s3c_irq_unmask,
@@@ -500,7 -498,7 +498,7 @@@ struct s3c_irq_intc *s3c24xx_init_intc(
                base = (void *)0xfd000000;
  
                intc->reg_mask = base + 0xa4;
 -              intc->reg_pending = base + 0x08;
 +              intc->reg_pending = base + 0xa8;
                irq_num = 20;
                irq_start = S3C2410_IRQ(32);
                irq_offset = 4;