فهرست منبع

Merge tag 'v4.4-rc5' into perf/core, to pick up fixes

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar 9 سال پیش
والد
کامیت
057032e457
100فایلهای تغییر یافته به همراه495 افزوده شده و 378 حذف شده
  1. 0 18
      Documentation/arm/keystone/Overview.txt
  2. 3 0
      Documentation/block/null_blk.txt
  3. 4 0
      Documentation/devicetree/bindings/gpio/gpio-mpc8xxx.txt
  4. 6 0
      Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt
  5. 3 1
      Documentation/devicetree/bindings/thermal/rockchip-thermal.txt
  6. 12 7
      MAINTAINERS
  7. 1 1
      Makefile
  8. 1 1
      arch/arc/configs/axs101_defconfig
  9. 1 1
      arch/arc/configs/axs103_defconfig
  10. 1 1
      arch/arc/configs/axs103_smp_defconfig
  11. 1 1
      arch/arc/configs/nsim_hs_defconfig
  12. 1 1
      arch/arc/configs/nsim_hs_smp_defconfig
  13. 1 1
      arch/arc/configs/nsimosci_hs_defconfig
  14. 1 1
      arch/arc/configs/nsimosci_hs_smp_defconfig
  15. 1 1
      arch/arc/configs/vdk_hs38_defconfig
  16. 1 1
      arch/arc/configs/vdk_hs38_smp_defconfig
  17. 3 0
      arch/arc/include/asm/irqflags-arcv2.h
  18. 2 0
      arch/arc/include/asm/irqflags-compact.h
  19. 0 2
      arch/arc/kernel/ctx_sw.c
  20. 0 3
      arch/arc/kernel/ctx_sw_asm.S
  21. 4 5
      arch/arc/kernel/process.c
  22. 4 33
      arch/arc/kernel/unwind.c
  23. 2 2
      arch/arc/mm/tlb.c
  24. 2 2
      arch/arm/Kconfig
  25. 2 2
      arch/arm/boot/dts/am4372.dtsi
  26. 8 0
      arch/arm/boot/dts/am43xx-clocks.dtsi
  27. 1 0
      arch/arm/boot/dts/am57xx-beagle-x15.dts
  28. 3 3
      arch/arm/boot/dts/animeo_ip.dts
  29. 1 0
      arch/arm/boot/dts/armada-38x.dtsi
  30. 1 1
      arch/arm/boot/dts/at91-foxg20.dts
  31. 2 11
      arch/arm/boot/dts/at91-kizbox.dts
  32. 3 3
      arch/arm/boot/dts/at91-kizbox2.dts
  33. 2 2
      arch/arm/boot/dts/at91-kizboxmini.dts
  34. 1 1
      arch/arm/boot/dts/at91-qil_a9260.dts
  35. 107 9
      arch/arm/boot/dts/at91-sama5d2_xplained.dts
  36. 1 1
      arch/arm/boot/dts/at91-sama5d3_xplained.dts
  37. 1 11
      arch/arm/boot/dts/at91-sama5d4_xplained.dts
  38. 1 11
      arch/arm/boot/dts/at91-sama5d4ek.dts
  39. 0 9
      arch/arm/boot/dts/at91rm9200ek.dts
  40. 5 14
      arch/arm/boot/dts/at91sam9261ek.dts
  41. 2 11
      arch/arm/boot/dts/at91sam9263ek.dts
  42. 2 11
      arch/arm/boot/dts/at91sam9g20ek_common.dtsi
  43. 2 11
      arch/arm/boot/dts/at91sam9m10g45ek.dts
  44. 1 10
      arch/arm/boot/dts/at91sam9n12ek.dts
  45. 2 11
      arch/arm/boot/dts/at91sam9rlek.dts
  46. 0 11
      arch/arm/boot/dts/at91sam9x5cm.dtsi
  47. 5 3
      arch/arm/boot/dts/berlin2q.dtsi
  48. 6 2
      arch/arm/boot/dts/dm816x.dtsi
  49. 2 2
      arch/arm/boot/dts/dra7.dtsi
  50. 1 1
      arch/arm/boot/dts/k2l-netcp.dtsi
  51. 1 1
      arch/arm/boot/dts/kirkwood-ts219.dtsi
  52. 4 0
      arch/arm/boot/dts/rk3288-veyron-minnie.dts
  53. 8 2
      arch/arm/boot/dts/rk3288.dtsi
  54. 1 1
      arch/arm/boot/dts/sama5d35ek.dts
  55. 1 1
      arch/arm/boot/dts/sama5d4.dtsi
  56. 1 1
      arch/arm/boot/dts/usb_a9260_common.dtsi
  57. 1 1
      arch/arm/boot/dts/usb_a9263.dts
  58. 0 5
      arch/arm/boot/dts/vf610-colibri.dtsi
  59. 1 1
      arch/arm/boot/dts/vf610.dtsi
  60. 8 6
      arch/arm/boot/dts/vfxxx.dtsi
  61. 0 1
      arch/arm/configs/at91_dt_defconfig
  62. 0 1
      arch/arm/configs/sama5_defconfig
  63. 1 0
      arch/arm/include/asm/arch_gicv3.h
  64. 5 0
      arch/arm/include/asm/irq.h
  65. 12 0
      arch/arm/include/asm/kvm_emulate.h
  66. 1 0
      arch/arm/include/uapi/asm/unistd.h
  67. 11 8
      arch/arm/kernel/bios32.c
  68. 1 0
      arch/arm/kernel/calls.S
  69. 1 6
      arch/arm/kvm/arm.c
  70. 3 2
      arch/arm/kvm/mmio.c
  71. 7 8
      arch/arm/kvm/mmu.c
  72. 10 10
      arch/arm/kvm/psci.c
  73. 5 1
      arch/arm/mach-at91/Kconfig
  74. 6 1
      arch/arm/mach-at91/pm.c
  75. 2 2
      arch/arm/mach-dove/include/mach/entry-macro.S
  76. 5 1
      arch/arm/mach-exynos/pmu.c
  77. 1 0
      arch/arm/mach-imx/gpc.c
  78. 6 6
      arch/arm/mach-ixp4xx/include/mach/io.h
  79. 1 1
      arch/arm/mach-omap2/Kconfig
  80. 3 3
      arch/arm/mach-omap2/omap-smp.c
  81. 36 30
      arch/arm/mach-omap2/omap_hwmod.c
  82. 3 0
      arch/arm/mach-omap2/omap_hwmod.h
  83. 56 0
      arch/arm/mach-omap2/omap_hwmod_7xx_data.c
  84. 3 0
      arch/arm/mach-omap2/omap_hwmod_81xx_data.c
  85. 0 29
      arch/arm/mach-omap2/pdata-quirks.c
  86. 2 2
      arch/arm/mach-omap2/pm34xx.c
  87. 1 1
      arch/arm/mach-orion5x/include/mach/entry-macro.S
  88. 5 0
      arch/arm/mach-pxa/ezx.c
  89. 1 1
      arch/arm/mach-pxa/palm27x.c
  90. 1 1
      arch/arm/mach-pxa/palmtc.c
  91. 1 1
      arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c
  92. 1 1
      arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c
  93. 1 1
      arch/arm/mach-shmobile/setup-r8a7793.c
  94. 1 1
      arch/arm/mach-zx/Kconfig
  95. 22 1
      arch/arm64/Kconfig
  96. 5 0
      arch/arm64/boot/dts/freescale/fsl-ls2080a.dtsi
  97. 1 0
      arch/arm64/include/asm/arch_gicv3.h
  98. 22 3
      arch/arm64/include/asm/cpufeature.h
  99. 4 2
      arch/arm64/include/asm/hw_breakpoint.h
  100. 5 0
      arch/arm64/include/asm/irq.h

+ 0 - 18
Documentation/arm/keystone/Overview.txt

@@ -49,24 +49,6 @@ specified through DTS. Following are the DTS used:-
 The device tree documentation for the keystone machines are located at
 The device tree documentation for the keystone machines are located at
         Documentation/devicetree/bindings/arm/keystone/keystone.txt
         Documentation/devicetree/bindings/arm/keystone/keystone.txt
 
 
-Known issues & workaround
--------------------------
-
-Some of the device drivers used on keystone are re-used from that from
-DaVinci and other TI SoCs. These device drivers may use clock APIs directly.
-Some of the keystone specific drivers such as netcp uses run time power
-management API instead to enable clock. As this API has limitations on
-keystone, following workaround is needed to boot Linux.
-
-   Add 'clk_ignore_unused' to the bootargs env variable in u-boot. Otherwise
-   clock frameworks will try to disable clocks that are unused and disable
-   the hardware. This is because netcp related power domain and clock
-   domains are enabled in u-boot as run time power management API currently
-   doesn't enable clocks for netcp due to a limitation. This workaround is
-   expected to be removed in the future when proper API support becomes
-   available. Until then, this work around is needed.
-
-
 Document Author
 Document Author
 ---------------
 ---------------
 Murali Karicheri <m-karicheri2@ti.com>
 Murali Karicheri <m-karicheri2@ti.com>

+ 3 - 0
Documentation/block/null_blk.txt

@@ -70,3 +70,6 @@ use_per_node_hctx=[0/1]: Default: 0
      parameter.
      parameter.
   1: The multi-queue block layer is instantiated with a hardware dispatch
   1: The multi-queue block layer is instantiated with a hardware dispatch
      queue for each CPU node in the system.
      queue for each CPU node in the system.
+
+use_lightnvm=[0/1]: Default: 0
+  Register device with LightNVM. Requires blk-mq to be used.

+ 4 - 0
Documentation/devicetree/bindings/gpio/gpio-mpc8xxx.txt

@@ -11,6 +11,10 @@ Required properties:
       0 = active high
       0 = active high
       1 = active low
       1 = active low
 
 
