diff options
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/boot/compressed/efi-header.S | 5 | ||||
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 17 | ||||
| -rw-r--r-- | arch/arm/boot/dts/am335x-sl50.dts | 8 | ||||
| -rw-r--r-- | arch/arm/boot/dts/bcm283x.dtsi | 5 | ||||
| -rw-r--r-- | arch/arm/boot/dts/imx6ul-14x14-evk.dts | 6 | ||||
| -rw-r--r-- | arch/arm/boot/dts/keystone-k2l-netcp.dtsi | 4 | ||||
| -rw-r--r-- | arch/arm/boot/dts/keystone-k2l.dtsi | 8 | ||||
| -rw-r--r-- | arch/arm/boot/dts/sunxi-h3-h5.dtsi | 7 | ||||
| -rw-r--r-- | arch/arm/boot/dts/versatile-pb.dts | 2 | ||||
| -rw-r--r-- | arch/arm/common/mcpm_entry.c | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/device.h | 3 | ||||
| -rw-r--r-- | arch/arm/include/asm/pgtable-nommu.h | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/setup.c | 2 | ||||
| -rw-r--r-- | arch/arm/kvm/init.S | 5 | ||||
| -rw-r--r-- | arch/arm/mach-at91/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/pm.c | 7 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/raumfeld.c | 2 | ||||
| -rw-r--r-- | arch/arm/mm/dma-mapping.c | 29 | ||||
| -rw-r--r-- | arch/arm/mm/mmap.c | 4 | ||||
| -rw-r--r-- | arch/arm/mm/mmu.c | 8 |
21 files changed, 78 insertions, 53 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4c1a35f15838..c0fcab6a5504 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1416,6 +1416,7 @@ choice | |||
| 1416 | config VMSPLIT_3G | 1416 | config VMSPLIT_3G |
| 1417 | bool "3G/1G user/kernel split" | 1417 | bool "3G/1G user/kernel split" |
| 1418 | config VMSPLIT_3G_OPT | 1418 | config VMSPLIT_3G_OPT |
| 1419 | depends on !ARM_LPAE | ||
| 1419 | bool "3G/1G user/kernel split (for full 1G low memory)" | 1420 | bool "3G/1G user/kernel split (for full 1G low memory)" |
| 1420 | config VMSPLIT_2G | 1421 | config VMSPLIT_2G |
| 1421 | bool "2G/2G user/kernel split" | 1422 | bool "2G/2G user/kernel split" |
diff --git a/arch/arm/boot/compressed/efi-header.S b/arch/arm/boot/compressed/efi-header.S index 9d5dc4fda3c1..a17ca8d78656 100644 --- a/arch/arm/boot/compressed/efi-header.S +++ b/arch/arm/boot/compressed/efi-header.S | |||
| @@ -17,14 +17,13 @@ | |||
| 17 | @ there. | 17 | @ there. |
| 18 | .inst 'M' | ('Z' << 8) | (0x1310 << 16) @ tstne r0, #0x4d000 | 18 | .inst 'M' | ('Z' << 8) | (0x1310 << 16) @ tstne r0, #0x4d000 |
| 19 | #else | 19 | #else |
| 20 | mov r0, r0 | 20 | AR_CLASS( mov r0, r0 ) |
| 21 | M_CLASS( nop.w ) | ||
| 21 | #endif | 22 | #endif |
| 22 | .endm | 23 | .endm |
| 23 | 24 | ||
| 24 | .macro __EFI_HEADER | 25 | .macro __EFI_HEADER |
| 25 | #ifdef CONFIG_EFI_STUB | 26 | #ifdef CONFIG_EFI_STUB |
| 26 | b __efi_start | ||
| 27 | |||
| 28 | .set start_offset, __efi_start - start | 27 | .set start_offset, __efi_start - start |
| 29 | .org start + 0x3c | 28 | .org start + 0x3c |
| 30 | @ | 29 | @ |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 7c711ba61417..8a756870c238 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -130,19 +130,22 @@ start: | |||
| 130 | .rept 7 | 130 | .rept 7 |
| 131 | __nop | 131 | __nop |
| 132 | .endr | 132 | .endr |
| 133 | ARM( mov r0, r0 ) | 133 | #ifndef CONFIG_THUMB2_KERNEL |
| 134 | ARM( b 1f ) | 134 | mov r0, r0 |
| 135 | THUMB( badr r12, 1f ) | 135 | #else |
| 136 | THUMB( bx r12 ) | 136 | AR_CLASS( sub pc, pc, #3 ) @ A/R: switch to Thumb2 mode |
| 137 | M_CLASS( nop.w ) @ M: already in Thumb2 mode | ||
| 138 | .thumb | ||
| 139 | #endif | ||
| 140 | W(b) 1f | ||
| 137 | 141 | ||
| 138 | .word _magic_sig @ Magic numbers to help the loader | 142 | .word _magic_sig @ Magic numbers to help the loader |
| 139 | .word _magic_start @ absolute load/run zImage address | 143 | .word _magic_start @ absolute load/run zImage address |
| 140 | .word _magic_end @ zImage end address | 144 | .word _magic_end @ zImage end address |
| 141 | .word 0x04030201 @ endianness flag | 145 | .word 0x04030201 @ endianness flag |
| 142 | 146 | ||
| 143 | THUMB( .thumb ) | 147 | __EFI_HEADER |
| 144 | 1: __EFI_HEADER | 148 | 1: |
| 145 | |||
| 146 | ARM_BE8( setend be ) @ go BE8 if compiled for BE8 | 149 | ARM_BE8( setend be ) @ go BE8 if compiled for BE8 |
| 147 | AR_CLASS( mrs r9, cpsr ) | 150 | AR_CLASS( mrs r9, cpsr ) |
| 148 | #ifdef CONFIG_ARM_VIRT_EXT | 151 | #ifdef CONFIG_ARM_VIRT_EXT |
diff --git a/arch/arm/boot/dts/am335x-sl50.dts b/arch/arm/boot/dts/am335x-sl50.dts index c5d2589c55fc..fc864a855991 100644 --- a/arch/arm/boot/dts/am335x-sl50.dts +++ b/arch/arm/boot/dts/am335x-sl50.dts | |||
| @@ -220,7 +220,7 @@ | |||
| 220 | 220 | ||
| 221 | mmc1_pins: pinmux_mmc1_pins { | 221 | mmc1_pins: pinmux_mmc1_pins { |
| 222 | pinctrl-single,pins = < | 222 | pinctrl-single,pins = < |
| 223 | AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ | 223 | AM33XX_IOPAD(0x96c, PIN_INPUT | MUX_MODE7) /* uart0_rtsn.gpio1_9 */ |
| 224 | >; | 224 | >; |
| 225 | }; | 225 | }; |
| 226 | 226 | ||
| @@ -280,10 +280,6 @@ | |||
| 280 | AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */ | 280 | AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */ |
| 281 | AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* nDispReset - gpmc_ad14.gpio1_14 */ | 281 | AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* nDispReset - gpmc_ad14.gpio1_14 */ |
| 282 | AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */ | 282 | AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */ |
| 283 | /* AVR Programming - SPI Bus (bit bang) - Screen and Keyboard */ | ||
| 284 | AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattMOSI spi0_d0.gpio0_3 */ | ||
| 285 | AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattMISO spi0_d1.gpio0_4 */ | ||
| 286 | AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattSCLK spi0_clk.gpio0_2 */ | ||
| 287 | /* PDI Bus - Battery system */ | 283 | /* PDI Bus - Battery system */ |
| 288 | AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */ | 284 | AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */ |
| 289 | AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */ | 285 | AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */ |
| @@ -384,7 +380,7 @@ | |||
| 384 | pinctrl-names = "default"; | 380 | pinctrl-names = "default"; |
| 385 | pinctrl-0 = <&mmc1_pins>; | 381 | pinctrl-0 = <&mmc1_pins>; |
| 386 | bus-width = <4>; | 382 | bus-width = <4>; |
| 387 | cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; | 383 | cd-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; |
| 388 | vmmc-supply = <&vmmcsd_fixed>; | 384 | vmmc-supply = <&vmmcsd_fixed>; |
| 389 | }; | 385 | }; |
| 390 | 386 | ||
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi index 561f27d8d922..9444a9a9ba10 100644 --- a/arch/arm/boot/dts/bcm283x.dtsi +++ b/arch/arm/boot/dts/bcm283x.dtsi | |||
| @@ -3,6 +3,11 @@ | |||
| 3 | #include <dt-bindings/clock/bcm2835-aux.h> | 3 | #include <dt-bindings/clock/bcm2835-aux.h> |
| 4 | #include <dt-bindings/gpio/gpio.h> | 4 | #include <dt-bindings/gpio/gpio.h> |
| 5 | 5 | ||
| 6 | /* firmware-provided startup stubs live here, where the secondary CPUs are | ||
| 7 | * spinning. | ||
| 8 | */ | ||
| 9 | /memreserve/ 0x00000000 0x00001000; | ||
| 10 | |||
| 6 | /* This include file covers the common peripherals and configuration between | 11 | /* This include file covers the common peripherals and configuration between |
| 7 | * bcm2835 and bcm2836 implementations, leaving the CPU configuration to | 12 | * bcm2835 and bcm2836 implementations, leaving the CPU configuration to |
| 8 | * bcm2835.dtsi and bcm2836.dtsi. | 13 | * bcm2835.dtsi and bcm2836.dtsi. |
diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dts b/arch/arm/boot/dts/imx6ul-14x14-evk.dts index f18e1f1d0ce2..d2be8aa3370b 100644 --- a/arch/arm/boot/dts/imx6ul-14x14-evk.dts +++ b/arch/arm/boot/dts/imx6ul-14x14-evk.dts | |||
| @@ -120,10 +120,16 @@ | |||
| 120 | 120 | ||
| 121 | ethphy0: ethernet-phy@2 { | 121 | ethphy0: ethernet-phy@2 { |
| 122 | reg = <2>; | 122 | reg = <2>; |
| 123 | micrel,led-mode = <1>; | ||
| 124 | clocks = <&clks IMX6UL_CLK_ENET_REF>; | ||
| 125 | clock-names = "rmii-ref"; | ||
| 123 | }; | 126 | }; |
| 124 | 127 | ||
| 125 | ethphy1: ethernet-phy@1 { | 128 | ethphy1: ethernet-phy@1 { |
| 126 | reg = <1>; | 129 | reg = <1>; |
| 130 | micrel,led-mode = <1>; | ||
| 131 | clocks = <&clks IMX6UL_CLK_ENET2_REF>; | ||
| 132 | clock-names = "rmii-ref"; | ||
| 127 | }; | 133 | }; |
| 128 | }; | 134 | }; |
| 129 | }; | 135 | }; |
diff --git a/arch/arm/boot/dts/keystone-k2l-netcp.dtsi b/arch/arm/boot/dts/keystone-k2l-netcp.dtsi index b6f26824e83a..66f615a74118 100644 --- a/arch/arm/boot/dts/keystone-k2l-netcp.dtsi +++ b/arch/arm/boot/dts/keystone-k2l-netcp.dtsi | |||
| @@ -137,8 +137,8 @@ netcp: netcp@26000000 { | |||
| 137 | /* NetCP address range */ | 137 | /* NetCP address range */ |
| 138 | ranges = <0 0x26000000 0x1000000>; | 138 | ranges = <0 0x26000000 0x1000000>; |
| 139 | 139 | ||
| 140 | clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>, <&clkosr>; | 140 | clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>; |
| 141 | clock-names = "pa_clk", "ethss_clk", "cpts", "osr_clk"; | 141 | clock-names = "pa_clk", "ethss_clk", "cpts"; |
| 142 | dma-coherent; | 142 | dma-coherent; |
| 143 | 143 | ||
| 144 | ti,navigator-dmas = <&dma_gbe 0>, | 144 | ti,navigator-dmas = <&dma_gbe 0>, |
diff --git a/arch/arm/boot/dts/keystone-k2l.dtsi b/arch/arm/boot/dts/keystone-k2l.dtsi index b58e7ebc0919..148650406cf7 100644 --- a/arch/arm/boot/dts/keystone-k2l.dtsi +++ b/arch/arm/boot/dts/keystone-k2l.dtsi | |||
| @@ -232,6 +232,14 @@ | |||
| 232 | }; | 232 | }; |
| 233 | }; | 233 | }; |
| 234 | 234 | ||
| 235 | osr: sram@70000000 { | ||
| 236 | compatible = "mmio-sram"; | ||
| 237 | reg = <0x70000000 0x10000>; | ||
| 238 | #address-cells = <1>; | ||
| 239 | #size-cells = <1>; | ||
| 240 | clocks = <&clkosr>; | ||
| 241 | }; | ||
| 242 | |||
| 235 | dspgpio0: keystone_dsp_gpio@02620240 { | 243 | dspgpio0: keystone_dsp_gpio@02620240 { |
| 236 | compatible = "ti,keystone-dsp-gpio"; | 244 | compatible = "ti,keystone-dsp-gpio"; |
| 237 | gpio-controller; | 245 | gpio-controller; |
diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi index 1aeeacb3a884..d4f600dbb7eb 100644 --- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi +++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi | |||
| @@ -558,10 +558,11 @@ | |||
| 558 | }; | 558 | }; |
| 559 | 559 | ||
| 560 | r_ccu: clock@1f01400 { | 560 | r_ccu: clock@1f01400 { |
| 561 | compatible = "allwinner,sun50i-a64-r-ccu"; | 561 | compatible = "allwinner,sun8i-h3-r-ccu"; |
| 562 | reg = <0x01f01400 0x100>; | 562 | reg = <0x01f01400 0x100>; |
| 563 | clocks = <&osc24M>, <&osc32k>, <&iosc>; | 563 | clocks = <&osc24M>, <&osc32k>, <&iosc>, |
| 564 | clock-names = "hosc", "losc", "iosc"; | 564 | <&ccu 9>; |
| 565 | clock-names = "hosc", "losc", "iosc", "pll-periph"; | ||
| 565 | #clock-cells = <1>; | 566 | #clock-cells = <1>; |
| 566 | #reset-cells = <1>; | 567 | #reset-cells = <1>; |
| 567 | }; | 568 | }; |
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts index 33a8eb28374e..06e2331f666d 100644 --- a/arch/arm/boot/dts/versatile-pb.dts +++ b/arch/arm/boot/dts/versatile-pb.dts | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | #include <versatile-ab.dts> | 1 | #include "versatile-ab.dts" |
| 2 | 2 | ||
| 3 | / { | 3 | / { |
| 4 | model = "ARM Versatile PB"; | 4 | model = "ARM Versatile PB"; |
diff --git a/arch/arm/common/mcpm_entry.c b/arch/arm/common/mcpm_entry.c index cf062472e07b..2b913f17d50f 100644 --- a/arch/arm/common/mcpm_entry.c +++ b/arch/arm/common/mcpm_entry.c | |||
| @@ -235,7 +235,7 @@ int mcpm_cpu_power_up(unsigned int cpu, unsigned int cluster) | |||
| 235 | return ret; | 235 | return ret; |
| 236 | } | 236 | } |
| 237 | 237 | ||
| 238 | typedef void (*phys_reset_t)(unsigned long); | 238 | typedef typeof(cpu_reset) phys_reset_t; |
| 239 | 239 | ||
| 240 | void mcpm_cpu_power_down(void) | 240 | void mcpm_cpu_power_down(void) |
| 241 | { | 241 | { |
| @@ -300,7 +300,7 @@ void mcpm_cpu_power_down(void) | |||
| 300 | * on the CPU. | 300 | * on the CPU. |
| 301 | */ | 301 | */ |
| 302 | phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset); | 302 | phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset); |
| 303 | phys_reset(__pa_symbol(mcpm_entry_point)); | 303 | phys_reset(__pa_symbol(mcpm_entry_point), false); |
| 304 | 304 | ||
| 305 | /* should never get here */ | 305 | /* should never get here */ |
| 306 | BUG(); | 306 | BUG(); |
| @@ -389,7 +389,7 @@ static int __init nocache_trampoline(unsigned long _arg) | |||
| 389 | __mcpm_cpu_down(cpu, cluster); | 389 | __mcpm_cpu_down(cpu, cluster); |
| 390 | 390 | ||
| 391 | phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset); | 391 | phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset); |
| 392 | phys_reset(__pa_symbol(mcpm_entry_point)); | 392 | phys_reset(__pa_symbol(mcpm_entry_point), false); |
| 393 | BUG(); | 393 | BUG(); |
| 394 | } | 394 | } |
| 395 | 395 | ||
diff --git a/arch/arm/include/asm/device.h b/arch/arm/include/asm/device.h index 36ec9c8f6e16..3234fe9bba6e 100644 --- a/arch/arm/include/asm/device.h +++ b/arch/arm/include/asm/device.h | |||
| @@ -19,7 +19,8 @@ struct dev_archdata { | |||
| 19 | #ifdef CONFIG_XEN | 19 | #ifdef CONFIG_XEN |
| 20 | const struct dma_map_ops *dev_dma_ops; | 20 | const struct dma_map_ops *dev_dma_ops; |
| 21 | #endif | 21 | #endif |
| 22 | bool dma_coherent; | 22 | unsigned int dma_coherent:1; |
| 23 | unsigned int dma_ops_setup:1; | ||
| 23 | }; | 24 | }; |
| 24 | 25 | ||
| 25 | struct omap_device; | 26 | struct omap_device; |
diff --git a/arch/arm/include/asm/pgtable-nommu.h b/arch/arm/include/asm/pgtable-nommu.h index 302240c19a5a..a0d726a47c8a 100644 --- a/arch/arm/include/asm/pgtable-nommu.h +++ b/arch/arm/include/asm/pgtable-nommu.h | |||
| @@ -66,6 +66,7 @@ typedef pte_t *pte_addr_t; | |||
| 66 | #define pgprot_noncached(prot) (prot) | 66 | #define pgprot_noncached(prot) (prot) |
| 67 | #define pgprot_writecombine(prot) (prot) | 67 | #define pgprot_writecombine(prot) (prot) |
| 68 | #define pgprot_dmacoherent(prot) (prot) | 68 | #define pgprot_dmacoherent(prot) (prot) |
| 69 | #define pgprot_device(prot) (prot) | ||
| 69 | 70 | ||
| 70 | 71 | ||
| 71 | /* | 72 | /* |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 32e1a9513dc7..4e80bf7420d4 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -315,7 +315,7 @@ static void __init cacheid_init(void) | |||
| 315 | if (arch >= CPU_ARCH_ARMv6) { | 315 | if (arch >= CPU_ARCH_ARMv6) { |
| 316 | unsigned int cachetype = read_cpuid_cachetype(); | 316 | unsigned int cachetype = read_cpuid_cachetype(); |
| 317 | 317 | ||
| 318 | if ((arch == CPU_ARCH_ARMv7M) && !cachetype) { | 318 | if ((arch == CPU_ARCH_ARMv7M) && !(cachetype & 0xf000f)) { |
| 319 | cacheid = 0; | 319 | cacheid = 0; |
| 320 | } else if ((cachetype & (7 << 29)) == 4 << 29) { | 320 | } else if ((cachetype & (7 << 29)) == 4 << 29) { |
| 321 | /* ARMv7 register format */ | 321 | /* ARMv7 register format */ |
diff --git a/arch/arm/kvm/init.S b/arch/arm/kvm/init.S index 570ed4a9c261..5386528665b5 100644 --- a/arch/arm/kvm/init.S +++ b/arch/arm/kvm/init.S | |||
| @@ -104,7 +104,6 @@ __do_hyp_init: | |||
| 104 | @ - Write permission implies XN: disabled | 104 | @ - Write permission implies XN: disabled |
| 105 | @ - Instruction cache: enabled | 105 | @ - Instruction cache: enabled |
| 106 | @ - Data/Unified cache: enabled | 106 | @ - Data/Unified cache: enabled |
| 107 | @ - Memory alignment checks: enabled | ||
| 108 | @ - MMU: enabled (this code must be run from an identity mapping) | 107 | @ - MMU: enabled (this code must be run from an identity mapping) |
| 109 | mrc p15, 4, r0, c1, c0, 0 @ HSCR | 108 | mrc p15, 4, r0, c1, c0, 0 @ HSCR |
| 110 | ldr r2, =HSCTLR_MASK | 109 | ldr r2, =HSCTLR_MASK |
| @@ -112,8 +111,8 @@ __do_hyp_init: | |||
| 112 | mrc p15, 0, r1, c1, c0, 0 @ SCTLR | 111 | mrc p15, 0, r1, c1, c0, 0 @ SCTLR |
| 113 | ldr r2, =(HSCTLR_EE | HSCTLR_FI | HSCTLR_I | HSCTLR_C) | 112 | ldr r2, =(HSCTLR_EE | HSCTLR_FI | HSCTLR_I | HSCTLR_C) |
| 114 | and r1, r1, r2 | 113 | and r1, r1, r2 |
| 115 | ARM( ldr r2, =(HSCTLR_M | HSCTLR_A) ) | 114 | ARM( ldr r2, =(HSCTLR_M) ) |
| 116 | THUMB( ldr r2, =(HSCTLR_M | HSCTLR_A | HSCTLR_TE) ) | 115 | THUMB( ldr r2, =(HSCTLR_M | HSCTLR_TE) ) |
| 117 | orr r1, r1, r2 | 116 | orr r1, r1, r2 |
| 118 | orr r0, r0, r1 | 117 | orr r0, r0, r1 |
| 119 | mcr p15, 4, r0, c1, c0, 0 @ HSCR | 118 | mcr p15, 4, r0, c1, c0, 0 @ HSCR |
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 841e924143f9..cbd959b73654 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | menuconfig ARCH_AT91 | 1 | menuconfig ARCH_AT91 |
| 2 | bool "Atmel SoCs" | 2 | bool "Atmel SoCs" |
| 3 | depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7 | 3 | depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7 |
| 4 | select ARM_CPU_SUSPEND if PM | ||
| 4 | select COMMON_CLK_AT91 | 5 | select COMMON_CLK_AT91 |
| 5 | select GPIOLIB | 6 | select GPIOLIB |
| 6 | select PINCTRL | 7 | select PINCTRL |
diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c index efb80354f303..b5cc05dc2cb2 100644 --- a/arch/arm/mach-davinci/pm.c +++ b/arch/arm/mach-davinci/pm.c | |||
| @@ -153,7 +153,8 @@ int __init davinci_pm_init(void) | |||
| 153 | davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL); | 153 | davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL); |
| 154 | if (!davinci_sram_suspend) { | 154 | if (!davinci_sram_suspend) { |
| 155 | pr_err("PM: cannot allocate SRAM memory\n"); | 155 | pr_err("PM: cannot allocate SRAM memory\n"); |
| 156 | return -ENOMEM; | 156 | ret = -ENOMEM; |
| 157 | goto no_sram_mem; | ||
| 157 | } | 158 | } |
| 158 | 159 | ||
| 159 | davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend, | 160 | davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend, |
| @@ -161,6 +162,10 @@ int __init davinci_pm_init(void) | |||
| 161 | 162 | ||
| 162 | suspend_set_ops(&davinci_pm_ops); | 163 | suspend_set_ops(&davinci_pm_ops); |
| 163 | 164 | ||
| 165 | return 0; | ||
| 166 | |||
| 167 | no_sram_mem: | ||
| 168 | iounmap(pm_config.ddrpsc_reg_base); | ||
| 164 | no_ddrpsc_mem: | 169 | no_ddrpsc_mem: |
| 165 | iounmap(pm_config.ddrpll_reg_base); | 170 | iounmap(pm_config.ddrpll_reg_base); |
| 166 | no_ddrpll_mem: | 171 | no_ddrpll_mem: |
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index e2c97728b3c6..9d662fed03ec 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
| @@ -377,7 +377,7 @@ static struct gpiod_lookup_table raumfeld_rotary_gpios_table = { | |||
| 377 | }, | 377 | }, |
| 378 | }; | 378 | }; |
| 379 | 379 | ||
| 380 | static struct property_entry raumfeld_rotary_properties[] = { | 380 | static const struct property_entry raumfeld_rotary_properties[] __initconst = { |
| 381 | PROPERTY_ENTRY_INTEGER("rotary-encoder,steps-per-period", u32, 24), | 381 | PROPERTY_ENTRY_INTEGER("rotary-encoder,steps-per-period", u32, 24), |
| 382 | PROPERTY_ENTRY_INTEGER("linux,axis", u32, REL_X), | 382 | PROPERTY_ENTRY_INTEGER("linux,axis", u32, REL_X), |
| 383 | PROPERTY_ENTRY_INTEGER("rotary-encoder,relative_axis", u32, 1), | 383 | PROPERTY_ENTRY_INTEGER("rotary-encoder,relative_axis", u32, 1), |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index c742dfd2967b..bd83c531828a 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
| @@ -2311,7 +2311,14 @@ int arm_iommu_attach_device(struct device *dev, | |||
| 2311 | } | 2311 | } |
| 2312 | EXPORT_SYMBOL_GPL(arm_iommu_attach_device); | 2312 | EXPORT_SYMBOL_GPL(arm_iommu_attach_device); |
| 2313 | 2313 | ||
| 2314 | static void __arm_iommu_detach_device(struct device *dev) | 2314 | /** |
| 2315 | * arm_iommu_detach_device | ||
| 2316 | * @dev: valid struct device pointer | ||
| 2317 | * | ||
| 2318 | * Detaches the provided device from a previously attached map. | ||
| 2319 | * This voids the dma operations (dma_map_ops pointer) | ||
| 2320 | */ | ||
| 2321 | void arm_iommu_detach_device(struct device *dev) | ||
| 2315 | { | 2322 | { |
| 2316 | struct dma_iommu_mapping *mapping; | 2323 | struct dma_iommu_mapping *mapping; |
| 2317 | 2324 | ||
| @@ -2324,22 +2331,10 @@ static void __arm_iommu_detach_device(struct device *dev) | |||
| 2324 | iommu_detach_device(mapping->domain, dev); | 2331 | iommu_detach_device(mapping->domain, dev); |
| 2325 | kref_put(&mapping->kref, release_iommu_mapping); | 2332 | kref_put(&mapping->kref, release_iommu_mapping); |
| 2326 | to_dma_iommu_mapping(dev) = NULL; | 2333 | to_dma_iommu_mapping(dev) = NULL; |
| 2334 | set_dma_ops(dev, NULL); | ||
| 2327 | 2335 | ||
| 2328 | pr_debug("Detached IOMMU controller from %s device.\n", dev_name(dev)); | 2336 | pr_debug("Detached IOMMU controller from %s device.\n", dev_name(dev)); |
| 2329 | } | 2337 | } |
| 2330 | |||
| 2331 | /** | ||
| 2332 | * arm_iommu_detach_device | ||
| 2333 | * @dev: valid struct device pointer | ||
| 2334 | * | ||
| 2335 | * Detaches the provided device from a previously attached map. | ||
| 2336 | * This voids the dma operations (dma_map_ops pointer) | ||
| 2337 | */ | ||
| 2338 | void arm_iommu_detach_device(struct device *dev) | ||
| 2339 | { | ||
| 2340 | __arm_iommu_detach_device(dev); | ||
| 2341 | set_dma_ops(dev, NULL); | ||
| 2342 | } | ||
| 2343 | EXPORT_SYMBOL_GPL(arm_iommu_detach_device); | 2338 | EXPORT_SYMBOL_GPL(arm_iommu_detach_device); |
| 2344 | 2339 | ||
| 2345 | static const struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent) | 2340 | static const struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent) |
| @@ -2379,7 +2374,7 @@ static void arm_teardown_iommu_dma_ops(struct device *dev) | |||
| 2379 | if (!mapping) | 2374 | if (!mapping) |
| 2380 | return; | 2375 | return; |
| 2381 | 2376 | ||
| 2382 | __arm_iommu_detach_device(dev); | 2377 | arm_iommu_detach_device(dev); |
| 2383 | arm_iommu_release_mapping(mapping); | 2378 | arm_iommu_release_mapping(mapping); |
| 2384 | } | 2379 | } |
| 2385 | 2380 | ||
| @@ -2430,9 +2425,13 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, | |||
| 2430 | dev->dma_ops = xen_dma_ops; | 2425 | dev->dma_ops = xen_dma_ops; |
| 2431 | } | 2426 | } |
| 2432 | #endif | 2427 | #endif |
| 2428 | dev->archdata.dma_ops_setup = true; | ||
| 2433 | } | 2429 | } |
| 2434 | 2430 | ||
| 2435 | void arch_teardown_dma_ops(struct device *dev) | 2431 | void arch_teardown_dma_ops(struct device *dev) |
| 2436 | { | 2432 | { |
| 2433 | if (!dev->archdata.dma_ops_setup) | ||
| 2434 | return; | ||
| 2435 | |||
| 2437 | arm_teardown_iommu_dma_ops(dev); | 2436 | arm_teardown_iommu_dma_ops(dev); |
| 2438 | } | 2437 | } |
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c index 2239fde10b80..f0701d8d24df 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c | |||
| @@ -90,7 +90,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, | |||
| 90 | 90 | ||
| 91 | vma = find_vma(mm, addr); | 91 | vma = find_vma(mm, addr); |
| 92 | if (TASK_SIZE - len >= addr && | 92 | if (TASK_SIZE - len >= addr && |
| 93 | (!vma || addr + len <= vma->vm_start)) | 93 | (!vma || addr + len <= vm_start_gap(vma))) |
| 94 | return addr; | 94 | return addr; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| @@ -141,7 +141,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | |||
| 141 | addr = PAGE_ALIGN(addr); | 141 | addr = PAGE_ALIGN(addr); |
| 142 | vma = find_vma(mm, addr); | 142 | vma = find_vma(mm, addr); |
| 143 | if (TASK_SIZE - len >= addr && | 143 | if (TASK_SIZE - len >= addr && |
| 144 | (!vma || addr + len <= vma->vm_start)) | 144 | (!vma || addr + len <= vm_start_gap(vma))) |
| 145 | return addr; | 145 | return addr; |
| 146 | } | 146 | } |
| 147 | 147 | ||
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 31af3cb59a60..e46a6a446cdd 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
| @@ -1218,15 +1218,15 @@ void __init adjust_lowmem_bounds(void) | |||
| 1218 | 1218 | ||
| 1219 | high_memory = __va(arm_lowmem_limit - 1) + 1; | 1219 | high_memory = __va(arm_lowmem_limit - 1) + 1; |
| 1220 | 1220 | ||
| 1221 | if (!memblock_limit) | ||
| 1222 | memblock_limit = arm_lowmem_limit; | ||
| 1223 | |||
| 1221 | /* | 1224 | /* |
| 1222 | * Round the memblock limit down to a pmd size. This | 1225 | * Round the memblock limit down to a pmd size. This |
| 1223 | * helps to ensure that we will allocate memory from the | 1226 | * helps to ensure that we will allocate memory from the |
| 1224 | * last full pmd, which should be mapped. | 1227 | * last full pmd, which should be mapped. |
| 1225 | */ | 1228 | */ |
| 1226 | if (memblock_limit) | 1229 | memblock_limit = round_down(memblock_limit, PMD_SIZE); |
| 1227 | memblock_limit = round_down(memblock_limit, PMD_SIZE); | ||
| 1228 | if (!memblock_limit) | ||
| 1229 | memblock_limit = arm_lowmem_limit; | ||
| 1230 | 1230 | ||
| 1231 | if (!IS_ENABLED(CONFIG_HIGHMEM) || cache_is_vipt_aliasing()) { | 1231 | if (!IS_ENABLED(CONFIG_HIGHMEM) || cache_is_vipt_aliasing()) { |
| 1232 | if (memblock_end_of_DRAM() > arm_lowmem_limit) { | 1232 | if (memblock_end_of_DRAM() > arm_lowmem_limit) { |
