Merge tag 'imx-fixes-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo...
authorOlof Johansson <olof@lixom.net>
Sun, 26 Oct 2014 03:44:05 +0000 (20:44 -0700)
committerOlof Johansson <olof@lixom.net>
Sun, 26 Oct 2014 03:44:05 +0000 (20:44 -0700)
Merge "ARM: imx: fixes for 3.18" from Shawn Guo:

The i.MX fixes for 3.18:
 - Revert one patch which increases I2C bus frequency on imx28-evk
 - Fix a typo on imx6q EIM clock name

* tag 'imx-fixes-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: dts: imx28-evk: Let i2c0 run at 100kHz
  ARM: i.MX6: Fix "emi" clock name typo

Signed-off-by: Olof Johansson <olof@lixom.net>
15 files changed:
MAINTAINERS
arch/arm/boot/dts/at91sam9263.dtsi
arch/arm/boot/dts/socfpga.dtsi
arch/arm/boot/dts/socfpga_arria5.dtsi
arch/arm/boot/dts/socfpga_arria5_socdk.dts
arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
arch/arm/boot/dts/socfpga_cyclone5_sockit.dts
arch/arm/boot/dts/zynq-7000.dtsi
arch/arm/configs/multi_v7_defconfig
arch/arm/configs/sunxi_defconfig
arch/arm/mach-socfpga/core.h
arch/arm/mach-socfpga/headsmp.S
arch/arm/mach-socfpga/platsmp.c
arch/arm/mach-socfpga/socfpga.c
drivers/power/reset/at91-reset.c

index a20df9bf8ab0efc22f5ced80f39ff2b4f429a89c..71fdbd4f4ac6a67ec7edbacfd17988b7e0f68f55 100644 (file)
@@ -1749,6 +1749,13 @@ M:       Nicolas Ferre <nicolas.ferre@atmel.com>
 S:     Supported
 F:     drivers/spi/spi-atmel.*
 
+ATMEL SSC DRIVER
+M:     Bo Shen <voice.shen@atmel.com>
+L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S:     Supported
+F:     drivers/misc/atmel-ssc.c
+F:     include/linux/atmel-ssc.h
+
 ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS
 M:     Nicolas Ferre <nicolas.ferre@atmel.com>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
index d68b3c4862bc22011df225b12caf4c3eab1758e1..51416c7d062537bf162c6ce533e36b91a74ffdc5 100644 (file)
                                        interrupts-extended = <&pmc AT91_PMC_LOCKB>;
                                        clocks = <&main>;
                                        reg = <1>;
-                                       atmel,clk-input-range = <1000000 5000000>;
+                                       atmel,clk-input-range = <1000000 32000000>;
                                        #atmel,pll-clk-output-range-cells = <4>;
-                                       atmel,pll-clk-output-ranges = <70000000 130000000 1 1>;
+                                       atmel,pll-clk-output-ranges = <80000000 200000000 0 1>,
+                                                               <190000000 240000000 2 1>;
                                };
 
                                mck: masterck {
index 45fce2cf6fede0a11ce2aca2d1de31aa70147ecf..4472fd92685c4b84d54e9dfb0041646f709e3477 100644 (file)
                        status = "disabled";
                };
 
-               gpio@ff708000 {
+               gpio0: gpio@ff708000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        clocks = <&per_base_clk>;
                        status = "disabled";
 
-                       gpio0: gpio-controller@0 {
+                       porta: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                                gpio-controller;
                                #gpio-cells = <2>;
                        };
                };
 
-               gpio@ff709000 {
+               gpio1: gpio@ff709000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        clocks = <&per_base_clk>;
                        status = "disabled";
 
-                       gpio1: gpio-controller@0 {
+                       portb: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                                gpio-controller;
                                #gpio-cells = <2>;
                        };
                };
 
-               gpio@ff70a000 {
+               gpio2: gpio@ff70a000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        clocks = <&per_base_clk>;
                        status = "disabled";
 
-                       gpio2: gpio-controller@0 {
+                       portc: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                                gpio-controller;
                                #gpio-cells = <2>;
index 03e8268ae2196e697cededfe5db00eec393fac9d..1907cc60045218663fad56e7def2a8825311f9f1 100644 (file)
@@ -29,7 +29,7 @@
                        };
                };
 
-               dwmmc0@ff704000 {
+               mmc0: dwmmc0@ff704000 {
                        num-slots = <1>;
                        broken-cd;
                        bus-width = <4>;
index 27d551c384d06b884f4eee5d19f7c75e783938e3..ccaf41742fc3d05921ee80d67ba00304010a666b 100644 (file)
                */
                ethernet0 = &gmac1;
        };
+
+       regulator_3_3v: 3-3-v-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
 };
 
 &gmac1 {
        };
 };
 
+&mmc0 {
+       vmmc-supply = <&regulator_3_3v>;
+       vqmmc-supply = <&regulator_3_3v>;
+};
+
 &usb1 {
        status = "okay";
 };