+Optional properties:
+- little-endian : GPIO registers are used as little endian. If not
+                  present registers are used as big endian by default.
+
 Example:
 Example:
 
 
 gpio0: gpio@1100 {
 gpio0: gpio@1100 {

+ 6 - 0
Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt

@@ -8,6 +8,11 @@ Required properties:
 - phy-mode: See ethernet.txt file in the same directory
 - phy-mode: See ethernet.txt file in the same directory
 - clocks: a pointer to the reference clock for this device.
 - clocks: a pointer to the reference clock for this device.
 
 
+Optional properties:
+- tx-csum-limit: maximum mtu supported by port that allow TX checksum.
+  Value is presented in bytes. If not used, by default 1600B is set for
+  "marvell,armada-370-neta" and 9800B for others.
+
 Example:
 Example:
 
 
 ethernet@d0070000 {
 ethernet@d0070000 {
@@ -15,6 +20,7 @@ ethernet@d0070000 {
 	reg = <0xd0070000 0x2500>;
 	reg = <0xd0070000 0x2500>;
 	interrupts = <8>;
 	interrupts = <8>;
 	clocks = <&gate_clk 4>;
 	clocks = <&gate_clk 4>;
+	tx-csum-limit = <9800>
 	status = "okay";
 	status = "okay";
 	phy = <&phy0>;
 	phy = <&phy0>;
 	phy-mode = "rgmii-id";
 	phy-mode = "rgmii-id";

+ 3 - 1
Documentation/devicetree/bindings/thermal/rockchip-thermal.txt

@@ -1,7 +1,9 @@
 * Temperature Sensor ADC (TSADC) on rockchip SoCs
 * Temperature Sensor ADC (TSADC) on rockchip SoCs
 
 
 Required properties:
 Required properties:
-- compatible : "rockchip,rk3288-tsadc"
+- compatible : should be "rockchip,<name>-tsadc"
+   "rockchip,rk3288-tsadc": found on RK3288 SoCs
+   "rockchip,rk3368-tsadc": found on RK3368 SoCs
 - reg : physical base address of the controller and length of memory mapped
 - reg : physical base address of the controller and length of memory mapped
 	region.
 	region.
 - interrupts : The interrupt number to the cpu. The interrupt specifier format
 - interrupts : The interrupt number to the cpu. The interrupt specifier format

+ 12 - 7
MAINTAINERS

@@ -318,7 +318,7 @@ M:	Zhang Rui <rui.zhang@intel.com>
 L:	linux-acpi@vger.kernel.org
 L:	linux-acpi@vger.kernel.org
 W:	https://01.org/linux-acpi
 W:	https://01.org/linux-acpi
 S:	Supported
 S:	Supported
-F:	drivers/acpi/video.c
+F:	drivers/acpi/acpi_video.c
 
 
 ACPI WMI DRIVER
 ACPI WMI DRIVER
 L:	platform-driver-x86@vger.kernel.org
 L:	platform-driver-x86@vger.kernel.org
@@ -1847,7 +1847,7 @@ S:	Supported
 F:	drivers/net/wireless/ath/ath6kl/
 F:	drivers/net/wireless/ath/ath6kl/
 
 
 WILOCITY WIL6210 WIRELESS DRIVER
 WILOCITY WIL6210 WIRELESS DRIVER
-M:	Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
+M:	Maya Erez <qca_merez@qca.qualcomm.com>
 L:	linux-wireless@vger.kernel.org
 L:	linux-wireless@vger.kernel.org
 L:	wil6210@qca.qualcomm.com
 L:	wil6210@qca.qualcomm.com
 S:	Supported
 S:	Supported
@@ -1931,7 +1931,7 @@ S:	Supported
 F:	drivers/i2c/busses/i2c-at91.c
 F:	drivers/i2c/busses/i2c-at91.c
 
 
 ATMEL ISI DRIVER
 ATMEL ISI DRIVER
-M:	Josh Wu <josh.wu@atmel.com>
+M:	Ludovic Desroches <ludovic.desroches@atmel.com>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 S:	Supported
 S:	Supported
 F:	drivers/media/platform/soc_camera/atmel-isi.c
 F:	drivers/media/platform/soc_camera/atmel-isi.c
@@ -1950,7 +1950,8 @@ S:	Supported
 F:	drivers/net/ethernet/cadence/
 F:	drivers/net/ethernet/cadence/
 
 
 ATMEL NAND DRIVER
 ATMEL NAND DRIVER
-M:	Josh Wu <josh.wu@atmel.com>
+M:	Wenyou Yang <wenyou.yang@atmel.com>
+M:	Josh Wu <rainyfeeling@outlook.com>
 L:	linux-mtd@lists.infradead.org
 L:	linux-mtd@lists.infradead.org
 S:	Supported
 S:	Supported
 F:	drivers/mtd/nand/atmel_nand*
 F:	drivers/mtd/nand/atmel_nand*
@@ -2974,6 +2975,7 @@ F:	kernel/cpuset.c
 CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
 CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
 M:	Johannes Weiner <hannes@cmpxchg.org>
 M:	Johannes Weiner <hannes@cmpxchg.org>
 M:	Michal Hocko <mhocko@kernel.org>
 M:	Michal Hocko <mhocko@kernel.org>
+M:	Vladimir Davydov <vdavydov@virtuozzo.com>
 L:	cgroups@vger.kernel.org
 L:	cgroups@vger.kernel.org
 L:	linux-mm@kvack.org
 L:	linux-mm@kvack.org
 S:	Maintained
 S:	Maintained
@@ -6366,6 +6368,7 @@ F:	arch/*/include/asm/pmem.h
 LIGHTNVM PLATFORM SUPPORT
 LIGHTNVM PLATFORM SUPPORT
 M:	Matias Bjorling <mb@lightnvm.io>
 M:	Matias Bjorling <mb@lightnvm.io>
 W:	http://github/OpenChannelSSD
 W:	http://github/OpenChannelSSD
+L:	linux-block@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/lightnvm/
 F:	drivers/lightnvm/
 F:	include/linux/lightnvm.h
 F:	include/linux/lightnvm.h
@@ -9425,8 +9428,10 @@ F:	include/scsi/sg.h
 
 
 SCSI SUBSYSTEM
 SCSI SUBSYSTEM
 M:	"James E.J. Bottomley" <JBottomley@odin.com>
 M:	"James E.J. Bottomley" <JBottomley@odin.com>
-L:	linux-scsi@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
+M:	"Martin K. Petersen" <martin.petersen@oracle.com>
+T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
+L:	linux-scsi@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/scsi/
 F:	drivers/scsi/
 F:	include/scsi/
 F:	include/scsi/
@@ -10901,9 +10906,9 @@ S:	Maintained
 F:	drivers/media/tuners/tua9001*
 F:	drivers/media/tuners/tua9001*
 
 
 TULIP NETWORK DRIVERS
 TULIP NETWORK DRIVERS
-M:	Grant Grundler <grundler@parisc-linux.org>
 L:	netdev@vger.kernel.org
 L:	netdev@vger.kernel.org
-S:	Maintained
+L:	linux-parisc@vger.kernel.org
+S:	Orphan
 F:	drivers/net/ethernet/dec/tulip/
 F:	drivers/net/ethernet/dec/tulip/
 
 
 TUN/TAP driver
 TUN/TAP driver

+ 1 - 1
Makefile

@@ -1,7 +1,7 @@
 VERSION = 4
 VERSION = 4
 PATCHLEVEL = 4
 PATCHLEVEL = 4
 SUBLEVEL = 0
 SUBLEVEL = 0
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc5
 NAME = Blurry Fish Butt
 NAME = Blurry Fish Butt
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*

+ 1 - 1
arch/arc/configs/axs101_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC=y

+ 1 - 1
arch/arc/configs/axs103_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC=y

+ 1 - 1
arch/arc/configs/axs103_smp_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC=y

+ 1 - 1
arch/arc/configs/nsim_hs_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set

+ 1 - 1
arch/arc/configs/nsim_hs_smp_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set

+ 1 - 1
arch/arc/configs/nsimosci_hs_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set

+ 1 - 1
arch/arc/configs/nsimosci_hs_smp_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_SWAP is not set
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC=y

+ 1 - 1
arch/arc/configs/vdk_hs38_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_CROSS_MEMORY_ATTACH is not set
 # CONFIG_CROSS_MEMORY_ATTACH is not set

+ 1 - 1
arch/arc/configs/vdk_hs38_smp_defconfig

@@ -1,4 +1,4 @@
-CONFIG_CROSS_COMPILE="arc-linux-uclibc-"
+CONFIG_CROSS_COMPILE="arc-linux-"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 CONFIG_DEFAULT_HOSTNAME="ARCLinux"
 # CONFIG_CROSS_MEMORY_ATTACH is not set
 # CONFIG_CROSS_MEMORY_ATTACH is not set

+ 3 - 0
arch/arc/include/asm/irqflags-arcv2.h

@@ -37,6 +37,9 @@
 #define ISA_INIT_STATUS_BITS	(STATUS_IE_MASK | STATUS_AD_MASK | \
 #define ISA_INIT_STATUS_BITS	(STATUS_IE_MASK | STATUS_AD_MASK | \
 					(ARCV2_IRQ_DEF_PRIO << 1))
 					(ARCV2_IRQ_DEF_PRIO << 1))
 
 
+/* SLEEP needs default irq priority (<=) which can interrupt the doze */
+#define ISA_SLEEP_ARG		(0x10 | ARCV2_IRQ_DEF_PRIO)
+
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
 /*
 /*

+ 2 - 0
arch/arc/include/asm/irqflags-compact.h

@@ -43,6 +43,8 @@
 
 
 #define ISA_INIT_STATUS_BITS	STATUS_IE_MASK
 #define ISA_INIT_STATUS_BITS	STATUS_IE_MASK
 
 
+#define ISA_SLEEP_ARG		0x3
+
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
 /******************************************************************
 /******************************************************************

+ 0 - 2
arch/arc/kernel/ctx_sw.c

@@ -58,8 +58,6 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task)
 		"st      sp, [r24]       \n\t"
 		"st      sp, [r24]       \n\t"
 #endif
 #endif
 
 
-		"sync   \n\t"
-
 		/*
 		/*
 		 * setup _current_task with incoming tsk.
 		 * setup _current_task with incoming tsk.
 		 * optionally, set r25 to that as well
 		 * optionally, set r25 to that as well

+ 0 - 3
arch/arc/kernel/ctx_sw_asm.S

@@ -44,9 +44,6 @@ __switch_to:
 	* don't need to do anything special to return it
 	* don't need to do anything special to return it
 	*/
 	*/
 
 
-	/* hardware memory barrier */
-	sync
-
 	/*
 	/*
 	 * switch to new task, contained in r1
 	 * switch to new task, contained in r1
 	 * Temp reg r3 is required to get the ptr to store val
 	 * Temp reg r3 is required to get the ptr to store val

+ 4 - 5
arch/arc/kernel/process.c

@@ -44,11 +44,10 @@ SYSCALL_DEFINE0(arc_gettls)
 void arch_cpu_idle(void)
 void arch_cpu_idle(void)
 {
 {
 	/* sleep, but enable all interrupts before committing */
 	/* sleep, but enable all interrupts before committing */
-	if (is_isa_arcompact()) {
-		__asm__("sleep 0x3");
-	} else {
-		__asm__("sleep 0x10");
-	}
+	__asm__ __volatile__(
+		"sleep %0	\n"
+		:
+		:"I"(ISA_SLEEP_ARG)); /* can't be "r" has to be embedded const */
 }
 }
 
 
 asmlinkage void ret_from_fork(void);
 asmlinkage void ret_from_fork(void);

+ 4 - 33
arch/arc/kernel/unwind.c

@@ -986,42 +986,13 @@ int arc_unwind(struct unwind_frame_info *frame)
 							    (const u8 *)(fde +
 							    (const u8 *)(fde +
 									 1) +
 									 1) +
 							    *fde, ptrType);
 							    *fde, ptrType);
-				if (pc >= endLoc)
+				if (pc >= endLoc) {
 					fde = NULL;
 					fde = NULL;
-			} else
-				fde = NULL;
-		}
-		if (fde == NULL) {
-			for (fde = table->address, tableSize = table->size;
-			     cie = NULL, tableSize > sizeof(*fde)
-			     && tableSize - sizeof(*fde) >= *fde;
-			     tableSize -= sizeof(*fde) + *fde,
-			     fde += 1 + *fde / sizeof(*fde)) {
-				cie = cie_for_fde(fde, table);
-				if (cie == &bad_cie) {
 					cie = NULL;
 					cie = NULL;
-					break;
 				}
 				}
-				if (cie == NULL
-				    || cie == &not_fde
-				    || (ptrType = fde_pointer_type(cie)) < 0)
-					continue;
-				ptr = (const u8 *)(fde + 2);
-				startLoc = read_pointer(&ptr,
-							(const u8 *)(fde + 1) +
-							*fde, ptrType);
-				if (!startLoc)
-					continue;
-				if (!(ptrType & DW_EH_PE_indirect))
-					ptrType &=
-					    DW_EH_PE_FORM | DW_EH_PE_signed;
-				endLoc =
-				    startLoc + read_pointer(&ptr,
-							    (const u8 *)(fde +
-									 1) +
-							    *fde, ptrType);
-				if (pc >= startLoc && pc < endLoc)
-					break;
+			} else {
+				fde = NULL;
+				cie = NULL;
 			}
 			}
 		}
 		}
 	}
 	}

+ 2 - 2
arch/arc/mm/tlb.c

@@ -619,10 +619,10 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned,
 
 
 		int dirty = !test_and_set_bit(PG_dc_clean, &page->flags);
 		int dirty = !test_and_set_bit(PG_dc_clean, &page->flags);
 		if (dirty) {
 		if (dirty) {
-			/* wback + inv dcache lines */
+			/* wback + inv dcache lines (K-mapping) */
 			__flush_dcache_page(paddr, paddr);
 			__flush_dcache_page(paddr, paddr);
 
 
-			/* invalidate any existing icache lines */
+			/* invalidate any existing icache lines (U-mapping) */
 			if (vma->vm_flags & VM_EXEC)
 			if (vma->vm_flags & VM_EXEC)
 				__inv_icache_page(paddr, vaddr);
 				__inv_icache_page(paddr, vaddr);
 		}
 		}

+ 2 - 2
arch/arm/Kconfig

@@ -76,6 +76,8 @@ config ARM
 	select IRQ_FORCED_THREADING
 	select IRQ_FORCED_THREADING
 	select MODULES_USE_ELF_REL
 	select MODULES_USE_ELF_REL
 	select NO_BOOTMEM
 	select NO_BOOTMEM
+	select OF_EARLY_FLATTREE if OF
+	select OF_RESERVED_MEM if OF
 	select OLD_SIGACTION
 	select OLD_SIGACTION
 	select OLD_SIGSUSPEND3
 	select OLD_SIGSUSPEND3
 	select PERF_USE_VMALLOC
 	select PERF_USE_VMALLOC
@@ -1822,8 +1824,6 @@ config USE_OF
 	bool "Flattened Device Tree support"
 	bool "Flattened Device Tree support"
 	select IRQ_DOMAIN
 	select IRQ_DOMAIN
 	select OF
 	select OF
-	select OF_EARLY_FLATTREE
-	select OF_RESERVED_MEM
 	help
 	help
 	  Include support for flattened device tree machine descriptions.
 	  Include support for flattened device tree machine descriptions.
 
 

+ 2 - 2
arch/arm/boot/dts/am4372.dtsi

@@ -74,7 +74,7 @@
 		reg = <0x48240200 0x100>;
 		reg = <0x48240200 0x100>;
 		interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
 		interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-parent = <&gic>;
 		interrupt-parent = <&gic>;
-		clocks = <&dpll_mpu_m2_ck>;
+		clocks = <&mpu_periphclk>;
 	};
 	};
 
 
 	local_timer: timer@48240600 {
 	local_timer: timer@48240600 {
@@ -82,7 +82,7 @@
 		reg = <0x48240600 0x100>;
 		reg = <0x48240600 0x100>;
 		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
 		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-parent = <&gic>;
 		interrupt-parent = <&gic>;
-		clocks = <&dpll_mpu_m2_ck>;
+		clocks = <&mpu_periphclk>;
 	};
 	};
 
 
 	l2-cache-controller@48242000 {
 	l2-cache-controller@48242000 {

+ 8 - 0
arch/arm/boot/dts/am43xx-clocks.dtsi

@@ -259,6 +259,14 @@
 		ti,invert-autoidle-bit;
 		ti,invert-autoidle-bit;
 	};
 	};
 
 
+	mpu_periphclk: mpu_periphclk {
+		#clock-cells = <0>;
+		compatible = "fixed-factor-clock";
+		clocks = <&dpll_mpu_m2_ck>;
+		clock-mult = <1>;
+		clock-div = <2>;
+	};
+
 	dpll_ddr_ck: dpll_ddr_ck {
 	dpll_ddr_ck: dpll_ddr_ck {
 		#clock-cells = <0>;
 		#clock-cells = <0>;
 		compatible = "ti,am3-dpll-clock";
 		compatible = "ti,am3-dpll-clock";

+ 1 - 0
arch/arm/boot/dts/am57xx-beagle-x15.dts

@@ -604,6 +604,7 @@
 		reg = <0x6f>;
 		reg = <0x6f>;
 		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
 		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
 				      <&dra7_pmx_core 0x424>;
 				      <&dra7_pmx_core 0x424>;
+		interrupt-names = "irq", "wakeup";
 
 
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 		pinctrl-0 = <&mcp79410_pins_default>;
 		pinctrl-0 = <&mcp79410_pins_default>;

+ 3 - 3
arch/arm/boot/dts/animeo_ip.dts

@@ -155,21 +155,21 @@
 			label = "keyswitch_in";
 			label = "keyswitch_in";
 			gpios = <&pioB 1 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioB 1 GPIO_ACTIVE_HIGH>;
 			linux,code = <28>;
 			linux,code = <28>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		error_in {
 		error_in {
 			label = "error_in";
 			label = "error_in";
 			gpios = <&pioB 2 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioB 2 GPIO_ACTIVE_HIGH>;
 			linux,code = <29>;
 			linux,code = <29>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		btn {
 		btn {
 			label = "btn";
 			label = "btn";
 			gpios = <&pioC 23 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioC 23 GPIO_ACTIVE_HIGH>;
 			linux,code = <31>;
 			linux,code = <31>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 };
 };

+ 1 - 0
arch/arm/boot/dts/armada-38x.dtsi

@@ -498,6 +498,7 @@
 				reg = <0x70000 0x4000>;
 				reg = <0x70000 0x4000>;
 				interrupts-extended = <&mpic 8>;
 				interrupts-extended = <&mpic 8>;
 				clocks = <&gateclk 4>;
 				clocks = <&gateclk 4>;
+				tx-csum-limit = <9800>;
 				status = "disabled";
 				status = "disabled";
 			};
 			};
 
 

+ 1 - 1
arch/arm/boot/dts/at91-foxg20.dts

@@ -159,7 +159,7 @@
 			label = "Button";
 			label = "Button";
 			gpios = <&pioC 4 GPIO_ACTIVE_LOW>;
 			gpios = <&pioC 4 GPIO_ACTIVE_LOW>;
 			linux,code = <0x103>;
 			linux,code = <0x103>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 };
 };

