Merge branch 'next/arm64' into next/soc
authorOlof Johansson <olof@lixom.net>
Wed, 6 Sep 2017 03:29:54 +0000 (20:29 -0700)
committerOlof Johansson <olof@lixom.net>
Wed, 6 Sep 2017 03:29:54 +0000 (20:29 -0700)
* next/arm64:
  arm64: defconfig: enable rockchip graphics
  arm64: defconfig: Enable QCOM IPQ8074 clock and pinctrl
  arm64: defconfig: add CONFIG_BRCMSTB_THERMAL
  arm64: defconfig: add recently added crypto drivers as modules
  arm64: defconfig: enable CONFIG_UNIPHIER_WATCHDOG
  arm64: defconfig: Enable CONFIG_WQ_POWER_EFFICIENT_DEFAULT
  arm64: defconfig: enable DMA driver for hi3660
  arm64: defconfig: enable OP-TEE
  arm64: defconfig: enable support for serial port connected device
  arm64: defconfig: enable CONFIG_SYSCON_REBOOT_MODE
  arm64: defconfig: enable support hi6421v530 PMIC
  arm64: defconfig: enable Kirin PCIe
  arm64: defconfig: enable SCSI_HISI_SAS_PCI
  arm64: defconfig: Enable REGULATOR_AXP20X
  arm64: defconfig: Enable MFD_AXP20X_RSB
  arm64: select PINCTRL for ZTE platform
  arm64: defconfig: enable fine-grained task level IRQ time accounting
  arm64: defconfig: compile ak4613 and renesas sound as modules
  arm64: defconfig: enable nop-xceiv PHY driver

51 files changed:
Documentation/devicetree/bindings/arm/omap/omap.txt
MAINTAINERS
arch/arm/Kconfig.debug
arch/arm/boot/dts/dra71-evm.dts
arch/arm/boot/dts/dra72-evm-revc.dts
arch/arm/include/debug/omap2plus.S
arch/arm/kernel/cpuidle.c
arch/arm/kernel/devtree.c
arch/arm/kernel/topology.c
arch/arm/mach-ep93xx/clock.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/include/mach/platform.h
arch/arm/mach-ep93xx/soc.h
arch/arm/mach-exynos/suspend.c
arch/arm/mach-gemini/Kconfig
arch/arm/mach-hisi/platsmp.c
arch/arm/mach-imx/gpc.c
arch/arm/mach-mvebu/Kconfig
arch/arm/mach-mvebu/kirkwood.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/dma.c
arch/arm/mach-omap2/id.c
arch/arm/mach-omap2/omap-smp.c
arch/arm/mach-omap2/omap-wakeupgen.c
arch/arm/mach-omap2/omap_device.c
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
arch/arm/mach-omap2/pdata-quirks.c
arch/arm/mach-omap2/powerdomains7xx_data.c
arch/arm/mach-omap2/prm3xxx.c
arch/arm/mach-omap2/prm44xx.c
arch/arm/mach-omap2/soc.h
arch/arm/mach-rockchip/Kconfig
arch/arm/mach-rockchip/platsmp.c
arch/arm/mach-s3c24xx/Kconfig
arch/arm/mach-s3c24xx/common.c
arch/arm/mach-s3c24xx/include/mach/regs-clock.h
arch/arm/mach-s3c24xx/mach-mini2440.c
arch/arm/mach-s3c24xx/mach-smdk2443.c
arch/arm/mach-s3c24xx/sleep.S
arch/arm/mach-shmobile/Kconfig
arch/arm/mach-shmobile/pm-rcar-gen2.c
arch/arm/mach-shmobile/pm-rmobile.c
arch/arm/mach-shmobile/setup-rcar-gen2.c
arch/arm/mach-tegra/Kconfig
arch/arm/plat-samsung/include/plat/map-s3c.h
drivers/bus/omap-ocp2scp.c
drivers/soc/versatile/soc-realview.c
include/linux/platform_data/hsmmc-omap.h

index 8219b2c6bb29ab6862a65dd4adeae9d0b3aeafd9..9c6bebe434497479579460fce6bdbe2c2ca95853 100644 (file)
@@ -80,6 +80,9 @@ SoCs:
 - OMAP5432
   compatible = "ti,omap5432", "ti,omap5"
 
+- DRA762
+  compatible = "ti,dra762", "ti,dra7"
+
 - DRA742
   compatible = "ti,dra742", "ti,dra74", "ti,dra7"
 
index 44cb004c765d5bc3e9b71844b08fca7f204cae61..c1ae7f4029d305db37e8a1f920e507add4a1d370 100644 (file)
@@ -2079,17 +2079,38 @@ F:      arch/arm/mach-pxa/include/mach/z2.h
 ARM/ZTE ARCHITECTURE
 M:     Jun Nie <jun.nie@linaro.org>
 M:     Baoyou Xie <baoyou.xie@linaro.org>
+M:     Shawn Guo <shawnguo@kernel.org>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:     Maintained
+F:     arch/arm/boot/dts/zx2967*
 F:     arch/arm/mach-zx/
+F:     arch/arm64/boot/dts/zte/
 F:     drivers/clk/zte/
+F:     drivers/dma/zx_dma.c
+F:     drivers/gpio/gpio-zx.c
+F:     drivers/i2c/busses/i2c-zx2967.c
+F:     drivers/mmc/host/dw_mmc-zx.*
+F:     drivers/pinctrl/zte/
 F:     drivers/reset/reset-zx2967.c
 F:     drivers/soc/zte/
+F:     drivers/thermal/zx2967_thermal.c
+F:     drivers/watchdog/zx2967_wdt.c
 F:     Documentation/devicetree/bindings/arm/zte.txt
-F:     Documentation/devicetree/bindings/clock/zx296702-clk.txt
+F:     Documentation/devicetree/bindings/clock/zx2967*.txt
+F:     Documentation/devicetree/bindings/dma/zxdma.txt
+F:     Documentation/devicetree/bindings/gpio/zx296702-gpio.txt
+F:     Documentation/devicetree/bindings/i2c/i2c-zx2967.txt
+F:     Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
+F:     Documentation/devicetree/bindings/pinctrl/pinctrl-zx.txt
 F:     Documentation/devicetree/bindings/reset/zte,zx2967-reset.txt
 F:     Documentation/devicetree/bindings/soc/zte/
-F:     include/dt-bindings/soc/zx*.h
+F:     Documentation/devicetree/bindings/sound/zte,*.txt
+F:     Documentation/devicetree/bindings/thermal/zx2967-thermal.txt
+F:     Documentation/devicetree/bindings/watchdog/zte,zx2967-wdt.txt
+F:     include/dt-bindings/clock/zx2967*.h
+F:     include/dt-bindings/soc/zte,*.h
+F:     sound/soc/codecs/zx_aud96p22.c
+F:     sound/soc/zte/
 
 ARM/ZYNQ ARCHITECTURE
 M:     Michal Simek <michal.simek@xilinx.com>
@@ -3155,6 +3176,7 @@ S:        Supported
 F:     drivers/crypto/cavium/cpt/
 
 CAVIUM THUNDERX2 ARM64 SOC
+M:     Robert Richter <rrichter@cavium.com>
 M:     Jayachandran C <jnair@caviumnetworks.com>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:     Maintained
index 447629d89884fd1ed600227a676b339fd9c256e1..6dcea8e8e941eabe79790f97e3e8f69ccd3220e9 100644 (file)
@@ -646,7 +646,7 @@ choice
        config DEBUG_OMAP2UART1
                bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
                help
                  This covers at least h4, 2430sdp, 3430sdp, 3630sdp,
                  omap3 torpedo and 3530 lv som.
@@ -654,17 +654,17 @@ choice
        config DEBUG_OMAP2UART2
                bool "Kernel low-level debugging messages via OMAP2/3/4 UART2"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_OMAP2UART3
                bool "Kernel low-level debugging messages via OMAP2 UART3 (n8x0)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_OMAP3UART3
                bool "Kernel low-level debugging messages via OMAP3 UART3 (most omap3 boards)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
                help
                  This covers at least cm_t3x, beagle, crane, devkit8000,
                  igep00x0, ldp, n900, n9(50), pandora, overo, touchbook,
@@ -673,17 +673,17 @@ choice
        config DEBUG_OMAP4UART3
                bool "Kernel low-level debugging messages via OMAP4/5 UART3 (omap4 blaze, panda, omap5 sevm)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_OMAP3UART4
                bool "Kernel low-level debugging messages via OMAP36XX UART4"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_OMAP4UART4
                bool "Kernel low-level debugging messages via OMAP4/5 UART4"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_OMAP7XXUART1
                bool "Kernel low-level debugging via OMAP730 UART1"
@@ -712,22 +712,22 @@ choice
        config DEBUG_TI81XXUART1
                bool "Kernel low-level debugging messages via TI81XX UART1 (ti8148evm)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_TI81XXUART2
                bool "Kernel low-level debugging messages via TI81XX UART2"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_TI81XXUART3
                bool "Kernel low-level debugging messages via TI81XX UART3 (ti8168evm)"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_AM33XXUART1
                bool "Kernel low-level debugging messages via AM33XX UART1"
                depends on ARCH_OMAP2PLUS