index d7296a5f750cd5edef23d62078b47361027de785..258865da8f6a6fe45a0fc9ae6c0281ef2f0c4824 100644 (file)
                 */
                ethernet0 = &gmac1;
        };
+
+       regulator_3_3v: 3-3-v-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
 };
 
 &gmac1 {
        rxc-skew-ps = <2000>;
 };
 
+&gpio1 {
+       status = "okay";
+};
+
 &i2c0 {
        status = "okay";
 
@@ -69,7 +80,9 @@
 };
 
 &mmc0 {
-       cd-gpios = <&gpio1 18 0>;
+       cd-gpios = <&portb 18 0>;
+       vmmc-supply = <&regulator_3_3v>;
+       vqmmc-supply = <&regulator_3_3v>;
 };
 
 &usb1 {
index d26f155f5fd9f64fcdbd1bcf12626c6008683b9b..16ea6f5f2ab81092d76697d020ef575610dc8045 100644 (file)
                 */
                ethernet0 = &gmac1;
        };
+
+       regulator_3_3v: vcc3p3-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
 };
 
 &gmac1 {
        rxc-skew-ps = <2000>;
 };
 
+&mmc0 {
+       vmmc-supply = <&regulator_3_3v>;
+       vqmmc-supply = <&regulator_3_3v>;
+};
+
 &usb1 {
        status = "okay";
 };
index 24036c440440c0f13cbcbc54ac0c034dcc5653cc..ce2ef5bec4f27f33bca365412dcf2de59acf7860 100644 (file)
@@ -30,7 +30,6 @@
                                /* kHz    uV */
                                666667  1000000
                                333334  1000000
-                               222223  1000000
                        >;
                };
 
@@ -65,7 +64,7 @@
                interrupt-parent = <&intc>;
                ranges;
 