+ 2 - 11
arch/arm/boot/dts/at91-kizbox.dts

@@ -24,15 +24,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <18432000>;
-		};
-
 		main_xtal {
 		main_xtal {
 			clock-frequency = <18432000>;
 			clock-frequency = <18432000>;
 		};
 		};
@@ -94,14 +85,14 @@
 			label = "PB_RST";
 			label = "PB_RST";
 			gpios = <&pioB 30 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioB 30 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		user {
 		user {
 			label = "PB_USER";
 			label = "PB_USER";
 			gpios = <&pioB 31 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioB 31 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x101>;
 			linux,code = <0x101>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 3 - 3
arch/arm/boot/dts/at91-kizbox2.dts

@@ -171,21 +171,21 @@
 			label = "PB_PROG";
 			label = "PB_PROG";
 			gpios = <&pioE 27 GPIO_ACTIVE_LOW>;
 			gpios = <&pioE 27 GPIO_ACTIVE_LOW>;
 			linux,code = <0x102>;
 			linux,code = <0x102>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		reset {
 		reset {
 			label = "PB_RST";
 			label = "PB_RST";
 			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
 			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		user {
 		user {
 			label = "PB_USER";
 			label = "PB_USER";
 			gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x101>;
 			linux,code = <0x101>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 2 - 2
arch/arm/boot/dts/at91-kizboxmini.dts

@@ -98,14 +98,14 @@
 			label = "PB_PROG";
 			label = "PB_PROG";
 			gpios = <&pioC 17 GPIO_ACTIVE_LOW>;
 			gpios = <&pioC 17 GPIO_ACTIVE_LOW>;
 			linux,code = <0x102>;
 			linux,code = <0x102>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		reset {
 		reset {
 			label = "PB_RST";
 			label = "PB_RST";
 			gpios = <&pioC 16 GPIO_ACTIVE_LOW>;
 			gpios = <&pioC 16 GPIO_ACTIVE_LOW>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 1 - 1
arch/arm/boot/dts/at91-qil_a9260.dts

@@ -183,7 +183,7 @@
 			label = "user_pb";
 			label = "user_pb";
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			linux,code = <28>;
 			linux,code = <28>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 107 - 9
arch/arm/boot/dts/at91-sama5d2_xplained.dts

@@ -45,6 +45,7 @@
 /dts-v1/;
 /dts-v1/;
 #include "sama5d2.dtsi"
 #include "sama5d2.dtsi"
 #include "sama5d2-pinfunc.h"
 #include "sama5d2-pinfunc.h"
+#include <dt-bindings/mfd/atmel-flexcom.h>
 
 
 / {
 / {
 	model = "Atmel SAMA5D2 Xplained";
 	model = "Atmel SAMA5D2 Xplained";
@@ -59,15 +60,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -91,6 +83,22 @@
 			status = "okay";
 			status = "okay";
 		};
 		};
 
 
+		sdmmc0: sdio-host@a0000000 {
+			bus-width = <8>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_sdmmc0_default>;
+			non-removable;
+			mmc-ddr-1_8v;
+			status = "okay";
+		};
+
+		sdmmc1: sdio-host@b0000000 {
+			bus-width = <4>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_sdmmc1_default>;
+			status = "okay"; /* conflict with qspi0 */
+		};
+
 		apb {
 		apb {
 			spi0: spi@f8000000 {
 			spi0: spi@f8000000 {
 				pinctrl-names = "default";
 				pinctrl-names = "default";
@@ -176,17 +184,55 @@
 							regulator-name = "VDD_SDHC_1V8";
 							regulator-name = "VDD_SDHC_1V8";
 							regulator-min-microvolt = <1800000>;
 							regulator-min-microvolt = <1800000>;
 							regulator-max-microvolt = <1800000>;
 							regulator-max-microvolt = <1800000>;
+							regulator-always-on;
 						};
 						};
 					};
 					};
 				};
 				};
 			};
 			};
 
 
+			flx0: flexcom@f8034000 {
+				atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+				status = "disabled"; /* conflict with ISC_D2 & ISC_D3 data pins */
+
+				uart5: serial@200 {
+					compatible = "atmel,at91sam9260-usart";
+					reg = <0x200 0x200>;
+					interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
+					clocks = <&flx0_clk>;
+					clock-names = "usart";
+					pinctrl-names = "default";
+					pinctrl-0 = <&pinctrl_flx0_default>;
+					atmel,fifo-size = <32>;
+					status = "okay";
+				};
+			};
+
 			uart3: serial@fc008000 {
 			uart3: serial@fc008000 {
 				pinctrl-names = "default";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_uart3_default>;
 				pinctrl-0 = <&pinctrl_uart3_default>;
 				status = "okay";
 				status = "okay";
 			};
 			};
 
 
+			flx4: flexcom@fc018000 {
+				atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+				status = "okay";
+
+				i2c2: i2c@600 {
+					compatible = "atmel,sama5d2-i2c";
+					reg = <0x600 0x200>;
+					interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>;
+					dmas = <0>, <0>;
+					dma-names = "tx", "rx";
+					#address-cells = <1>;
+					#size-cells = <0>;
+					clocks = <&flx4_clk>;
+					pinctrl-names = "default";
+					pinctrl-0 = <&pinctrl_flx4_default>;
+					atmel,fifo-size = <16>;
+					status = "okay";
+				};
+			};
+
 			i2c1: i2c@fc028000 {
 			i2c1: i2c@fc028000 {
 				dmas = <0>, <0>;
 				dmas = <0>, <0>;
 				pinctrl-names = "default";
 				pinctrl-names = "default";
@@ -201,6 +247,18 @@
 			};
 			};
 
 
 			pinctrl@fc038000 {
 			pinctrl@fc038000 {
+				pinctrl_flx0_default: flx0_default {
+					pinmux = <PIN_PB28__FLEXCOM0_IO0>,
+						 <PIN_PB29__FLEXCOM0_IO1>;
+					bias-disable;
+				};
+
+				pinctrl_flx4_default: flx4_default {
+					pinmux = <PIN_PD12__FLEXCOM4_IO0>,
+						 <PIN_PD13__FLEXCOM4_IO1>;
+					bias-disable;
+				};
+
 				pinctrl_i2c0_default: i2c0_default {
 				pinctrl_i2c0_default: i2c0_default {
 					pinmux = <PIN_PD21__TWD0>,
 					pinmux = <PIN_PD21__TWD0>,
 						 <PIN_PD22__TWCK0>;
 						 <PIN_PD22__TWCK0>;
@@ -227,6 +285,46 @@
 					bias-disable;
 					bias-disable;
 				};
 				};
 
 
+				pinctrl_sdmmc0_default: sdmmc0_default {
+					cmd_data {
+						pinmux = <PIN_PA1__SDMMC0_CMD>,
+							 <PIN_PA2__SDMMC0_DAT0>,
+							 <PIN_PA3__SDMMC0_DAT1>,
+							 <PIN_PA4__SDMMC0_DAT2>,
+							 <PIN_PA5__SDMMC0_DAT3>,
+							 <PIN_PA6__SDMMC0_DAT4>,
+							 <PIN_PA7__SDMMC0_DAT5>,
+							 <PIN_PA8__SDMMC0_DAT6>,
+							 <PIN_PA9__SDMMC0_DAT7>;
+						bias-pull-up;
+					};
+
+					ck_cd_rstn_vddsel {
+						pinmux = <PIN_PA0__SDMMC0_CK>,
+							 <PIN_PA10__SDMMC0_RSTN>,
+							 <PIN_PA11__SDMMC0_VDDSEL>,
+							 <PIN_PA13__SDMMC0_CD>;
+						bias-disable;
+					};
+				};
+
+				pinctrl_sdmmc1_default: sdmmc1_default {
+					cmd_data {
+						pinmux = <PIN_PA28__SDMMC1_CMD>,
+							 <PIN_PA18__SDMMC1_DAT0>,
+							 <PIN_PA19__SDMMC1_DAT1>,
+							 <PIN_PA20__SDMMC1_DAT2>,
+							 <PIN_PA21__SDMMC1_DAT3>;
+						bias-pull-up;
+					};
+
+					conf-ck_cd {
+						pinmux = <PIN_PA22__SDMMC1_CK>,
+							 <PIN_PA30__SDMMC1_CD>;
+						bias-disable;
+					};
+				};
+
 				pinctrl_spi0_default: spi0_default {
 				pinctrl_spi0_default: spi0_default {
 					pinmux = <PIN_PA14__SPI0_SPCK>,
 					pinmux = <PIN_PA14__SPI0_SPCK>,
 						 <PIN_PA15__SPI0_MOSI>,
 						 <PIN_PA15__SPI0_MOSI>,

+ 1 - 1
arch/arm/boot/dts/at91-sama5d3_xplained.dts

@@ -315,7 +315,7 @@
 			label = "PB_USER";
 			label = "PB_USER";
 			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
 			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
 			linux,code = <0x104>;
 			linux,code = <0x104>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 1 - 11
arch/arm/boot/dts/at91-sama5d4_xplained.dts

@@ -50,7 +50,6 @@
 	compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
 	compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
 
 
 	chosen {
 	chosen {
-		bootargs = "ignore_loglevel earlyprintk";
 		stdout-path = "serial0:115200n8";
 		stdout-path = "serial0:115200n8";
 	};
 	};
 
 
@@ -59,15 +58,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -235,7 +225,7 @@
 			label = "pb_user1";
 			label = "pb_user1";
 			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 1 - 11
arch/arm/boot/dts/at91-sama5d4ek.dts

@@ -50,7 +50,6 @@
 	compatible = "atmel,sama5d4ek", "atmel,sama5d4", "atmel,sama5";
 	compatible = "atmel,sama5d4ek", "atmel,sama5d4", "atmel,sama5";
 
 
 	chosen {
 	chosen {
-		bootargs = "ignore_loglevel earlyprintk";
 		stdout-path = "serial0:115200n8";
 		stdout-path = "serial0:115200n8";
 	};
 	};
 
 
@@ -59,15 +58,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -304,7 +294,7 @@
 			label = "pb_user1";
 			label = "pb_user1";
 			gpios = <&pioE 13 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioE 13 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 0 - 9
arch/arm/boot/dts/at91rm9200ek.dts

@@ -21,15 +21,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <18432000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};

+ 5 - 14
arch/arm/boot/dts/at91sam9261ek.dts

@@ -22,15 +22,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <18432000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -149,7 +140,7 @@
 					ti,debounce-tol = /bits/ 16 <65535>;
 					ti,debounce-tol = /bits/ 16 <65535>;
 					ti,debounce-max = /bits/ 16 <1>;
 					ti,debounce-max = /bits/ 16 <1>;
 
 
-					linux,wakeup;
+					wakeup-source;
 				};
 				};
 			};
 			};
 
 
@@ -193,28 +184,28 @@
 			label = "button_0";
 			label = "button_0";
 			gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
 			linux,code = <256>;
 			linux,code = <256>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		button_1 {
 		button_1 {
 			label = "button_1";
 			label = "button_1";
 			gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
 			linux,code = <257>;
 			linux,code = <257>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		button_2 {
 		button_2 {
 			label = "button_2";
 			label = "button_2";
 			gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
 			linux,code = <258>;
 			linux,code = <258>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		button_3 {
 		button_3 {
 			label = "button_3";
 			label = "button_3";
 			gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
 			linux,code = <259>;
 			linux,code = <259>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 };
 };

+ 2 - 11
arch/arm/boot/dts/at91sam9263ek.dts

@@ -22,15 +22,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <16367660>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -213,14 +204,14 @@
 			label = "left_click";
 			label = "left_click";
 			gpios = <&pioC 5 GPIO_ACTIVE_LOW>;
 			gpios = <&pioC 5 GPIO_ACTIVE_LOW>;
 			linux,code = <272>;
 			linux,code = <272>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		right_click {
 		right_click {
 			label = "right_click";
 			label = "right_click";
 			gpios = <&pioC 4 GPIO_ACTIVE_LOW>;
 			gpios = <&pioC 4 GPIO_ACTIVE_LOW>;
 			linux,code = <273>;
 			linux,code = <273>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 2 - 11
arch/arm/boot/dts/at91sam9g20ek_common.dtsi

@@ -19,15 +19,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <18432000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -206,14 +197,14 @@
 			label = "Button 3";
 			label = "Button 3";
 			gpios = <&pioA 30 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 30 GPIO_ACTIVE_LOW>;
 			linux,code = <0x103>;
 			linux,code = <0x103>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		btn4 {
 		btn4 {
 			label = "Button 4";
 			label = "Button 4";
 			gpios = <&pioA 31 GPIO_ACTIVE_LOW>;
 			gpios = <&pioA 31 GPIO_ACTIVE_LOW>;
 			linux,code = <0x104>;
 			linux,code = <0x104>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 2 - 11
arch/arm/boot/dts/at91sam9m10g45ek.dts

@@ -24,15 +24,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 		      clock-frequency = <32768>;
 		      clock-frequency = <32768>;
 		};
 		};
@@ -323,14 +314,14 @@
 			label = "left_click";
 			label = "left_click";
 			gpios = <&pioB 6 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 6 GPIO_ACTIVE_LOW>;
 			linux,code = <272>;
 			linux,code = <272>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		right_click {
 		right_click {
 			label = "right_click";
 			label = "right_click";
 			gpios = <&pioB 7 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 7 GPIO_ACTIVE_LOW>;
 			linux,code = <273>;
 			linux,code = <273>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		left {
 		left {

+ 1 - 10
arch/arm/boot/dts/at91sam9n12ek.dts

@@ -23,15 +23,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <16000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -219,7 +210,7 @@
 			label = "Enter";
 			label = "Enter";
 			gpios = <&pioB 3 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 3 GPIO_ACTIVE_LOW>;
 			linux,code = <28>;
 			linux,code = <28>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 2 - 11
arch/arm/boot/dts/at91sam9rlek.dts

@@ -22,15 +22,6 @@
 	};
 	};
 
 
 	clocks {
 	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;
 		};
 		};
@@ -225,14 +216,14 @@
 			label = "right_click";
 			label = "right_click";
 			gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
 			linux,code = <273>;
 			linux,code = <273>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 
 
 		left_click {
 		left_click {
 			label = "left_click";
 			label = "left_click";
 			gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
 			linux,code = <272>;
 			linux,code = <272>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 0 - 11
arch/arm/boot/dts/at91sam9x5cm.dtsi

@@ -12,17 +12,6 @@
 		reg = <0x20000000 0x8000000>;
 		reg = <0x20000000 0x8000000>;
 	};
 	};
 
 
-	clocks {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		main_clock: clock@0 {
-			compatible = "atmel,osc", "fixed-clock";
-			clock-frequency = <12000000>;
-		};
-	};
-
 	clocks {
 	clocks {
 		slow_xtal {
 		slow_xtal {
 			clock-frequency = <32768>;
 			clock-frequency = <32768>;

+ 5 - 3
arch/arm/boot/dts/berlin2q.dtsi

@@ -118,7 +118,8 @@
 		sdhci0: sdhci@ab0000 {
 		sdhci0: sdhci@ab0000 {
 			compatible = "mrvl,pxav3-mmc";
 			compatible = "mrvl,pxav3-mmc";
 			reg = <0xab0000 0x200>;
 			reg = <0xab0000 0x200>;
-			clocks = <&chip_clk CLKID_SDIO1XIN>;
+			clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
+			clock-names = "io", "core";
 			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 			status = "disabled";
 			status = "disabled";
 		};
 		};
@@ -126,7 +127,8 @@
 		sdhci1: sdhci@ab0800 {
 		sdhci1: sdhci@ab0800 {
 			compatible = "mrvl,pxav3-mmc";
 			compatible = "mrvl,pxav3-mmc";
 			reg = <0xab0800 0x200>;
 			reg = <0xab0800 0x200>;
-			clocks = <&chip_clk CLKID_SDIO1XIN>;
+			clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
+			clock-names = "io", "core";
 			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 			status = "disabled";
 			status = "disabled";
 		};
 		};
@@ -135,7 +137,7 @@
 			compatible = "mrvl,pxav3-mmc";
 			compatible = "mrvl,pxav3-mmc";
 			reg = <0xab1000 0x200>;
 			reg = <0xab1000 0x200>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
+			clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
 			clock-names = "io", "core";
 			clock-names = "io", "core";
 			status = "disabled";
 			status = "disabled";
 		};
 		};

+ 6 - 2
arch/arm/boot/dts/dm816x.dtsi

@@ -218,6 +218,7 @@
 			reg = <0x480c8000 0x2000>;
 			reg = <0x480c8000 0x2000>;
 			interrupts = <77>;
 			interrupts = <77>;
 			ti,hwmods = "mailbox";
 			ti,hwmods = "mailbox";
+			#mbox-cells = <1>;
 			ti,mbox-num-users = <4>;
 			ti,mbox-num-users = <4>;
 			ti,mbox-num-fifos = <12>;
 			ti,mbox-num-fifos = <12>;
 			mbox_dsp: mbox_dsp {
 			mbox_dsp: mbox_dsp {
@@ -279,8 +280,11 @@
 			ti,spi-num-cs = <4>;
 			ti,spi-num-cs = <4>;
 			ti,hwmods = "mcspi1";
 			ti,hwmods = "mcspi1";
 			dmas = <&edma 16 &edma 17
 			dmas = <&edma 16 &edma 17
-				&edma 18 &edma 19>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
+				&edma 18 &edma 19
+				&edma 20 &edma 21
+				&edma 22 &edma 23>;
+			dma-names = "tx0", "rx0", "tx1", "rx1",
+				    "tx2", "rx2", "tx3", "rx3";
 		};
 		};
 
 
 		mmc1: mmc@48060000 {
 		mmc1: mmc@48060000 {

+ 2 - 2
arch/arm/boot/dts/dra7.dtsi

@@ -1459,8 +1459,8 @@
 			interrupt-names = "tx", "rx";
 			interrupt-names = "tx", "rx";
 			dmas = <&sdma_xbar 133>, <&sdma_xbar 132>;
 			dmas = <&sdma_xbar 133>, <&sdma_xbar 132>;
 			dma-names = "tx", "rx";
 			dma-names = "tx", "rx";
-			clocks = <&mcasp3_ahclkx_mux>;
-			clock-names = "fck";
+			clocks = <&mcasp3_aux_gfclk_mux>, <&mcasp3_ahclkx_mux>;
+			clock-names = "fck", "ahclkx";
 			status = "disabled";
 			status = "disabled";
 		};
 		};
 
 

+ 1 - 1
arch/arm/boot/dts/k2l-netcp.dtsi

@@ -137,7 +137,7 @@ netcp: netcp@26000000 {
 	/* NetCP address range */
 	/* NetCP address range */
 	ranges = <0 0x26000000 0x1000000>;
 	ranges = <0 0x26000000 0x1000000>;
 
 
-	clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
+	clocks = <&clkosr>, <&papllclk>, <&clkcpgmac>, <&chipclk12>;
 	dma-coherent;
 	dma-coherent;
 
 
 	ti,navigator-dmas = <&dma_gbe 0>,
 	ti,navigator-dmas = <&dma_gbe 0>,

+ 1 - 1
arch/arm/boot/dts/kirkwood-ts219.dtsi

@@ -40,7 +40,7 @@
 		};
 		};
 		poweroff@12100 {
 		poweroff@12100 {
 			compatible = "qnap,power-off";
 			compatible = "qnap,power-off";
-			reg = <0x12000 0x100>;
+			reg = <0x12100 0x100>;
 			clocks = <&gate_clk 7>;
 			clocks = <&gate_clk 7>;
 		};
 		};
 		spi@10600 {
 		spi@10600 {

+ 4 - 0
arch/arm/boot/dts/rk3288-veyron-minnie.dts

@@ -86,6 +86,10 @@
 	};
 	};
 };
 };
 
 
+&emmc {
+	/delete-property/mmc-hs200-1_8v;
+};
+
 &gpio_keys {
 &gpio_keys {
 	pinctrl-0 = <&pwr_key_l &ap_lid_int_l &volum_down_l &volum_up_l>;
 	pinctrl-0 = <&pwr_key_l &ap_lid_int_l &volum_down_l &volum_up_l>;
 
 

+ 8 - 2
arch/arm/boot/dts/rk3288.dtsi

@@ -452,8 +452,10 @@
 		clock-names = "tsadc", "apb_pclk";
 		clock-names = "tsadc", "apb_pclk";
 		resets = <&cru SRST_TSADC>;
 		resets = <&cru SRST_TSADC>;
 		reset-names = "tsadc-apb";
 		reset-names = "tsadc-apb";
-		pinctrl-names = "default";
-		pinctrl-0 = <&otp_out>;
+		pinctrl-names = "init", "default", "sleep";
+		pinctrl-0 = <&otp_gpio>;
+		pinctrl-1 = <&otp_out>;
+		pinctrl-2 = <&otp_gpio>;
 		#thermal-sensor-cells = <1>;
 		#thermal-sensor-cells = <1>;
 		rockchip,hw-tshut-temp = <95000>;
 		rockchip,hw-tshut-temp = <95000>;
 		status = "disabled";
 		status = "disabled";
@@ -1395,6 +1397,10 @@
 		};
 		};
 
 
 		tsadc {
 		tsadc {
+			otp_gpio: otp-gpio {
+				rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
+			};
+
 			otp_out: otp-out {
 			otp_out: otp-out {
 				rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
 				rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
 			};
 			};

+ 1 - 1
arch/arm/boot/dts/sama5d35ek.dts

@@ -49,7 +49,7 @@
 			label = "pb_user1";
 			label = "pb_user1";
 			gpios = <&pioE 27 GPIO_ACTIVE_HIGH>;
 			gpios = <&pioE 27 GPIO_ACTIVE_HIGH>;
 			linux,code = <0x100>;
 			linux,code = <0x100>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 };
 };

+ 1 - 1
arch/arm/boot/dts/sama5d4.dtsi

@@ -1300,7 +1300,7 @@
 			};
 			};
 
 
 			watchdog@fc068640 {
 			watchdog@fc068640 {
-				compatible = "atmel,at91sam9260-wdt";
+				compatible = "atmel,sama5d4-wdt";
 				reg = <0xfc068640 0x10>;
 				reg = <0xfc068640 0x10>;
 				clocks = <&clk32k>;
 				clocks = <&clk32k>;
 				status = "disabled";
 				status = "disabled";

+ 1 - 1
arch/arm/boot/dts/usb_a9260_common.dtsi

@@ -115,7 +115,7 @@
 			label = "user_pb";
 			label = "user_pb";
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			linux,code = <28>;
 			linux,code = <28>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 1 - 1
arch/arm/boot/dts/usb_a9263.dts

@@ -143,7 +143,7 @@
 			label = "user_pb";
 			label = "user_pb";
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
 			linux,code = <28>;
 			linux,code = <28>;
-			gpio-key,wakeup;
+			wakeup-source;
 		};
 		};
 	};
 	};
 
 

+ 0 - 5
arch/arm/boot/dts/vf610-colibri.dtsi

@@ -18,8 +18,3 @@
 		reg = <0x80000000 0x10000000>;
 		reg = <0x80000000 0x10000000>;
 	};
 	};
 };
 };
-
-&L2 {
-	arm,data-latency = <2 1 2>;
-	arm,tag-latency = <3 2 3>;
-};

+ 1 - 1
arch/arm/boot/dts/vf610.dtsi

@@ -19,7 +19,7 @@
 		reg = <0x40006000 0x1000>;
 		reg = <0x40006000 0x1000>;
 		cache-unified;
 		cache-unified;
 		cache-level = <2>;
 		cache-level = <2>;
-		arm,data-latency = <1 1 1>;
+		arm,data-latency = <3 3 3>;
 		arm,tag-latency = <2 2 2>;
 		arm,tag-latency = <2 2 2>;
 	};
 	};
 };
 };