-               select DEBUG_OMAP2PLUS_UART
+               select DEBUG_UART_8250
 
        config DEBUG_ZOOM_UART
                bool "Kernel low-level debugging messages via Zoom2/3 UART"
@@ -896,12 +896,13 @@ choice
                  via SCIF2 on Renesas R-Car H1 (R8A7779).
 
        config DEBUG_RCAR_GEN2_SCIF0
-               bool "Kernel low-level debugging messages via SCIF0 on R8A7790/R8A7791/R8A7792/R8A7793"
-               depends on ARCH_R8A7790 || ARCH_R8A7791 || ARCH_R8A7792 || ARCH_R8A7793
+               bool "Kernel low-level debugging messages via SCIF0 on R-Car Gen2 and RZ/G1"
+               depends on ARCH_R8A7743 || ARCH_R8A7790 || ARCH_R8A7791 || \
+                       ARCH_R8A7792 || ARCH_R8A7793
                help
                  Say Y here if you want kernel low-level debugging support
-                 via SCIF0 on Renesas R-Car H2 (R8A7790), M2-W (R8A7791), V2H
-                 (R8A7792), or M2-N (R8A7793).
+                 via SCIF0 on Renesas RZ/G1M (R8A7743), R-Car H2 (R8A7790),
+                 M2-W (R8A7791), V2H (R8A7792), or M2-N (R8A7793).
 
        config DEBUG_RCAR_GEN2_SCIF2
                bool "Kernel low-level debugging messages via SCIF2 on R8A7794"
@@ -1523,6 +1524,17 @@ config DEBUG_UART_PHYS
        default 0x40090000 if DEBUG_LPC32XX
        default 0x40100000 if DEBUG_PXA_UART1
        default 0x42000000 if DEBUG_GEMINI
+       default 0x44e09000 if DEBUG_AM33XXUART1
+       default 0x48020000 if DEBUG_OMAP4UART3 || DEBUG_TI81XXUART1
+       default 0x48022000 if DEBUG_TI81XXUART2
+       default 0x48024000 if DEBUG_TI81XXUART3
+       default 0x4806a000 if DEBUG_OMAP2UART1 || DEBUG_OMAP3UART1 || \
+                               DEBUG_OMAP4UART1 || DEBUG_OMAP5UART1
+       default 0x4806c000 if DEBUG_OMAP2UART2 || DEBUG_OMAP3UART2 || \
+                               DEBUG_OMAP4UART2 || DEBUG_OMAP5UART2
+       default 0x4806e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
+       default 0x49020000 if DEBUG_OMAP3UART3
+       default 0x49042000 if DEBUG_OMAP3UART4
        default 0x50000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
                                DEBUG_S3C2410_UART0)
        default 0x50004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
@@ -1641,10 +1653,21 @@ config DEBUG_UART_VIRT
        default 0xf8090000 if DEBUG_VEXPRESS_UART0_RS1
        default 0xf8ffee00 if DEBUG_AT91_SAM9263_DBGU
        default 0xf8fff200 if DEBUG_AT91_RM9200_DBGU
+       default 0xf9e09000 if DEBUG_AM33XXUART1
+       default 0xfa020000 if DEBUG_OMAP4UART3 || DEBUG_TI81XXUART1
+       default 0xfa022000 if DEBUG_TI81XXUART2
+       default 0xfa024000 if DEBUG_TI81XXUART3
+       default 0xfa06a000 if DEBUG_OMAP2UART1 || DEBUG_OMAP3UART1 || \
+                               DEBUG_OMAP4UART1 || DEBUG_OMAP5UART1
+       default 0xfa06c000 if DEBUG_OMAP2UART2 || DEBUG_OMAP3UART2 || \
+                               DEBUG_OMAP4UART2 || DEBUG_OMAP5UART2
+       default 0xfa06e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
        default 0xfa71e000 if DEBUG_QCOM_UARTDM
        default 0xfb002000 if DEBUG_CNS3XXX
        default 0xfb009000 if DEBUG_REALVIEW_STD_PORT
        default 0xfb00c000 if DEBUG_AT91_SAMA5D4_USART3
+       default 0xfb020000 if DEBUG_OMAP3UART3
+       default 0xfb042000 if DEBUG_OMAP3UART4
        default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
        default 0xfc705000 if DEBUG_ZTE_ZX
        default 0xfcfe8600 if DEBUG_BCM63XX_UART
index a6298eb56978710c24291fc05d17770fefccd188..9897e8fa684516a245c63f435baa3e5855362218 100644 (file)
                ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
                ti,min-output-impedance;
+               ti,dp83867-rxctrl-strap-quirk;
        };
 
        dp83867_1: ethernet-phy@3 {
                ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
                ti,min-output-impedance;
+               ti,dp83867-rxctrl-strap-quirk;
        };
 };
 
index 3ecac56bf504de779a954208a4b7318a8ae4437c..6f9b6f31437efeb3009825cd205d06630e5c74b1 100644 (file)
@@ -70,6 +70,7 @@
                ti,min-output-impedance;
                interrupt-parent = <&gpio6>;
                interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
+               ti,dp83867-rxctrl-strap-quirk;
        };
 
        dp83867_1: ethernet-phy@3 {
@@ -80,5 +81,6 @@
                ti,min-output-impedance;
                interrupt-parent = <&gpio6>;
                interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
+               ti,dp83867-rxctrl-strap-quirk;
        };
 };
index 6d867aef18eb097566187ae6b7c925f02af17b98..8be08d907a16990a3516d32d085188fcc962822b 100644 (file)
 
 #include <linux/serial_reg.h>
 
-/* OMAP2 serial ports */
-#define OMAP2_UART1_BASE       0x4806a000
-#define OMAP2_UART2_BASE       0x4806c000
-#define OMAP2_UART3_BASE       0x4806e000
-
-/* OMAP3 serial ports */
-#define OMAP3_UART1_BASE       OMAP2_UART1_BASE
-#define OMAP3_UART2_BASE       OMAP2_UART2_BASE
-#define OMAP3_UART3_BASE       0x49020000
-#define OMAP3_UART4_BASE       0x49042000      /* Only on 36xx */
-#define OMAP3_UART4_AM35XX_BASE        0x4809E000      /* Only on AM35xx */
-
-/* OMAP4 serial ports */
-#define OMAP4_UART1_BASE       OMAP2_UART1_BASE
-#define OMAP4_UART2_BASE       OMAP2_UART2_BASE
-#define OMAP4_UART3_BASE       0x48020000
-#define OMAP4_UART4_BASE       0x4806e000
-
-/* TI81XX serial ports */
-#define TI81XX_UART1_BASE      0x48020000
-#define TI81XX_UART2_BASE      0x48022000
-#define TI81XX_UART3_BASE      0x48024000
-
-/* AM3505/3517 UART4 */
-#define AM35XX_UART4_BASE      0x4809E000      /* Only on AM3505/3517 */
-
-/* AM33XX serial port */
-#define AM33XX_UART1_BASE      0x44E09000
-
-/* OMAP5 serial ports */
-#define OMAP5_UART1_BASE       OMAP2_UART1_BASE
-#define OMAP5_UART2_BASE       OMAP2_UART2_BASE
-#define OMAP5_UART3_BASE       OMAP4_UART3_BASE
-#define OMAP5_UART4_BASE       OMAP4_UART4_BASE
-#define OMAP5_UART5_BASE       0x48066000
-#define OMAP5_UART6_BASE       0x48068000
-
 /* External port on Zoom2/3 */
 #define ZOOM_UART_BASE         0x10000000
 #define ZOOM_UART_VIRT         0xfa400000
@@ -79,55 +42,6 @@ omap_uart_lsr:       .word   0
                bne     100f                    @ already configured
 
                /* Configure the UART offset from the phys/virt base */
