]> Git Repo - linux.git/commitdiff
Merge tag 'exynos-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene...
authorArnd Bergmann <[email protected]>
Sat, 29 Mar 2014 01:03:39 +0000 (02:03 +0100)
committerArnd Bergmann <[email protected]>
Sat, 29 Mar 2014 01:03:39 +0000 (02:03 +0100)
Merge "Exynos cleanup for v3.15" from Kukjin Kim:

- reorganize code for
- add support reserve memory for mfc-v7
- consolidate exynos4 and exynos5 machine codes
- add generic compatible strings for exynos4 and exynos5
- update DT with generic compatible strings
- move clk related dt-binding header file in dt-bindings/clock

* tag 'exynos-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
  dt-bindings: clock: Move exynos-audss-clk.h to dt-bindings/clock
  ARM: dts: Update Exynos DT files with generic compatible strings
  ARM: EXYNOS: Add generic compatible strings
  ARM: EXYNOS: Consolidate exynos4 and exynos5 machine files
  ARM: EXYNOS: Consolidate CPU init code
  ARM: SAMSUNG: Introduce generic Exynos4 and 5 helpers
  ARM: EXYNOS: Add support to reserve memory for MFC-v7
  ARM: SAMSUNG: Reorganize calls to reserve memory for MFC

Conflicts:
arch/arm/mach-exynos/exynos.c

Signed-off-by; Arnd Bergmann <[email protected]>

19 files changed:
1  2 
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4212.dtsi
arch/arm/boot/dts/exynos4412-odroidx.dts
arch/arm/boot/dts/exynos4412-origen.dts
arch/arm/boot/dts/exynos4412-trats2.dts
arch/arm/boot/dts/exynos4412.dtsi
arch/arm/boot/dts/exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-smdk5250.dts
arch/arm/boot/dts/exynos5250-snow.dts
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5420-arndale-octa.dts
arch/arm/boot/dts/exynos5420-smdk5420.dts
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/exynos5440.dtsi
arch/arm/mach-exynos/Makefile
arch/arm/mach-exynos/common.h
arch/arm/mach-exynos/exynos.c
arch/arm/mach-exynos/regs-pmu.h
arch/arm/plat-samsung/include/plat/cpu.h