+ 8 - 6
arch/arm/boot/dts/vfxxx.dtsi

@@ -158,7 +158,7 @@
 				interrupts = <67 IRQ_TYPE_LEVEL_HIGH>;
 				interrupts = <67 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clks VF610_CLK_DSPI0>;
 				clocks = <&clks VF610_CLK_DSPI0>;
 				clock-names = "dspi";
 				clock-names = "dspi";
-				spi-num-chipselects = <5>;
+				spi-num-chipselects = <6>;
 				status = "disabled";
 				status = "disabled";
 			};
 			};
 
 
@@ -170,7 +170,7 @@
 				interrupts = <68 IRQ_TYPE_LEVEL_HIGH>;
 				interrupts = <68 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clks VF610_CLK_DSPI1>;
 				clocks = <&clks VF610_CLK_DSPI1>;
 				clock-names = "dspi";
 				clock-names = "dspi";
-				spi-num-chipselects = <5>;
+				spi-num-chipselects = <4>;
 				status = "disabled";
 				status = "disabled";
 			};
 			};
 
 
@@ -178,8 +178,10 @@
 				compatible = "fsl,vf610-sai";
 				compatible = "fsl,vf610-sai";
 				reg = <0x40031000 0x1000>;
 				reg = <0x40031000 0x1000>;
 				interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
 				interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks VF610_CLK_SAI2>;
-				clock-names = "sai";
+				clocks = <&clks VF610_CLK_SAI2>,
+					<&clks VF610_CLK_SAI2_DIV>,
+					<&clks 0>, <&clks 0>;
+				clock-names = "bus", "mclk1", "mclk2", "mclk3";
 				dma-names = "tx", "rx";
 				dma-names = "tx", "rx";
 				dmas = <&edma0 0 21>,
 				dmas = <&edma0 0 21>,
 					<&edma0 0 20>;
 					<&edma0 0 20>;
@@ -461,6 +463,8 @@
 				clock-names = "adc";
 				clock-names = "adc";
 				#io-channel-cells = <1>;
 				#io-channel-cells = <1>;
 				status = "disabled";
 				status = "disabled";