-               adc@f8007100 {
+               adc: adc@f8007100 {
                        compatible = "xlnx,zynq-xadc-1.00.a";
                        reg = <0xf8007100 0x20>;
                        interrupts = <0 7 4>;
                              <0xF8F00100 0x100>;
                };
 
-               L2: cache-controller {
+               L2: cache-controller@f8f02000 {
                        compatible = "arm,pl310-cache";
                        reg = <0xF8F02000 0x1000>;
                        arm,data-latency = <3 2 2>;
                        cache-level = <2>;
                };
 
-               memory-controller@f8006000 {
+               mc: memory-controller@f8006000 {
                        compatible = "xlnx,zynq-ddrc-a05";
                        reg = <0xf8006000 0x1000>;
-               } ;
+               };
 
                uart0: serial@e0000000 {
                        compatible = "xlnx,xuartps", "cdns,uart-r1p8";
 
                gem0: ethernet@e000b000 {
                        compatible = "cdns,gem";
-                       reg = <0xe000b000 0x4000>;
+                       reg = <0xe000b000 0x1000>;
                        status = "disabled";
                        interrupts = <0 22 4>;
                        clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
 
                gem1: ethernet@e000c000 {
                        compatible = "cdns,gem";
-                       reg = <0xe000c000 0x4000>;
+                       reg = <0xe000c000 0x1000>;
                        status = "disabled";
                        interrupts = <0 45 4>;
                        clocks = <&clkc 31>, <&clkc 31>, <&clkc 14>;
                        reg = <0xf8f00600 0x20>;
                        clocks = <&clkc 4>;
                };
+
+               watchdog0: watchdog@f8005000 {
+                       clocks = <&clkc 45>;
+                       compatible = "xlnx,zynq-wdt-r1p2";
+                       device_type = "watchdog";
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 9 1>;
+                       reg = <0xf8005000 0x1000>;
+                       reset = <0>;
+                       timeout-sec = <10>;
+               };
        };
 };
index 491b7d5523bf8f2d2f741f078739b168443dfa8d..709ecc9009ec33747db6beb550812ab4fcd602af 100644 (file)
@@ -353,6 +353,7 @@ CONFIG_MMC_MVSDIO=y
 CONFIG_MMC_SUNXI=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW_EXYNOS=y
+CONFIG_MMC_DW_ROCKCHIP=y
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_GPIO=y
index 847045313101300f9d48d5b05e587c6456d16f30..f7ac0379850fc8d9ff9328dbd85b705bcb893b7f 100644 (file)
@@ -76,6 +76,7 @@ CONFIG_WATCHDOG=y
 CONFIG_SUNXI_WATCHDOG=y
 CONFIG_MFD_AXP20X=y
 CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_GPIO=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
index 572b8f719ffbf040c6d6e5f4b5274f21e89045db..60c443dadb58c0cff441962c6c7c1e2317281cb1 100644 (file)
@@ -40,7 +40,7 @@ extern void __iomem *rst_manager_base_addr;
 extern struct smp_operations socfpga_smp_ops;
 extern char secondary_trampoline, secondary_trampoline_end;
 
-extern unsigned long cpu1start_addr;
+extern unsigned long socfpga_cpu1start_addr;
 
 #define SOCFPGA_SCU_VIRT_BASE   0xfffec000
 
index 95c115d8b5eee5407feb99ce996f5793ceb34747..f65ea0af4af37dbdce42f9bf1af740b4feeb9e22 100644 (file)
@@ -9,21 +9,26 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/memory.h>
 
        .arch   armv7-a
 
 ENTRY(secondary_trampoline)
-       movw    r2, #:lower16:cpu1start_addr
-       movt  r2, #:upper16:cpu1start_addr
-
-       /* The socfpga VT cannot handle a 0xC0000000 page offset when loading
-               the cpu1start_addr, we bit clear it. Tested on HW and VT. */
-       bic     r2, r2, #0x40000000
-
-       ldr     r0, [r2]
-       ldr     r1, [r0]
-       bx      r1
+       /* CPU1 will always fetch from 0x0 when it is brought out of reset.
+        * Thus, we can just subtract the PAGE_OFFSET to get the physical
+        * address of &cpu1start_addr. This would not work for platforms
+        * where the physical memory does not start at 0x0.
+        */
+       adr     r0, 1f
+       ldmia   r0, {r1, r2}
+       sub     r2, r2, #PAGE_OFFSET
+       ldr     r3, [r2]
+       ldr     r4, [r3]
+       bx      r4
 
+       .align
+1:     .long   .
+       .long   socfpga_cpu1start_addr
 ENTRY(secondary_trampoline_end)
 
 ENTRY(socfpga_secondary_startup)
index 5356a72bc8ce901fdf82d0626f6ca59c9bfa85bf..16ca97b039f90d542c12182c560c870cc0089199 100644 (file)
@@ -33,11 +33,11 @@ static int socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle)
 {
        int trampoline_size = &secondary_trampoline_end - &secondary_trampoline;
 
-       if (cpu1start_addr) {
+       if (socfpga_cpu1start_addr) {
                memcpy(phys_to_virt(0), &secondary_trampoline, trampoline_size);
 
                __raw_writel(virt_to_phys(socfpga_secondary_startup),
-                       (sys_manager_base_addr + (cpu1start_addr & 0x000000ff)));
+                       (sys_manager_base_addr + (socfpga_cpu1start_addr & 0x000000ff)));
 
                flush_cache_all();
                smp_wmb();
index adbf38314ca8c47aac8a52dd70ce68c46a0e9647..383d61e138af1e9dfeee1ccac39b6adb42f74236 100644 (file)
@@ -29,7 +29,7 @@
 void __iomem *socfpga_scu_base_addr = ((void __iomem *)(SOCFPGA_SCU_VIRT_BASE));
 void __iomem *sys_manager_base_addr;
 void __iomem *rst_manager_base_addr;
-unsigned long cpu1start_addr;
+unsigned long socfpga_cpu1start_addr;
 
 static struct map_desc scu_io_desc __initdata = {
        .virtual        = SOCFPGA_SCU_VIRT_BASE,
@@ -70,7 +70,7 @@ void __init socfpga_sysmgr_init(void)
        np = of_find_compatible_node(NULL, NULL, "altr,sys-mgr");
 
        if (of_property_read_u32(np, "cpu1-start-addr",
-                       (u32 *) &cpu1start_addr))
+                       (u32 *) &socfpga_cpu1start_addr))
                pr_err("SMP: Need cpu1-start-addr in device tree.\n");
 
        sys_manager_base_addr = of_iomap(np, 0);
index 3611806c9cfdd01f3beb19ccefd1fbce825dcb10..3cb36693343aa1c9867a396f74a1c6b5e8bc655a 100644 (file)
@@ -100,11 +100,11 @@ static void at91sam9g45_restart(enum reboot_mode mode, const char *cmd)
                /* Disable SDRAM0 accesses */
                "1:     str     %3, [%0, #" __stringify(AT91_DDRSDRC_RTR) "]\n\t"
                /* Power down SDRAM0 */
-               "       str     %4, [%0, #" __stringify(AT91_DDRSDRC_RTR) "]\n\t"
+               "       str     %4, [%0, #" __stringify(AT91_DDRSDRC_LPR) "]\n\t"
                /* Disable SDRAM1 accesses */
                "       strne   %3, [%1, #" __stringify(AT91_DDRSDRC_RTR) "]\n\t"
                /* Power down SDRAM1 */
-               "       strne   %4, [%1, #" __stringify(AT91_DDRSDRC_RTR) "]\n\t"
+               "       strne   %4, [%1, #" __stringify(AT91_DDRSDRC_LPR) "]\n\t"
                /* Reset CPU */
                "       str     %5, [%2, #" __stringify(AT91_RSTC_CR) "]\n\t"