index cb0e768dc6d4194782935d7412dd2ef64763be24,57131dc2f62f1f9572154f1b04308fa2a70b006c..cacf6140dd2f58be5351f797d889d8b0563e461c
@@@ -23,7 -23,7 +23,7 @@@
  #include "exynos4210-pinctrl.dtsi"
  
  / {
-       compatible = "samsung,exynos4210";
+       compatible = "samsung,exynos4210", "samsung,exynos4";
  
        aliases {
                pinctrl0 = &pinctrl_0;
@@@ -53,7 -53,7 +53,7 @@@
                reg = <0x10050000 0x800>;
                interrupt-parent = <&mct_map>;
                interrupts = <0>, <1>, <2>, <3>, <4>, <5>;
 -              clocks = <&clock 3>, <&clock 344>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                clock-names = "fin_pll", "mct";
  
                mct_map: mct-map {
                interrupt-parent = <&combiner>;
                reg = <0x100C0000 0x100>;
                interrupts = <2 4>;
 -              clocks = <&clock 383>;
 +              clocks = <&clock CLK_TMU_APBIF>;
                clock-names = "tmu_apbif";
                status = "disabled";
        };
                compatible = "samsung,s5pv210-g2d";
                reg = <0x12800000 0x1000>;
                interrupts = <0 89 0>;
 -              clocks = <&clock 177>, <&clock 277>;
 +              clocks = <&clock CLK_SCLK_FIMG2D>, <&clock CLK_G2D>;
                clock-names = "sclk_fimg2d", "fimg2d";
                status = "disabled";
        };
  
        camera {
 -              clocks = <&clock 132>, <&clock 133>, <&clock 351>, <&clock 352>;
 +              clocks = <&clock CLK_SCLK_CAM0>, <&clock CLK_SCLK_CAM1>,
 +                       <&clock CLK_PIXELASYNCM0>, <&clock CLK_PIXELASYNCM1>;
                clock-names = "sclk_cam0", "sclk_cam1", "pxl_async0", "pxl_async1";
  
                fimc_0: fimc@11800000 {
index ceefc711793cac153511b37b524aebcbb5305d4f,34e578d15301ced9e0b4c36e19ebd2aa7c764977..3c00e6ec93027f8ca410c1ee39b3b5d3200c3cd7
  #include "exynos4x12.dtsi"
  
  / {
-       compatible = "samsung,exynos4212";
+       compatible = "samsung,exynos4212", "samsung,exynos4";
  
 -      gic: interrupt-controller@10490000 {
 -              cpu-offset = <0x8000>;
 +      combiner: interrupt-controller@10440000 {
 +              samsung,combiner-nr = <18>;
        };
  
 -      interrupt-controller@10440000 {
 -              samsung,combiner-nr = <18>;
 -              interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
 -                           <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
 -                           <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
 -                           <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>,
 -                           <0 107 0>, <0 108 0>;
 +      gic: interrupt-controller@10490000 {
 +              cpu-offset = <0x8000>;
        };
  };
index 12459b01cca303c860c421631d47185aa84a7d8c,5d898b828025f52bdb5063a9ed4e3804488a6ad4..31db28a4bb33e86f18233fa8336a3a0cee28ca87
@@@ -16,7 -16,7 +16,7 @@@
  
  / {
        model = "Hardkernel ODROID-X board based on Exynos4412";
-       compatible = "hardkernel,odroid-x", "samsung,exynos4412";
+       compatible = "hardkernel,odroid-x", "samsung,exynos4412", "samsung,exynos4";
  
        memory {
                reg = <0x40000000 0x40000000>;
                                buck2_reg: BUCK2 {
                                        regulator-name = "vdd_arm";
                                        regulator-min-microvolt = <900000>;
 -                                      regulator-max-microvolt = <1300000>;
 +                                      regulator-max-microvolt = <1350000>;
                                        regulator-always-on;
                                        regulator-boot-on;
                                };
index 388f03579661dddd4891911ec5d590892624c54f,17357e1303157146dc009016b3967c864b866c90..e2c0dcab4d81d576d417489d9f97ce58228c66dc
@@@ -17,7 -17,7 +17,7 @@@
  
  / {
        model = "Insignal Origen evaluation board based on Exynos4412";
-       compatible = "insignal,origen4412", "samsung,exynos4412";
+       compatible = "insignal,origen4412", "samsung,exynos4412", "samsung,exynos4";
  
        memory {
                reg = <0x40000000 0x40000000>;
  
                                buck2_reg: BUCK2 {
                                        regulator-name = "vdd_arm";
 -                                      regulator-min-microvolt = <925000>;
 -                                      regulator-max-microvolt = <1300000>;
 +                                      regulator-min-microvolt = <900000>;
 +                                      regulator-max-microvolt = <1350000>;
                                        regulator-always-on;
                                        regulator-boot-on;
                                        op_mode = <1>; /* Normal Mode */
index 322850640f4349d4062dcffc1fc3fd0ee6b63458,0b05b378e1b3eabe8de1d5cf706697a389b36dbb..c16b3159b8138a4d0d0222114d638c77e1184227
@@@ -17,7 -17,7 +17,7 @@@
  
  / {
        model = "Samsung Trats 2 based on Exynos4412";
-       compatible = "samsung,trats2", "samsung,exynos4412";
+       compatible = "samsung,trats2", "samsung,exynos4412", "samsung,exynos4";
  
        aliases {
                i2c8 = &i2c_ak8975;
                };
        };
  
 +      adc: adc@126C0000 {
 +              vdd-supply = <&ldo3_reg>;
 +              status = "okay";
 +      };
 +
        i2c@13890000 {
                samsung,i2c-sda-delay = <100>;
                samsung,i2c-slave-addr = <0x10>;
                        };
                };
        };
 +
 +      thermistor-ap@0 {
 +              compatible = "ntc,ncp15wb473";
 +              pullup-uv = <1800000>;   /* VCC_1.8V_AP */
 +              pullup-ohm = <100000>;   /* 100K */
 +              pulldown-ohm = <100000>; /* 100K */
 +              io-channels = <&adc 1>;  /* AP temperature */
 +      };
 +
 +      thermistor-battery@1 {
 +              compatible = "ntc,ncp15wb473";
 +              pullup-uv = <1800000>;   /* VCC_1.8V_AP */
 +              pullup-ohm = <100000>;   /* 100K */
 +              pulldown-ohm = <100000>; /* 100K */
 +              io-channels = <&adc 2>;  /* Battery temperature */
 +      };
  };
index a40b6e20e92f111b50e2ddd6b4771ef25bf61ce9,eaa67899ed31bd7a7d5484b4dc2b69d20145ca96..15d3c0ac2f5f77d337f4f4c0f1424d9e56e5a350
  #include "exynos4x12.dtsi"
  
  / {
-       compatible = "samsung,exynos4412";
+       compatible = "samsung,exynos4412", "samsung,exynos4";
  
 -      gic: interrupt-controller@10490000 {
 -              cpu-offset = <0x4000>;
 -      };
 -
 -      interrupt-controller@10440000 {
 +      combiner: interrupt-controller@10440000 {
                samsung,combiner-nr = <20>;
 -              interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
 -                           <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
 -                           <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
 -                           <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>,
 -                           <0 107 0>, <0 108 0>, <0 48 0>, <0 42 0>;
        };
  
 +      gic: interrupt-controller@10490000 {
 +              cpu-offset = <0x4000>;
 +      };
  };
index 9a78d96f8477497aecee6477881a3c5cc2a7d900,42a0cacf6718ccada0ed321b8687eec789b87d32..e1f5c7a1ab11353acd5f08d37b9fbbd3cba4b1bd
@@@ -15,7 -15,7 +15,7 @@@
  
  / {
        model = "Insignal Arndale evaluation board based on EXYNOS5250";
-       compatible = "insignal,arndale", "samsung,exynos5250";
+       compatible = "insignal,arndale", "samsung,exynos5250", "samsung,exynos5";
  
        memory {
                reg = <0x40000000 0x80000000>;
                bootargs = "console=ttySAC2,115200";
        };
  
 +      rtc@101E0000 {
 +              status = "okay";
 +      };
 +
        codec@11000000 {
                samsung,mfc-r = <0x43000000 0x800000>;
                samsung,mfc-l = <0x51000000 0x800000>;
                };
        };
  
 +      i2c@121D0000 {
 +              status = "okay";
 +              samsung,i2c-sda-delay = <100>;
 +              samsung,i2c-max-bus-freq = <40000>;
 +              samsung,i2c-slave-addr = <0x38>;
 +
 +              sata_phy_i2c:sata-phy@38 {
 +                      compatible = "samsung,exynos-sataphy-i2c";
 +                      reg = <0x38>;
 +              };
 +      };
 +
 +      sata@122F0000 {
 +              status = "okay";
 +      };
 +
 +      sata-phy@12170000 {
 +              status = "okay";
 +              samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
 +      };
 +
        mmc_0: mmc@12200000 {
                status = "okay";
                num-slots = <1>;
index 140de8563e94d53eaa914782bb383977d6a04d03,0b04762e8e3239f3843c5f79a0468055cd5f0f3e..a794a705d4040ec220c7b380e09dbc83a9193025
@@@ -14,7 -14,7 +14,7 @@@
  
  / {
        model = "SAMSUNG SMDK5250 board based on EXYNOS5250";
-       compatible = "samsung,smdk5250", "samsung,exynos5250";
+       compatible = "samsung,smdk5250", "samsung,exynos5250", "samsung,exynos5";
  
        aliases {
        };
                bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
        };
  
 +      rtc@101E0000 {
 +              status = "okay";
 +      };
 +
        i2c@12C60000 {
                samsung,i2c-sda-delay = <100>;
                samsung,i2c-max-bus-freq = <20000>;
                        compatible = "samsung,s524ad0xd1";
                        reg = <0x50>;
                };
 +
 +              max77686@09 {
 +                      compatible = "maxim,max77686";
 +                      reg = <0x09>;
 +
 +                      voltage-regulators {
 +                              ldo1_reg: LDO1 {
 +                                      regulator-name = "P1.0V_LDO_OUT1";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo2_reg: LDO2 {
 +                                      regulator-name = "P1.2V_LDO_OUT2";
 +                                      regulator-min-microvolt = <1200000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo3_reg: LDO3 {
 +                                      regulator-name = "P1.8V_LDO_OUT3";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo4_reg: LDO4 {
 +                                      regulator-name = "P2.8V_LDO_OUT4";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +
 +                              ldo5_reg: LDO5 {
 +                                      regulator-name = "P1.8V_LDO_OUT5";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo6_reg: LDO6 {
 +                                      regulator-name = "P1.1V_LDO_OUT6";
 +                                      regulator-min-microvolt = <1100000>;
 +                                      regulator-max-microvolt = <1100000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo7_reg: LDO7 {
 +                                      regulator-name = "P1.1V_LDO_OUT7";
 +                                      regulator-min-microvolt = <1100000>;
 +                                      regulator-max-microvolt = <1100000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo8_reg: LDO8 {
 +                                      regulator-name = "P1.0V_LDO_OUT8";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                              };
 +
 +                              ldo10_reg: LDO10 {
 +                                      regulator-name = "P1.8V_LDO_OUT10";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo11_reg: LDO11 {
 +                                      regulator-name = "P1.8V_LDO_OUT11";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo12_reg: LDO12 {
 +                                      regulator-name = "P3.0V_LDO_OUT12";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3000000>;
 +                              };
 +
 +                              ldo13_reg: LDO13 {
 +                                      regulator-name = "P1.8V_LDO_OUT13";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo14_reg: LDO14 {
 +                                      regulator-name = "P1.8V_LDO_OUT14";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo15_reg: LDO15 {
 +                                      regulator-name = "P1.0V_LDO_OUT15";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                              };
 +
 +                              ldo16_reg: LDO16 {
 +                                      regulator-name = "P1.8V_LDO_OUT16";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              buck1_reg: BUCK1 {
 +                                      regulator-name = "vdd_mif";
 +                                      regulator-min-microvolt = <950000>;
 +                                      regulator-max-microvolt = <1300000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck2_reg: BUCK2 {
 +                                      regulator-name = "vdd_arm";
 +                                      regulator-min-microvolt = <850000>;
 +                                      regulator-max-microvolt = <1350000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck3_reg: BUCK3 {
 +                                      regulator-name = "vdd_int";
 +                                      regulator-min-microvolt = <900000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck4_reg: BUCK4 {
 +                                      regulator-name = "vdd_g3d";
 +                                      regulator-min-microvolt = <850000>;
 +                                      regulator-max-microvolt = <1300000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck5_reg: BUCK5 {
 +                                      regulator-name = "P1.8V_BUCK_OUT5";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +                      };
 +              };
        };
  
        vdd: fixed-regulator@0 {
                samsung,i2c-slave-addr = <0x38>;
                status = "okay";
  
 -              sata-phy {
 -                      compatible = "samsung,sata-phy";
 +              sata_phy_i2c:sata-phy@38 {
 +                      compatible = "samsung,exynos-sataphy-i2c";
                        reg = <0x38>;
                };
        };
  
 -      sata@122F0000 {
 -              samsung,sata-freq = <66>;
 -      };
 -
        i2c@12C80000 {
                samsung,i2c-sda-delay = <100>;
                samsung,i2c-max-bus-freq = <66000>;
                };
        };
  
 +      sata@122F0000 {
 +              status = "okay";
 +      };
 +
 +      sata-phy@12170000 {
 +              status = "okay";
 +              samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
 +      };
 +
        mmc@12200000 {
                status = "okay";
                num-slots = <1>;
                };
        };
  
 -      spi_0: spi@12d20000 {
 -              status = "disabled";
 -      };
 -
        spi_1: spi@12d30000 {
                status = "okay";
  
index b13bf499f5e253a67392dd32481b37ad29712375,ce0f5002796a09191dad8df4ce1a229c1068d5c0..1ce1088a00fb5828e168888fcc0bab677cb1844f
  
  / {
        model = "Google Snow";
-       compatible = "google,snow", "samsung,exynos5250";
+       compatible = "google,snow", "samsung,exynos5250", "samsung,exynos5";
  
        aliases {
                i2c104 = &i2c_104;
        };
  
 +      rtc@101E0000 {
 +              status = "okay";
 +      };
 +
        pinctrl@11400000 {
                sd3_clk: sd3-clk {
                        samsung,pin-drv = <0>;
index fdeed7c29ac9f854c8c7587a8e25fe5897feee33,d1a46d6f94420e1ff86e46303fc46a13a3ece9a5..37423314a02826a66670776c03109f1526449bc7
   * published by the Free Software Foundation.
  */
  
 +#include <dt-bindings/clock/exynos5250.h>
  #include "exynos5.dtsi"
  #include "exynos5250-pinctrl.dtsi"
  
- #include <dt-bindings/clk/exynos-audss-clk.h>
+ #include <dt-bindings/clock/exynos-audss-clk.h>
  
  / {
-       compatible = "samsung,exynos5250";
+       compatible = "samsung,exynos5250", "samsung,exynos5";
  
        aliases {
                spi0 = &spi_0;
@@@ -47,7 -46,6 +47,7 @@@
                i2c6 = &i2c_6;
                i2c7 = &i2c_7;
                i2c8 = &i2c_8;
 +              i2c9 = &i2c_9;
                pinctrl0 = &pinctrl_0;
                pinctrl1 = &pinctrl_1;
                pinctrl2 = &pinctrl_2;
@@@ -92,8 -90,7 +92,8 @@@
                compatible = "samsung,exynos5250-audss-clock";
                reg = <0x03810000 0x0C>;
                #clock-cells = <1>;
 -              clocks = <&clock 1>, <&clock 7>, <&clock 138>, <&clock 160>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_FOUT_EPLL>,
 +                       <&clock CLK_SCLK_AUDIO0>, <&clock CLK_DIV_PCM0>;
                clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in";
        };
  
                interrupt-parent = <&mct_map>;
                interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
                             <4 0>, <5 0>;
 -              clocks = <&clock 1>, <&clock 335>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                clock-names = "fin_pll", "mct";
  
                mct_map: mct-map {
                interrupts = <0 47 0>;
        };
  
 -      watchdog {
 -              clocks = <&clock 336>;
 +      pmu_system_controller: system-controller@10040000 {
 +              compatible = "samsung,exynos5250-pmu", "syscon";
 +              reg = <0x10040000 0x5000>;
 +      };
 +
 +      watchdog@101D0000 {
 +              compatible = "samsung,exynos5250-wdt";
 +              reg = <0x101D0000 0x100>;
 +              interrupts = <0 42 0>;
 +              clocks = <&clock CLK_WDT>;
                clock-names = "watchdog";
 +              samsung,syscon-phandle = <&pmu_system_controller>;
        };
  
        g2d@10850000 {
                compatible = "samsung,exynos5250-g2d";
                reg = <0x10850000 0x1000>;
                interrupts = <0 91 0>;
 -              clocks = <&clock 345>;
 +              clocks = <&clock CLK_G2D>;
                clock-names = "fimg2d";
        };
  
                reg = <0x11000000 0x10000>;
                interrupts = <0 96 0>;
                samsung,power-domain = <&pd_mfc>;
 -              clocks = <&clock 266>;
 +              clocks = <&clock CLK_MFC>;
                clock-names = "mfc";
        };
  
        rtc@101E0000 {
 -              clocks = <&clock 337>;
 +              clocks = <&clock CLK_RTC>;
                clock-names = "rtc";
 -              status = "okay";
 +              status = "disabled";
        };
  
        tmu@10060000 {
                compatible = "samsung,exynos5250-tmu";
                reg = <0x10060000 0x100>;
                interrupts = <0 65 0>;
 -              clocks = <&clock 338>;
 +              clocks = <&clock CLK_TMU>;
                clock-names = "tmu_apbif";
        };
  
        serial@12C00000 {
 -              clocks = <&clock 289>, <&clock 146>;
 +              clocks = <&clock CLK_UART0>, <&clock CLK_SCLK_UART0>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C10000 {
 -              clocks = <&clock 290>, <&clock 147>;
 +              clocks = <&clock CLK_UART1>, <&clock CLK_SCLK_UART1>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C20000 {
 -              clocks = <&clock 291>, <&clock 148>;
 +              clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C30000 {
 -              clocks = <&clock 292>, <&clock 149>;
 +              clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        sata@122F0000 {
 -              compatible = "samsung,exynos5-sata-ahci";
 +              compatible = "snps,dwc-ahci";
 +              samsung,sata-freq = <66>;
                reg = <0x122F0000 0x1ff>;
                interrupts = <0 115 0>;
 -              clocks = <&clock 277>, <&clock 143>;
 +              clocks = <&clock CLK_SATA>, <&clock CLK_SCLK_SATA>;
                clock-names = "sata", "sclk_sata";
 +              phys = <&sata_phy>;
 +              phy-names = "sata-phy";
 +              status = "disabled";
        };
  
 -      sata-phy@12170000 {
 -              compatible = "samsung,exynos5-sata-phy";
 +      sata_phy: sata-phy@12170000 {
 +              compatible = "samsung,exynos5250-sata-phy";
                reg = <0x12170000 0x1ff>;
 +              clocks = <&clock 287>;
 +              clock-names = "sata_phyctrl";
 +              #phy-cells = <0>;
 +              samsung,syscon-phandle = <&pmu_system_controller>;
 +              status = "disabled";
        };
  
        i2c_0: i2c@12C60000 {
                interrupts = <0 56 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 294>;
 +              clocks = <&clock CLK_I2C0>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c0_bus>;
                interrupts = <0 57 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 295>;
 +              clocks = <&clock CLK_I2C1>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c1_bus>;
                interrupts = <0 58 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 296>;
 +              clocks = <&clock CLK_I2C2>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c2_bus>;
                interrupts = <0 59 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 297>;
 +              clocks = <&clock CLK_I2C3>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c3_bus>;
                interrupts = <0 60 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 298>;
 +              clocks = <&clock CLK_I2C4>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c4_bus>;
                interrupts = <0 61 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 299>;
 +              clocks = <&clock CLK_I2C5>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c5_bus>;
                interrupts = <0 62 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 300>;
 +              clocks = <&clock CLK_I2C6>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c6_bus>;
                interrupts = <0 63 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 301>;
 +              clocks = <&clock CLK_I2C7>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c7_bus>;
                interrupts = <0 64 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 302>;
 +              clocks = <&clock CLK_I2C_HDMI>;
                clock-names = "i2c";
                status = "disabled";
        };
  
 -      i2c@121D0000 {
 +      i2c_9: i2c@121D0000 {
                  compatible = "samsung,exynos5-sata-phy-i2c";
                  reg = <0x121D0000 0x100>;
                  #address-cells = <1>;
                  #size-cells = <0>;
 -              clocks = <&clock 288>;
 +              clocks = <&clock CLK_SATA_PHYI2C>;
                clock-names = "i2c";
                status = "disabled";
        };
                dma-names = "tx", "rx";
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 304>, <&clock 154>;
 +              clocks = <&clock CLK_SPI0>, <&clock CLK_SCLK_SPI0>;
                clock-names = "spi", "spi_busclk0";
                pinctrl-names = "default";
                pinctrl-0 = <&spi0_bus>;
                dma-names = "tx", "rx";
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 305>, <&clock 155>;
 +              clocks = <&clock CLK_SPI1>, <&clock CLK_SCLK_SPI1>;
                clock-names = "spi", "spi_busclk0";
                pinctrl-names = "default";
                pinctrl-0 = <&spi1_bus>;
                dma-names = "tx", "rx";
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 306>, <&clock 156>;
 +              clocks = <&clock CLK_SPI2>, <&clock CLK_SCLK_SPI2>;
                clock-names = "spi", "spi_busclk0";
                pinctrl-names = "default";
                pinctrl-0 = <&spi2_bus>;
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12200000 0x1000>;
 -              clocks = <&clock 280>, <&clock 139>;
 +              clocks = <&clock CLK_SDMMC0>, <&clock CLK_SCLK_MMC0>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x80>;
                status = "disabled";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12210000 0x1000>;
 -              clocks = <&clock 281>, <&clock 140>;
 +              clocks = <&clock CLK_SDMMC1>, <&clock CLK_SCLK_MMC1>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x80>;
                status = "disabled";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12220000 0x1000>;
 -              clocks = <&clock 282>, <&clock 141>;
 +              clocks = <&clock CLK_SDMMC2>, <&clock CLK_SCLK_MMC2>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x80>;
                status = "disabled";
                interrupts = <0 78 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 283>, <&clock 142>;
 +              clocks = <&clock CLK_SDMMC3>, <&clock CLK_SCLK_MMC3>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x80>;
                status = "disabled";
                dmas = <&pdma1 12
                        &pdma1 11>;
                dma-names = "tx", "rx";
 -              clocks = <&clock 307>, <&clock 157>;
 +              clocks = <&clock CLK_I2S1>, <&clock CLK_DIV_I2S1>;
                clock-names = "iis", "i2s_opclk0";
                pinctrl-names = "default";
                pinctrl-0 = <&i2s1_bus>;
                dmas = <&pdma0 12
                        &pdma0 11>;
                dma-names = "tx", "rx";
 -              clocks = <&clock 308>, <&clock 158>;
 +              clocks = <&clock CLK_I2S2>, <&clock CLK_DIV_I2S2>;
                clock-names = "iis", "i2s_opclk0";
                pinctrl-names = "default";
                pinctrl-0 = <&i2s2_bus>;
  
        usb@12000000 {
                compatible = "samsung,exynos5250-dwusb3";
 -              clocks = <&clock 286>;
 +              clocks = <&clock CLK_USB3>;
                clock-names = "usbdrd30";
                #address-cells = <1>;
                #size-cells = <1>;
        usb3_phy: usbphy@12100000 {
                compatible = "samsung,exynos5250-usb3phy";
                reg = <0x12100000 0x100>;
 -              clocks = <&clock 1>, <&clock 286>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_USB3>;
                clock-names = "ext_xtal", "usbdrd30";
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x12110000 0x100>;
                interrupts = <0 71 0>;
  
 -              clocks = <&clock 285>;
 +              clocks = <&clock CLK_USB2>;
                clock-names = "usbhost";
        };
  
                reg = <0x12120000 0x100>;
                interrupts = <0 71 0>;
  
 -              clocks = <&clock 285>;
 +              clocks = <&clock CLK_USB2>;
                clock-names = "usbhost";
        };
  
        usb2_phy: usbphy@12130000 {
                compatible = "samsung,exynos5250-usb2phy";
                reg = <0x12130000 0x100>;
 -              clocks = <&clock 1>, <&clock 285>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_USB2>;
                clock-names = "ext_xtal", "usbhost";
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x12dd0000 0x100>;
                samsung,pwm-outputs = <0>, <1>, <2>, <3>;
                #pwm-cells = <3>;
 -              clocks = <&clock 311>;
 +              clocks = <&clock CLK_PWM>;
                clock-names = "timers";
        };
  
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x121A0000 0x1000>;
                        interrupts = <0 34 0>;
 -                      clocks = <&clock 275>;
 +                      clocks = <&clock CLK_PDMA0>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x121B0000 0x1000>;
                        interrupts = <0 35 0>;
 -                      clocks = <&clock 276>;
 +                      clocks = <&clock CLK_PDMA1>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x10800000 0x1000>;
                        interrupts = <0 33 0>;
 -                      clocks = <&clock 346>;
 +                      clocks = <&clock CLK_MDMA0>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x11C10000 0x1000>;
                        interrupts = <0 124 0>;
 -                      clocks = <&clock 271>;
 +                      clocks = <&clock CLK_MDMA1>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                reg = <0x13e00000 0x1000>;
                interrupts = <0 85 0>;
                samsung,power-domain = <&pd_gsc>;
 -              clocks = <&clock 256>;
 +              clocks = <&clock CLK_GSCL0>;
                clock-names = "gscl";
        };
  
                reg = <0x13e10000 0x1000>;
                interrupts = <0 86 0>;
                samsung,power-domain = <&pd_gsc>;
 -              clocks = <&clock 257>;
 +              clocks = <&clock CLK_GSCL1>;
                clock-names = "gscl";
        };
  
                reg = <0x13e20000 0x1000>;
                interrupts = <0 87 0>;
                samsung,power-domain = <&pd_gsc>;
 -              clocks = <&clock 258>;
 +              clocks = <&clock CLK_GSCL2>;
                clock-names = "gscl";
        };
  
                reg = <0x13e30000 0x1000>;
                interrupts = <0 88 0>;
                samsung,power-domain = <&pd_gsc>;
 -              clocks = <&clock 259>;
 +              clocks = <&clock CLK_GSCL3>;
                clock-names = "gscl";
        };
  
                compatible = "samsung,exynos4212-hdmi";
                reg = <0x14530000 0x70000>;
                interrupts = <0 95 0>;
 -              clocks = <&clock 344>, <&clock 136>, <&clock 137>,
 -                              <&clock 159>, <&clock 1024>;
 +              clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>,
 +                       <&clock CLK_SCLK_PIXEL>, <&clock CLK_SCLK_HDMIPHY>,
 +                       <&clock CLK_MOUT_HDMI>;
                clock-names = "hdmi", "sclk_hdmi", "sclk_pixel",
                                "sclk_hdmiphy", "mout_hdmi";
        };
                compatible = "samsung,exynos5250-mixer";
                reg = <0x14450000 0x10000>;
                interrupts = <0 94 0>;
 -              clocks = <&clock 343>, <&clock 136>;
 +              clocks = <&clock CLK_MIXER>, <&clock CLK_SCLK_HDMI>;
                clock-names = "mixer", "sclk_hdmi";
        };
  
        };
  
        dp-controller@145B0000 {
 -              clocks = <&clock 342>;
 +              clocks = <&clock CLK_DP>;
                clock-names = "dp";
                phys = <&dp_phy>;
                phy-names = "dp";
        };
  
        fimd@14400000 {
 -              clocks = <&clock 133>, <&clock 339>;
 +              clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>;
                clock-names = "sclk_fimd", "fimd";
        };
  
                compatible = "samsung,exynos-adc-v1";
                reg = <0x12D10000 0x100>, <0x10040718 0x4>;
                interrupts = <0 106 0>;
 -              clocks = <&clock 303>;
 +              clocks = <&clock CLK_ADC>;
                clock-names = "adc";
                #io-channel-cells = <1>;
                io-channel-ranges;
                status = "disabled";
        };
 +
 +      sss@10830000 {
 +              compatible = "samsung,exynos4210-secss";
 +              reg = <0x10830000 0x10000>;
 +              interrupts = <0 112 0>;
 +              clocks = <&clock 348>;
 +              clock-names = "secss";
 +      };
  };
index df975b5df88165d9125e2c0a708704e6fd2ace7a,25fc5194bd98a847a6e82d5a0c09d99038369528..80a3bf4c59865e0403a4197abb5ae6f0bc00d363
  
  /dts-v1/;
  #include "exynos5420.dtsi"
 +#include <dt-bindings/interrupt-controller/irq.h>
 +#include <dt-bindings/input/input.h>
  
  / {
        model = "Insignal Arndale Octa evaluation board based on EXYNOS5420";
-       compatible = "insignal,arndale-octa", "samsung,exynos5420";
+       compatible = "insignal,arndale-octa", "samsung,exynos5420", "samsung,exynos5";
  
        memory {
                reg = <0x20000000 0x80000000>;
                };
        };
  
 +      rtc@101E0000 {
 +              status = "okay";
 +      };
 +
        mmc@12200000 {
                status = "okay";
                broken-cd;
@@@ -47,7 -41,6 +47,7 @@@
                samsung,dw-mshc-ddr-timing = <0 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
 +              vmmc-supply = <&ldo10_reg>;
  
                slot@0 {
                        reg = <0>;
                samsung,dw-mshc-ddr-timing = <1 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
 +              vmmc-supply = <&ldo10_reg>;
  
                slot@0 {
                        reg = <0>;
                        bus-width = <4>;
                };
        };
 +
 +      hsi2c_4: i2c@12CA0000 {
 +              status = "okay";
 +
 +              s2mps11_pmic@66 {
 +                      compatible = "samsung,s2mps11-pmic";
 +                      reg = <0x66>;
 +                      s2mps11,buck2-ramp-delay = <12>;
 +                      s2mps11,buck34-ramp-delay = <12>;
 +                      s2mps11,buck16-ramp-delay = <12>;
 +                      s2mps11,buck6-ramp-enable = <1>;
 +                      s2mps11,buck2-ramp-enable = <1>;
 +                      s2mps11,buck3-ramp-enable = <1>;
 +                      s2mps11,buck4-ramp-enable = <1>;
 +
 +                      interrupt-parent = <&gpx3>;
 +                      interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
 +
 +                      s2mps11_osc: clocks {
 +                              #clock-cells = <1>;
 +                              clock-output-names = "s2mps11_ap",
 +                                              "s2mps11_cp", "s2mps11_bt";
 +                      };
 +
 +                      regulators {
 +                              ldo1_reg: LDO1 {
 +                                      regulator-name = "PVDD_ALIVE_1V0";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo2_reg: LDO2 {
 +                                      regulator-name = "PVDD_APIO_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo3_reg: LDO3 {
 +                                      regulator-name = "PVDD_APIO_MMCON_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo4_reg: LDO4 {
 +                                      regulator-name = "PVDD_ADC_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo5_reg: LDO5 {
 +                                      regulator-name = "PVDD_PLL_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo6_reg: LDO6 {
 +                                      regulator-name = "PVDD_ANAIP_1V0";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                              };
 +
 +                              ldo7_reg: LDO7 {
 +                                      regulator-name = "PVDD_ANAIP_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo8_reg: LDO8 {
 +                                      regulator-name = "PVDD_ABB_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo9_reg: LDO9 {
 +                                      regulator-name = "PVDD_USB_3V3";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo10_reg: LDO10 {
 +                                      regulator-name = "PVDD_PRE_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo11_reg: LDO11 {
 +                                      regulator-name = "PVDD_USB_1V0";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo12_reg: LDO12 {
 +                                      regulator-name = "PVDD_HSIC_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo13_reg: LDO13 {
 +                                      regulator-name = "PVDD_APIO_MMCOFF_2V8";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +
 +                              ldo15_reg: LDO15 {
 +                                      regulator-name = "PVDD_PERI_2V8";
 +                                      regulator-min-microvolt = <3300000>;
 +                                      regulator-max-microvolt = <3300000>;
 +                              };
 +
 +                              ldo16_reg: LDO16 {
 +                                      regulator-name = "PVDD_PERI_3V3";
 +                                      regulator-min-microvolt = <2200000>;
 +                                      regulator-max-microvolt = <2200000>;
 +                              };
 +
 +                              ldo18_reg: LDO18 {
 +                                      regulator-name = "PVDD_EMMC_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo19_reg: LDO19 {
 +                                      regulator-name = "PVDD_TFLASH_2V8";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +
 +                              ldo20_reg: LDO20 {
 +                                      regulator-name = "PVDD_BTWIFI_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo21_reg: LDO21 {
 +                                      regulator-name = "PVDD_CAM1IO_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo23_reg: LDO23 {
 +                                      regulator-name = "PVDD_MIFS_1V1";
 +                                      regulator-min-microvolt = <1200000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo24_reg: LDO24 {
 +                                      regulator-name = "PVDD_CAM1_AVDD_2V8";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +
 +                              ldo26_reg: LDO26 {
 +                                      regulator-name = "PVDD_CAM0_AF_2V8";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3000000>;
 +                              };
 +
 +                              ldo27_reg: LDO27 {
 +                                      regulator-name = "PVDD_G3DS_1V0";
 +                                      regulator-min-microvolt = <1200000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                              };
 +
 +                              ldo28_reg: LDO28 {
 +                                      regulator-name = "PVDD_TSP_3V3";
 +                                      regulator-min-microvolt = <3300000>;
 +                                      regulator-max-microvolt = <3300000>;
 +                              };
 +
 +                              ldo29_reg: LDO29 {
 +                                      regulator-name = "PVDD_AUDIO_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo31_reg: LDO31 {
 +                                      regulator-name = "PVDD_PERI_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo32_reg: LDO32 {
 +                                      regulator-name = "PVDD_LCD_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo33_reg: LDO33 {
 +                                      regulator-name = "PVDD_CAM0IO_1V8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                              };
 +
 +                              ldo35_reg: LDO35 {
 +                                      regulator-name = "PVDD_CAM0_DVDD_1V2";
 +                                      regulator-min-microvolt = <1200000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                              };
 +
 +                              ldo38_reg: LDO38 {
 +                                      regulator-name = "PVDD_CAM0_AVDD_2V8";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +
 +                              buck1_reg: BUCK1 {
 +                                      regulator-name = "PVDD_MIF_1V1";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1100000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck2_reg: BUCK2 {
 +                                      regulator-name = "vdd_arm";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck3_reg: BUCK3 {
 +                                      regulator-name = "PVDD_INT_1V0";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck4_reg: BUCK4 {
 +                                      regulator-name = "PVDD_G3D_1V0";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                              };
 +
 +                              buck5_reg: BUCK5 {
 +                                      regulator-name = "PVDD_LPDDR3_1V2";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1200000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck6_reg: BUCK6 {
 +                                      regulator-name = "PVDD_KFC_1V0";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck7_reg: BUCK7 {
 +                                      regulator-name = "VIN_LLDO_1V4";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1400000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck8_reg: BUCK8 {
 +                                      regulator-name = "VIN_MLDO_2V0";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <2000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck9_reg: BUCK9 {
 +                                      regulator-name = "VIN_HLDO_3V5";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3500000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck10_reg: BUCK10 {
 +                                      regulator-name = "PVDD_EMMCF_2V8";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                              };
 +                      };
 +              };
 +      };
 +
 +      gpio_keys {
 +              compatible = "gpio-keys";
 +
 +              wakeup {
 +                      label = "SW-TACT1";
 +                      gpios = <&gpx2 7 1>;
 +                      linux,code = <KEY_WAKEUP>;
 +                      gpio-key,wakeup;
 +              };
 +      };
 +
 +      amba {
 +              mdma1: mdma@11C10000 {
 +                      /*
 +                       * MDMA1 can support both secure and non-secure
 +                       * AXI transactions. When this is enabled in the kernel
 +                       * for boards that run in secure mode, we are getting
 +                       * imprecise external aborts causing the kernel to oops.
 +                       */
 +                      status = "disabled";
 +              };
 +      };
  };
index ae1ee0470fca7200adc7dc586d90ab06b64d8edd,aa215bd7a0cd99637ab941e0360dd713c44dda04..69104850eb5ec172b6dcc5bd5256b0f759202abf
@@@ -14,7 -14,7 +14,7 @@@
  
  / {
        model = "Samsung SMDK5420 board based on EXYNOS5420";
-       compatible = "samsung,smdk5420", "samsung,exynos5420";
+       compatible = "samsung,smdk5420", "samsung,exynos5420", "samsung,exynos5";
  
        memory {
                reg = <0x20000000 0x80000000>;
                };
        };
  
 +      regulators {
 +              compatible = "simple-bus";
 +              #address-cells = <1>;
 +              #size-cells = <0>;
 +
 +              vdd: fixed-regulator@0 {
 +                      compatible = "regulator-fixed";
 +                      reg = <0>;
 +                      regulator-name = "vdd-supply";
 +                      regulator-min-microvolt = <1800000>;
 +                      regulator-max-microvolt = <1800000>;
 +                      regulator-always-on;
 +              };
 +
 +              dbvdd: fixed-regulator@1 {
 +                      compatible = "regulator-fixed";
 +                      reg = <1>;
 +                      regulator-name = "dbvdd-supply";
 +                      regulator-min-microvolt = <3300000>;
 +                      regulator-max-microvolt = <3300000>;
 +                      regulator-always-on;
 +              };
 +
 +              spkvdd: fixed-regulator@2 {
 +                      compatible = "regulator-fixed";
 +                      reg = <2>;
 +                      regulator-name = "spkvdd-supply";
 +                      regulator-min-microvolt = <5000000>;
 +                      regulator-max-microvolt = <5000000>;
 +                      regulator-always-on;
 +              };
 +      };
 +
 +      rtc@101E0000 {
 +              status = "okay";
 +      };
 +
        mmc@12200000 {
                status = "okay";
                broken-cd;
                        reg = <0x50>;
                };
        };
 +
 +      hsi2c_4: i2c@12CA0000 {
 +              status = "okay";
 +
 +              s2mps11_pmic@66 {
 +                      compatible = "samsung,s2mps11-pmic";
 +                      reg = <0x66>;
 +                      s2mps11,buck2-ramp-delay = <12>;
 +                      s2mps11,buck34-ramp-delay = <12>;
 +                      s2mps11,buck16-ramp-delay = <12>;
 +                      s2mps11,buck6-ramp-enable = <1>;
 +                      s2mps11,buck2-ramp-enable = <1>;
 +                      s2mps11,buck3-ramp-enable = <1>;
 +                      s2mps11,buck4-ramp-enable = <1>;
 +
 +                      s2mps11_osc: clocks {
 +                              #clock-cells = <1>;
 +                              clock-output-names = "s2mps11_ap",
 +                                              "s2mps11_cp", "s2mps11_bt";
 +                      };
 +
 +                      regulators {
 +                              ldo1_reg: LDO1 {
 +                                      regulator-name = "vdd_ldo1";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo3_reg: LDO3 {
 +                                      regulator-name = "vdd_ldo3";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo5_reg: LDO5 {
 +                                      regulator-name = "vdd_ldo5";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo6_reg: LDO6 {
 +                                      regulator-name = "vdd_ldo6";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo7_reg: LDO7 {
 +                                      regulator-name = "vdd_ldo7";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo8_reg: LDO8 {
 +                                      regulator-name = "vdd_ldo8";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo9_reg: LDO9 {
 +                                      regulator-name = "vdd_ldo9";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo10_reg: LDO10 {
 +                                      regulator-name = "vdd_ldo10";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo11_reg: LDO11 {
 +                                      regulator-name = "vdd_ldo11";
 +                                      regulator-min-microvolt = <1000000>;
 +                                      regulator-max-microvolt = <1000000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo12_reg: LDO12 {
 +                                      regulator-name = "vdd_ldo12";
 +                                      regulator-min-microvolt = <1800000>;
 +                                      regulator-max-microvolt = <1800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo13_reg: LDO13 {
 +                                      regulator-name = "vdd_ldo13";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo15_reg: LDO15 {
 +                                      regulator-name = "vdd_ldo15";
 +                                      regulator-min-microvolt = <3100000>;
 +                                      regulator-max-microvolt = <3100000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo16_reg: LDO16 {
 +                                      regulator-name = "vdd_ldo16";
 +                                      regulator-min-microvolt = <2200000>;
 +                                      regulator-max-microvolt = <2200000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo17_reg: LDO17 {
 +                                      regulator-name = "tsp_avdd";
 +                                      regulator-min-microvolt = <3300000>;
 +                                      regulator-max-microvolt = <3300000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo19_reg: LDO19 {
 +                                      regulator-name = "vdd_sd";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              ldo24_reg: LDO24 {
 +                                      regulator-name = "tsp_io";
 +                                      regulator-min-microvolt = <2800000>;
 +                                      regulator-max-microvolt = <2800000>;
 +                                      regulator-always-on;
 +                              };
 +
 +                              buck1_reg: BUCK1 {
 +                                      regulator-name = "vdd_mif";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1300000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck2_reg: BUCK2 {
 +                                      regulator-name = "vdd_arm";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1500000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck3_reg: BUCK3 {
 +                                      regulator-name = "vdd_int";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1400000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck4_reg: BUCK4 {
 +                                      regulator-name = "vdd_g3d";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1400000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck5_reg: BUCK5 {
 +                                      regulator-name = "vdd_mem";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1400000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck6_reg: BUCK6 {
 +                                      regulator-name = "vdd_kfc";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1500000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck7_reg: BUCK7 {
 +                                      regulator-name = "vdd_1.0v_ldo";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1500000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck8_reg: BUCK8 {
 +                                      regulator-name = "vdd_1.8v_ldo";
 +                                      regulator-min-microvolt = <800000>;
 +                                      regulator-max-microvolt = <1500000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck9_reg: BUCK9 {
 +                                      regulator-name = "vdd_2.8v_ldo";
 +                                      regulator-min-microvolt = <3000000>;
 +                                      regulator-max-microvolt = <3750000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +
 +                              buck10_reg: BUCK10 {
 +                                      regulator-name = "vdd_vmem";
 +                                      regulator-min-microvolt = <2850000>;
 +                                      regulator-max-microvolt = <2850000>;
 +                                      regulator-always-on;
 +                                      regulator-boot-on;
 +                              };
 +                      };
 +              };
 +      };
  };
index 82071154eb848e28c813e1ab9bcf12cbbddca1e1,51d1475ca88de34870bf2dbcdc2eef2f9b6582a2..c3a9a66c57678f9a5dddd75e11e55be913e3c3c0
   * published by the Free Software Foundation.
   */
  
 +#include <dt-bindings/clock/exynos5420.h>
  #include "exynos5.dtsi"
  #include "exynos5420-pinctrl.dtsi"
  
- #include <dt-bindings/clk/exynos-audss-clk.h>
+ #include <dt-bindings/clock/exynos-audss-clk.h>
  
  / {
-       compatible = "samsung,exynos5420";
+       compatible = "samsung,exynos5420", "samsung,exynos5";
  
        aliases {
                mshc0 = &mmc_0;
                compatible = "samsung,exynos5420-audss-clock";
                reg = <0x03810000 0x0C>;
                #clock-cells = <1>;
 -              clocks = <&clock 1>, <&clock 5>, <&clock 148>, <&clock 149>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_FOUT_EPLL>,
 +                       <&clock CLK_SCLK_MAUDIO0>, <&clock CLK_SCLK_MAUPCM0>;
                clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in";
        };
  
                compatible = "samsung,mfc-v7";
                reg = <0x11000000 0x10000>;
                interrupts = <0 96 0>;
 -              clocks = <&clock 401>;
 +              clocks = <&clock CLK_MFC>;
                clock-names = "mfc";
        };
  
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12200000 0x2000>;
 -              clocks = <&clock 351>, <&clock 132>;
 +              clocks = <&clock CLK_MMC0>, <&clock CLK_SCLK_MMC0>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x40>;
                status = "disabled";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12210000 0x2000>;
 -              clocks = <&clock 352>, <&clock 133>;
 +              clocks = <&clock CLK_MMC1>, <&clock CLK_SCLK_MMC1>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x40>;
                status = "disabled";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x12220000 0x1000>;
 -              clocks = <&clock 353>, <&clock 134>;
 +              clocks = <&clock CLK_MMC2>, <&clock CLK_SCLK_MMC2>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x40>;
                status = "disabled";
                interrupt-parent = <&mct_map>;
                interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
                                <8>, <9>, <10>, <11>;
 -              clocks = <&clock 1>, <&clock 315>;
 +              clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                clock-names = "fin_pll", "mct";
  
                mct_map: mct-map {
        };
  
        rtc@101E0000 {
 -              clocks = <&clock 317>;
 +              clocks = <&clock CLK_RTC>;
                clock-names = "rtc";
 -              status = "okay";
 +              status = "disabled";
        };
  
        amba {
                interrupt-parent = <&gic>;
                ranges;
  
 +              adma: adma@03880000 {
 +                      compatible = "arm,pl330", "arm,primecell";
 +                      reg = <0x03880000 0x1000>;
 +                      interrupts = <0 110 0>;
 +                      clocks = <&clock_audss EXYNOS_ADMA>;
 +                      clock-names = "apb_pclk";
 +                      #dma-cells = <1>;
 +                      #dma-channels = <6>;
 +                      #dma-requests = <16>;
 +              };
 +
                pdma0: pdma@121A0000 {
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x121A0000 0x1000>;
                        interrupts = <0 34 0>;
 -                      clocks = <&clock 362>;
 +                      clocks = <&clock CLK_PDMA0>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x121B0000 0x1000>;
                        interrupts = <0 35 0>;
 -                      clocks = <&clock 363>;
 +                      clocks = <&clock CLK_PDMA1>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x10800000 0x1000>;
                        interrupts = <0 33 0>;
 -                      clocks = <&clock 473>;
 +                      clocks = <&clock CLK_MDMA0>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                        compatible = "arm,pl330", "arm,primecell";
                        reg = <0x11C10000 0x1000>;
                        interrupts = <0 124 0>;
 -                      clocks = <&clock 442>;
 +                      clocks = <&clock CLK_MDMA1>;
                        clock-names = "apb_pclk";
                        #dma-cells = <1>;
                        #dma-channels = <8>;
                };
        };
  
 +      i2s0: i2s@03830000 {
 +              compatible = "samsung,exynos5420-i2s";
 +              reg = <0x03830000 0x100>;
 +              dmas = <&adma 0
 +                      &adma 2
 +                      &adma 1>;
 +              dma-names = "tx", "rx", "tx-sec";
 +              clocks = <&clock_audss EXYNOS_I2S_BUS>,
 +                      <&clock_audss EXYNOS_I2S_BUS>,
 +                      <&clock_audss EXYNOS_SCLK_I2S>;
 +              clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
 +              samsung,idma-addr = <0x03000000>;
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&i2s0_bus>;
 +              status = "disabled";
 +      };
 +
 +      i2s1: i2s@12D60000 {
 +              compatible = "samsung,exynos5420-i2s";
 +              reg = <0x12D60000 0x100>;
 +              dmas = <&pdma1 12
 +                      &pdma1 11>;
 +              dma-names = "tx", "rx";
 +              clocks = <&clock CLK_I2S1>, <&clock CLK_SCLK_I2S1>;
 +              clock-names = "iis", "i2s_opclk0";
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&i2s1_bus>;
 +              status = "disabled";
 +      };
 +
 +      i2s2: i2s@12D70000 {
 +              compatible = "samsung,exynos5420-i2s";
 +              reg = <0x12D70000 0x100>;
 +              dmas = <&pdma0 12
 +                      &pdma0 11>;
 +              dma-names = "tx", "rx";
 +              clocks = <&clock CLK_I2S2>, <&clock CLK_SCLK_I2S2>;
 +              clock-names = "iis", "i2s_opclk0";
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&i2s2_bus>;
 +              status = "disabled";
 +      };
 +
        spi_0: spi@12d20000 {
                compatible = "samsung,exynos4210-spi";
                reg = <0x12d20000 0x100>;
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&spi0_bus>;
 -              clocks = <&clock 271>, <&clock 135>;
 +              clocks = <&clock CLK_SPI0>, <&clock CLK_SCLK_SPI0>;
                clock-names = "spi", "spi_busclk0";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&spi1_bus>;
 -              clocks = <&clock 272>, <&clock 136>;
 +              clocks = <&clock CLK_SPI1>, <&clock CLK_SCLK_SPI1>;
                clock-names = "spi", "spi_busclk0";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&spi2_bus>;
 -              clocks = <&clock 273>, <&clock 137>;
 +              clocks = <&clock CLK_SPI2>, <&clock CLK_SCLK_SPI2>;
                clock-names = "spi", "spi_busclk0";
                status = "disabled";
        };
  
        serial@12C00000 {
 -              clocks = <&clock 257>, <&clock 128>;
 +              clocks = <&clock CLK_UART0>, <&clock CLK_SCLK_UART0>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C10000 {
 -              clocks = <&clock 258>, <&clock 129>;
 +              clocks = <&clock CLK_UART1>, <&clock CLK_SCLK_UART1>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C20000 {
 -              clocks = <&clock 259>, <&clock 130>;
 +              clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
        serial@12C30000 {
 -              clocks = <&clock 260>, <&clock 131>;
 +              clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
                reg = <0x12dd0000 0x100>;
                samsung,pwm-outputs = <0>, <1>, <2>, <3>;
                #pwm-cells = <3>;
 -              clocks = <&clock 279>;
 +              clocks = <&clock CLK_PWM>;
                clock-names = "timers";
        };
  
        };
  
        dp-controller@145B0000 {
 -              clocks = <&clock 412>;
 +              clocks = <&clock CLK_DP1>;
                clock-names = "dp";
                phys = <&dp_phy>;
                phy-names = "dp";
  
        fimd@14400000 {
                samsung,power-domain = <&disp_pd>;
 -              clocks = <&clock 147>, <&clock 421>;
 +              clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>;
                clock-names = "sclk_fimd", "fimd";
        };
  
                compatible = "samsung,exynos-adc-v2";
                reg = <0x12D10000 0x100>, <0x10040720 0x4>;
                interrupts = <0 106 0>;
 -              clocks = <&clock 270>;
 +              clocks = <&clock CLK_TSADC>;
                clock-names = "adc";
                #io-channel-cells = <1>;
                io-channel-ranges;
                interrupts = <0 56 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 261>;
 +              clocks = <&clock CLK_I2C0>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c0_bus>;
                interrupts = <0 57 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 262>;
 +              clocks = <&clock CLK_I2C1>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c1_bus>;
                interrupts = <0 58 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 263>;
 +              clocks = <&clock CLK_I2C2>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c2_bus>;
                interrupts = <0 59 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 264>;
 +              clocks = <&clock CLK_I2C3>;
                clock-names = "i2c";
                pinctrl-names = "default";
                pinctrl-0 = <&i2c3_bus>;
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c4_hs_bus>;
 -              clocks = <&clock 265>;
 +              clocks = <&clock CLK_I2C4>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c5_hs_bus>;
 -              clocks = <&clock 266>;
 +              clocks = <&clock CLK_I2C5>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c6_hs_bus>;
 -              clocks = <&clock 267>;
 +              clocks = <&clock CLK_I2C6>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c7_hs_bus>;
 -              clocks = <&clock 268>;
 +              clocks = <&clock CLK_I2C7>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c8_hs_bus>;
 -              clocks = <&clock 281>;
 +              clocks = <&clock CLK_I2C8>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c9_hs_bus>;
 -              clocks = <&clock 282>;
 +              clocks = <&clock CLK_I2C9>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                #size-cells = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2c10_hs_bus>;
 -              clocks = <&clock 283>;
 +              clocks = <&clock CLK_I2C10>;
                clock-names = "hsi2c";
                status = "disabled";
        };
                compatible = "samsung,exynos4212-hdmi";
                reg = <0x14530000 0x70000>;
                interrupts = <0 95 0>;
 -              clocks = <&clock 413>, <&clock 143>, <&clock 768>,
 -                      <&clock 158>, <&clock 640>;
 +              clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>,
 +                       <&clock CLK_DOUT_PIXEL>, <&clock CLK_SCLK_HDMIPHY>,
 +                       <&clock CLK_MOUT_HDMI>;
                clock-names = "hdmi", "sclk_hdmi", "sclk_pixel",
                        "sclk_hdmiphy", "mout_hdmi";
                status = "disabled";
                compatible = "samsung,exynos5420-mixer";
                reg = <0x14450000 0x10000>;
                interrupts = <0 94 0>;
 -              clocks = <&clock 431>, <&clock 143>;
 +              clocks = <&clock CLK_MIXER>, <&clock CLK_SCLK_HDMI>;
                clock-names = "mixer", "sclk_hdmi";
        };
  
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e00000 0x1000>;
                interrupts = <0 85 0>;
 -              clocks = <&clock 465>;
 +              clocks = <&clock CLK_GSCL0>;
                clock-names = "gscl";
                samsung,power-domain = <&gsc_pd>;
        };
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e10000 0x1000>;
                interrupts = <0 86 0>;
 -              clocks = <&clock 466>;
 +              clocks = <&clock CLK_GSCL1>;
                clock-names = "gscl";
                samsung,power-domain = <&gsc_pd>;
        };
  
 +      pmu_system_controller: system-controller@10040000 {
 +              compatible = "samsung,exynos5420-pmu", "syscon";
 +              reg = <0x10040000 0x5000>;
 +      };
 +
        tmu_cpu0: tmu@10060000 {
                compatible = "samsung,exynos5420-tmu";
                reg = <0x10060000 0x100>;
                interrupts = <0 65 0>;
 -              clocks = <&clock 318>;
 +              clocks = <&clock CLK_TMU>;
                clock-names = "tmu_apbif";
        };
  
                compatible = "samsung,exynos5420-tmu";
                reg = <0x10064000 0x100>;
                interrupts = <0 183 0>;
 -              clocks = <&clock 318>;
 +              clocks = <&clock CLK_TMU>;
                clock-names = "tmu_apbif";
        };
  
                compatible = "samsung,exynos5420-tmu-ext-triminfo";
                reg = <0x10068000 0x100>, <0x1006c000 0x4>;
                interrupts = <0 184 0>;
 -              clocks = <&clock 318>, <&clock 318>;
 +              clocks = <&clock CLK_TMU>, <&clock CLK_TMU>;
                clock-names = "tmu_apbif", "tmu_triminfo_apbif";
        };
  
                compatible = "samsung,exynos5420-tmu-ext-triminfo";
                reg = <0x1006c000 0x100>, <0x100a0000 0x4>;
                interrupts = <0 185 0>;
 -              clocks = <&clock 318>, <&clock 319>;
 +              clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>;
                clock-names = "tmu_apbif", "tmu_triminfo_apbif";
        };
  
                compatible = "samsung,exynos5420-tmu-ext-triminfo";
                reg = <0x100a0000 0x100>, <0x10068000 0x4>;
                interrupts = <0 215 0>;
 -              clocks = <&clock 319>, <&clock 318>;
 +              clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>;
                clock-names = "tmu_apbif", "tmu_triminfo_apbif";
        };
 +
 +        watchdog@101D0000 {
 +              compatible = "samsung,exynos5420-wdt";
 +              reg = <0x101D0000 0x100>;
 +              interrupts = <0 42 0>;
 +              clocks = <&clock CLK_WDT>;
 +              clock-names = "watchdog";
 +              samsung,syscon-phandle = <&pmu_system_controller>;
 +        };
 +
 +      sss@10830000 {
 +              compatible = "samsung,exynos4210-secss";
 +              reg = <0x10830000 0x10000>;
 +              interrupts = <0 112 0>;
 +              clocks = <&clock 471>;
 +              clock-names = "secss";
 +              samsung,power-domain = <&g2d_pd>;
 +      };
  };
index 75c7b89cec2fa22a5d223dc75afa1df83529070d,d5fa1bce37dc523f0bc791b12f6607993a09454e..84f77c2fe4d4cfe55d254ccc3c8bf7c48f73041e
@@@ -9,11 -9,10 +9,11 @@@
   * published by the Free Software Foundation.
  */
  
 +#include <dt-bindings/clock/exynos5440.h>
  #include "skeleton.dtsi"
  
  / {
-       compatible = "samsung,exynos5440";
+       compatible = "samsung,exynos5440", "samsung,exynos5";
  
        interrupt-parent = <&gic>;
  
                compatible = "samsung,exynos4210-uart";
                reg = <0xB0000 0x1000>;
                interrupts = <0 2 0>;
 -              clocks = <&clock 21>, <&clock 21>;
 +              clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
                compatible = "samsung,exynos4210-uart";
                reg = <0xC0000 0x1000>;
                interrupts = <0 3 0>;
 -              clocks = <&clock 21>, <&clock 21>;
 +              clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
                clock-names = "uart", "clk_uart_baud0";
        };
  
                #size-cells = <0>;
                samsung,spi-src-clk = <0>;
                num-cs = <1>;
 -              clocks = <&clock 21>, <&clock 16>;
 +              clocks = <&clock CLK_B_125>, <&clock CLK_SPI_BAUD>;
                clock-names = "spi", "spi_busclk0";
        };
  
                interrupts = <0 5 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "i2c";
        };
  
                interrupts = <0 6 0>;
                #address-cells = <1>;
                #size-cells = <0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "i2c";
        };
  
                compatible = "samsung,s3c2410-wdt";
                reg = <0x110000 0x1000>;
                interrupts = <0 1 0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "watchdog";
        };
  
                interrupts = <0 31 4>;
                interrupt-names = "macirq";
                phy-mode = "sgmii";
 -              clocks = <&clock 25>;
 +              clocks = <&clock CLK_GMAC0>;
                clock-names = "stmmaceth";
        };
  
                compatible = "samsung,s3c6410-rtc";
                reg = <0x130000 0x1000>;
                interrupts = <0 17 0>, <0 16 0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "rtc";
        };
  
                compatible = "samsung,exynos5440-tmu";
                reg = <0x160118 0x230>, <0x160368 0x10>;
                interrupts = <0 58 0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "tmu_apbif";
        };
  
                compatible = "samsung,exynos5440-tmu";
                reg = <0x16011C 0x230>, <0x160368 0x10>;
                interrupts = <0 58 0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "tmu_apbif";
        };
  
                compatible = "samsung,exynos5440-tmu";
                reg = <0x160120 0x230>, <0x160368 0x10>;
                interrupts = <0 58 0>;
 -              clocks = <&clock 21>;
 +              clocks = <&clock CLK_B_125>;
                clock-names = "tmu_apbif";
        };
  
                compatible = "snps,exynos5440-ahci";
                reg = <0x210000 0x10000>;
                interrupts = <0 30 0>;
 -              clocks = <&clock 23>;
 +              clocks = <&clock CLK_SATA>;
                clock-names = "sata";
        };
  
                compatible = "samsung,exynos5440-ohci";
                reg = <0x220000 0x1000>;
                interrupts = <0 29 0>;
 -              clocks = <&clock 24>;
 +              clocks = <&clock CLK_USB>;
                clock-names = "usbhost";
        };
  
                compatible = "samsung,exynos5440-ehci";
                reg = <0x221000 0x1000>;
                interrupts = <0 29 0>;
 -              clocks = <&clock 24>;
 +              clocks = <&clock CLK_USB>;
                clock-names = "usbhost";
        };
  
                        0x270000 0x1000
                        0x271000 0x40>;
                interrupts = <0 20 0>, <0 21 0>, <0 22 0>;
 -              clocks = <&clock 28>, <&clock 27>;
 +              clocks = <&clock CLK_PR0_250_O>, <&clock CLK_PB0_250_O>;
                clock-names = "pcie", "pcie_bus";
                #address-cells = <3>;
                #size-cells = <2>;
                        0x272000 0x1000
                        0x271040 0x40>;
                interrupts = <0 23 0>, <0 24 0>, <0 25 0>;
 -              clocks = <&clock 29>, <&clock 27>;
 +              clocks = <&clock CLK_PR1_250_O>, <&clock CLK_PB0_250_O>;
                clock-names = "pcie", "pcie_bus";
                #address-cells = <3>;
                #size-cells = <2>;
index 58fe9e6f542f1a7f43c54e7e619d580a1adbbb85,71df742fee25095ada9a108ae7e540e0fb49aa62..a656dbe3b78c877e94ac88e34fab3eb1814ef3e3
@@@ -12,9 -12,9 +12,9 @@@ obj-                          :
  
  # Core
  
- obj-$(CONFIG_ARCH_EXYNOS)     += common.o
+ obj-$(CONFIG_ARCH_EXYNOS)     += exynos.o
  
 -obj-$(CONFIG_S5P_PM)          += pm.o
 +obj-$(CONFIG_PM_SLEEP)                += pm.o sleep.o
  obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
  obj-$(CONFIG_CPU_IDLE)                += cpuidle.o
  
@@@ -29,8 -29,3 +29,3 @@@ obj-$(CONFIG_ARCH_EXYNOS)     += firmware.
  
  plus_sec := $(call as-instr,.arch_extension sec,+sec)
  AFLAGS_exynos-smc.o           :=-Wa,-march=armv7-a$(plus_sec)
- # machine support
- obj-$(CONFIG_ARCH_EXYNOS4)    += mach-exynos4-dt.o
- obj-$(CONFIG_ARCH_EXYNOS5)    += mach-exynos5-dt.o
index aba6a2ad7d1bdb7f228cd53fe3bf11229e8d537e,a0c76695379829a5290b7c3697f3108470b48195..9ef3f83efaffa642c9bbe26d68aa71750072c28e
@@@ -19,28 -19,13 +19,27 @@@ void mct_init(void __iomem *base, int i
  
  struct map_desc;
  void exynos_init_io(void);
- void exynos4_restart(enum reboot_mode mode, const char *cmd);
- void exynos5_restart(enum reboot_mode mode, const char *cmd);
+ void exynos_restart(enum reboot_mode mode, const char *cmd);
  void exynos_cpuidle_init(void);
  void exynos_cpufreq_init(void);
  void exynos_init_late(void);
  
  void exynos_firmware_init(void);
  
 +#ifdef CONFIG_PINCTRL_EXYNOS
 +extern u32 exynos_get_eint_wake_mask(void);
 +#else
 +static inline u32 exynos_get_eint_wake_mask(void) { return 0xffffffff; }
 +#endif
 +
 +#ifdef CONFIG_PM_SLEEP
 +extern void __init exynos_pm_init(void);
 +#else
 +static inline void exynos_pm_init(void) {}
 +#endif
 +
 +extern void exynos_cpu_resume(void);
 +
  extern struct smp_operations exynos_smp_ops;
  
  extern void exynos_cpu_die(unsigned int cpu);
index 0000000000000000000000000000000000000000,fd3664f7244aa200ff3a731119e09e3f7be85ea3..4987ec7711c3a1c44473b31d69fb940790c5456c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,408 +1,409 @@@
 -#include <plat/regs-serial.h>
+ /*
+  * SAMSUNG EXYNOS Flattened Device Tree enabled machine
+  *
+  * Copyright (c) 2010-2014 Samsung Electronics Co., Ltd.
+  *            http://www.samsung.com
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+  */
+ #include <linux/init.h>
+ #include <linux/io.h>
+ #include <linux/kernel.h>
++#include <linux/serial_s3c.h>
+ #include <linux/of.h>
+ #include <linux/of_address.h>
+ #include <linux/of_fdt.h>
+ #include <linux/of_platform.h>
+ #include <linux/platform_device.h>
+ #include <linux/pm_domain.h>
+ #include <asm/cacheflush.h>
+ #include <asm/hardware/cache-l2x0.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+ #include <asm/memory.h>
+ #include <plat/cpu.h>
+ #include "common.h"
+ #include "mfc.h"
+ #include "regs-pmu.h"
+ #define L2_AUX_VAL 0x7C470001
+ #define L2_AUX_MASK 0xC200ffff
+ static struct map_desc exynos4_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S3C_VA_SYS,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSCON),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S3C_VA_TIMER,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_TIMER),
+               .length         = SZ_16K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S3C_VA_WATCHDOG,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_WATCHDOG),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_SROMC,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_SROMC),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_SYSTIMER,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSTIMER),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_PMU,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_PMU),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_COMBINER_BASE,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_COMBINER),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_GIC_CPU,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_GIC_CPU),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_GIC_DIST,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_GIC_DIST),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_CMU,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_CMU),
+               .length         = SZ_128K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_COREPERI_BASE,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_COREPERI),
+               .length         = SZ_8K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_L2CC,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_L2CC),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_DMC0,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_DMC0),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_DMC1,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_DMC1),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S3C_VA_USB_HSPHY,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_HSPHY),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos4_iodesc0[] __initdata = {
+       {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSRAM0),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos4_iodesc1[] __initdata = {
+       {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM,
+               .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSRAM1),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos4210_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM_NS,
+               .pfn            = __phys_to_pfn(EXYNOS4210_PA_SYSRAM_NS),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos4x12_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM_NS,
+               .pfn            = __phys_to_pfn(EXYNOS4x12_PA_SYSRAM_NS),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos5250_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM_NS,
+               .pfn            = __phys_to_pfn(EXYNOS5250_PA_SYSRAM_NS),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+ };
+ static struct map_desc exynos5_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S3C_VA_SYS,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_SYSCON),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S3C_VA_TIMER,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_TIMER),
+               .length         = SZ_16K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S3C_VA_WATCHDOG,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_WATCHDOG),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_SROMC,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_SROMC),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_SYSRAM,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_SYSRAM),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_CMU,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_CMU),
+               .length         = 144 * SZ_1K,
+               .type           = MT_DEVICE,
+       }, {
+               .virtual        = (unsigned long)S5P_VA_PMU,
+               .pfn            = __phys_to_pfn(EXYNOS5_PA_PMU),
+               .length         = SZ_64K,
+               .type           = MT_DEVICE,
+       },
+ };
+ void exynos_restart(enum reboot_mode mode, const char *cmd)
+ {
+       struct device_node *np;
+       u32 val = 0x1;
+       void __iomem *addr = EXYNOS_SWRESET;
+       if (of_machine_is_compatible("samsung,exynos5440")) {
+               u32 status;
+               np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
+               addr = of_iomap(np, 0) + 0xbc;
+               status = __raw_readl(addr);
+               addr = of_iomap(np, 0) + 0xcc;
+               val = __raw_readl(addr);
+               val = (val & 0xffff0000) | (status & 0xffff);
+       }
+       __raw_writel(val, addr);
+ }
+ static struct platform_device exynos_cpuidle = {
+       .name           = "exynos_cpuidle",
+       .id             = -1,
+ };
+ void __init exynos_cpuidle_init(void)
+ {
+       platform_device_register(&exynos_cpuidle);
+ }
+ void __init exynos_cpufreq_init(void)
+ {
+       platform_device_register_simple("exynos-cpufreq", -1, NULL, 0);
+ }
+ void __init exynos_init_late(void)
+ {
+       if (of_machine_is_compatible("samsung,exynos5440"))
+               /* to be supported later */
+               return;
+       pm_genpd_poweroff_unused();
++      exynos_pm_init();
+ }
+ static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
+                                       int depth, void *data)
+ {
+       struct map_desc iodesc;
+       __be32 *reg;
+       unsigned long len;
+       if (!of_flat_dt_is_compatible(node, "samsung,exynos4210-chipid") &&
+               !of_flat_dt_is_compatible(node, "samsung,exynos5440-clock"))
+               return 0;
+       reg = of_get_flat_dt_prop(node, "reg", &len);
+       if (reg == NULL || len != (sizeof(unsigned long) * 2))
+               return 0;
+       iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0]));
+       iodesc.length = be32_to_cpu(reg[1]) - 1;
+       iodesc.virtual = (unsigned long)S5P_VA_CHIPID;
+       iodesc.type = MT_DEVICE;
+       iotable_init(&iodesc, 1);
+       return 1;
+ }
+ /*
+  * exynos_map_io
+  *
+  * register the standard cpu IO areas
+  */
+ static void __init exynos_map_io(void)
+ {
+       if (soc_is_exynos4())
+               iotable_init(exynos4_iodesc, ARRAY_SIZE(exynos4_iodesc));
+       if (soc_is_exynos5())
+               iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc));
+       if (soc_is_exynos4210()) {
+               if (samsung_rev() == EXYNOS4210_REV_0)
+                       iotable_init(exynos4_iodesc0,
+                                               ARRAY_SIZE(exynos4_iodesc0));
+               else
+                       iotable_init(exynos4_iodesc1,
+                                               ARRAY_SIZE(exynos4_iodesc1));
+               iotable_init(exynos4210_iodesc, ARRAY_SIZE(exynos4210_iodesc));
+       }
+       if (soc_is_exynos4212() || soc_is_exynos4412())
+               iotable_init(exynos4x12_iodesc, ARRAY_SIZE(exynos4x12_iodesc));
+       if (soc_is_exynos5250())
+               iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc));
+ }
+ void __init exynos_init_io(void)
+ {
+       debug_ll_io_init();
+       of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
+       /* detect cpu id and rev. */
+       s5p_init_cpu(S5P_VA_CHIPID);
+       exynos_map_io();
+ }
+ struct bus_type exynos_subsys = {
+       .name           = "exynos-core",
+       .dev_name       = "exynos-core",
+ };
+ static int __init exynos_core_init(void)
+ {
+       return subsys_system_register(&exynos_subsys, NULL);
+ }
+ core_initcall(exynos_core_init);
+ static int __init exynos4_l2x0_cache_init(void)
+ {
+       int ret;
+       ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
+       if (ret)
+               return ret;
+       l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
+       clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+       return 0;
+ }
+ early_initcall(exynos4_l2x0_cache_init);
+ static void __init exynos_dt_machine_init(void)
+ {
+       struct device_node *i2c_np;
+       const char *i2c_compat = "samsung,s3c2440-i2c";
+       unsigned int tmp;
+       int id;
+       /*
+        * Exynos5's legacy i2c controller and new high speed i2c
+        * controller have muxed interrupt sources. By default the
+        * interrupts for 4-channel HS-I2C controller are enabled.
+        * If node for first four channels of legacy i2c controller
+        * are available then re-configure the interrupts via the
+        * system register.
+        */
+       if (soc_is_exynos5()) {
+               for_each_compatible_node(i2c_np, NULL, i2c_compat) {
+                       if (of_device_is_available(i2c_np)) {
+                               id = of_alias_get_id(i2c_np, "i2c");
+                               if (id < 4) {
+                                       tmp = readl(EXYNOS5_SYS_I2C_CFG);
+                                       writel(tmp & ~(0x1 << id),
+                                                       EXYNOS5_SYS_I2C_CFG);
+                               }
+                       }
+               }
+       }
+       exynos_cpuidle_init();
+       exynos_cpufreq_init();
+       of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+ }
+ static char const *exynos_dt_compat[] __initconst = {
+       "samsung,exynos4",
+       "samsung,exynos4210",
+       "samsung,exynos4212",
+       "samsung,exynos4412",
+       "samsung,exynos5",
+       "samsung,exynos5250",
+       "samsung,exynos5420",
+       "samsung,exynos5440",
+       NULL
+ };
+ static void __init exynos_reserve(void)
+ {
+ #ifdef CONFIG_S5P_DEV_MFC
+       int i;
+       char *mfc_mem[] = {
+               "samsung,mfc-v5",
+               "samsung,mfc-v6",
+               "samsung,mfc-v7",
+       };
+       for (i = 0; i < ARRAY_SIZE(mfc_mem); i++)
+               if (of_scan_flat_dt(s5p_fdt_alloc_mfc_mem, mfc_mem[i]))
+                       break;
+ #endif
+ }
+ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
+       /* Maintainer: Thomas Abraham <[email protected]> */
+       /* Maintainer: Kukjin Kim <[email protected]> */
+       .smp            = smp_ops(exynos_smp_ops),
+       .map_io         = exynos_init_io,
+       .init_early     = exynos_firmware_init,
+       .init_machine   = exynos_dt_machine_init,
+       .init_late      = exynos_init_late,
+       .dt_compat      = exynos_dt_compat,
+       .restart        = exynos_restart,
+       .reserve        = exynos_reserve,
+ MACHINE_END
index 2c15a8fbcb5a9f6f2542c6963714277634e8e29a,58e3fc4d6b5ab36c434f456bc2cc73d78548a43c..4f6a2560d0220e0244eb35d55f1ebc55e66cc734
  #define S5P_USE_STANDBY_WFI0                  (1 << 16)
  #define S5P_USE_STANDBY_WFE0                  (1 << 24)
  
- #define S5P_SWRESET                           S5P_PMUREG(0x0400)
  #define EXYNOS_SWRESET                                S5P_PMUREG(0x0400)
  #define EXYNOS5440_SWRESET                    S5P_PMUREG(0x00C4)
  
  #define S5P_WAKEUP_STAT                               S5P_PMUREG(0x0600)
 +#define S5P_EINT_WAKEUP_MASK                  S5P_PMUREG(0x0604)
 +#define S5P_WAKEUP_MASK                               S5P_PMUREG(0x0608)
  
  #define S5P_INFORM0                           S5P_PMUREG(0x0800)
  #define S5P_INFORM1                           S5P_PMUREG(0x0804)
index d762533b856f52082f548415a80d3173754ede40,4763f11744bccea8cfe5a742a24c502e7d1cb8be..5992b8dd9b8982ded6c3c8c45b0d5de88792a326
@@@ -20,9 -20,6 +20,9 @@@
  
  extern unsigned long samsung_cpu_id;
  
 +#define S3C2410_CPU_ID                0x32410000
 +#define S3C2410_CPU_MASK      0xFFFFFFFF
 +
  #define S3C24XX_CPU_ID                0x32400000
  #define S3C24XX_CPU_MASK      0xFFF00000
  
@@@ -59,7 -56,6 +59,7 @@@ static inline int is_samsung_##name(voi
        return ((samsung_cpu_id & mask) == (id & mask));        \
  }
  
 +IS_SAMSUNG_CPU(s3c2410, S3C2410_CPU_ID, S3C2410_CPU_MASK)
  IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
  IS_SAMSUNG_CPU(s3c2412, S3C2412_CPU_ID, S3C2412_CPU_MASK)
  IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK)
@@@ -80,10 -76,8 +80,10 @@@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_S
      defined(CONFIG_CPU_S3C2442) || defined(CONFIG_CPU_S3C244X) || \
      defined(CONFIG_CPU_S3C2443)
  # define soc_is_s3c24xx()     is_samsung_s3c24xx()
 +# define soc_is_s3c2410()     is_samsung_s3c2410()
  #else
  # define soc_is_s3c24xx()     0
 +# define soc_is_s3c2410()     0
  #endif
  
  #if defined(CONFIG_CPU_S3C2412)
  # define soc_is_exynos5440()  0
  #endif
  
+ #define soc_is_exynos4() (soc_is_exynos4210() || soc_is_exynos4212() || \
+                         soc_is_exynos4412())
+ #define soc_is_exynos5() (soc_is_exynos5250() || soc_is_exynos5420())
  #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
  
  #ifndef KHZ
@@@ -205,6 -203,7 +209,6 @@@ extern void s5p_init_irq(u32 *vic, u32 
  
  extern void s3c24xx_init_io(struct map_desc *mach_desc, int size);
  
 -extern void s3c24xx_init_cpu(void);
  extern void s3c64xx_init_cpu(void);
  extern void s5p_init_cpu(void __iomem *cpuid_addr);
  
This page took 0.190427 seconds and 4 git commands to generate.