+				fsl,adck-max-frequency = <30000000>, <40000000>,
+							<20000000>;
 			};
 			};
 
 
 			esdhc0: esdhc@400b1000 {
 			esdhc0: esdhc@400b1000 {
@@ -472,8 +476,6 @@
 					<&clks VF610_CLK_ESDHC0>;
 					<&clks VF610_CLK_ESDHC0>;
 				clock-names = "ipg", "ahb", "per";
 				clock-names = "ipg", "ahb", "per";
 				status = "disabled";
 				status = "disabled";
-				fsl,adck-max-frequency = <30000000>, <40000000>,
-							<20000000>;
 			};
 			};
 
 
 			esdhc1: esdhc@400b2000 {
 			esdhc1: esdhc@400b2000 {

+ 0 - 1
arch/arm/configs/at91_dt_defconfig

@@ -125,7 +125,6 @@ CONFIG_POWER_RESET=y
 # CONFIG_HWMON is not set
 # CONFIG_HWMON is not set
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG=y
 CONFIG_AT91SAM9X_WATCHDOG=y
 CONFIG_AT91SAM9X_WATCHDOG=y
-CONFIG_SSB=m
 CONFIG_MFD_ATMEL_HLCDC=y
 CONFIG_MFD_ATMEL_HLCDC=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y

+ 0 - 1
arch/arm/configs/sama5_defconfig

@@ -129,7 +129,6 @@ CONFIG_GPIO_SYSFS=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET=y
 # CONFIG_HWMON is not set
 # CONFIG_HWMON is not set
-CONFIG_SSB=m
 CONFIG_MFD_ATMEL_FLEXCOM=y
 CONFIG_MFD_ATMEL_FLEXCOM=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y

+ 1 - 0
arch/arm/include/asm/arch_gicv3.h

@@ -21,6 +21,7 @@
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
 #include <linux/io.h>
 #include <linux/io.h>
+#include <asm/barrier.h>
 
 
 #define __ACCESS_CP15(CRn, Op1, CRm, Op2)	p15, Op1, %0, CRn, CRm, Op2
 #define __ACCESS_CP15(CRn, Op1, CRm, Op2)	p15, Op1, %0, CRn, CRm, Op2
 #define __ACCESS_CP15_64(Op1, CRm)		p15, Op1, %Q0, %R0, CRm
 #define __ACCESS_CP15_64(Op1, CRm)		p15, Op1, %Q0, %R0, CRm

+ 5 - 0
arch/arm/include/asm/irq.h

@@ -40,6 +40,11 @@ extern void arch_trigger_all_cpu_backtrace(bool);
 #define arch_trigger_all_cpu_backtrace(x) arch_trigger_all_cpu_backtrace(x)
 #define arch_trigger_all_cpu_backtrace(x) arch_trigger_all_cpu_backtrace(x)
 #endif
 #endif
 
 
+static inline int nr_legacy_irqs(void)
+{
+	return NR_IRQS_LEGACY;
+}
+
 #endif
 #endif
 
 
 #endif
 #endif

+ 12 - 0
arch/arm/include/asm/kvm_emulate.h

@@ -28,6 +28,18 @@
 unsigned long *vcpu_reg(struct kvm_vcpu *vcpu, u8 reg_num);
 unsigned long *vcpu_reg(struct kvm_vcpu *vcpu, u8 reg_num);
 unsigned long *vcpu_spsr(struct kvm_vcpu *vcpu);
 unsigned long *vcpu_spsr(struct kvm_vcpu *vcpu);
 
 
+static inline unsigned long vcpu_get_reg(struct kvm_vcpu *vcpu,
+					 u8 reg_num)
+{
+	return *vcpu_reg(vcpu, reg_num);
+}
+
+static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, u8 reg_num,
+				unsigned long val)
+{
+	*vcpu_reg(vcpu, reg_num) = val;
+}
+
 bool kvm_condition_valid(struct kvm_vcpu *vcpu);
 bool kvm_condition_valid(struct kvm_vcpu *vcpu);
 void kvm_skip_instr(struct kvm_vcpu *vcpu, bool is_wide_instr);
 void kvm_skip_instr(struct kvm_vcpu *vcpu, bool is_wide_instr);
 void kvm_inject_undefined(struct kvm_vcpu *vcpu);
 void kvm_inject_undefined(struct kvm_vcpu *vcpu);

+ 1 - 0
arch/arm/include/uapi/asm/unistd.h

@@ -416,6 +416,7 @@
 #define __NR_execveat			(__NR_SYSCALL_BASE+387)
 #define __NR_execveat			(__NR_SYSCALL_BASE+387)
 #define __NR_userfaultfd		(__NR_SYSCALL_BASE+388)
 #define __NR_userfaultfd		(__NR_SYSCALL_BASE+388)
 #define __NR_membarrier			(__NR_SYSCALL_BASE+389)
 #define __NR_membarrier			(__NR_SYSCALL_BASE+389)
+#define __NR_mlock2			(__NR_SYSCALL_BASE+390)
 
 
 /*
 /*
  * The following SWIs are ARM private.
  * The following SWIs are ARM private.

+ 11 - 8
arch/arm/kernel/bios32.c

@@ -17,11 +17,6 @@
 #include <asm/mach/pci.h>
 #include <asm/mach/pci.h>
 
 
 static int debug_pci;
 static int debug_pci;
-static resource_size_t (*align_resource)(struct pci_dev *dev,
-		  const struct resource *res,
-		  resource_size_t start,
-		  resource_size_t size,
-		  resource_size_t align) = NULL;
 
 
 /*
 /*
  * We can't use pci_get_device() here since we are
  * We can't use pci_get_device() here since we are
@@ -461,7 +456,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw,
 		sys->busnr   = busnr;
 		sys->busnr   = busnr;
 		sys->swizzle = hw->swizzle;
 		sys->swizzle = hw->swizzle;
 		sys->map_irq = hw->map_irq;
 		sys->map_irq = hw->map_irq;
-		align_resource = hw->align_resource;
 		INIT_LIST_HEAD(&sys->resources);
 		INIT_LIST_HEAD(&sys->resources);
 
 
 		if (hw->private_data)
 		if (hw->private_data)
@@ -470,6 +464,8 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw,
 		ret = hw->setup(nr, sys);
 		ret = hw->setup(nr, sys);
 
 
 		if (ret > 0) {
 		if (ret > 0) {
+			struct pci_host_bridge *host_bridge;
+
 			ret = pcibios_init_resources(nr, sys);
 			ret = pcibios_init_resources(nr, sys);
 			if (ret)  {
 			if (ret)  {
 				kfree(sys);
 				kfree(sys);
@@ -491,6 +487,9 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw,
 			busnr = sys->bus->busn_res.end + 1;
 			busnr = sys->bus->busn_res.end + 1;
 
 
 			list_add(&sys->node, head);
 			list_add(&sys->node, head);
+
+			host_bridge = pci_find_host_bridge(sys->bus);
+			host_bridge->align_resource = hw->align_resource;
 		} else {
 		} else {
 			kfree(sys);
 			kfree(sys);
 			if (ret < 0)
 			if (ret < 0)
@@ -578,14 +577,18 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
 {
 {
 	struct pci_dev *dev = data;
 	struct pci_dev *dev = data;
 	resource_size_t start = res->start;
 	resource_size_t start = res->start;
+	struct pci_host_bridge *host_bridge;
 
 
 	if (res->flags & IORESOURCE_IO && start & 0x300)
 	if (res->flags & IORESOURCE_IO && start & 0x300)
 		start = (start + 0x3ff) & ~0x3ff;
 		start = (start + 0x3ff) & ~0x3ff;
 
 
 	start = (start + align - 1) & ~(align - 1);
 	start = (start + align - 1) & ~(align - 1);
 
 
-	if (align_resource)
-		return align_resource(dev, res, start, size, align);
+	host_bridge = pci_find_host_bridge(dev->bus);
+
+	if (host_bridge->align_resource)
+		return host_bridge->align_resource(dev, res,
+				start, size, align);
 
 
 	return start;
 	return start;
 }
 }

+ 1 - 0
arch/arm/kernel/calls.S

@@ -399,6 +399,7 @@
 		CALL(sys_execveat)
 		CALL(sys_execveat)
 		CALL(sys_userfaultfd)
 		CALL(sys_userfaultfd)
 		CALL(sys_membarrier)
 		CALL(sys_membarrier)
+		CALL(sys_mlock2)
 #ifndef syscalls_counted
 #ifndef syscalls_counted
 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
 #define syscalls_counted
 #define syscalls_counted

+ 1 - 6
arch/arm/kvm/arm.c

@@ -563,18 +563,13 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
 		if (vcpu->arch.power_off || vcpu->arch.pause)
 		if (vcpu->arch.power_off || vcpu->arch.pause)
 			vcpu_sleep(vcpu);
 			vcpu_sleep(vcpu);
 
 
-		/*
-		 * Disarming the background timer must be done in a
-		 * preemptible context, as this call may sleep.
-		 */
-		kvm_timer_flush_hwstate(vcpu);
-
 		/*
 		/*
 		 * Preparing the interrupts to be injected also
 		 * Preparing the interrupts to be injected also
 		 * involves poking the GIC, which must be done in a
 		 * involves poking the GIC, which must be done in a
 		 * non-preemptible context.
 		 * non-preemptible context.
 		 */
 		 */
 		preempt_disable();
 		preempt_disable();
+		kvm_timer_flush_hwstate(vcpu);
 		kvm_vgic_flush_hwstate(vcpu);
 		kvm_vgic_flush_hwstate(vcpu);
 
 
 		local_irq_disable();
 		local_irq_disable();

+ 3 - 2
arch/arm/kvm/mmio.c

@@ -115,7 +115,7 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run)
 		trace_kvm_mmio(KVM_TRACE_MMIO_READ, len, run->mmio.phys_addr,
 		trace_kvm_mmio(KVM_TRACE_MMIO_READ, len, run->mmio.phys_addr,
 			       data);
 			       data);
 		data = vcpu_data_host_to_guest(vcpu, data, len);
 		data = vcpu_data_host_to_guest(vcpu, data, len);
-		*vcpu_reg(vcpu, vcpu->arch.mmio_decode.rt) = data;
+		vcpu_set_reg(vcpu, vcpu->arch.mmio_decode.rt, data);
 	}
 	}
 
 
 	return 0;
 	return 0;
@@ -186,7 +186,8 @@ int io_mem_abort(struct kvm_vcpu *vcpu, struct kvm_run *run,
 	rt = vcpu->arch.mmio_decode.rt;
 	rt = vcpu->arch.mmio_decode.rt;
 
 
 	if (is_write) {
 	if (is_write) {
-		data = vcpu_data_guest_to_host(vcpu, *vcpu_reg(vcpu, rt), len);
+		data = vcpu_data_guest_to_host(vcpu, vcpu_get_reg(vcpu, rt),
+					       len);
 
 
 		trace_kvm_mmio(KVM_TRACE_MMIO_WRITE, len, fault_ipa, data);
 		trace_kvm_mmio(KVM_TRACE_MMIO_WRITE, len, fault_ipa, data);
 		mmio_write_buf(data_buf, len, data);
 		mmio_write_buf(data_buf, len, data);

+ 7 - 8
arch/arm/kvm/mmu.c

@@ -98,6 +98,11 @@ static void kvm_flush_dcache_pud(pud_t pud)
 	__kvm_flush_dcache_pud(pud);
 	__kvm_flush_dcache_pud(pud);
 }
 }
 
 
+static bool kvm_is_device_pfn(unsigned long pfn)
+{
+	return !pfn_valid(pfn);
+}
+
 /**
 /**
  * stage2_dissolve_pmd() - clear and flush huge PMD entry
  * stage2_dissolve_pmd() - clear and flush huge PMD entry
  * @kvm:	pointer to kvm structure.
  * @kvm:	pointer to kvm structure.
@@ -213,7 +218,7 @@ static void unmap_ptes(struct kvm *kvm, pmd_t *pmd,
 			kvm_tlb_flush_vmid_ipa(kvm, addr);
 			kvm_tlb_flush_vmid_ipa(kvm, addr);
 
 
 			/* No need to invalidate the cache for device mappings */
 			/* No need to invalidate the cache for device mappings */
-			if ((pte_val(old_pte) & PAGE_S2_DEVICE) != PAGE_S2_DEVICE)
+			if (!kvm_is_device_pfn(pte_pfn(old_pte)))
 				kvm_flush_dcache_pte(old_pte);
 				kvm_flush_dcache_pte(old_pte);
 
 
 			put_page(virt_to_page(pte));
 			put_page(virt_to_page(pte));
@@ -305,8 +310,7 @@ static void stage2_flush_ptes(struct kvm *kvm, pmd_t *pmd,
 
 
 	pte = pte_offset_kernel(pmd, addr);
 	pte = pte_offset_kernel(pmd, addr);
 	do {
 	do {
-		if (!pte_none(*pte) &&
-		    (pte_val(*pte) & PAGE_S2_DEVICE) != PAGE_S2_DEVICE)
+		if (!pte_none(*pte) && !kvm_is_device_pfn(pte_pfn(*pte)))
 			kvm_flush_dcache_pte(*pte);
 			kvm_flush_dcache_pte(*pte);
 	} while (pte++, addr += PAGE_SIZE, addr != end);
 	} while (pte++, addr += PAGE_SIZE, addr != end);
 }
 }
@@ -1037,11 +1041,6 @@ static bool kvm_is_write_fault(struct kvm_vcpu *vcpu)
 	return kvm_vcpu_dabt_iswrite(vcpu);
 	return kvm_vcpu_dabt_iswrite(vcpu);
 }
 }
 
 
-static bool kvm_is_device_pfn(unsigned long pfn)
-{
-	return !pfn_valid(pfn);
-}
-
 /**
 /**
  * stage2_wp_ptes - write protect PMD range
  * stage2_wp_ptes - write protect PMD range
  * @pmd:	pointer to pmd entry
  * @pmd:	pointer to pmd entry

+ 10 - 10
arch/arm/kvm/psci.c

@@ -75,7 +75,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 	unsigned long context_id;
 	unsigned long context_id;
 	phys_addr_t target_pc;
 	phys_addr_t target_pc;
 
 
-	cpu_id = *vcpu_reg(source_vcpu, 1) & MPIDR_HWID_BITMASK;
+	cpu_id = vcpu_get_reg(source_vcpu, 1) & MPIDR_HWID_BITMASK;
 	if (vcpu_mode_is_32bit(source_vcpu))
 	if (vcpu_mode_is_32bit(source_vcpu))
 		cpu_id &= ~((u32) 0);
 		cpu_id &= ~((u32) 0);
 
 
@@ -94,8 +94,8 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 			return PSCI_RET_INVALID_PARAMS;
 			return PSCI_RET_INVALID_PARAMS;
 	}
 	}
 
 
-	target_pc = *vcpu_reg(source_vcpu, 2);
-	context_id = *vcpu_reg(source_vcpu, 3);
+	target_pc = vcpu_get_reg(source_vcpu, 2);
+	context_id = vcpu_get_reg(source_vcpu, 3);
 
 
 	kvm_reset_vcpu(vcpu);
 	kvm_reset_vcpu(vcpu);
 
 
@@ -114,7 +114,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 	 * NOTE: We always update r0 (or x0) because for PSCI v0.1
 	 * NOTE: We always update r0 (or x0) because for PSCI v0.1
 	 * the general puspose registers are undefined upon CPU_ON.
 	 * the general puspose registers are undefined upon CPU_ON.
 	 */
 	 */
-	*vcpu_reg(vcpu, 0) = context_id;
+	vcpu_set_reg(vcpu, 0, context_id);
 	vcpu->arch.power_off = false;
 	vcpu->arch.power_off = false;
 	smp_mb();		/* Make sure the above is visible */
 	smp_mb();		/* Make sure the above is visible */
 
 
@@ -134,8 +134,8 @@ static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu)
 	struct kvm *kvm = vcpu->kvm;
 	struct kvm *kvm = vcpu->kvm;
 	struct kvm_vcpu *tmp;
 	struct kvm_vcpu *tmp;
 
 
-	target_affinity = *vcpu_reg(vcpu, 1);
-	lowest_affinity_level = *vcpu_reg(vcpu, 2);
+	target_affinity = vcpu_get_reg(vcpu, 1);
+	lowest_affinity_level = vcpu_get_reg(vcpu, 2);
 
 
 	/* Determine target affinity mask */
 	/* Determine target affinity mask */
 	target_affinity_mask = psci_affinity_mask(lowest_affinity_level);
 	target_affinity_mask = psci_affinity_mask(lowest_affinity_level);
@@ -209,7 +209,7 @@ int kvm_psci_version(struct kvm_vcpu *vcpu)
 static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
 static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
 {
 {
 	int ret = 1;
 	int ret = 1;
-	unsigned long psci_fn = *vcpu_reg(vcpu, 0) & ~((u32) 0);
+	unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0);
 	unsigned long val;
 	unsigned long val;
 
 
 	switch (psci_fn) {
 	switch (psci_fn) {
@@ -273,13 +273,13 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
 		break;
 		break;
 	}
 	}
 
 
-	*vcpu_reg(vcpu, 0) = val;
+	vcpu_set_reg(vcpu, 0, val);
 	return ret;
 	return ret;
 }
 }
 
 
 static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
 static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
 {
 {
-	unsigned long psci_fn = *vcpu_reg(vcpu, 0) & ~((u32) 0);
+	unsigned long psci_fn = vcpu_get_reg(vcpu, 0) & ~((u32) 0);
 	unsigned long val;
 	unsigned long val;
 
 
 	switch (psci_fn) {
 	switch (psci_fn) {
@@ -295,7 +295,7 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
 		break;
 		break;
 	}
 	}
 
 
-	*vcpu_reg(vcpu, 0) = val;
+	vcpu_set_reg(vcpu, 0, val);
 	return 1;
 	return 1;
 }
 }
 
 