-#ifdef CONFIG_DEBUG_OMAP2UART1
-               mov     \rp, #UART_OFFSET(OMAP2_UART1_BASE)     @ omap2/3/4
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP2UART2
-               mov     \rp, #UART_OFFSET(OMAP2_UART2_BASE)     @ omap2/3/4
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP2UART3
-               mov     \rp, #UART_OFFSET(OMAP2_UART3_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP3UART3
-               mov     \rp, #UART_OFFSET(OMAP3_UART1_BASE)
-               add     \rp, \rp, #0x00fb0000
-               add     \rp, \rp, #0x00006000           @ OMAP3_UART3_BASE
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP4UART3
-               mov     \rp, #UART_OFFSET(OMAP4_UART3_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP3UART4
-               mov     \rp, #UART_OFFSET(OMAP3_UART1_BASE)
-               add     \rp, \rp, #0x00fb0000
-               add     \rp, \rp, #0x00028000           @ OMAP3_UART4_BASE
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_OMAP4UART4
-               mov     \rp, #UART_OFFSET(OMAP4_UART4_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_TI81XXUART1
-               mov     \rp, #UART_OFFSET(TI81XX_UART1_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_TI81XXUART2
-               mov     \rp, #UART_OFFSET(TI81XX_UART2_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_TI81XXUART3
-               mov     \rp, #UART_OFFSET(TI81XX_UART3_BASE)
-               b       98f
-#endif
-#ifdef CONFIG_DEBUG_AM33XXUART1
-               ldr     \rp, =AM33XX_UART1_BASE
-               and     \rp, \rp, #0x00ffffff
-               b       97f
-#endif
 #ifdef CONFIG_DEBUG_ZOOM_UART
                ldr     \rp, =ZOOM_UART_BASE
                str     \rp, [\tmp, #0]         @ omap_uart_phys
@@ -138,28 +52,6 @@ omap_uart_lsr:      .word   0
 #endif
                b       10b
 
-               /* AM33XX: Store both phys and virt address for the uart */
-97:            add     \rp, \rp, #0x44000000   @ phys base
-               str     \rp, [\tmp, #0]         @ omap_uart_phys
-               sub     \rp, \rp, #0x44000000   @ phys base
-               add     \rp, \rp, #0xf9000000   @ virt base
-               str     \rp, [\tmp, #4]         @ omap_uart_virt
-               mov     \rp, #(UART_LSR << OMAP_PORT_SHIFT)
-               str     \rp, [\tmp, #8]         @ omap_uart_lsr
-
-               b       10b
-
-               /* Store both phys and virt address for the uart */
-98:            add     \rp, \rp, #0x48000000   @ phys base
-               str     \rp, [\tmp, #0]         @ omap_uart_phys
-               sub     \rp, \rp, #0x48000000   @ phys base
-               add     \rp, \rp, #0xfa000000   @ virt base
-               str     \rp, [\tmp, #4]         @ omap_uart_virt
-               mov     \rp, #(UART_LSR << OMAP_PORT_SHIFT)
-               str     \rp, [\tmp, #8]         @ omap_uart_lsr
-
-               b       10b
-
                .align
 99:            .word   .
                .word   omap_uart_phys
index a3308ad1a02477d4fbe0fb196d940c53e44a6681..fda5579123a8b2ce7c09cd359421a7dfcfd48392 100644 (file)
@@ -101,8 +101,8 @@ static int __init arm_cpuidle_read_ops(struct device_node *dn, int cpu)
 
        ops = arm_cpuidle_get_ops(enable_method);
        if (!ops) {
-               pr_warn("%s: unsupported enable-method property: %s\n",
-                       dn->full_name, enable_method);
+               pr_warn("%pOF: unsupported enable-method property: %s\n",
+                       dn, enable_method);
                return -EOPNOTSUPP;
        }
 
index f676febbb2706caaaa2856691032e415b4aa8d46..ecaa68dd1af52c9e1afd994978d70ddad7400b75 100644 (file)
@@ -95,7 +95,7 @@ void __init arm_dt_init_cpu_maps(void)
                if (of_node_cmp(cpu->type, "cpu"))
                        continue;
 
-               pr_debug(" * %s...\n", cpu->full_name);
+               pr_debug(" * %pOF...\n", cpu);
                /*
                 * A device tree containing CPU nodes with missing "reg"
                 * properties is considered invalid to build the
@@ -103,8 +103,7 @@ void __init arm_dt_init_cpu_maps(void)
                 */
                cell = of_get_property(cpu, "reg", &prop_bytes);
                if (!cell || prop_bytes < sizeof(*cell)) {
-                       pr_debug(" * %s missing reg property\n",
-                                    cpu->full_name);
+                       pr_debug(" * %pOF missing reg property\n", cpu);
                        of_node_put(cpu);
                        return;
                }
index bf949a763dbe5b1b38b0e75ea24e62b051570d64..24ac3cab411d94a186390aa1fedb16b53e1d3a73 100644 (file)
@@ -127,8 +127,7 @@ static void __init parse_dt_topology(void)
 
                rate = of_get_property(cn, "clock-frequency", &len);
                if (!rate || len != 4) {
-                       pr_err("%s missing clock-frequency property\n",
-                               cn->full_name);
+                       pr_err("%pOF missing clock-frequency property\n", cn);
                        continue;
                }
 
index beec5f16443a29fb5a62f6deb8969ea33cff5b6d..d2eee707d27f8e94bf9cb0bf7a7eb70c93dba2ab 100644 (file)
@@ -98,6 +98,13 @@ static struct clk clk_keypad = {
        .enable_mask    = EP93XX_SYSCON_KEYTCHCLKDIV_KEN,
        .set_rate       = set_keytchclk_rate,
 };
+static struct clk clk_adc = {
+       .parent         = &clk_xtali,
+       .sw_locked      = 1,
+       .enable_reg     = EP93XX_SYSCON_KEYTCHCLKDIV,
+       .enable_mask    = EP93XX_SYSCON_KEYTCHCLKDIV_TSEN,
+       .set_rate       = set_keytchclk_rate,
+};
 static struct clk clk_spi = {
        .parent         = &clk_xtali,
        .rate           = EP93XX_EXT_CLK_RATE,
@@ -214,6 +221,7 @@ static struct clk_lookup clocks[] = {
        INIT_CK(NULL,                   "pll2",         &clk_pll2),
        INIT_CK("ohci-platform",        NULL,           &clk_usb_host),
        INIT_CK("ep93xx-keypad",        NULL,           &clk_keypad),
+       INIT_CK("ep93xx-adc",           NULL,           &clk_adc),
        INIT_CK("ep93xx-fb",            NULL,           &clk_video),
        INIT_CK("ep93xx-spi.0",         NULL,           &clk_spi),
        INIT_CK("ep93xx-i2s",           "mclk",         &clk_i2s_mclk),
index c393b1b0310df78e3cbbea8ef9d7336de7f82d19..f53c6181399868ad232f3dcea8173349d6e76a93 100644 (file)
@@ -820,6 +820,30 @@ void ep93xx_ide_release_gpio(struct platform_device *pdev)
 }
 EXPORT_SYMBOL(ep93xx_ide_release_gpio);
 
+/*************************************************************************
+ * EP93xx ADC
+ *************************************************************************/
+static struct resource ep93xx_adc_resources[] = {
+       DEFINE_RES_MEM(EP93XX_ADC_PHYS_BASE, 0x28),
+       DEFINE_RES_IRQ(IRQ_EP93XX_TOUCH),
+};
+
+static struct platform_device ep93xx_adc_device = {
+       .name           = "ep93xx-adc",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(ep93xx_adc_resources),
+       .resource       = ep93xx_adc_resources,
+};
+
+void __init ep93xx_register_adc(void)
+{
+       /* Power up ADC, deactivate Touch Screen Controller */
+       ep93xx_devcfg_set_clear(EP93XX_SYSCON_DEVCFG_TIN,
+                               EP93XX_SYSCON_DEVCFG_ADCPD);
+
+       platform_device_register(&ep93xx_adc_device);
+}
+
 /*************************************************************************
  * EP93xx Security peripheral
  *************************************************************************/
index 0ac176386789428be26631ad1c9f75ad343e8951..7a7f280b07d75af54b6fec1e32b84384a3c6ad25 100644 (file)
@@ -245,6 +245,7 @@ static void __init edb93xx_init_machine(void)
        edb93xx_register_pwm();
        edb93xx_register_fb();
        edb93xx_register_ide();
+       ep93xx_register_adc();
 }
 
 
index 4c0bbd97f741c7a6ab90de0260a77e9c4877fb82..db0839691ef5e883fd5f4ea0748f2698332e4d6a 100644 (file)
@@ -52,6 +52,7 @@ int ep93xx_i2s_acquire(void);
 void ep93xx_i2s_release(void);
 void ep93xx_register_ac97(void);
 void ep93xx_register_ide(void);
+void ep93xx_register_adc(void);
 int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
 void ep93xx_ide_release_gpio(struct platform_device *pdev);
 
index 7bf7ff8beae73f28aec97693a9cda48c6a8212bf..d20e631164cfd2dfcd1c638754691d47b0ffbb87 100644 (file)
@@ -95,6 +95,7 @@
 #define EP93XX_KEY_MATRIX_PHYS_BASE    EP93XX_APB_PHYS(0x000f0000)
 #define EP93XX_KEY_MATRIX_BASE         EP93XX_APB_IOMEM(0x000f0000)
 
+#define EP93XX_ADC_PHYS_BASE           EP93XX_APB_PHYS(0x00100000)
 #define EP93XX_ADC_BASE                        EP93XX_APB_IOMEM(0x00100000)
 #define EP93XX_TOUCHSCREEN_BASE                EP93XX_APB_IOMEM(0x00100000)
 
index 748cfb8d521247c2073b8cc064d963c1f7ab9eeb..b529ba04ed16656aeefc80eb5a4bb95119b6753d 100644 (file)
@@ -187,21 +187,20 @@ static int __init exynos_pmu_irq_init(struct device_node *node,
        struct irq_domain *parent_domain, *domain;
 
        if (!parent) {
-               pr_err("%s: no parent, giving up\n", node->full_name);
+               pr_err("%pOF: no parent, giving up\n", node);
                return -ENODEV;
        }
 
        parent_domain = irq_find_host(parent);
        if (!parent_domain) {
-               pr_err("%s: unable to obtain parent domain\n", node->full_name);
+               pr_err("%pOF: unable to obtain parent domain\n", node);
                return -ENXIO;
        }
 
        pmu_base_addr = of_iomap(node, 0);
 
        if (!pmu_base_addr) {
-               pr_err("%s: failed to find exynos pmu register\n",
-                      node->full_name);
+               pr_err("%pOF: failed to find exynos pmu register\n", node);
                return -ENOMEM;
        }
 
index 06c8b095154c5dd39b0c052728d9781ebead099d..70106b67631ca8268b788eaca4dac9eedd547a2c 100644 (file)
@@ -1,11 +1,16 @@
 menuconfig ARCH_GEMINI
        bool "Cortina Systems Gemini"
        depends on ARCH_MULTI_V4
+       select ARCH_HAS_RESET_CONTROLLER
+       select ARM_AMBA
        select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
+       select COMMON_CLK_GEMINI
        select FARADAY_FTINTC010
        select FTTMR010_TIMER
        select GPIO_FTGPIO010
        select GPIOLIB
+       select PINCTRL
+       select PINCTRL_GEMINI
        select POWER_RESET
        select POWER_RESET_GEMINI_POWEROFF
        select POWER_RESET_SYSCON
index 91bb02dec20f15a63f438f3ab65fe5dc62a40af7..da5689ababf7b933516f46d70436ad2be44a33b9 100644 (file)
@@ -109,7 +109,7 @@ static void hix5hd2_set_scu_boot_addr(phys_addr_t start_addr, phys_addr_t jump_a
 
        virt = ioremap(start_addr, PAGE_SIZE);
 
-       writel_relaxed(0xe51ff004, virt);       /* ldr pc, [rc, #-4] */
+       writel_relaxed(0xe51ff004, virt);       /* ldr pc, [pc, #-4] */
        writel_relaxed(jump_addr, virt + 4);    /* pc jump phy address */
        iounmap(virt);
 }
index 93f584ba0130eb480b001d98946d9981da19d34c..de535cb679b36d58d6cb88106656e1e260c490c0 100644 (file)
@@ -224,13 +224,13 @@ static int __init imx_gpc_init(struct device_node *node,
        int i;
 
        if (!parent) {
-               pr_err("%s: no parent, giving up\n", node->full_name);
+               pr_err("%pOF: no parent, giving up\n", node);
                return -ENODEV;
        }
 
        parent_domain = irq_find_host(parent);
        if (!parent_domain) {
-               pr_err("%s: unable to obtain parent domain\n", node->full_name);
+               pr_err("%pOF: unable to obtain parent domain\n", node);
                return -ENXIO;
        }
 
index 541647f5719255cfd755a22b0435f97426e92612..9b49867154bfba3f3a2a5d589219c48fd381669a 100644 (file)
@@ -60,6 +60,8 @@ config MACH_ARMADA_38X
        select ARM_ERRATA_720789
        select ARM_ERRATA_753970
        select ARM_GIC
+       select ARM_GLOBAL_TIMER
+       select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
        select ARMADA_370_XP_IRQ
        select ARMADA_38X_CLK
        select HAVE_ARM_SCU
index 7d9f2fd9e450512ebd798eaa56ba6841b690fec4..0aa88105d46e5423c1d98d29ca0f65ab7968f143 100644 (file)
@@ -107,8 +107,7 @@ static void __init kirkwood_dt_eth_fixup(void)
                clk_prepare_enable(clk);
 
                /* store MAC address register contents in local-mac-address */
-               pr_err(FW_INFO "%s: local-mac-address is not set\n",
-                      np->full_name);
+               pr_err(FW_INFO "%pOF: local-mac-address is not set\n", np);
 
                pmac = kzalloc(sizeof(*pmac) + 6, GFP_KERNEL);
                if (!pmac)
index 0465338183c706721d94d356683fad3fa17a4435..e31a5a22e1716379a7d1fdd564ecb6702361dc6b 100644 (file)
@@ -87,6 +87,7 @@ config SOC_DRA7XX
        select OMAP_INTERCONNECT_BARRIER
        select PM_OPP if PM
        select ZONE_DMA if ARM_LPAE
+       select PINCTRL_TI_IODELAY if OF && PINCTRL
 
 config ARCH_OMAP2PLUS
        bool
index b1e661bb5521e4281a487c25cbfea12c0b29f91f..d4ae95dd6ee3652f594eb69422fdccc3c3ce5b87 100644 (file)
@@ -312,6 +312,7 @@ MACHINE_END
 
 #ifdef CONFIG_SOC_DRA7XX
 static const char *const dra74x_boards_compat[] __initconst = {
+       "ti,dra762",
        "ti,am5728",
        "ti,am5726",
        "ti,dra742",
index 0b77a01760184edf3694e208b6e526a2352c144a..694ce0939d50f2e8182fbf5c12cf90220d544d45 100644 (file)
@@ -204,61 +204,6 @@ static unsigned configure_dma_errata(void)
        return errata;
 }
 
-static const struct dma_slave_map omap24xx_sdma_map[] = {
-       { "omap-gpmc", "rxtx", SDMA_FILTER_PARAM(4) },
-       { "omap-aes", "tx", SDMA_FILTER_PARAM(9) },
-       { "omap-aes", "rx", SDMA_FILTER_PARAM(10) },
-       { "omap-sham", "rx", SDMA_FILTER_PARAM(13) },
-       { "omap2_mcspi.2", "tx0", SDMA_FILTER_PARAM(15) },
-       { "omap2_mcspi.2", "rx0", SDMA_FILTER_PARAM(16) },
-       { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(17) },
-       { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(18) },
-       { "omap-mcbsp.4", "tx", SDMA_FILTER_PARAM(19) },
-       { "omap-mcbsp.4", "rx", SDMA_FILTER_PARAM(20) },
-       { "omap-mcbsp.5", "tx", SDMA_FILTER_PARAM(21) },
-       { "omap-mcbsp.5", "rx", SDMA_FILTER_PARAM(22) },
-       { "omap2_mcspi.2", "tx1", SDMA_FILTER_PARAM(23) },
-       { "omap2_mcspi.2", "rx1", SDMA_FILTER_PARAM(24) },
-       { "omap_i2c.1", "tx", SDMA_FILTER_PARAM(27) },
-       { "omap_i2c.1", "rx", SDMA_FILTER_PARAM(28) },
-       { "omap_i2c.2", "tx", SDMA_FILTER_PARAM(29) },
-       { "omap_i2c.2", "rx", SDMA_FILTER_PARAM(30) },
-       { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(31) },
-       { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(32) },
-       { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(33) },
-       { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(34) },
-       { "omap2_mcspi.0", "tx0", SDMA_FILTER_PARAM(35) },
-       { "omap2_mcspi.0", "rx0", SDMA_FILTER_PARAM(36) },
-       { "omap2_mcspi.0", "tx1", SDMA_FILTER_PARAM(37) },
-       { "omap2_mcspi.0", "rx1", SDMA_FILTER_PARAM(38) },
-       { "omap2_mcspi.0", "tx2", SDMA_FILTER_PARAM(39) },
-       { "omap2_mcspi.0", "rx2", SDMA_FILTER_PARAM(40) },
-       { "omap2_mcspi.0", "tx3", SDMA_FILTER_PARAM(41) },
-       { "omap2_mcspi.0", "rx3", SDMA_FILTER_PARAM(42) },
-       { "omap2_mcspi.1", "tx0", SDMA_FILTER_PARAM(43) },
-       { "omap2_mcspi.1", "rx0", SDMA_FILTER_PARAM(44) },
-       { "omap2_mcspi.1", "tx1", SDMA_FILTER_PARAM(45) },
-       { "omap2_mcspi.1", "rx1", SDMA_FILTER_PARAM(46) },
-       { "omap_hsmmc.1", "tx", SDMA_FILTER_PARAM(47) },
-       { "omap_hsmmc.1", "rx", SDMA_FILTER_PARAM(48) },
-       { "omap_uart.0", "tx", SDMA_FILTER_PARAM(49) },
-       { "omap_uart.0", "rx", SDMA_FILTER_PARAM(50) },
-       { "omap_uart.1", "tx", SDMA_FILTER_PARAM(51) },
-       { "omap_uart.1", "rx", SDMA_FILTER_PARAM(52) },
-       { "omap_uart.2", "tx", SDMA_FILTER_PARAM(53) },
-       { "omap_uart.2", "rx", SDMA_FILTER_PARAM(54) },
-       { "omap_hsmmc.0", "tx", SDMA_FILTER_PARAM(61) },
-       { "omap_hsmmc.0", "rx", SDMA_FILTER_PARAM(62) },
-
-       /* external DMA requests when tusb6010 is used */
-       { "musb-tusb", "dmareq0", SDMA_FILTER_PARAM(2) },
-       { "musb-tusb", "dmareq1", SDMA_FILTER_PARAM(3) },
-       { "musb-tusb", "dmareq2", SDMA_FILTER_PARAM(14) }, /* OMAP2420 only */
-       { "musb-tusb", "dmareq3", SDMA_FILTER_PARAM(15) }, /* OMAP2420 only */
-       { "musb-tusb", "dmareq4", SDMA_FILTER_PARAM(16) }, /* OMAP2420 only */
-       { "musb-tusb", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
-};
-
 static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
        /* external DMA requests when tusb6010 is used */
        { "musb-hdrc.1.auto", "dmareq0", SDMA_FILTER_PARAM(2) },
@@ -269,61 +214,6 @@ static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
        { "musb-hdrc.1.auto", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
 };
 
-static const struct dma_slave_map omap3xxx_sdma_map[] = {
-       { "omap-gpmc", "rxtx", SDMA_FILTER_PARAM(4) },
-       { "omap2_mcspi.2", "tx0", SDMA_FILTER_PARAM(15) },
-       { "omap2_mcspi.2", "rx0", SDMA_FILTER_PARAM(16) },
-       { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(17) },
-       { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(18) },
-       { "omap-mcbsp.4", "tx", SDMA_FILTER_PARAM(19) },
-       { "omap-mcbsp.4", "rx", SDMA_FILTER_PARAM(20) },
-       { "omap-mcbsp.5", "tx", SDMA_FILTER_PARAM(21) },
-       { "omap-mcbsp.5", "rx", SDMA_FILTER_PARAM(22) },
-       { "omap2_mcspi.2", "tx1", SDMA_FILTER_PARAM(23) },
-       { "omap2_mcspi.2", "rx1", SDMA_FILTER_PARAM(24) },
-       { "omap_i2c.3", "tx", SDMA_FILTER_PARAM(25) },
-       { "omap_i2c.3", "rx", SDMA_FILTER_PARAM(26) },
-       { "omap_i2c.1", "tx", SDMA_FILTER_PARAM(27) },
-       { "omap_i2c.1", "rx", SDMA_FILTER_PARAM(28) },
-       { "omap_i2c.2", "tx", SDMA_FILTER_PARAM(29) },
-       { "omap_i2c.2", "rx", SDMA_FILTER_PARAM(30) },
-       { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(31) },
-       { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(32) },
-       { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(33) },
-       { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(34) },
-       { "omap2_mcspi.0", "tx0", SDMA_FILTER_PARAM(35) },
-       { "omap2_mcspi.0", "rx0", SDMA_FILTER_PARAM(36) },
-       { "omap2_mcspi.0", "tx1", SDMA_FILTER_PARAM(37) },
-       { "omap2_mcspi.0", "rx1", SDMA_FILTER_PARAM(38) },
-       { "omap2_mcspi.0", "tx2", SDMA_FILTER_PARAM(39) },
-       { "omap2_mcspi.0", "rx2", SDMA_FILTER_PARAM(40) },
-       { "omap2_mcspi.0", "tx3", SDMA_FILTER_PARAM(41) },
-       { "omap2_mcspi.0", "rx3", SDMA_FILTER_PARAM(42) },
-       { "omap2_mcspi.1", "tx0", SDMA_FILTER_PARAM(43) },
-       { "omap2_mcspi.1", "rx0", SDMA_FILTER_PARAM(44) },
-       { "omap2_mcspi.1", "tx1", SDMA_FILTER_PARAM(45) },
-       { "omap2_mcspi.1", "rx1", SDMA_FILTER_PARAM(46) },
-       { "omap_hsmmc.1", "tx", SDMA_FILTER_PARAM(47) },
-       { "omap_hsmmc.1", "rx", SDMA_FILTER_PARAM(48) },
-       { "omap_uart.0", "tx", SDMA_FILTER_PARAM(49) },
-       { "omap_uart.0", "rx", SDMA_FILTER_PARAM(50) },
-       { "omap_uart.1", "tx", SDMA_FILTER_PARAM(51) },
-       { "omap_uart.1", "rx", SDMA_FILTER_PARAM(52) },
-       { "omap_uart.2", "tx", SDMA_FILTER_PARAM(53) },
-       { "omap_uart.2", "rx", SDMA_FILTER_PARAM(54) },
-       { "omap_hsmmc.0", "tx", SDMA_FILTER_PARAM(61) },
-       { "omap_hsmmc.0", "rx", SDMA_FILTER_PARAM(62) },
-       { "omap-aes", "tx", SDMA_FILTER_PARAM(65) },
-       { "omap-aes", "rx", SDMA_FILTER_PARAM(66) },
-       { "omap-sham", "rx", SDMA_FILTER_PARAM(69) },
-       { "omap2_mcspi.3", "tx0", SDMA_FILTER_PARAM(70) },
-       { "omap2_mcspi.3", "rx0", SDMA_FILTER_PARAM(71) },
-       { "omap_hsmmc.2", "tx", SDMA_FILTER_PARAM(77) },
-       { "omap_hsmmc.2", "rx", SDMA_FILTER_PARAM(78) },
-       { "omap_uart.3", "tx", SDMA_FILTER_PARAM(81) },
-       { "omap_uart.3", "rx", SDMA_FILTER_PARAM(82) },
-};
-
 static struct omap_system_dma_plat_info dma_plat_info __initdata = {
        .reg_map        = reg_map,
        .channel_stride = 0x60,
@@ -352,24 +242,10 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused)
        p.dma_attr = (struct omap_dma_dev_attr *)oh->dev_attr;
        p.errata = configure_dma_errata();
 
-       if (!of_have_populated_dt()) {
-               if (soc_is_omap24xx()) {
-                       p.slave_map = omap24xx_sdma_map;
-                       p.slavecnt = ARRAY_SIZE(omap24xx_sdma_map);
-               } else if (soc_is_omap34xx() || soc_is_omap3630()) {
-                       p.slave_map = omap3xxx_sdma_map;
-                       p.slavecnt = ARRAY_SIZE(omap3xxx_sdma_map);
-               } else {
-                       pr_err("%s: The legacy DMA map is not provided!\n",
-                              __func__);
-                       return -ENODEV;
-               }
-       } else {
-               if (soc_is_omap24xx()) {
-                       /* DMA slave map for drivers not yet converted to DT */
-                       p.slave_map = omap24xx_sdma_dt_map;
-                       p.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map);
-               }
+       if (soc_is_omap24xx()) {
+               /* DMA slave map for drivers not yet converted to DT */
+               p.slave_map = omap24xx_sdma_dt_map;
+               p.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map);
        }
 
        pdev = omap_device_build(name, 0, oh, &p, sizeof(p));
@@ -413,21 +289,7 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused)
 
 static int __init omap2_system_dma_init(void)
 {
-       struct platform_device *pdev;
-       int res;
-
-       res = omap_hwmod_for_each_by_class("dma",
+       return omap_hwmod_for_each_by_class("dma",
                        omap2_system_dma_init_dev, NULL);
-       if (res)
-               return res;
-
-       if (of_have_populated_dt())
-               return res;
-
-       pdev = platform_device_register_full(&omap_dma_dev_info);
-       if (IS_ERR(pdev))
-               return PTR_ERR(pdev);
-
-       return res;
 }
 omap_arch_initcall(omap2_system_dma_init);
index e2274a162b74d688d56a4a6b67823db04345179d..16cb1c195fd8ef775c328b1273507875a9e6806b 100644 (file)
@@ -663,6 +663,15 @@ void __init dra7xxx_check_revision(void)
        hawkeye = (idcode >> 12) & 0xffff;
        rev = (idcode >> 28) & 0xff;
        switch (hawkeye) {
+       case 0xbb50:
+               switch (rev) {
+               case 0:
+               default:
+                       omap_revision = DRA762_REV_ES1_0;
+                       break;
+               }
+               break;
+
        case 0xb990:
                switch (rev) {
                case 0:
index 33e4953c61a8843b5dde41994b30ea41c52a0abf..69df3620eca5ce1720f88ab86cf5a36df891d7e7 100644 (file)
@@ -342,7 +342,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
                c = &omap443x_cfg;
        else if (soc_is_omap446x())
                c = &omap446x_cfg;
-       else if (soc_is_dra74x() || soc_is_omap54xx())
+       else if (soc_is_dra74x() || soc_is_omap54xx() || soc_is_dra76x())
                c = &omap5_cfg;
 
        if (!c) {
@@ -355,7 +355,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
        cfg.startup_addr = c->startup_addr;
        cfg.wakeupgen_base = omap_get_wakeupgen_base();
 
-       if (soc_is_dra74x() || soc_is_omap54xx()) {
+       if (soc_is_dra74x() || soc_is_omap54xx() || soc_is_dra76x()) {
                if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE)
                        cfg.startup_addr = omap5_secondary_hyp_startup;
                omap5_erratum_workaround_801819();
index 33ed5d53fa459d718d7fac0690846f50f8c1a144..4bb6751864a50e046e74c0952ad75571e1d979d0 100644 (file)
@@ -522,13 +522,13 @@ static int __init wakeupgen_init(struct device_node *node,
        u32 val;
 
        if (!parent) {
-               pr_err("%s: no parent, giving up\n", node->full_name);
+               pr_err("%pOF: no parent, giving up\n", node);
                return -ENODEV;
        }
 
        parent_domain = irq_find_host(parent);
        if (!parent_domain) {
-               pr_err("%s: unable to obtain parent domain\n", node->full_name);
+               pr_err("%pOF: unable to obtain parent domain\n", node);
                return -ENXIO;
        }
        /* Not supported on OMAP4 ES1.0 silicon */
index ef9ffb8ac9126d6cc744475d9a12f2f90994404e..acbede082b5b54f29a36e2cfd08f9bd23d1d7246 100644 (file)
@@ -672,7 +672,6 @@ static int _od_suspend_noirq(struct device *dev)
 
        if (!ret && !pm_runtime_status_suspended(dev)) {
                if (pm_generic_runtime_suspend(dev) == 0) {
-                       pm_runtime_set_suspended(dev);
                        omap_device_idle(pdev);
                        od->flags |= OMAP_DEVICE_SUSPENDED;
                }
@@ -689,15 +688,6 @@ static int _od_resume_noirq(struct device *dev)
        if (od->flags & OMAP_DEVICE_SUSPENDED) {
                od->flags &= ~OMAP_DEVICE_SUSPENDED;
                omap_device_enable(pdev);
-               /*
-                * XXX: we run before core runtime pm has resumed itself. At
-                * this point in time, we just restore the runtime pm state and
-                * considering symmetric operations in resume, we donot expect
-                * to fail. If we failed, something changed in core runtime_pm
-                * framework OR some device driver messed things up, hence, WARN
-                */
-               WARN(pm_runtime_set_active(dev),
-                    "Could not set %s runtime state active\n", dev_name(dev));
                pm_generic_runtime_resume(dev);
        }
 
index 3b47ded5fa0cb768617aea1d73429951ac061eaa..2dbd63239c5486fcba38476ed00f4c208448e899 100644 (file)
@@ -2417,8 +2417,8 @@ static int __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data,
                if (mem)
                        pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
                else
-                       pr_err("omap_hwmod: %s: Missing dt reg%i for %s\n",
-                              oh->name, index, np->full_name);
+                       pr_err("omap_hwmod: %s: Missing dt reg%i for %pOF\n",
+                              oh->name, index, np);
                return -ENXIO;
        }
 
index b3abb8d8b2f6add6af321ecadc1a7ed9ca158cca..f040244c57e73f381c0004e730ff1664f9300e00 100644 (file)
@@ -4070,6 +4070,11 @@ static struct omap_hwmod_ocp_if *dra7xx_gp_hwmod_ocp_ifs[] __initdata = {
 };
 
 /* SoC variant specific hwmod links */
+static struct omap_hwmod_ocp_if *dra76x_hwmod_ocp_ifs[] __initdata = {
+       &dra7xx_l4_per3__usb_otg_ss4,
+       NULL,
+};
+
 static struct omap_hwmod_ocp_if *dra74x_hwmod_ocp_ifs[] __initdata = {
        &dra7xx_l4_per3__usb_otg_ss4,
        NULL,
@@ -4095,12 +4100,14 @@ int __init dra7xx_hwmod_init(void)
                ret = omap_hwmod_register_links(dra74x_hwmod_ocp_ifs);
        else if (!ret && soc_is_dra72x())
                ret = omap_hwmod_register_links(dra72x_hwmod_ocp_ifs);
+       else if (!ret && soc_is_dra76x())
+               ret = omap_hwmod_register_links(dra76x_hwmod_ocp_ifs);
 
        if (!ret && omap_type() == OMAP2_DEVICE_TYPE_GP)
                ret = omap_hwmod_register_links(dra7xx_gp_hwmod_ocp_ifs);
 
-       /* now for the IPs *NOT* in dra71 */
-       if (!ret && !of_machine_is_compatible("ti,dra718"))
+       /* now for the IPs available only in dra74 and dra72 */
+       if (!ret && !of_machine_is_compatible("ti,dra718") && !soc_is_dra76x())
                ret = omap_hwmod_register_links(dra74x_dra72x_hwmod_ocp_ifs);
 
        return ret;
index 9700a8ef0f1676bafe1405bddbc25b2076df4e05..6b433fce65a5beaaab3b3cd0e1d23853ac0d26d0 100644 (file)
@@ -434,6 +434,26 @@ static void __init omap5_uevm_legacy_init(void)
 }
 #endif
 
+#ifdef CONFIG_SOC_DRA7XX
+static struct omap_hsmmc_platform_data dra7_hsmmc_data_mmc1;
+static struct omap_hsmmc_platform_data dra7_hsmmc_data_mmc2;
+static struct omap_hsmmc_platform_data dra7_hsmmc_data_mmc3;
+
+static void __init dra7x_evm_mmc_quirk(void)
+{
+       if (omap_rev() == DRA752_REV_ES1_1 || omap_rev() == DRA752_REV_ES1_0) {
+               dra7_hsmmc_data_mmc1.version = "rev11";
+               dra7_hsmmc_data_mmc1.max_freq = 96000000;
+
+               dra7_hsmmc_data_mmc2.version = "rev11";
+               dra7_hsmmc_data_mmc2.max_freq = 48000000;
+
+               dra7_hsmmc_data_mmc3.version = "rev11";
+               dra7_hsmmc_data_mmc3.max_freq = 48000000;
+       }
+}
+#endif
+
 static struct pcs_pdata pcs_pdata;
 
 void omap_pcs_legacy_init(int irq, void (*rearm)(void))
@@ -560,6 +580,14 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
                       &omap4_iommu_pdata),
        OF_DEV_AUXDATA("ti,omap4-iommu", 0x55082000, "55082000.mmu",
                       &omap4_iommu_pdata),
+#endif
+#ifdef CONFIG_SOC_DRA7XX
+       OF_DEV_AUXDATA("ti,dra7-hsmmc", 0x4809c000, "4809c000.mmc",
+                      &dra7_hsmmc_data_mmc1),
+       OF_DEV_AUXDATA("ti,dra7-hsmmc", 0x480b4000, "480b4000.mmc",
+                      &dra7_hsmmc_data_mmc2),
+       OF_DEV_AUXDATA("ti,dra7-hsmmc", 0x480ad000, "480ad000.mmc",
+                      &dra7_hsmmc_data_mmc3),
 #endif
        /* Common auxdata */
        OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
@@ -589,6 +617,9 @@ static struct pdata_init pdata_quirks[] __initdata = {
 #endif
 #ifdef CONFIG_SOC_OMAP5
        { "ti,omap5-uevm", omap5_uevm_legacy_init, },
+#endif
+#ifdef CONFIG_SOC_DRA7XX
+       { "ti,dra7-evm", dra7x_evm_mmc_quirk, },
 #endif
        { /* sentinel */ },
 };
index eb350a67313367ca8c3fe405f0119c7225832180..f50963916a211382aea622c9a26f755f4fad08ad 100644 (file)
@@ -29,6 +29,7 @@
 #include "prcm44xx.h"
 #include "prm7xx.h"
 #include "prcm_mpu7xx.h"
+#include "soc.h"
 
 /* iva_7xx_pwrdm: IVA-HD power domain */
 static struct powerdomain iva_7xx_pwrdm = {
@@ -63,6 +64,14 @@ static struct powerdomain custefuse_7xx_pwrdm = {
        .flags            = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
+/* custefuse_aon_7xx_pwrdm: Customer efuse controller power domain */
+static struct powerdomain custefuse_aon_7xx_pwrdm = {
+       .name             = "custefuse_pwrdm",
+       .prcm_offs        = DRA7XX_PRM_CUSTEFUSE_INST,
+       .prcm_partition   = DRA7XX_PRM_PARTITION,
+       .pwrsts           = PWRSTS_ON,
+};
+
 /* ipu_7xx_pwrdm: Audio back end power domain */
 static struct powerdomain ipu_7xx_pwrdm = {
        .name             = "ipu_pwrdm",
@@ -350,7 +359,6 @@ static struct powerdomain eve1_7xx_pwrdm = {
 static struct powerdomain *powerdomains_dra7xx[] __initdata = {
        &iva_7xx_pwrdm,
        &rtc_7xx_pwrdm,
-       &custefuse_7xx_pwrdm,
        &ipu_7xx_pwrdm,
        &dss_7xx_pwrdm,
        &l4per_7xx_pwrdm,
@@ -374,9 +382,32 @@ static struct powerdomain *powerdomains_dra7xx[] __initdata = {
        NULL
 };
 
+static struct powerdomain *powerdomains_dra76x[] __initdata = {
+       &custefuse_aon_7xx_pwrdm,
+       NULL
+};
+
+static struct powerdomain *powerdomains_dra74x[] __initdata = {
+       &custefuse_7xx_pwrdm,
+       NULL
+};
+
+static struct powerdomain *powerdomains_dra72x[] __initdata = {
+       &custefuse_aon_7xx_pwrdm,
+       NULL
+};
+
 void __init dra7xx_powerdomains_init(void)
 {
        pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
        pwrdm_register_pwrdms(powerdomains_dra7xx);
+
+       if (soc_is_dra76x())
+               pwrdm_register_pwrdms(powerdomains_dra76x);
+       else if (soc_is_dra74x())
+               pwrdm_register_pwrdms(powerdomains_dra74x);
+       else if (soc_is_dra72x())
+               pwrdm_register_pwrdms(powerdomains_dra72x);
+
        pwrdm_complete_init();
 }
index 64f6451499a795de85fd451903de1d9aef59ba7a..a2dd13217c891d269d6832ab014130ad66e1b986 100644 (file)
@@ -706,7 +706,7 @@ static int omap3xxx_prm_late_init(void)
        np = of_find_matching_node(NULL, omap3_prm_dt_match_table);
        if (np) {
                irq_num = of_irq_get(np, 0);
-               if (irq_num >= 0)
+               if (irq_num > 0)
                        omap3_prcm_irq_setup.irq = irq_num;
        }
 
index 3ab5df1ce900b26f91b8b582a36188bd281c6c3c..1c0c1663f078ae583c0b43350c01c2379c85e276 100644 (file)
@@ -747,7 +747,7 @@ static int omap44xx_prm_late_init(void)
         * Already have OMAP4 IRQ num. For all other platforms, we need
         * IRQ numbers from DT
         */
-       if (irq_num < 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
+       if (irq_num <= 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
                if (irq_num == -EPROBE_DEFER)
                        return irq_num;
 
@@ -756,7 +756,7 @@ static int omap44xx_prm_late_init(void)
        }
 
        /* Once OMAP4 DT is filled as well */
-       if (irq_num >= 0) {
+       if (irq_num > 0) {
                omap4_prcm_irq_setup.irq = irq_num;
                omap4_prcm_irq_setup.xlate_irq = NULL;
        }
index 2aa01c270898fe64e1fc262efeb1090654b6530c..754cd0fc0e7b5302bb283033784319f85df65da8 100644 (file)
@@ -167,6 +167,7 @@ IS_TI_SUBCLASS(816x, 0x816)
 IS_TI_SUBCLASS(814x, 0x814)
 IS_AM_SUBCLASS(335x, 0x335)
 IS_AM_SUBCLASS(437x, 0x437)
+IS_DRA_SUBCLASS(76x, 0x76)
 IS_DRA_SUBCLASS(75x, 0x75)
 IS_DRA_SUBCLASS(72x, 0x72)
 
@@ -185,6 +186,7 @@ IS_DRA_SUBCLASS(72x, 0x72)
 #define soc_is_omap54xx()              0
 #define soc_is_omap543x()              0
 #define soc_is_dra7xx()                        0
+#define soc_is_dra76x()                        0
 #define soc_is_dra74x()                        0
 #define soc_is_dra72x()                        0
 
@@ -314,9 +316,11 @@ IS_OMAP_TYPE(3430, 0x3430)
 
 #if defined(CONFIG_SOC_DRA7XX)
 #undef soc_is_dra7xx
+#undef soc_is_dra76x
 #undef soc_is_dra74x
 #undef soc_is_dra72x
 #define soc_is_dra7xx()        is_dra7xx()
+#define soc_is_dra76x()        is_dra76x()
 #define soc_is_dra74x()        is_dra75x()
 #define soc_is_dra72x()        is_dra72x()
 #endif
@@ -386,6 +390,7 @@ IS_OMAP_TYPE(3430, 0x3430)
 #define OMAP5432_REV_ES2_0     (OMAP54XX_CLASS | (0x32 << 16) | (0x20 << 8))
 
 #define DRA7XX_CLASS           0x07000000
+#define DRA762_REV_ES1_0       (DRA7XX_CLASS | (0x62 << 16) | (0x10 << 8))
 #define DRA752_REV_ES1_0       (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
 #define DRA752_REV_ES1_1       (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
 #define DRA752_REV_ES2_0       (DRA7XX_CLASS | (0x52 << 16) | (0x20 << 8))
index 9ad84cd01ba01e6c213ba4936ce14719327cc908..a4065966881ae44d318ec4193d7091269541970c 100644 (file)
@@ -3,6 +3,7 @@ config ARCH_ROCKCHIP
        depends on ARCH_MULTI_V7
        select PINCTRL
        select PINCTRL_ROCKCHIP
+       select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
        select ARCH_HAS_RESET_CONTROLLER
        select ARM_AMBA
        select ARM_GIC
@@ -16,6 +17,7 @@ config ARCH_ROCKCHIP
        select ROCKCHIP_TIMER
        select ARM_GLOBAL_TIMER
        select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
+       select ZONE_DMA if ARM_LPAE
        help
          Support for Rockchip's Cortex-A9 Single-to-Quad-Core-SoCs
          containing the RK2928, RK30xx and RK31xx series.
index 3abafdbdd7f4a24d7afed4aa53f196aab838ac92..ecec340ca3457ed4e0edee89e86ee9a1778e65dd 100644 (file)
@@ -67,7 +67,7 @@ static struct reset_control *rockchip_get_core_reset(int cpu)
        else
                np = of_get_cpu_node(cpu, NULL);
 
-       return of_reset_control_get(np, NULL);
+       return of_reset_control_get_exclusive(np, NULL);
 }
 
 static int pmu_set_power_domain(int pd, bool on)
@@ -182,8 +182,8 @@ static int __init rockchip_smp_prepare_sram(struct device_node *node)
 
        ret = of_address_to_resource(node, 0, &res);
        if (ret < 0) {
-               pr_err("%s: could not get address for node %s\n",
-                      __func__, node->full_name);
+               pr_err("%s: could not get address for node %pOF\n",
+                      __func__, node);
                return ret;
        }
 
index f07da82ebfea8171de6dac3c21c471ed1ae0514c..b198be7d32b67595805f4ec832eac98bef8377a7 100644 (file)
@@ -229,7 +229,7 @@ config ARCH_H1940
 config H1940BT
        tristate "Control the state of H1940 bluetooth chip"
        depends on ARCH_H1940
-       select RFKILL
+       depends on RFKILL
        help
          This is a simple driver that is able to control
          the state of built in bluetooth chip on h1940.
index b59f4f4f256f2bd6785b086c40bbefb0bb68315c..5b6b94ef41e28418a843562138fafce4b792879b 100644 (file)
@@ -173,7 +173,7 @@ static unsigned long s3c24xx_read_idcode_v5(void)
                return gs;
 #endif
 
-#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
+#if defined(CONFIG_CPU_S3C2412)
        return __raw_readl(S3C2412_GSTATUS1);
 #else
        return 1UL;     /* don't look like an 2400 */
index 3db6c10de023f44dd14323b60a7c3f248d9e3829..ae4a3e0f3ba20bd8d0437fdd0122b6b00f22a186 100644 (file)
@@ -77,7 +77,7 @@
 
 #endif /* CONFIG_CPU_S3C2440 or CONFIG_CPU_S3C2442 */
 
-#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
+#if defined(CONFIG_CPU_S3C2412)
 
 #define S3C2412_OSCSET         S3C2410_CLKREG(0x18)
 #define S3C2412_CLKSRC         S3C2410_CLKREG(0x1C)
 #define S3C2412_CLKSRC_UREFCLK_EXTCLK  (1<<12)
 #define S3C2412_CLKSRC_EREFCLK_EXTCLK  (1<<14)
 
-#endif /* CONFIG_CPU_S3C2412 | CONFIG_CPU_S3C2413 */
+#endif /* CONFIG_CPU_S3C2412 */
 
 #define S3C2416_CLKDIV2                S3C2410_CLKREG(0x28)
 
index 71af8d2fd3201ffd95fa8588a440905d6a44abad..ff0adcdf1dc106c65a9c799f21144a54274bb97f 100644 (file)
@@ -287,7 +287,7 @@ static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
        .nr_sets        = ARRAY_SIZE(mini2440_nand_sets),
        .sets           = mini2440_nand_sets,
        .ignore_unset_ecc = 1,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .ecc_mode       = NAND_ECC_HW,
 };
 
 /* DM9000AEP 10/100 ethernet controller */
index 87fe5c5b80739fb9c36627943e813260a619406f..474cd81aa8ad58bd261e1fc0371ea8a19bf30369 100644 (file)
@@ -111,9 +111,6 @@ static struct platform_device *smdk2443_devices[] __initdata = {
        &s3c_device_wdt,
        &s3c_device_i2c0,
        &s3c_device_hsmmc1,
-#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
-       &s3c_device_ac97,
-#endif
        &s3c2443_device_dma,
 };
 
@@ -133,11 +130,6 @@ static void __init smdk2443_init_time(void)
 static void __init smdk2443_machine_init(void)
 {
        s3c_i2c0_set_platdata(NULL);
-
-#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
-       s3c24xx_ac97_setup_gpio(S3C24XX_AC97_GPE0);
-#endif
-
        platform_add_devices(smdk2443_devices, ARRAY_SIZE(smdk2443_devices));
        smdk_machine_init();
 }
index d833d616bd2ed0177d7e7342f6a1673e7051c322..b859268fa8da1f1bb692167a5ba7c209206a4c5e 100644 (file)
 #include <mach/regs-gpio.h>
 #include <mach/regs-clock.h>
 
-/* CONFIG_DEBUG_RESUME is dangerous if your bootloader does not
+/*
+ * S3C24XX_DEBUG_RESUME is dangerous if your bootloader does not
  * reset the UART configuration, only enable if you really need this!
-*/
-//#define CONFIG_DEBUG_RESUME
+ */
+//#define S3C24XX_DEBUG_RESUME
 
        .text
 
@@ -71,13 +72,13 @@ ENTRY(s3c_cpu_resume)
        str     r12, [ r14, #0x54 ]
 #endif
 
-#ifdef CONFIG_DEBUG_RESUME
+#ifdef S3C24XX_DEBUG_RESUME
        mov     r3, #'L'
        strb    r3, [ r2, #S3C2410_UTXH ]
 1001:
        ldrb    r14, [ r3, #S3C2410_UTRSTAT ]
        tst     r14, #S3C2410_UTRSTAT_TXE
        beq     1001b
-#endif /* CONFIG_DEBUG_RESUME */
+#endif /* S3C24XX_DEBUG_RESUME */
 
        b       cpu_resume
index ad7d604ff0013268eab461bd2f37ddc8d019879a..280e7312a9e1b300d07124239118de2735e2df04 100644 (file)
@@ -1,9 +1,6 @@
 config ARCH_SHMOBILE
        bool
 
-config ARCH_SHMOBILE_MULTI
-       bool
-
 config PM_RMOBILE
        bool
        select PM
@@ -34,7 +31,6 @@ menuconfig ARCH_RENESAS
        depends on ARCH_MULTI_V7 && MMU
        select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
        select ARCH_SHMOBILE
-       select ARCH_SHMOBILE_MULTI
        select ARM_GIC
        select GPIOLIB
        select HAVE_ARM_SCU if SMP
index 0178da7ace82dcbd65b08b3eed9192dc6078ff81..e5f215c8b218100af7cc5f2ca079d78420b24571 100644 (file)
@@ -11,7 +11,9 @@
  */
 
 #include <linux/kernel.h>
+#include <linux/ioport.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 #include <linux/smp.h>
 #include <linux/soc/renesas/rcar-sysc.h>
 #include <asm/io.h>
@@ -69,8 +71,9 @@ void __init rcar_gen2_pm_init(void)
        struct device_node *np, *cpus;
        bool has_a7 = false;
        bool has_a15 = false;
-       phys_addr_t boot_vector_addr = ICRAM1;
+       struct resource res;
        u32 syscier = 0;
+       int error;
 
        if (once++)
                return;
@@ -91,14 +94,38 @@ void __init rcar_gen2_pm_init(void)
        else if (of_machine_is_compatible("renesas,r8a7791"))
                syscier = 0x00111003;
 
+       np = of_find_compatible_node(NULL, NULL, "renesas,smp-sram");
+       if (!np) {
+               /* No smp-sram in DT, fall back to hardcoded address */
+               res = (struct resource)DEFINE_RES_MEM(ICRAM1,
+                                                     shmobile_boot_size);
+               goto map;
+       }
+
+       error = of_address_to_resource(np, 0, &res);
+       if (error) {
+               pr_err("Failed to get smp-sram address: %d\n", error);
+               return;
+       }
+
+map:
        /* RAM for jump stub, because BAR requires 256KB aligned address */
-       p = ioremap_nocache(boot_vector_addr, shmobile_boot_size);
+       if (res.start & (256 * 1024 - 1) ||
+           resource_size(&res) < shmobile_boot_size) {
+               pr_err("Invalid smp-sram region\n");
+               return;
+       }
+
+       p = ioremap(res.start, resource_size(&res));
+       if (!p)
+               return;
+
        memcpy_toio(p, shmobile_boot_vector, shmobile_boot_size);
        iounmap(p);
 
        /* setup reset vectors */
        p = ioremap_nocache(RST, 0x63);
-       bar = phys_to_sbar(boot_vector_addr);
+       bar = phys_to_sbar(res.start);
        if (has_a15) {
                writel_relaxed(bar, p + CA15BAR);
                writel_relaxed(bar | SBAR_BAREN, p + CA15BAR);
index 699429f28b737e9e7ad7105f7809fdb34f200e41..3a4ed4c33a68e51e0f213c9c6407a618eb4c4507 100644 (file)
@@ -195,8 +195,7 @@ static void __init add_special_pd(struct device_node *np, enum pd_types type)
                return;
        }
 
-       pr_debug("Special PM domain %s type %d for %s\n", pd->name, type,
-                np->full_name);
+       pr_debug("Special PM domain %s type %d for %pOF\n", pd->name, type, np);
 
        special_pds[num_special_pds].pd = pd;
        special_pds[num_special_pds].type = type;
@@ -331,13 +330,13 @@ static int __init rmobile_init_pm_domains(void)
        for_each_compatible_node(np, NULL, "renesas,sysc-rmobile") {
                base = of_iomap(np, 0);
                if (!base) {
-                       pr_warn("%s cannot map reg 0\n", np->full_name);
+                       pr_warn("%pOF cannot map reg 0\n", np);
                        continue;
                }
 
                pmd = of_get_child_by_name(np, "pm-domains");
                if (!pmd) {
-                       pr_warn("%s lacks pm-domains node\n", np->full_name);
+                       pr_warn("%pOF lacks pm-domains node\n", np);
                        continue;
                }
 
index a6e74f481dea2005dd0cfaf975e3a00095228c80..7ab1690fab8299ebdc5d01221b5026422b2ddff5 100644 (file)
 #include "common.h"
 #include "rcar-gen2.h"
 
+static const struct of_device_id cpg_matches[] __initconst = {
+       { .compatible = "renesas,rcar-gen2-cpg-clocks", },
+       { .compatible = "renesas,r8a7743-cpg-mssr", .data = "extal" },
+       { .compatible = "renesas,r8a7790-cpg-mssr", .data = "extal" },
+       { .compatible = "renesas,r8a7791-cpg-mssr", .data = "extal" },
+       { .compatible = "renesas,r8a7793-cpg-mssr", .data = "extal" },
+       { /* sentinel */ }
+};
+
 static unsigned int __init get_extal_freq(void)
 {
+       const struct of_device_id *match;
        struct device_node *cpg, *extal;
        u32 freq = 20000000;
+       int idx = 0;
 
-       cpg = of_find_compatible_node(NULL, NULL,
-                                     "renesas,rcar-gen2-cpg-clocks");
+       cpg = of_find_matching_node_and_match(NULL, cpg_matches, &match);
        if (!cpg)
                return freq;
 
-       extal = of_parse_phandle(cpg, "clocks", 0);
+       if (match->data)
+               idx = of_property_match_string(cpg, "clock-names", match->data);
+       extal = of_parse_phandle(cpg, "clocks", idx);
        of_node_put(cpg);
        if (!extal)
                return freq;
@@ -58,7 +70,8 @@ void __init rcar_gen2_timer_init(void)
        void __iomem *base;
        u32 freq;
 
-       if (of_machine_is_compatible("renesas,r8a7792") ||
+       if (of_machine_is_compatible("renesas,r8a7745") ||
+           of_machine_is_compatible("renesas,r8a7792") ||
            of_machine_is_compatible("renesas,r8a7794")) {
                freq = 260000000 / 8;   /* ZS / 8 */
                /* CNTVOFF has to be initialized either from non-secure
index 329f01c5b6f89cf0f58849392e943eff10cf4ba7..c8368d64774178ff6d2723c5d6a63a3256a483cb 100644 (file)
@@ -13,5 +13,7 @@ menuconfig ARCH_TEGRA
        select ARCH_HAS_RESET_CONTROLLER
        select RESET_CONTROLLER
        select SOC_BUS
+       select ZONE_DMA if ARM_LPAE
+       select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
        help
          This enables support for NVIDIA Tegra based systems.
index 6feedd47d87543d8cc802f9e8d8679cc9df07b55..33104911862e39d6c585beb1d252bc379607e659 100644 (file)
@@ -61,7 +61,7 @@
 
 /* deal with the registers that move under the 2412/2413 */
 
-#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
+#if defined(CONFIG_CPU_S3C2412)
 #ifndef __ASSEMBLY__
 extern void __iomem *s3c24xx_va_gpio2;
 #endif
index bf500e0e7362baf72f7a4321e5fda55dc4355f9b..77791f3dcfc657f3537c6aca29c9a9488ff4949f 100644 (file)
@@ -70,8 +70,10 @@ static int omap_ocp2scp_probe(struct platform_device *pdev)
        if (!of_device_is_compatible(np, "ti,am437x-ocp2scp")) {
                res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
                regs = devm_ioremap_resource(&pdev->dev, res);
-               if (IS_ERR(regs))
-                       goto err0;
+               if (IS_ERR(regs)) {
+                       ret = PTR_ERR(regs);
+                       goto err1;
+               }
 
                pm_runtime_get_sync(&pdev->dev);
                reg = readl_relaxed(regs + OCP2SCP_TIMING);
@@ -83,6 +85,9 @@ static int omap_ocp2scp_probe(struct platform_device *pdev)
 
        return 0;
 
+err1:
+       pm_runtime_disable(&pdev->dev);
+
 err0:
        device_for_each_child(&pdev->dev, NULL, ocp2scp_remove_devices);
 
index 282e371378ce4bba7d36b2b2f5969d91ea4b3687..caf698e5f0b0b0be72e0ba9bfdfde700e9617958 100644 (file)
@@ -85,7 +85,7 @@ static struct device_attribute realview_build_attr =
 
 static int realview_soc_probe(struct platform_device *pdev)
 {
-       static struct regmap *syscon_regmap;
+       struct regmap *syscon_regmap;
        struct soc_device *soc_dev;
        struct soc_device_attribute *soc_dev_attr;
        struct device_node *np = pdev->dev.of_node;
index 0ff1e0dba7201b146a561369ddb3deedfe4d7d67..73d9098ada2d816b9d24bb81674549a51804c6c2 100644 (file)
@@ -67,6 +67,9 @@ struct omap_hsmmc_platform_data {
 #define HSMMC_HAS_HSPE_SUPPORT (1 << 2)
        unsigned features;
 
+       /* string specifying a particular variant of hardware */
+       char *version;
+
        int gpio_cd;                    /* gpio (card detect) */
        int gpio_cod;                   /* gpio (cover detect) */
        int gpio_wp;                    /* gpio (write protect) */