+ 5 - 1
arch/arm/mach-at91/Kconfig

@@ -4,7 +4,6 @@ menuconfig ARCH_AT91
 	select ARCH_REQUIRE_GPIOLIB
 	select ARCH_REQUIRE_GPIOLIB
 	select COMMON_CLK_AT91
 	select COMMON_CLK_AT91
 	select PINCTRL
 	select PINCTRL
-	select PINCTRL_AT91
 	select SOC_BUS
 	select SOC_BUS
 
 
 if ARCH_AT91
 if ARCH_AT91
@@ -17,6 +16,7 @@ config SOC_SAMA5D2
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_H32MX
 	select HAVE_AT91_H32MX
 	select HAVE_AT91_GENERATED_CLK
 	select HAVE_AT91_GENERATED_CLK
+	select PINCTRL_AT91PIO4
 	help
 	help
 	  Select this if ou are using one of Atmel's SAMA5D2 family SoC.
 	  Select this if ou are using one of Atmel's SAMA5D2 family SoC.
 
 
@@ -27,6 +27,7 @@ config SOC_SAMA5D3
 	select HAVE_AT91_UTMI
 	select HAVE_AT91_UTMI
 	select HAVE_AT91_SMD
 	select HAVE_AT91_SMD
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_USB_CLK
+	select PINCTRL_AT91
 	help
 	help
 	  Select this if you are using one of Atmel's SAMA5D3 family SoC.
 	  Select this if you are using one of Atmel's SAMA5D3 family SoC.
 	  This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
 	  This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
@@ -40,6 +41,7 @@ config SOC_SAMA5D4
 	select HAVE_AT91_SMD
 	select HAVE_AT91_SMD
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_H32MX
 	select HAVE_AT91_H32MX
+	select PINCTRL_AT91
 	help
 	help
 	  Select this if you are using one of Atmel's SAMA5D4 family SoC.
 	  Select this if you are using one of Atmel's SAMA5D4 family SoC.
 
 
@@ -50,6 +52,7 @@ config SOC_AT91RM9200
 	select CPU_ARM920T
 	select CPU_ARM920T
 	select HAVE_AT91_USB_CLK
 	select HAVE_AT91_USB_CLK
 	select MIGHT_HAVE_PCI
 	select MIGHT_HAVE_PCI
+	select PINCTRL_AT91
 	select SOC_SAM_V4_V5
 	select SOC_SAM_V4_V5
 	select SRAM if PM
 	select SRAM if PM
 	help
 	help
@@ -65,6 +68,7 @@ config SOC_AT91SAM9
 	select HAVE_AT91_UTMI
 	select HAVE_AT91_UTMI
 	select HAVE_FB_ATMEL
 	select HAVE_FB_ATMEL
 	select MEMORY
 	select MEMORY
+	select PINCTRL_AT91
 	select SOC_SAM_V4_V5
 	select SOC_SAM_V4_V5
 	select SRAM if PM
 	select SRAM if PM
 	help
 	help

+ 6 - 1
arch/arm/mach-at91/pm.c

@@ -41,8 +41,10 @@
  * implementation should be moved down into the pinctrl driver and get
  * implementation should be moved down into the pinctrl driver and get
  * called as part of the generic suspend/resume path.
  * called as part of the generic suspend/resume path.
  */
  */
+#ifdef CONFIG_PINCTRL_AT91
 extern void at91_pinctrl_gpio_suspend(void);
 extern void at91_pinctrl_gpio_suspend(void);
 extern void at91_pinctrl_gpio_resume(void);
 extern void at91_pinctrl_gpio_resume(void);
+#endif
 
 
 static struct {
 static struct {
 	unsigned long uhp_udp_mask;
 	unsigned long uhp_udp_mask;
@@ -151,8 +153,9 @@ static void at91_pm_suspend(suspend_state_t state)
 
 
 static int at91_pm_enter(suspend_state_t state)
 static int at91_pm_enter(suspend_state_t state)
 {
 {
+#ifdef CONFIG_PINCTRL_AT91
 	at91_pinctrl_gpio_suspend();
 	at91_pinctrl_gpio_suspend();
-
+#endif
 	switch (state) {
 	switch (state) {
 	/*
 	/*
 	 * Suspend-to-RAM is like STANDBY plus slow clock mode, so
 	 * Suspend-to-RAM is like STANDBY plus slow clock mode, so
@@ -192,7 +195,9 @@ static int at91_pm_enter(suspend_state_t state)
 error:
 error:
 	target_state = PM_SUSPEND_ON;
 	target_state = PM_SUSPEND_ON;
 
 
+#ifdef CONFIG_PINCTRL_AT91
 	at91_pinctrl_gpio_resume();
 	at91_pinctrl_gpio_resume();
+#endif
 	return 0;
 	return 0;
 }
 }
 
 

+ 2 - 2
arch/arm/mach-dove/include/mach/entry-macro.S

@@ -18,13 +18,13 @@
 	@ check low interrupts
 	@ check low interrupts
 	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
 	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
 	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
 	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
-	mov	\irqnr, #31
+	mov	\irqnr, #32
 	ands	\irqstat, \irqstat, \tmp
 	ands	\irqstat, \irqstat, \tmp
 
 
 	@ if no low interrupts set, check high interrupts
 	@ if no low interrupts set, check high interrupts
 	ldreq	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
 	ldreq	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
 	ldreq	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
 	ldreq	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
-	moveq	\irqnr, #63
+	moveq	\irqnr, #64
 	andeqs	\irqstat, \irqstat, \tmp
 	andeqs	\irqstat, \irqstat, \tmp
 
 
 	@ find first active interrupt source
 	@ find first active interrupt source

+ 5 - 1
arch/arm/mach-exynos/pmu.c

@@ -748,8 +748,12 @@ static void exynos5_powerdown_conf(enum sys_powerdown mode)
 void exynos_sys_powerdown_conf(enum sys_powerdown mode)
 void exynos_sys_powerdown_conf(enum sys_powerdown mode)
 {
 {
 	unsigned int i;
 	unsigned int i;
+	const struct exynos_pmu_data *pmu_data;
+
+	if (!pmu_context)
+		return;
 
 
-	const struct exynos_pmu_data *pmu_data = pmu_context->pmu_data;
+	pmu_data = pmu_context->pmu_data;
 
 
 	if (pmu_data->powerdown_conf)
 	if (pmu_data->powerdown_conf)
 		pmu_data->powerdown_conf(mode);
 		pmu_data->powerdown_conf(mode);

+ 1 - 0
arch/arm/mach-imx/gpc.c

@@ -177,6 +177,7 @@ static struct irq_chip imx_gpc_chip = {
 	.irq_unmask		= imx_gpc_irq_unmask,
 	.irq_unmask		= imx_gpc_irq_unmask,
 	.irq_retrigger		= irq_chip_retrigger_hierarchy,
 	.irq_retrigger		= irq_chip_retrigger_hierarchy,
 	.irq_set_wake		= imx_gpc_irq_set_wake,
 	.irq_set_wake		= imx_gpc_irq_set_wake,
+	.irq_set_type           = irq_chip_set_type_parent,
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
 	.irq_set_affinity	= irq_chip_set_affinity_parent,
 	.irq_set_affinity	= irq_chip_set_affinity_parent,
 #endif
 #endif

+ 6 - 6
arch/arm/mach-ixp4xx/include/mach/io.h

@@ -143,7 +143,7 @@ static inline void __indirect_writesl(volatile void __iomem *bus_addr,
 		writel(*vaddr++, bus_addr);
 		writel(*vaddr++, bus_addr);
 }
 }
 
 
-static inline unsigned char __indirect_readb(const volatile void __iomem *p)
+static inline u8 __indirect_readb(const volatile void __iomem *p)
 {
 {
 	u32 addr = (u32)p;
 	u32 addr = (u32)p;
 	u32 n, byte_enables, data;
 	u32 n, byte_enables, data;
@@ -166,7 +166,7 @@ static inline void __indirect_readsb(const volatile void __iomem *bus_addr,
 		*vaddr++ = readb(bus_addr);
 		*vaddr++ = readb(bus_addr);
 }
 }
 
 
-static inline unsigned short __indirect_readw(const volatile void __iomem *p)
+static inline u16 __indirect_readw(const volatile void __iomem *p)
 {
 {
 	u32 addr = (u32)p;
 	u32 addr = (u32)p;
 	u32 n, byte_enables, data;
 	u32 n, byte_enables, data;
@@ -189,7 +189,7 @@ static inline void __indirect_readsw(const volatile void __iomem *bus_addr,
 		*vaddr++ = readw(bus_addr);
 		*vaddr++ = readw(bus_addr);
 }
 }
 
 
-static inline unsigned long __indirect_readl(const volatile void __iomem *p)
+static inline u32 __indirect_readl(const volatile void __iomem *p)
 {
 {
 	u32 addr = (__force u32)p;
 	u32 addr = (__force u32)p;
 	u32 data;
 	u32 data;
@@ -350,7 +350,7 @@ static inline void insl(u32 io_addr, void *p, u32 count)
 					((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
 					((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
 
 
 #define	ioread8(p)			ioread8(p)
 #define	ioread8(p)			ioread8(p)
-static inline unsigned int ioread8(const void __iomem *addr)
+static inline u8 ioread8(const void __iomem *addr)
 {
 {
 	unsigned long port = (unsigned long __force)addr;
 	unsigned long port = (unsigned long __force)addr;
 	if (__is_io_address(port))
 	if (__is_io_address(port))
@@ -378,7 +378,7 @@ static inline void ioread8_rep(const void __iomem *addr, void *vaddr, u32 count)
 }
 }
 
 
 #define	ioread16(p)			ioread16(p)
 #define	ioread16(p)			ioread16(p)
-static inline unsigned int ioread16(const void __iomem *addr)
+static inline u16 ioread16(const void __iomem *addr)
 {
 {
 	unsigned long port = (unsigned long __force)addr;
 	unsigned long port = (unsigned long __force)addr;
 	if (__is_io_address(port))
 	if (__is_io_address(port))
@@ -407,7 +407,7 @@ static inline void ioread16_rep(const void __iomem *addr, void *vaddr,
 }
 }
 
 
 #define	ioread32(p)			ioread32(p)
 #define	ioread32(p)			ioread32(p)
-static inline unsigned int ioread32(const void __iomem *addr)
+static inline u32 ioread32(const void __iomem *addr)
 {
 {
 	unsigned long port = (unsigned long __force)addr;
 	unsigned long port = (unsigned long __force)addr;
 	if (__is_io_address(port))
 	if (__is_io_address(port))

+ 1 - 1
arch/arm/mach-omap2/Kconfig

@@ -121,6 +121,7 @@ config ARCH_OMAP2PLUS_TYPICAL
 	select NEON if CPU_V7
 	select NEON if CPU_V7
 	select PM
 	select PM
 	select REGULATOR
 	select REGULATOR
+	select REGULATOR_FIXED_VOLTAGE
 	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
 	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
 	select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
 	select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
 	select VFP
 	select VFP
@@ -201,7 +202,6 @@ config MACH_OMAP3_PANDORA
 	depends on ARCH_OMAP3
 	depends on ARCH_OMAP3
 	default y
 	default y
 	select OMAP_PACKAGE_CBB
 	select OMAP_PACKAGE_CBB
-	select REGULATOR_FIXED_VOLTAGE if REGULATOR
 
 
 config MACH_NOKIA_N810
 config MACH_NOKIA_N810
        bool
        bool

+ 3 - 3
arch/arm/mach-omap2/omap-smp.c

@@ -143,9 +143,9 @@ static int omap4_boot_secondary(unsigned int cpu, struct task_struct *idle)
 		 * Ensure that CPU power state is set to ON to avoid CPU
 		 * Ensure that CPU power state is set to ON to avoid CPU
 		 * powerdomain transition on wfi
 		 * powerdomain transition on wfi
 		 */
 		 */
-		clkdm_wakeup(cpu1_clkdm);
-		omap_set_pwrdm_state(cpu1_pwrdm, PWRDM_POWER_ON);
-		clkdm_allow_idle(cpu1_clkdm);
+		clkdm_wakeup_nolock(cpu1_clkdm);
+		pwrdm_set_next_pwrst(cpu1_pwrdm, PWRDM_POWER_ON);
+		clkdm_allow_idle_nolock(cpu1_clkdm);
 
 
 		if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) {
 		if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) {
 			while (gic_dist_disabled()) {
 			while (gic_dist_disabled()) {

+ 36 - 30
arch/arm/mach-omap2/omap_hwmod.c

@@ -890,6 +890,36 @@ static int _init_opt_clks(struct omap_hwmod *oh)
 	return ret;
 	return ret;
 }
 }
 
 
+static void _enable_optional_clocks(struct omap_hwmod *oh)
+{
+	struct omap_hwmod_opt_clk *oc;
+	int i;
+
+	pr_debug("omap_hwmod: %s: enabling optional clocks\n", oh->name);
+
+	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
+		if (oc->_clk) {
+			pr_debug("omap_hwmod: enable %s:%s\n", oc->role,
+				 __clk_get_name(oc->_clk));
+			clk_enable(oc->_clk);
+		}
+}
+
+static void _disable_optional_clocks(struct omap_hwmod *oh)
+{
+	struct omap_hwmod_opt_clk *oc;
+	int i;
+
+	pr_debug("omap_hwmod: %s: disabling optional clocks\n", oh->name);
+
+	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
+		if (oc->_clk) {
+			pr_debug("omap_hwmod: disable %s:%s\n", oc->role,
+				 __clk_get_name(oc->_clk));
+			clk_disable(oc->_clk);
+		}
+}
+
 /**
 /**
  * _enable_clocks - enable hwmod main clock and interface clocks
  * _enable_clocks - enable hwmod main clock and interface clocks
  * @oh: struct omap_hwmod *
  * @oh: struct omap_hwmod *
@@ -917,6 +947,9 @@ static int _enable_clocks(struct omap_hwmod *oh)
 			clk_enable(os->_clk);
 			clk_enable(os->_clk);
 	}
 	}
 
 
+	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
+		_enable_optional_clocks(oh);
+
 	/* The opt clocks are controlled by the device driver. */
 	/* The opt clocks are controlled by the device driver. */
 
 
 	return 0;
 	return 0;
@@ -948,41 +981,14 @@ static int _disable_clocks(struct omap_hwmod *oh)
 			clk_disable(os->_clk);
 			clk_disable(os->_clk);
 	}
 	}
 
 
+	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
+		_disable_optional_clocks(oh);
+
 	/* The opt clocks are controlled by the device driver. */
 	/* The opt clocks are controlled by the device driver. */
 
 
 	return 0;
 	return 0;
 }
 }
 
 
-static void _enable_optional_clocks(struct omap_hwmod *oh)
-{
-	struct omap_hwmod_opt_clk *oc;
-	int i;
-
-	pr_debug("omap_hwmod: %s: enabling optional clocks\n", oh->name);
-
-	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
-		if (oc->_clk) {
-			pr_debug("omap_hwmod: enable %s:%s\n", oc->role,
-				 __clk_get_name(oc->_clk));
-			clk_enable(oc->_clk);
-		}
-}
-
-static void _disable_optional_clocks(struct omap_hwmod *oh)
-{
-	struct omap_hwmod_opt_clk *oc;
-	int i;
-
-	pr_debug("omap_hwmod: %s: disabling optional clocks\n", oh->name);
-
-	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
-		if (oc->_clk) {
-			pr_debug("omap_hwmod: disable %s:%s\n", oc->role,
-				 __clk_get_name(oc->_clk));
-			clk_disable(oc->_clk);
-		}
-}
-
 /**
 /**
  * _omap4_enable_module - enable CLKCTRL modulemode on OMAP4
  * _omap4_enable_module - enable CLKCTRL modulemode on OMAP4
  * @oh: struct omap_hwmod *
  * @oh: struct omap_hwmod *

+ 3 - 0
arch/arm/mach-omap2/omap_hwmod.h

@@ -523,6 +523,8 @@ struct omap_hwmod_omap4_prcm {
  * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up 
  * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up 
  *     events by calling _reconfigure_io_chain() when a device is enabled
  *     events by calling _reconfigure_io_chain() when a device is enabled
  *     or idled.
  *     or idled.
+ * HWMOD_OPT_CLKS_NEEDED: The optional clocks are needed for the module to
+ *     operate and they need to be handled at the same time as the main_clk.
  */
  */
 #define HWMOD_SWSUP_SIDLE			(1 << 0)
 #define HWMOD_SWSUP_SIDLE			(1 << 0)
 #define HWMOD_SWSUP_MSTANDBY			(1 << 1)
 #define HWMOD_SWSUP_MSTANDBY			(1 << 1)
@@ -538,6 +540,7 @@ struct omap_hwmod_omap4_prcm {
 #define HWMOD_FORCE_MSTANDBY			(1 << 11)
 #define HWMOD_FORCE_MSTANDBY			(1 << 11)
 #define HWMOD_SWSUP_SIDLE_ACT			(1 << 12)
 #define HWMOD_SWSUP_SIDLE_ACT			(1 << 12)
 #define HWMOD_RECONFIG_IO_CHAIN			(1 << 13)
 #define HWMOD_RECONFIG_IO_CHAIN			(1 << 13)
+#define HWMOD_OPT_CLKS_NEEDED			(1 << 14)
 
 
 /*
 /*
  * omap_hwmod._int_flags definitions
  * omap_hwmod._int_flags definitions

+ 56 - 0
arch/arm/mach-omap2/omap_hwmod_7xx_data.c

@@ -1297,6 +1297,44 @@ static struct omap_hwmod dra7xx_mcspi4_hwmod = {
 	.dev_attr	= &mcspi4_dev_attr,
 	.dev_attr	= &mcspi4_dev_attr,
 };
 };
 
 
+/*
+ * 'mcasp' class
+ *
+ */
+static struct omap_hwmod_class_sysconfig dra7xx_mcasp_sysc = {
+	.sysc_offs	= 0x0004,
+	.sysc_flags	= SYSC_HAS_SIDLEMODE,
+	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+	.sysc_fields	= &omap_hwmod_sysc_type3,
+};
+
+static struct omap_hwmod_class dra7xx_mcasp_hwmod_class = {
+	.name	= "mcasp",
+	.sysc	= &dra7xx_mcasp_sysc,
+};
+
+/* mcasp3 */
+static struct omap_hwmod_opt_clk mcasp3_opt_clks[] = {
+	{ .role = "ahclkx", .clk = "mcasp3_ahclkx_mux" },
+};
+
+static struct omap_hwmod dra7xx_mcasp3_hwmod = {
+	.name		= "mcasp3",
+	.class		= &dra7xx_mcasp_hwmod_class,
+	.clkdm_name	= "l4per2_clkdm",
+	.main_clk	= "mcasp3_aux_gfclk_mux",
+	.flags		= HWMOD_OPT_CLKS_NEEDED,
+	.prcm = {
+		.omap4 = {
+			.clkctrl_offs = DRA7XX_CM_L4PER2_MCASP3_CLKCTRL_OFFSET,
+			.context_offs = DRA7XX_RM_L4PER2_MCASP3_CONTEXT_OFFSET,
+			.modulemode   = MODULEMODE_SWCTRL,
+		},
+	},
+	.opt_clks	= mcasp3_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(mcasp3_opt_clks),
+};
+
 /*
 /*
  * 'mmc' class
  * 'mmc' class
  *
  *
@@ -2566,6 +2604,22 @@ static struct omap_hwmod_ocp_if dra7xx_l3_main_1__hdmi = {
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 };
 
 
+/* l4_per2 -> mcasp3 */
+static struct omap_hwmod_ocp_if dra7xx_l4_per2__mcasp3 = {
+	.master		= &dra7xx_l4_per2_hwmod,
+	.slave		= &dra7xx_mcasp3_hwmod,
+	.clk		= "l4_root_clk_div",
+	.user		= OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_1 -> mcasp3 */
+static struct omap_hwmod_ocp_if dra7xx_l3_main_1__mcasp3 = {
+	.master		= &dra7xx_l3_main_1_hwmod,
+	.slave		= &dra7xx_mcasp3_hwmod,
+	.clk		= "l3_iclk_div",
+	.user		= OCP_USER_MPU | OCP_USER_SDMA,
+};
+
 /* l4_per1 -> elm */
 /* l4_per1 -> elm */
 static struct omap_hwmod_ocp_if dra7xx_l4_per1__elm = {
 static struct omap_hwmod_ocp_if dra7xx_l4_per1__elm = {
 	.master		= &dra7xx_l4_per1_hwmod,
 	.master		= &dra7xx_l4_per1_hwmod,
@@ -3308,6 +3362,8 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
 	&dra7xx_l4_wkup__dcan1,
 	&dra7xx_l4_wkup__dcan1,
 	&dra7xx_l4_per2__dcan2,
 	&dra7xx_l4_per2__dcan2,
 	&dra7xx_l4_per2__cpgmac0,
 	&dra7xx_l4_per2__cpgmac0,
+	&dra7xx_l4_per2__mcasp3,
+	&dra7xx_l3_main_1__mcasp3,
 	&dra7xx_gmac__mdio,
 	&dra7xx_gmac__mdio,
 	&dra7xx_l4_cfg__dma_system,
 	&dra7xx_l4_cfg__dma_system,
 	&dra7xx_l3_main_1__dss,
 	&dra7xx_l3_main_1__dss,

+ 3 - 0
arch/arm/mach-omap2/omap_hwmod_81xx_data.c

@@ -144,6 +144,7 @@ static struct omap_hwmod dm81xx_l4_ls_hwmod = {
 	.name		= "l4_ls",
 	.name		= "l4_ls",
 	.clkdm_name	= "alwon_l3s_clkdm",
 	.clkdm_name	= "alwon_l3s_clkdm",
 	.class		= &l4_hwmod_class,
 	.class		= &l4_hwmod_class,
+	.flags		= HWMOD_NO_IDLEST,
 };
 };
 
 
 /*
 /*
@@ -155,6 +156,7 @@ static struct omap_hwmod dm81xx_l4_hs_hwmod = {
 	.name		= "l4_hs",
 	.name		= "l4_hs",
 	.clkdm_name	= "alwon_l3_med_clkdm",
 	.clkdm_name	= "alwon_l3_med_clkdm",
 	.class		= &l4_hwmod_class,
 	.class		= &l4_hwmod_class,
+	.flags		= HWMOD_NO_IDLEST,
 };
 };
 
 
 /* L3 slow -> L4 ls peripheral interface running at 125MHz */
 /* L3 slow -> L4 ls peripheral interface running at 125MHz */
@@ -850,6 +852,7 @@ static struct omap_hwmod dm816x_emac0_hwmod = {
 	.name		= "emac0",
 	.name		= "emac0",
 	.clkdm_name	= "alwon_ethernet_clkdm",
 	.clkdm_name	= "alwon_ethernet_clkdm",
 	.class		= &dm816x_emac_hwmod_class,
 	.class		= &dm816x_emac_hwmod_class,
+	.flags		= HWMOD_NO_IDLEST,
 };
 };
 
 
 static struct omap_hwmod_ocp_if dm81xx_l4_hs__emac0 = {
 static struct omap_hwmod_ocp_if dm81xx_l4_hs__emac0 = {

+ 0 - 29
arch/arm/mach-omap2/pdata-quirks.c

@@ -24,9 +24,6 @@
 #include <linux/platform_data/iommu-omap.h>
 #include <linux/platform_data/iommu-omap.h>
 #include <linux/platform_data/wkup_m3.h>
 #include <linux/platform_data/wkup_m3.h>
 
 
-#include <asm/siginfo.h>
-#include <asm/signal.h>
-
 #include "common.h"
 #include "common.h"
 #include "common-board-devices.h"
 #include "common-board-devices.h"
 #include "dss-common.h"
 #include "dss-common.h"
@@ -385,29 +382,6 @@ static void __init omap3_pandora_legacy_init(void)
 }
 }
 #endif /* CONFIG_ARCH_OMAP3 */
 #endif /* CONFIG_ARCH_OMAP3 */
 
 
-#ifdef CONFIG_SOC_TI81XX
-static int fault_fixed_up;
-
-static int t410_abort_handler(unsigned long addr, unsigned int fsr,
-			      struct pt_regs *regs)
-{
-	if ((fsr == 0x406 || fsr == 0xc06) && !fault_fixed_up) {
-		pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n",
-			addr, fsr);
-		fault_fixed_up = 1;
-		return 0;
-	}
-
-	return 1;
-}
-
-static void __init t410_abort_init(void)
-{
-	hook_fault_code(16 + 6, t410_abort_handler, SIGBUS, BUS_OBJERR,
-			"imprecise external abort");
-}
-#endif
-
 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
 static struct iommu_platform_data omap4_iommu_pdata = {
 static struct iommu_platform_data omap4_iommu_pdata = {
 	.reset_name = "mmu_cache",
 	.reset_name = "mmu_cache",
@@ -536,9 +510,6 @@ static struct pdata_init pdata_quirks[] __initdata = {
 	{ "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, },
 	{ "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, },
 	{ "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, },
 	{ "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, },
 #endif
 #endif
-#ifdef CONFIG_SOC_TI81XX
-	{ "hp,t410", t410_abort_init, },
-#endif
 #ifdef CONFIG_SOC_OMAP5
 #ifdef CONFIG_SOC_OMAP5
 	{ "ti,omap5-uevm", omap5_uevm_legacy_init, },
 	{ "ti,omap5-uevm", omap5_uevm_legacy_init, },
 #endif
 #endif

+ 2 - 2
arch/arm/mach-omap2/pm34xx.c

@@ -301,11 +301,11 @@ static void omap3_pm_idle(void)
 	if (omap_irq_pending())
 	if (omap_irq_pending())
 		return;
 		return;
 
 
-	trace_cpu_idle(1, smp_processor_id());
+	trace_cpu_idle_rcuidle(1, smp_processor_id());
 
 
 	omap_sram_idle();
 	omap_sram_idle();
 
 
-	trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
+	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
 }
 }
 
 
 #ifdef CONFIG_SUSPEND
 #ifdef CONFIG_SUSPEND

+ 1 - 1
arch/arm/mach-orion5x/include/mach/entry-macro.S

@@ -21,5 +21,5 @@
 	@ find cause bits that are unmasked
 	@ find cause bits that are unmasked
 	ands	\irqstat, \irqstat, \tmp	@ clear Z flag if any
 	ands	\irqstat, \irqstat, \tmp	@ clear Z flag if any
 	clzne	\irqnr,	\irqstat		@ calc irqnr
 	clzne	\irqnr,	\irqstat		@ calc irqnr
-	rsbne	\irqnr, \irqnr, #31
+	rsbne	\irqnr, \irqnr, #32
 	.endm
 	.endm

+ 5 - 0
arch/arm/mach-pxa/ezx.c

@@ -889,6 +889,7 @@ static void __init e680_init(void)
 
 
 	pxa_set_keypad_info(&e680_keypad_platform_data);
 	pxa_set_keypad_info(&e680_keypad_platform_data);
 
 
+	pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e680_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e680_devices));
 }
 }
@@ -956,6 +957,7 @@ static void __init a1200_init(void)
 
 
 	pxa_set_keypad_info(&a1200_keypad_platform_data);
 	pxa_set_keypad_info(&a1200_keypad_platform_data);
 
 
+	pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(a1200_devices));
 	platform_add_devices(ARRAY_AND_SIZE(a1200_devices));
 }
 }
@@ -1148,6 +1150,7 @@ static void __init a910_init(void)
 		platform_device_register(&a910_camera);
 		platform_device_register(&a910_camera);
 	}
 	}
 
 
+	pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(a910_devices));
 	platform_add_devices(ARRAY_AND_SIZE(a910_devices));
 }
 }
@@ -1215,6 +1218,7 @@ static void __init e6_init(void)
 
 
 	pxa_set_keypad_info(&e6_keypad_platform_data);
 	pxa_set_keypad_info(&e6_keypad_platform_data);
 
 
+	pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e6_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e6_devices));
 }
 }
@@ -1256,6 +1260,7 @@ static void __init e2_init(void)
 
 
 	pxa_set_keypad_info(&e2_keypad_platform_data);
 	pxa_set_keypad_info(&e2_keypad_platform_data);
 
 
+	pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e2_devices));
 	platform_add_devices(ARRAY_AND_SIZE(e2_devices));
 }
 }

+ 1 - 1
arch/arm/mach-pxa/palm27x.c

@@ -344,7 +344,7 @@ void __init palm27x_pwm_init(int bl, int lcd)
 {
 {
 	palm_bl_power	= bl;
 	palm_bl_power	= bl;
 	palm_lcd_power	= lcd;
 	palm_lcd_power	= lcd;
-	pwm_add_lookup(palm27x_pwm_lookup, ARRAY_SIZE(palm27x_pwm_lookup));
+	pwm_add_table(palm27x_pwm_lookup, ARRAY_SIZE(palm27x_pwm_lookup));
 	platform_device_register(&palm27x_backlight);
 	platform_device_register(&palm27x_backlight);
 }
 }
 #endif
 #endif

+ 1 - 1
arch/arm/mach-pxa/palmtc.c

@@ -169,7 +169,7 @@ static inline void palmtc_keys_init(void) {}
 #if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE)
 #if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE)
 static struct pwm_lookup palmtc_pwm_lookup[] = {
 static struct pwm_lookup palmtc_pwm_lookup[] = {
 	PWM_LOOKUP("pxa25x-pwm.1", 0, "pwm-backlight.0", NULL, PALMTC_PERIOD_NS,
 	PWM_LOOKUP("pxa25x-pwm.1", 0, "pwm-backlight.0", NULL, PALMTC_PERIOD_NS,
-		   PWM_PERIOD_NORMAL),
+		   PWM_POLARITY_NORMAL),
 };
 };
 
 
 static struct platform_pwm_backlight_data palmtc_backlight_data = {
 static struct platform_pwm_backlight_data palmtc_backlight_data = {

+ 1 - 1
arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c

@@ -20,7 +20,7 @@
 #include <plat/cpu.h>
 #include <plat/cpu.h>
 #include <plat/cpu-freq-core.h>
 #include <plat/cpu-freq-core.h>
 
 
-static struct cpufreq_frequency_table s3c2440_plls_12[] __initdata = {
+static struct cpufreq_frequency_table s3c2440_plls_12[] = {
 	{ .frequency = 75000000,	.driver_data = PLLVAL(0x75, 3, 3),  }, 	/* FVco 600.000000 */
 	{ .frequency = 75000000,	.driver_data = PLLVAL(0x75, 3, 3),  }, 	/* FVco 600.000000 */
 	{ .frequency = 80000000,	.driver_data = PLLVAL(0x98, 4, 3),  }, 	/* FVco 640.000000 */
 	{ .frequency = 80000000,	.driver_data = PLLVAL(0x98, 4, 3),  }, 	/* FVco 640.000000 */
 	{ .frequency = 90000000,	.driver_data = PLLVAL(0x70, 2, 3),  }, 	/* FVco 720.000000 */
 	{ .frequency = 90000000,	.driver_data = PLLVAL(0x70, 2, 3),  }, 	/* FVco 720.000000 */

+ 1 - 1
arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c

@@ -20,7 +20,7 @@
 #include <plat/cpu.h>
 #include <plat/cpu.h>
 #include <plat/cpu-freq-core.h>
 #include <plat/cpu-freq-core.h>
 
 
-static struct cpufreq_frequency_table s3c2440_plls_169344[] __initdata = {
+static struct cpufreq_frequency_table s3c2440_plls_169344[] = {
 	{ .frequency = 78019200,	.driver_data = PLLVAL(121, 5, 3), 	}, 	/* FVco 624.153600 */
 	{ .frequency = 78019200,	.driver_data = PLLVAL(121, 5, 3), 	}, 	/* FVco 624.153600 */
 	{ .frequency = 84067200,	.driver_data = PLLVAL(131, 5, 3), 	}, 	/* FVco 672.537600 */
 	{ .frequency = 84067200,	.driver_data = PLLVAL(131, 5, 3), 	}, 	/* FVco 672.537600 */
 	{ .frequency = 90115200,	.driver_data = PLLVAL(141, 5, 3), 	}, 	/* FVco 720.921600 */
 	{ .frequency = 90115200,	.driver_data = PLLVAL(141, 5, 3), 	}, 	/* FVco 720.921600 */

+ 1 - 1
arch/arm/mach-shmobile/setup-r8a7793.c

@@ -19,7 +19,7 @@
 #include "common.h"
 #include "common.h"
 #include "rcar-gen2.h"
 #include "rcar-gen2.h"
 
 
-static const char *r8a7793_boards_compat_dt[] __initconst = {
+static const char * const r8a7793_boards_compat_dt[] __initconst = {
 	"renesas,r8a7793",
 	"renesas,r8a7793",
 	NULL,
 	NULL,
 };
 };

+ 1 - 1
arch/arm/mach-zx/Kconfig

@@ -13,7 +13,7 @@ config SOC_ZX296702
 	select ARM_GLOBAL_TIMER
 	select ARM_GLOBAL_TIMER
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
 	select HAVE_ARM_TWD if SMP
-	select PM_GENERIC_DOMAINS
+	select PM_GENERIC_DOMAINS if PM
 	help
 	help
 	  Support for ZTE ZX296702 SoC which is a dual core CortexA9MP
 	  Support for ZTE ZX296702 SoC which is a dual core CortexA9MP
 endif
 endif

+ 22 - 1
arch/arm64/Kconfig

@@ -49,7 +49,7 @@ config ARM64
 	select HAVE_ARCH_AUDITSYSCALL
 	select HAVE_ARCH_AUDITSYSCALL
 	select HAVE_ARCH_BITREVERSE
 	select HAVE_ARCH_BITREVERSE
 	select HAVE_ARCH_JUMP_LABEL
 	select HAVE_ARCH_JUMP_LABEL
-	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP
+	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP && !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
 	select HAVE_ARCH_KGDB
 	select HAVE_ARCH_KGDB
 	select HAVE_ARCH_SECCOMP_FILTER
 	select HAVE_ARCH_SECCOMP_FILTER
 	select HAVE_ARCH_TRACEHOOK
 	select HAVE_ARCH_TRACEHOOK
@@ -316,6 +316,27 @@ config ARM64_ERRATUM_832075
 
 
 	  If unsure, say Y.
 	  If unsure, say Y.
 
 
+config ARM64_ERRATUM_834220
+	bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
+	depends on KVM
+	default y
+	help
+	  This option adds an alternative code sequence to work around ARM
+	  erratum 834220 on Cortex-A57 parts up to r1p2.
+
+	  Affected Cortex-A57 parts might report a Stage 2 translation
+	  fault as the result of a Stage 1 fault for load crossing a
+	  page boundary when there is a permission or device memory
+	  alignment fault at Stage 1 and a translation fault at Stage 2.
+
+	  The workaround is to verify that the Stage 1 translation
+	  doesn't generate a fault before handling the Stage 2 fault.
+	  Please note that this does not necessarily enable the workaround,
+	  as it depends on the alternative framework, which will only patch
+	  the kernel if an affected CPU is detected.
+
+	  If unsure, say Y.
+
 config ARM64_ERRATUM_845719
 config ARM64_ERRATUM_845719
 	bool "Cortex-A53: 845719: a load might read incorrect data"
 	bool "Cortex-A53: 845719: a load might read incorrect data"
 	depends on COMPAT
 	depends on COMPAT

+ 5 - 0
arch/arm64/boot/dts/freescale/fsl-ls2080a.dtsi

@@ -269,6 +269,7 @@
 			clock-frequency = <0>;	/* Updated by bootloader */
 			clock-frequency = <0>;	/* Updated by bootloader */
 			voltage-ranges = <1800 1800 3300 3300>;
 			voltage-ranges = <1800 1800 3300 3300>;
 			sdhci,auto-cmd12;
 			sdhci,auto-cmd12;
+			little-endian;
 			bus-width = <4>;
 			bus-width = <4>;
 		};
 		};
 
 
@@ -277,6 +278,7 @@
 			reg = <0x0 0x2300000 0x0 0x10000>;
 			reg = <0x0 0x2300000 0x0 0x10000>;
 			interrupts = <0 36 0x4>; /* Level high type */
 			interrupts = <0 36 0x4>; /* Level high type */
 			gpio-controller;
 			gpio-controller;
+			little-endian;
 			#gpio-cells = <2>;
 			#gpio-cells = <2>;
 			interrupt-controller;
 			interrupt-controller;
 			#interrupt-cells = <2>;
 			#interrupt-cells = <2>;
@@ -287,6 +289,7 @@
 			reg = <0x0 0x2310000 0x0 0x10000>;
 			reg = <0x0 0x2310000 0x0 0x10000>;
 			interrupts = <0 36 0x4>; /* Level high type */
 			interrupts = <0 36 0x4>; /* Level high type */
 			gpio-controller;
 			gpio-controller;
+			little-endian;
 			#gpio-cells = <2>;
 			#gpio-cells = <2>;
 			interrupt-controller;
 			interrupt-controller;
 			#interrupt-cells = <2>;
 			#interrupt-cells = <2>;
@@ -297,6 +300,7 @@
 			reg = <0x0 0x2320000 0x0 0x10000>;
 			reg = <0x0 0x2320000 0x0 0x10000>;
 			interrupts = <0 37 0x4>; /* Level high type */
 			interrupts = <0 37 0x4>; /* Level high type */
 			gpio-controller;
 			gpio-controller;
+			little-endian;
 			#gpio-cells = <2>;
 			#gpio-cells = <2>;
 			interrupt-controller;
 			interrupt-controller;
 			#interrupt-cells = <2>;
 			#interrupt-cells = <2>;
@@ -307,6 +311,7 @@
 			reg = <0x0 0x2330000 0x0 0x10000>;
 			reg = <0x0 0x2330000 0x0 0x10000>;
 			interrupts = <0 37 0x4>; /* Level high type */
 			interrupts = <0 37 0x4>; /* Level high type */
 			gpio-controller;
 			gpio-controller;
+			little-endian;
 			#gpio-cells = <2>;
 			#gpio-cells = <2>;
 			interrupt-controller;
 			interrupt-controller;
 			#interrupt-cells = <2>;
 			#interrupt-cells = <2>;

+ 1 - 0
arch/arm64/include/asm/arch_gicv3.h

@@ -77,6 +77,7 @@
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
 #include <linux/stringify.h>
 #include <linux/stringify.h>
+#include <asm/barrier.h>
 
 
 /*
 /*
  * Low-level accessors
  * Low-level accessors

+ 22 - 3
arch/arm64/include/asm/cpufeature.h

@@ -29,8 +29,9 @@
 #define ARM64_HAS_PAN				4
 #define ARM64_HAS_PAN				4
 #define ARM64_HAS_LSE_ATOMICS			5
 #define ARM64_HAS_LSE_ATOMICS			5
 #define ARM64_WORKAROUND_CAVIUM_23154		6
 #define ARM64_WORKAROUND_CAVIUM_23154		6
+#define ARM64_WORKAROUND_834220			7
 
 
-#define ARM64_NCAPS				7
+#define ARM64_NCAPS				8
 
 
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
@@ -46,8 +47,12 @@ enum ftr_type {
 #define FTR_STRICT	true	/* SANITY check strict matching required */
 #define FTR_STRICT	true	/* SANITY check strict matching required */
 #define FTR_NONSTRICT	false	/* SANITY check ignored */
 #define FTR_NONSTRICT	false	/* SANITY check ignored */
 
 
+#define FTR_SIGNED	true	/* Value should be treated as signed */
+#define FTR_UNSIGNED	false	/* Value should be treated as unsigned */
+
 struct arm64_ftr_bits {
 struct arm64_ftr_bits {
-	bool		strict;	  /* CPU Sanity check: strict matching required ? */
+	bool		sign;	/* Value is signed ? */
+	bool		strict;	/* CPU Sanity check: strict matching required ? */
 	enum ftr_type	type;
 	enum ftr_type	type;
 	u8		shift;
 	u8		shift;
 	u8		width;
 	u8		width;
@@ -123,6 +128,18 @@ cpuid_feature_extract_field(u64 features, int field)
 	return cpuid_feature_extract_field_width(features, field, 4);
 	return cpuid_feature_extract_field_width(features, field, 4);
 }
 }
 
 
+static inline unsigned int __attribute_const__
+cpuid_feature_extract_unsigned_field_width(u64 features, int field, int width)
+{
+	return (u64)(features << (64 - width - field)) >> (64 - width);
+}
+
+static inline unsigned int __attribute_const__
+cpuid_feature_extract_unsigned_field(u64 features, int field)
+{
+	return cpuid_feature_extract_unsigned_field_width(features, field, 4);
+}
+
 static inline u64 arm64_ftr_mask(struct arm64_ftr_bits *ftrp)
 static inline u64 arm64_ftr_mask(struct arm64_ftr_bits *ftrp)
 {
 {
 	return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift);
 	return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift);
@@ -130,7 +147,9 @@ static inline u64 arm64_ftr_mask(struct arm64_ftr_bits *ftrp)
 
 
 static inline s64 arm64_ftr_value(struct arm64_ftr_bits *ftrp, u64 val)
 static inline s64 arm64_ftr_value(struct arm64_ftr_bits *ftrp, u64 val)
 {
 {
-	return cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width);
+	return ftrp->sign ?
+		cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width) :
+		cpuid_feature_extract_unsigned_field_width(val, ftrp->shift, ftrp->width);
 }
 }
 
 
 static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0)
 static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0)

+ 4 - 2
arch/arm64/include/asm/hw_breakpoint.h

@@ -138,16 +138,18 @@ extern struct pmu perf_ops_bp;
 /* Determine number of BRP registers available. */
 /* Determine number of BRP registers available. */
 static inline int get_num_brps(void)
 static inline int get_num_brps(void)
 {
 {
+	u64 dfr0 = read_system_reg(SYS_ID_AA64DFR0_EL1);
 	return 1 +
 	return 1 +
-		cpuid_feature_extract_field(read_system_reg(SYS_ID_AA64DFR0_EL1),
+		cpuid_feature_extract_unsigned_field(dfr0,
 						ID_AA64DFR0_BRPS_SHIFT);
 						ID_AA64DFR0_BRPS_SHIFT);
 }
 }
 
 
 /* Determine number of WRP registers available. */
 /* Determine number of WRP registers available. */
 static inline int get_num_wrps(void)
 static inline int get_num_wrps(void)
 {
 {
+	u64 dfr0 = read_system_reg(SYS_ID_AA64DFR0_EL1);
 	return 1 +
 	return 1 +
-		cpuid_feature_extract_field(read_system_reg(SYS_ID_AA64DFR0_EL1),
+		cpuid_feature_extract_unsigned_field(dfr0,
 						ID_AA64DFR0_WRPS_SHIFT);
 						ID_AA64DFR0_WRPS_SHIFT);
 }
 }
 
 

+ 5 - 0
arch/arm64/include/asm/irq.h

@@ -7,4 +7,9 @@ struct pt_regs;
 
 
 extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
 extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
 
 
+static inline int nr_legacy_irqs(void)
+{
+	return 0;
+}
+
 #endif
 #endif

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است