aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS2
-rw-r--r--arch/arm/Kconfig15
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi4
-rw-r--r--arch/arm/boot/dts/exynos5250-arndale.dts1
-rw-r--r--arch/arm/boot/dts/omap4.dtsi2
-rw-r--r--arch/arm/boot/dts/omap5.dtsi2
-rw-r--r--arch/arm/boot/dts/tegra114-dalmore.dts2
-rw-r--r--arch/arm/boot/dts/tegra124-venice2.dts11
-rw-r--r--arch/arm/configs/davinci_all_defconfig2
-rw-r--r--arch/arm/configs/exynos_defconfig2
-rw-r--r--arch/arm/include/asm/smp.h1
-rw-r--r--arch/arm/include/debug/tegra.S18
-rw-r--r--arch/arm/mach-at91/Kconfig23
-rw-r--r--arch/arm/mach-at91/Kconfig.non_dt8
-rw-r--r--arch/arm/mach-at91/at91sam9260_devices.c6
-rw-r--r--arch/arm/mach-at91/sam9_smc.c3
-rw-r--r--arch/arm/mach-at91/setup.c2
-rw-r--r--arch/arm/mach-clps711x/board-autcpu12.c2
-rw-r--r--arch/arm/mach-cns3xxx/cns3420vb.c1
-rw-r--r--arch/arm/mach-cns3xxx/core.c33
-rw-r--r--arch/arm/mach-cns3xxx/pcie.c105
-rw-r--r--arch/arm/mach-davinci/Kconfig5
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c11
-rw-r--r--arch/arm/mach-ep93xx/core.c1
-rw-r--r--arch/arm/mach-exynos/common.c6
-rw-r--r--arch/arm/mach-exynos/cpuidle.c1
-rw-r--r--arch/arm/mach-footbridge/Kconfig2
-rw-r--r--arch/arm/mach-footbridge/Makefile3
-rw-r--r--arch/arm/mach-footbridge/cats-hw.c2
-rw-r--r--arch/arm/mach-hisi/Makefile3
-rw-r--r--arch/arm/mach-hisi/hotplug.c2
-rw-r--r--arch/arm/mach-integrator/Kconfig8
-rw-r--r--arch/arm/mach-ixp4xx/common-pci.c39
-rw-r--r--arch/arm/mach-ixp4xx/common.c61
-rw-r--r--arch/arm/mach-ixp4xx/goramo_mlr.c43
-rw-r--r--arch/arm/mach-ixp4xx/include/mach/io.h3
-rw-r--r--arch/arm/mach-ixp4xx/omixp-setup.c2
-rw-r--r--arch/arm/mach-ks8695/board-og.c3
-rw-r--r--arch/arm/mach-lpc32xx/common.c1
-rw-r--r--arch/arm/mach-mmp/aspenite.c4
-rw-r--r--arch/arm/mach-mmp/devices.c14
-rw-r--r--arch/arm/mach-mmp/ttc_dkb.c18
-rw-r--r--arch/arm/mach-moxart/Kconfig2
-rw-r--r--arch/arm/mach-msm/dma.c3
-rw-r--r--arch/arm/mach-msm/io.c2
-rw-r--r--arch/arm/mach-mvebu/armada-370-xp.c1
-rw-r--r--arch/arm/mach-nspire/nspire.c2
-rw-r--r--arch/arm/mach-omap1/board-h2.c3
-rw-r--r--arch/arm/mach-omap1/board-osk.c3
-rw-r--r--arch/arm/mach-omap1/pm.c6
-rw-r--r--arch/arm/mach-omap2/irq.c8
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c3
-rw-r--r--arch/arm/mach-omap2/pm.h2
-rw-r--r--arch/arm/mach-orion5x/Kconfig1
-rw-r--r--arch/arm/mach-orion5x/dns323-setup.c2
-rw-r--r--arch/arm/mach-pxa/Kconfig9
-rw-r--r--arch/arm/mach-pxa/balloon3.c1
-rw-r--r--arch/arm/mach-pxa/colibri-evalboard.c1
-rw-r--r--arch/arm/mach-realview/include/mach/memory.h2
-rw-r--r--arch/arm/mach-s3c24xx/Kconfig4
-rw-r--r--arch/arm/mach-s3c24xx/common.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-gta02.c2
-rw-r--r--arch/arm/mach-s3c64xx/Kconfig3
-rw-r--r--arch/arm/mach-s3c64xx/irq-pm.c12
-rw-r--r--arch/arm/mach-s3c64xx/mach-crag6410-module.c2
-rw-r--r--arch/arm/mach-s5p64x0/common.c18
-rw-r--r--arch/arm/mach-s5p64x0/common.h5
-rw-r--r--arch/arm/mach-s5p64x0/irq-pm.c6
-rw-r--r--arch/arm/mach-s5pv210/Kconfig1
-rw-r--r--arch/arm/mach-sunxi/Makefile2
-rw-r--r--arch/arm/mach-sunxi/headsmp.S9
-rw-r--r--arch/arm/mach-sunxi/platsmp.c2
-rw-r--r--arch/arm/mm/Kconfig2
-rw-r--r--arch/arm/plat-samsung/Kconfig6
-rw-r--r--arch/arm/plat-samsung/init.c4
-rw-r--r--drivers/clk/ti/clk-44xx.c1
-rw-r--r--drivers/clk/ti/clk-54xx.c1
-rw-r--r--drivers/clk/ti/clk-7xx.c1
-rw-r--r--drivers/irqchip/irq-gic.c4
-rw-r--r--include/linux/pxa2xx_ssp.h2
80 files changed, 347 insertions, 270 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index f728ac2b298a..ebb6c6f30c56 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -824,7 +824,7 @@ ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
824M: Alexander Shiyan <shc_work@mail.ru> 824M: Alexander Shiyan <shc_work@mail.ru>
825L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 825L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
826S: Odd Fixes 826S: Odd Fixes
827F: arch/arm/mach-clps711x/ 827N: clps711x
828 828
829ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE 829ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE
830M: Hartley Sweeten <hsweeten@visionengravers.com> 830M: Hartley Sweeten <hsweeten@visionengravers.com>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6b4ac5de6dec..79bea0b34d1f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -423,6 +423,7 @@ config ARCH_EFM32
423 bool "Energy Micro efm32" 423 bool "Energy Micro efm32"
424 depends on !MMU 424 depends on !MMU
425 select ARCH_REQUIRE_GPIOLIB 425 select ARCH_REQUIRE_GPIOLIB
426 select AUTO_ZRELADDR
426 select ARM_NVIC 427 select ARM_NVIC
427 # CLKSRC_MMIO is wrong here, but needed until a proper fix is merged, 428 # CLKSRC_MMIO is wrong here, but needed until a proper fix is merged,
428 # i.e. CLKSRC_EFM32 selecting CLKSRC_MMIO 429 # i.e. CLKSRC_EFM32 selecting CLKSRC_MMIO
@@ -698,6 +699,7 @@ config ARCH_RPC
698 select ARCH_MAY_HAVE_PC_FDC 699 select ARCH_MAY_HAVE_PC_FDC
699 select ARCH_SPARSEMEM_ENABLE 700 select ARCH_SPARSEMEM_ENABLE
700 select ARCH_USES_GETTIMEOFFSET 701 select ARCH_USES_GETTIMEOFFSET
702 select CPU_SA110
701 select FIQ 703 select FIQ
702 select HAVE_IDE 704 select HAVE_IDE
703 select HAVE_PATA_PLATFORM 705 select HAVE_PATA_PLATFORM
@@ -732,6 +734,7 @@ config ARCH_S3C24XX
732 bool "Samsung S3C24XX SoCs" 734 bool "Samsung S3C24XX SoCs"
733 select ARCH_HAS_CPUFREQ 735 select ARCH_HAS_CPUFREQ
734 select ARCH_REQUIRE_GPIOLIB 736 select ARCH_REQUIRE_GPIOLIB
737 select ATAGS
735 select CLKDEV_LOOKUP 738 select CLKDEV_LOOKUP
736 select CLKSRC_SAMSUNG_PWM 739 select CLKSRC_SAMSUNG_PWM
737 select GENERIC_CLOCKEVENTS 740 select GENERIC_CLOCKEVENTS
@@ -754,6 +757,7 @@ config ARCH_S3C64XX
754 select ARCH_REQUIRE_GPIOLIB 757 select ARCH_REQUIRE_GPIOLIB
755 select ARM_AMBA 758 select ARM_AMBA
756 select ARM_VIC 759 select ARM_VIC
760 select ATAGS
757 select CLKDEV_LOOKUP 761 select CLKDEV_LOOKUP
758 select CLKSRC_SAMSUNG_PWM 762 select CLKSRC_SAMSUNG_PWM
759 select COMMON_CLK 763 select COMMON_CLK
@@ -765,7 +769,7 @@ config ARCH_S3C64XX
765 select HAVE_TCM 769 select HAVE_TCM
766 select NO_IOPORT 770 select NO_IOPORT
767 select PLAT_SAMSUNG 771 select PLAT_SAMSUNG
768 select PM_GENERIC_DOMAINS 772 select PM_GENERIC_DOMAINS if PM
769 select S3C_DEV_NAND 773 select S3C_DEV_NAND
770 select S3C_GPIO_TRACK 774 select S3C_GPIO_TRACK
771 select SAMSUNG_ATAGS 775 select SAMSUNG_ATAGS
@@ -776,6 +780,7 @@ config ARCH_S3C64XX
776 780
777config ARCH_S5P64X0 781config ARCH_S5P64X0
778 bool "Samsung S5P6440 S5P6450" 782 bool "Samsung S5P6440 S5P6450"
783 select ATAGS
779 select CLKDEV_LOOKUP 784 select CLKDEV_LOOKUP
780 select CLKSRC_SAMSUNG_PWM 785 select CLKSRC_SAMSUNG_PWM
781 select CPU_V6 786 select CPU_V6
@@ -794,6 +799,7 @@ config ARCH_S5P64X0
794config ARCH_S5PC100 799config ARCH_S5PC100
795 bool "Samsung S5PC100" 800 bool "Samsung S5PC100"
796 select ARCH_REQUIRE_GPIOLIB 801 select ARCH_REQUIRE_GPIOLIB
802 select ATAGS
797 select CLKDEV_LOOKUP 803 select CLKDEV_LOOKUP
798 select CLKSRC_SAMSUNG_PWM 804 select CLKSRC_SAMSUNG_PWM
799 select CPU_V7 805 select CPU_V7
@@ -813,6 +819,7 @@ config ARCH_S5PV210
813 select ARCH_HAS_CPUFREQ 819 select ARCH_HAS_CPUFREQ
814 select ARCH_HAS_HOLES_MEMORYMODEL 820 select ARCH_HAS_HOLES_MEMORYMODEL
815 select ARCH_SPARSEMEM_ENABLE 821 select ARCH_SPARSEMEM_ENABLE
822 select ATAGS
816 select CLKDEV_LOOKUP 823 select CLKDEV_LOOKUP
817 select CLKSRC_SAMSUNG_PWM 824 select CLKSRC_SAMSUNG_PWM
818 select CPU_V7 825 select CPU_V7
@@ -886,6 +893,12 @@ menu "Multiple platform selection"
886 893
887comment "CPU Core family selection" 894comment "CPU Core family selection"
888 895
896config ARCH_MULTI_V4
897 bool "ARMv4 based platforms (FA526)"
898 depends on !ARCH_MULTI_V6_V7
899 select ARCH_MULTI_V4_V5
900 select CPU_FA526
901
889config ARCH_MULTI_V4T 902config ARCH_MULTI_V4T
890 bool "ARMv4T based platforms (ARM720T, ARM920T, ...)" 903 bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
891 depends on !ARCH_MULTI_V6_V7 904 depends on !ARCH_MULTI_V6_V7
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 6d95d3df33c7..79087ccf64bc 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -448,7 +448,7 @@
448 ti,hwmods = "usb_otg_hs"; 448 ti,hwmods = "usb_otg_hs";
449 status = "disabled"; 449 status = "disabled";
450 450
451 usb_ctrl_mod: control@44e10000 { 451 usb_ctrl_mod: control@44e10620 {
452 compatible = "ti,am335x-usb-ctrl-module"; 452 compatible = "ti,am335x-usb-ctrl-module";
453 reg = <0x44e10620 0x10 453 reg = <0x44e10620 0x10
454 0x44e10648 0x4>; 454 0x44e10648 0x4>;
@@ -551,7 +551,7 @@
551 "tx14", "tx15"; 551 "tx14", "tx15";
552 }; 552 };
553 553
554 cppi41dma: dma-controller@07402000 { 554 cppi41dma: dma-controller@47402000 {
555 compatible = "ti,am3359-cppi41"; 555 compatible = "ti,am3359-cppi41";
556 reg = <0x47400000 0x1000 556 reg = <0x47400000 0x1000
557 0x47402000 0x1000 557 0x47402000 0x1000
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index b42e658876e5..457112d659ea 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -287,6 +287,7 @@
287 regulator-name = "vdd_g3d"; 287 regulator-name = "vdd_g3d";
288 regulator-min-microvolt = <1000000>; 288 regulator-min-microvolt = <1000000>;
289 regulator-max-microvolt = <1000000>; 289 regulator-max-microvolt = <1000000>;
290 regulator-always-on;
290 regulator-boot-on; 291 regulator-boot-on;
291 op_mode = <1>; 292 op_mode = <1>;
292 }; 293 };
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index d3f8a6e8ca20..69409f7e05dc 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -275,6 +275,8 @@
275 gpmc,num-waitpins = <4>; 275 gpmc,num-waitpins = <4>;
276 ti,hwmods = "gpmc"; 276 ti,hwmods = "gpmc";
277 ti,no-idle-on-init; 277 ti,no-idle-on-init;
278 clocks = <&l3_div_ck>;
279 clock-names = "fck";
278 }; 280 };
279 281
280 uart1: serial@4806a000 { 282 uart1: serial@4806a000 {
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index a72813a9663e..7a16647c76f4 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -302,6 +302,8 @@
302 gpmc,num-cs = <8>; 302 gpmc,num-cs = <8>;
303 gpmc,num-waitpins = <4>; 303 gpmc,num-waitpins = <4>;
304 ti,hwmods = "gpmc"; 304 ti,hwmods = "gpmc";
305 clocks = <&l3_iclk_div>;
306 clock-names = "fck";
305 }; 307 };
306 308
307 i2c1: i2c@48070000 { 309 i2c1: i2c@48070000 {
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
index 73aecfb57ccb..eb54353975bc 100644
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -715,7 +715,6 @@
715 nvidia,pins = "drive_sdio1"; 715 nvidia,pins = "drive_sdio1";
716 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; 716 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
717 nvidia,schmitt = <TEGRA_PIN_DISABLE>; 717 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
718 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
719 nvidia,pull-down-strength = <36>; 718 nvidia,pull-down-strength = <36>;
720 nvidia,pull-up-strength = <20>; 719 nvidia,pull-up-strength = <20>;
721 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>; 720 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
@@ -725,7 +724,6 @@
725 nvidia,pins = "drive_sdio3"; 724 nvidia,pins = "drive_sdio3";
726 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; 725 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
727 nvidia,schmitt = <TEGRA_PIN_DISABLE>; 726 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
728 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
729 nvidia,pull-down-strength = <22>; 727 nvidia,pull-down-strength = <22>;
730 nvidia,pull-up-strength = <36>; 728 nvidia,pull-up-strength = <36>;
731 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>; 729 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
index c6dcef513e5d..0b54743c2621 100644
--- a/arch/arm/boot/dts/tegra124-venice2.dts
+++ b/arch/arm/boot/dts/tegra124-venice2.dts
@@ -138,14 +138,9 @@
138 nvidia,enable-input = <TEGRA_PIN_ENABLE>; 138 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
139 }; 139 };
140 sdmmc1_clk_pz0 { 140 sdmmc1_clk_pz0 {
141 nvidia,pins = "sdmmc1_clk_pz0", 141 nvidia,pins = "sdmmc1_clk_pz0";
142 "sdmmc1_cmd_pz1",
143 "sdmmc1_dat0_py7",
144 "sdmmc1_dat1_py6",
145 "sdmmc1_dat2_py5",
146 "sdmmc1_dat3_py4";
147 nvidia,function = "sdmmc1"; 142 nvidia,function = "sdmmc1";
148 nvidia,enable-input = <TEGRA_PIN_ENABLE>; 143 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
149 nvidia,pull = <TEGRA_PIN_PULL_NONE>; 144 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
150 nvidia,tristate = <TEGRA_PIN_DISABLE>; 145 nvidia,tristate = <TEGRA_PIN_DISABLE>;
151 }; 146 };
@@ -423,7 +418,6 @@
423 nvidia,pins = "drive_sdio1"; 418 nvidia,pins = "drive_sdio1";
424 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; 419 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
425 nvidia,schmitt = <TEGRA_PIN_DISABLE>; 420 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
426 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
427 nvidia,pull-down-strength = <32>; 421 nvidia,pull-down-strength = <32>;
428 nvidia,pull-up-strength = <42>; 422 nvidia,pull-up-strength = <42>;
429 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>; 423 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
@@ -433,7 +427,6 @@
433 nvidia,pins = "drive_sdio3"; 427 nvidia,pins = "drive_sdio3";
434 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; 428 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
435 nvidia,schmitt = <TEGRA_PIN_DISABLE>; 429 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
436 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
437 nvidia,pull-down-strength = <20>; 430 nvidia,pull-down-strength = <20>;
438 nvidia,pull-up-strength = <36>; 431 nvidia,pull-up-strength = <36>;
439 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>; 432 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
diff --git a/arch/arm/configs/davinci_all_defconfig b/arch/arm/configs/davinci_all_defconfig
index ab2f7378352c..932b932c8856 100644
--- a/arch/arm/configs/davinci_all_defconfig
+++ b/arch/arm/configs/davinci_all_defconfig
@@ -198,3 +198,5 @@ CONFIG_DEBUG_ERRORS=y
198# CONFIG_CRYPTO_ANSI_CPRNG is not set 198# CONFIG_CRYPTO_ANSI_CPRNG is not set
199# CONFIG_CRYPTO_HW is not set 199# CONFIG_CRYPTO_HW is not set
200CONFIG_CRC_T10DIF=m 200CONFIG_CRC_T10DIF=m
201CONFIG_GPIO_PCA953X=y
202CONFIG_KEYBOARD_GPIO_POLLED=y
diff --git a/arch/arm/configs/exynos_defconfig b/arch/arm/configs/exynos_defconfig
index dbe1f1c47bb0..4ce7b70ea901 100644
--- a/arch/arm/configs/exynos_defconfig
+++ b/arch/arm/configs/exynos_defconfig
@@ -94,7 +94,7 @@ CONFIG_FONT_7x14=y
94CONFIG_LOGO=y 94CONFIG_LOGO=y
95CONFIG_USB=y 95CONFIG_USB=y
96CONFIG_USB_EHCI_HCD=y 96CONFIG_USB_EHCI_HCD=y
97CONFIG_USB_EHCI_S5P=y 97CONFIG_USB_EHCI_EXYNOS=y
98CONFIG_USB_STORAGE=y 98CONFIG_USB_STORAGE=y
99CONFIG_USB_DWC3=y 99CONFIG_USB_DWC3=y
100CONFIG_USB_PHY=y 100CONFIG_USB_PHY=y
diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
index 22a3b9b5d4a1..4157aec4e307 100644
--- a/arch/arm/include/asm/smp.h
+++ b/arch/arm/include/asm/smp.h
@@ -74,6 +74,7 @@ struct secondary_data {
74}; 74};
75extern struct secondary_data secondary_data; 75extern struct secondary_data secondary_data;
76extern volatile int pen_release; 76extern volatile int pen_release;
77extern void secondary_startup(void);
77 78
78extern int __cpu_disable(void); 79extern int __cpu_disable(void);
79 80
diff --git a/arch/arm/include/debug/tegra.S b/arch/arm/include/debug/tegra.S
index f98763f0bc17..3bc80599c022 100644
--- a/arch/arm/include/debug/tegra.S
+++ b/arch/arm/include/debug/tegra.S
@@ -53,8 +53,7 @@
53 53
54#define checkuart(rp, rv, lhu, bit, uart) \ 54#define checkuart(rp, rv, lhu, bit, uart) \
55 /* Load address of CLK_RST register */ \ 55 /* Load address of CLK_RST register */ \
56 movw rp, #TEGRA_CLK_RST_DEVICES_##lhu & 0xffff ; \ 56 ldr rp, =TEGRA_CLK_RST_DEVICES_##lhu ; \
57 movt rp, #TEGRA_CLK_RST_DEVICES_##lhu >> 16 ; \
58 /* Load value from CLK_RST register */ \ 57 /* Load value from CLK_RST register */ \
59 ldr rp, [rp, #0] ; \ 58 ldr rp, [rp, #0] ; \
60 /* Test UART's reset bit */ \ 59 /* Test UART's reset bit */ \
@@ -62,8 +61,7 @@
62 /* If set, can't use UART; jump to save no UART */ \ 61 /* If set, can't use UART; jump to save no UART */ \
63 bne 90f ; \ 62 bne 90f ; \
64 /* Load address of CLK_OUT_ENB register */ \ 63 /* Load address of CLK_OUT_ENB register */ \
65 movw rp, #TEGRA_CLK_OUT_ENB_##lhu & 0xffff ; \ 64 ldr rp, =TEGRA_CLK_OUT_ENB_##lhu ; \
66 movt rp, #TEGRA_CLK_OUT_ENB_##lhu >> 16 ; \
67 /* Load value from CLK_OUT_ENB register */ \ 65 /* Load value from CLK_OUT_ENB register */ \
68 ldr rp, [rp, #0] ; \ 66 ldr rp, [rp, #0] ; \
69 /* Test UART's clock enable bit */ \ 67 /* Test UART's clock enable bit */ \
@@ -71,8 +69,7 @@
71 /* If clear, can't use UART; jump to save no UART */ \ 69 /* If clear, can't use UART; jump to save no UART */ \
72 beq 90f ; \ 70 beq 90f ; \
73 /* Passed all tests, load address of UART registers */ \ 71 /* Passed all tests, load address of UART registers */ \
74 movw rp, #TEGRA_UART##uart##_BASE & 0xffff ; \ 72 ldr rp, =TEGRA_UART##uart##_BASE ; \
75 movt rp, #TEGRA_UART##uart##_BASE >> 16 ; \
76 /* Jump to save UART address */ \ 73 /* Jump to save UART address */ \
77 b 91f 74 b 91f
78 75
@@ -90,15 +87,16 @@
90 87
91#ifdef CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA 88#ifdef CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA
92 /* Check ODMDATA */ 89 /* Check ODMDATA */
9310: movw \rp, #TEGRA_PMC_SCRATCH20 & 0xffff 9010: ldr \rp, =TEGRA_PMC_SCRATCH20
94 movt \rp, #TEGRA_PMC_SCRATCH20 >> 16
95 ldr \rp, [\rp, #0] @ Load PMC_SCRATCH20 91 ldr \rp, [\rp, #0] @ Load PMC_SCRATCH20
96 ubfx \rv, \rp, #18, #2 @ 19:18 are console type 92 lsr \rv, \rp, #18 @ 19:18 are console type
93 and \rv, \rv, #3
97 cmp \rv, #2 @ 2 and 3 mean DCC, UART 94 cmp \rv, #2 @ 2 and 3 mean DCC, UART
98 beq 11f @ some boards swap the meaning 95 beq 11f @ some boards swap the meaning
99 cmp \rv, #3 @ so accept either 96 cmp \rv, #3 @ so accept either
100 bne 90f 97 bne 90f
10111: ubfx \rv, \rp, #15, #3 @ 17:15 are UART ID 9811: lsr \rv, \rp, #15 @ 17:15 are UART ID
99 and \rv, #7
102 cmp \rv, #0 @ UART 0? 100 cmp \rv, #0 @ UART 0?
103 beq 20f 101 beq 20f
104 cmp \rv, #1 @ UART 1? 102 cmp \rv, #1 @ UART 1?
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 4f0e800e7e71..9968f208b7df 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -57,6 +57,7 @@ config SOC_SAMA5
57 select GENERIC_CLOCKEVENTS 57 select GENERIC_CLOCKEVENTS
58 select MULTI_IRQ_HANDLER 58 select MULTI_IRQ_HANDLER
59 select SPARSE_IRQ 59 select SPARSE_IRQ
60 select USE_OF
60 61
61menu "Atmel AT91 System-on-Chip" 62menu "Atmel AT91 System-on-Chip"
62 63
@@ -64,11 +65,22 @@ choice
64 65
65 prompt "Core type" 66 prompt "Core type"
66 67
68config ARCH_AT91X40
69 bool "ARM7 AT91X40"
70 depends on !MMU
71 select CPU_ARM7TDMI
72 select ARCH_USES_GETTIMEOFFSET
73 select MULTI_IRQ_HANDLER
74 select SPARSE_IRQ
75
76 help
77 Select this if you are using one of Atmel's AT91X40 SoC.
78
67config SOC_SAM_V4_V5 79config SOC_SAM_V4_V5
68 bool "ARM7/ARM9" 80 bool "ARM9 AT91SAM9/AT91RM9200"
69 help 81 help
70 Select this if you are using one of Atmel's AT91SAM9, AT91RM9200 82 Select this if you are using one of Atmel's AT91SAM9 or
71 or AT91X40 SoC. 83 AT91RM9200 SoC.
72 84
73config SOC_SAM_V7 85config SOC_SAM_V7
74 bool "Cortex A5" 86 bool "Cortex A5"
@@ -179,9 +191,12 @@ config SOC_AT91SAM9N12
179 Select this if you are using Atmel's AT91SAM9N12 SoC. 191 Select this if you are using Atmel's AT91SAM9N12 SoC.
180 192
181# ---------------------------------------------------------- 193# ----------------------------------------------------------
194endif # SOC_SAM_V4_V5
195
182 196
197if SOC_SAM_V4_V5 || ARCH_AT91X40
183source arch/arm/mach-at91/Kconfig.non_dt 198source arch/arm/mach-at91/Kconfig.non_dt
184endif # SOC_SAM_V4_V5 199endif
185 200
186comment "Generic Board Type" 201comment "Generic Board Type"
187 202
diff --git a/arch/arm/mach-at91/Kconfig.non_dt b/arch/arm/mach-at91/Kconfig.non_dt
index 1f73e9b527da..44ace320d2e1 100644
--- a/arch/arm/mach-at91/Kconfig.non_dt
+++ b/arch/arm/mach-at91/Kconfig.non_dt
@@ -5,6 +5,7 @@ config HAVE_AT91_DATAFLASH_CARD
5 5
6choice 6choice
7 prompt "Atmel AT91 Processor Devices for non DT boards" 7 prompt "Atmel AT91 Processor Devices for non DT boards"
8 depends on !ARCH_AT91X40
8 9
9config ARCH_AT91_NONE 10config ARCH_AT91_NONE
10 bool "None" 11 bool "None"
@@ -39,13 +40,6 @@ config ARCH_AT91SAM9G45
39 select SOC_AT91SAM9G45 40 select SOC_AT91SAM9G45
40 select AT91_USE_OLD_CLK 41 select AT91_USE_OLD_CLK
41 42
42config ARCH_AT91X40
43 bool "AT91x40"
44 depends on !MMU
45 select ARCH_USES_GETTIMEOFFSET
46 select MULTI_IRQ_HANDLER
47 select SPARSE_IRQ
48
49endchoice 43endchoice
50 44
51config ARCH_AT91SAM9G20 45config ARCH_AT91SAM9G20
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index eda8d1679d40..1630ae64d3fb 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -1255,12 +1255,8 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
1255 at91_set_A_periph(AT91_PIN_PC10, 0); /* CFRNW */ 1255 at91_set_A_periph(AT91_PIN_PC10, 0); /* CFRNW */
1256 at91_set_A_periph(AT91_PIN_PC15, 1); /* NWAIT */ 1256 at91_set_A_periph(AT91_PIN_PC15, 1); /* NWAIT */
1257 1257
1258 if (data->flags & AT91_CF_TRUE_IDE) 1258 if (IS_ENABLED(CONFIG_PATA_AT91) && (data->flags & AT91_CF_TRUE_IDE))
1259#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE)
1260 pdev->name = "pata_at91"; 1259 pdev->name = "pata_at91";
1261#else
1262#warning "board requires AT91_CF_TRUE_IDE: enable pata_at91"
1263#endif
1264 else 1260 else
1265 pdev->name = "at91_cf"; 1261 pdev->name = "at91_cf";
1266 1262
diff --git a/arch/arm/mach-at91/sam9_smc.c b/arch/arm/mach-at91/sam9_smc.c
index b26156bf15db..826315af6d11 100644
--- a/arch/arm/mach-at91/sam9_smc.c
+++ b/arch/arm/mach-at91/sam9_smc.c
@@ -36,6 +36,7 @@ void sam9_smc_write_mode(int id, int cs,
36{ 36{
37 sam9_smc_cs_write_mode(AT91_SMC_CS(id, cs), config); 37 sam9_smc_cs_write_mode(AT91_SMC_CS(id, cs), config);
38} 38}
39EXPORT_SYMBOL_GPL(sam9_smc_write_mode);
39 40
40static void sam9_smc_cs_configure(void __iomem *base, 41static void sam9_smc_cs_configure(void __iomem *base,
41 struct sam9_smc_config *config) 42 struct sam9_smc_config *config)
@@ -69,6 +70,7 @@ void sam9_smc_configure(int id, int cs,
69{ 70{
70 sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config); 71 sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config);
71} 72}
73EXPORT_SYMBOL_GPL(sam9_smc_configure);
72 74
73static void sam9_smc_cs_read_mode(void __iomem *base, 75static void sam9_smc_cs_read_mode(void __iomem *base,
74 struct sam9_smc_config *config) 76 struct sam9_smc_config *config)
@@ -84,6 +86,7 @@ void sam9_smc_read_mode(int id, int cs,
84{ 86{
85 sam9_smc_cs_read_mode(AT91_SMC_CS(id, cs), config); 87 sam9_smc_cs_read_mode(AT91_SMC_CS(id, cs), config);
86} 88}
89EXPORT_SYMBOL_GPL(sam9_smc_read_mode);
87 90
88static void sam9_smc_cs_read(void __iomem *base, 91static void sam9_smc_cs_read(void __iomem *base,
89 struct sam9_smc_config *config) 92 struct sam9_smc_config *config)
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
index f7ca97b7291e..f7a07a58ebb6 100644
--- a/arch/arm/mach-at91/setup.c
+++ b/arch/arm/mach-at91/setup.c
@@ -351,7 +351,7 @@ void __init at91_ioremap_matrix(u32 base_addr)
351 panic("Impossible to ioremap at91_matrix_base\n"); 351 panic("Impossible to ioremap at91_matrix_base\n");
352} 352}
353 353
354#if defined(CONFIG_OF) 354#if defined(CONFIG_OF) && !defined(CONFIG_ARCH_AT91X40)
355static struct of_device_id rstc_ids[] = { 355static struct of_device_id rstc_ids[] = {
356 { .compatible = "atmel,at91sam9260-rstc", .data = at91sam9_alt_restart }, 356 { .compatible = "atmel,at91sam9260-rstc", .data = at91sam9_alt_restart },
357 { .compatible = "atmel,at91sam9g45-rstc", .data = at91sam9g45_restart }, 357 { .compatible = "atmel,at91sam9g45-rstc", .data = at91sam9g45_restart },
diff --git a/arch/arm/mach-clps711x/board-autcpu12.c b/arch/arm/mach-clps711x/board-autcpu12.c
index f8d71a89644a..5f831133178f 100644
--- a/arch/arm/mach-clps711x/board-autcpu12.c
+++ b/arch/arm/mach-clps711x/board-autcpu12.c
@@ -73,7 +73,7 @@
73#define AUTCPU12_SMC_NCE (AUTCPU12_MMGPIO_BASE + 0) /* Bit 0 */ 73#define AUTCPU12_SMC_NCE (AUTCPU12_MMGPIO_BASE + 0) /* Bit 0 */
74#define AUTCPU12_SMC_RDY CLPS711X_GPIO(1, 2) 74#define AUTCPU12_SMC_RDY CLPS711X_GPIO(1, 2)
75#define AUTCPU12_SMC_ALE CLPS711X_GPIO(1, 3) 75#define AUTCPU12_SMC_ALE CLPS711X_GPIO(1, 3)
76#define AUTCPU12_SMC_CLE CLPS711X_GPIO(1, 3) 76#define AUTCPU12_SMC_CLE CLPS711X_GPIO(1, 4)
77 77
78/* LCD contrast digital potentiometer */ 78/* LCD contrast digital potentiometer */
79#define AUTCPU12_DPOT_CS CLPS711X_GPIO(4, 0) 79#define AUTCPU12_DPOT_CS CLPS711X_GPIO(4, 0)
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index ce096d678aa4..d863d8729edc 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -246,7 +246,6 @@ static void __init cns3420_map_io(void)
246 246
247MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") 247MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
248 .atag_offset = 0x100, 248 .atag_offset = 0x100,
249 .nr_irqs = NR_IRQS_CNS3XXX,
250 .map_io = cns3420_map_io, 249 .map_io = cns3420_map_io,
251 .init_irq = cns3xxx_init_irq, 250 .init_irq = cns3xxx_init_irq,
252 .init_time = cns3xxx_timer_init, 251 .init_time = cns3xxx_timer_init,
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c
index 384dc859e6c6..2ae28a69e3e5 100644
--- a/arch/arm/mach-cns3xxx/core.c
+++ b/arch/arm/mach-cns3xxx/core.c
@@ -47,6 +47,38 @@ static struct map_desc cns3xxx_io_desc[] __initdata = {
47 .pfn = __phys_to_pfn(CNS3XXX_PM_BASE), 47 .pfn = __phys_to_pfn(CNS3XXX_PM_BASE),
48 .length = SZ_4K, 48 .length = SZ_4K,
49 .type = MT_DEVICE, 49 .type = MT_DEVICE,
50#ifdef CONFIG_PCI
51 }, {
52 .virtual = CNS3XXX_PCIE0_HOST_BASE_VIRT,
53 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_HOST_BASE),
54 .length = SZ_4K,
55 .type = MT_DEVICE,
56 }, {
57 .virtual = CNS3XXX_PCIE0_CFG0_BASE_VIRT,
58 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_CFG0_BASE),
59 .length = SZ_64K, /* really 4 KiB at offset 32 KiB */
60 .type = MT_DEVICE,
61 }, {
62 .virtual = CNS3XXX_PCIE0_CFG1_BASE_VIRT,
63 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_CFG1_BASE),
64 .length = SZ_16M,
65 .type = MT_DEVICE,
66 }, {
67 .virtual = CNS3XXX_PCIE1_HOST_BASE_VIRT,
68 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_HOST_BASE),
69 .length = SZ_4K,
70 .type = MT_DEVICE,
71 }, {
72 .virtual = CNS3XXX_PCIE1_CFG0_BASE_VIRT,
73 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_CFG0_BASE),
74 .length = SZ_64K, /* really 4 KiB at offset 32 KiB */
75 .type = MT_DEVICE,
76 }, {
77 .virtual = CNS3XXX_PCIE1_CFG1_BASE_VIRT,
78 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_CFG1_BASE),
79 .length = SZ_16M,
80 .type = MT_DEVICE,
81#endif
50 }, 82 },
51}; 83};
52 84
@@ -368,7 +400,6 @@ static const char *cns3xxx_dt_compat[] __initdata = {
368 400
369DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx") 401DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx")
370 .dt_compat = cns3xxx_dt_compat, 402 .dt_compat = cns3xxx_dt_compat,
371 .nr_irqs = NR_IRQS_CNS3XXX,
372 .map_io = cns3xxx_map_io, 403 .map_io = cns3xxx_map_io,
373 .init_irq = cns3xxx_init_irq, 404 .init_irq = cns3xxx_init_irq,
374 .init_time = cns3xxx_timer_init, 405 .init_time = cns3xxx_timer_init,
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
index c7b204bff386..413134c54452 100644
--- a/arch/arm/mach-cns3xxx/pcie.c
+++ b/arch/arm/mach-cns3xxx/pcie.c
@@ -23,15 +23,10 @@
23#include "cns3xxx.h" 23#include "cns3xxx.h"
24#include "core.h" 24#include "core.h"
25 25
26enum cns3xxx_access_type {
27 CNS3XXX_HOST_TYPE = 0,
28 CNS3XXX_CFG0_TYPE,
29 CNS3XXX_CFG1_TYPE,
30 CNS3XXX_NUM_ACCESS_TYPES,
31};
32
33struct cns3xxx_pcie { 26struct cns3xxx_pcie {
34 struct map_desc cfg_bases[CNS3XXX_NUM_ACCESS_TYPES]; 27 void __iomem *host_regs; /* PCI config registers for host bridge */
28 void __iomem *cfg0_regs; /* PCI Type 0 config registers */
29 void __iomem *cfg1_regs; /* PCI Type 1 config registers */
35 unsigned int irqs[2]; 30 unsigned int irqs[2];
36 struct resource res_io; 31 struct resource res_io;
37 struct resource res_mem; 32 struct resource res_mem;
@@ -66,7 +61,6 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus,
66 int busno = bus->number; 61 int busno = bus->number;
67 int slot = PCI_SLOT(devfn); 62 int slot = PCI_SLOT(devfn);
68 int offset; 63 int offset;
69 enum cns3xxx_access_type type;
70 void __iomem *base; 64 void __iomem *base;
71 65
72 /* If there is no link, just show the CNS PCI bridge. */ 66 /* If there is no link, just show the CNS PCI bridge. */
@@ -78,17 +72,21 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus,
78 * we still want to access it. For this to work, we must place 72 * we still want to access it. For this to work, we must place
79 * the first device on the same bus as the CNS PCI bridge. 73 * the first device on the same bus as the CNS PCI bridge.
80 */ 74 */
81 if (busno == 0) { 75 if (busno == 0) { /* directly connected PCIe bus */
82 if (slot > 1) 76 switch (slot) {
83 return NULL; 77 case 0: /* host bridge device, function 0 only */
84 type = slot; 78 base = cnspci->host_regs;
85 } else { 79 break;
86 type = CNS3XXX_CFG1_TYPE; 80 case 1: /* directly connected device */
87 } 81 base = cnspci->cfg0_regs;
82 break;
83 default:
84 return NULL; /* no such device */
85 }
86 } else /* remote PCI bus */
87 base = cnspci->cfg1_regs;
88 88
89 base = (void __iomem *)cnspci->cfg_bases[type].virtual;
90 offset = ((busno & 0xf) << 20) | (devfn << 12) | (where & 0xffc); 89 offset = ((busno & 0xf) << 20) | (devfn << 12) | (where & 0xffc);
91
92 return base + offset; 90 return base + offset;
93} 91}
94 92
@@ -180,36 +178,19 @@ static int cns3xxx_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
180 178
181static struct cns3xxx_pcie cns3xxx_pcie[] = { 179static struct cns3xxx_pcie cns3xxx_pcie[] = {
182 [0] = { 180 [0] = {
183 .cfg_bases = { 181 .host_regs = (void __iomem *)CNS3XXX_PCIE0_HOST_BASE_VIRT,
184 [CNS3XXX_HOST_TYPE] = { 182 .cfg0_regs = (void __iomem *)CNS3XXX_PCIE0_CFG0_BASE_VIRT,
185 .virtual = CNS3XXX_PCIE0_HOST_BASE_VIRT, 183 .cfg1_regs = (void __iomem *)CNS3XXX_PCIE0_CFG1_BASE_VIRT,
186 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_HOST_BASE),
187 .length = SZ_16M,
188 .type = MT_DEVICE,
189 },
190 [CNS3XXX_CFG0_TYPE] = {
191 .virtual = CNS3XXX_PCIE0_CFG0_BASE_VIRT,
192 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_CFG0_BASE),
193 .length = SZ_16M,
194 .type = MT_DEVICE,
195 },
196 [CNS3XXX_CFG1_TYPE] = {
197 .virtual = CNS3XXX_PCIE0_CFG1_BASE_VIRT,
198 .pfn = __phys_to_pfn(CNS3XXX_PCIE0_CFG1_BASE),
199 .length = SZ_16M,
200 .type = MT_DEVICE,
201 },
202 },
203 .res_io = { 184 .res_io = {
204 .name = "PCIe0 I/O space", 185 .name = "PCIe0 I/O space",
205 .start = CNS3XXX_PCIE0_IO_BASE, 186 .start = CNS3XXX_PCIE0_IO_BASE,
206 .end = CNS3XXX_PCIE0_IO_BASE + SZ_16M - 1, 187 .end = CNS3XXX_PCIE0_CFG0_BASE - 1, /* 16 MiB */
207 .flags = IORESOURCE_IO, 188 .flags = IORESOURCE_IO,
208 }, 189 },
209 .res_mem = { 190 .res_mem = {
210 .name = "PCIe0 non-prefetchable", 191 .name = "PCIe0 non-prefetchable",
211 .start = CNS3XXX_PCIE0_MEM_BASE, 192 .start = CNS3XXX_PCIE0_MEM_BASE,
212 .end = CNS3XXX_PCIE0_MEM_BASE + SZ_16M - 1, 193 .end = CNS3XXX_PCIE0_HOST_BASE - 1, /* 176 MiB */
213 .flags = IORESOURCE_MEM, 194 .flags = IORESOURCE_MEM,
214 }, 195 },
215 .irqs = { IRQ_CNS3XXX_PCIE0_RC, IRQ_CNS3XXX_PCIE0_DEVICE, }, 196 .irqs = { IRQ_CNS3XXX_PCIE0_RC, IRQ_CNS3XXX_PCIE0_DEVICE, },
@@ -222,36 +203,19 @@ static struct cns3xxx_pcie cns3xxx_pcie[] = {
222 }, 203 },
223 }, 204 },
224 [1] = { 205 [1] = {
225 .cfg_bases = { 206 .host_regs = (void __iomem *)CNS3XXX_PCIE1_HOST_BASE_VIRT,
226 [CNS3XXX_HOST_TYPE] = { 207 .cfg0_regs = (void __iomem *)CNS3XXX_PCIE1_CFG0_BASE_VIRT,
227 .virtual = CNS3XXX_PCIE1_HOST_BASE_VIRT, 208 .cfg1_regs = (void __iomem *)CNS3XXX_PCIE1_CFG1_BASE_VIRT,
228 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_HOST_BASE),
229 .length = SZ_16M,
230 .type = MT_DEVICE,
231 },
232 [CNS3XXX_CFG0_TYPE] = {
233 .virtual = CNS3XXX_PCIE1_CFG0_BASE_VIRT,
234 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_CFG0_BASE),
235 .length = SZ_16M,
236 .type = MT_DEVICE,
237 },
238 [CNS3XXX_CFG1_TYPE] = {
239 .virtual = CNS3XXX_PCIE1_CFG1_BASE_VIRT,
240 .pfn = __phys_to_pfn(CNS3XXX_PCIE1_CFG1_BASE),
241 .length = SZ_16M,
242 .type = MT_DEVICE,
243 },
244 },
245 .res_io = { 209 .res_io = {
246 .name = "PCIe1 I/O space", 210 .name = "PCIe1 I/O space",
247 .start = CNS3XXX_PCIE1_IO_BASE, 211 .start = CNS3XXX_PCIE1_IO_BASE,
248 .end = CNS3XXX_PCIE1_IO_BASE + SZ_16M - 1, 212 .end = CNS3XXX_PCIE1_CFG0_BASE - 1, /* 16 MiB */
249 .flags = IORESOURCE_IO, 213 .flags = IORESOURCE_IO,
250 }, 214 },
251 .res_mem = { 215 .res_mem = {
252 .name = "PCIe1 non-prefetchable", 216 .name = "PCIe1 non-prefetchable",
253 .start = CNS3XXX_PCIE1_MEM_BASE, 217 .start = CNS3XXX_PCIE1_MEM_BASE,
254 .end = CNS3XXX_PCIE1_MEM_BASE + SZ_16M - 1, 218 .end = CNS3XXX_PCIE1_HOST_BASE - 1, /* 176 MiB */
255 .flags = IORESOURCE_MEM, 219 .flags = IORESOURCE_MEM,
256 }, 220 },
257 .irqs = { IRQ_CNS3XXX_PCIE1_RC, IRQ_CNS3XXX_PCIE1_DEVICE, }, 221 .irqs = { IRQ_CNS3XXX_PCIE1_RC, IRQ_CNS3XXX_PCIE1_DEVICE, },
@@ -307,18 +271,15 @@ static void __init cns3xxx_pcie_hw_init(struct cns3xxx_pcie *cnspci)
307 .ops = &cns3xxx_pcie_ops, 271 .ops = &cns3xxx_pcie_ops,
308 .sysdata = &sd, 272 .sysdata = &sd,
309 }; 273 };
310 u32 io_base = cnspci->res_io.start >> 16; 274 u16 mem_base = cnspci->res_mem.start >> 16;
311 u32 mem_base = cnspci->res_mem.start >> 16; 275 u16 mem_limit = cnspci->res_mem.end >> 16;
312 u32 host_base = cnspci->cfg_bases[CNS3XXX_HOST_TYPE].pfn; 276 u16 io_base = cnspci->res_io.start >> 16;
313 u32 cfg0_base = cnspci->cfg_bases[CNS3XXX_CFG0_TYPE].pfn; 277 u16 io_limit = cnspci->res_io.end >> 16;
314 u32 devfn = 0; 278 u32 devfn = 0;
315 u8 tmp8; 279 u8 tmp8;
316 u16 pos; 280 u16 pos;
317 u16 dc; 281 u16 dc;
318 282
319 host_base = (__pfn_to_phys(host_base) - 1) >> 16;
320 cfg0_base = (__pfn_to_phys(cfg0_base) - 1) >> 16;
321
322 pci_bus_write_config_byte(&bus, devfn, PCI_PRIMARY_BUS, 0); 283 pci_bus_write_config_byte(&bus, devfn, PCI_PRIMARY_BUS, 0);
323 pci_bus_write_config_byte(&bus, devfn, PCI_SECONDARY_BUS, 1); 284 pci_bus_write_config_byte(&bus, devfn, PCI_SECONDARY_BUS, 1);
324 pci_bus_write_config_byte(&bus, devfn, PCI_SUBORDINATE_BUS, 1); 285 pci_bus_write_config_byte(&bus, devfn, PCI_SUBORDINATE_BUS, 1);
@@ -328,9 +289,9 @@ static void __init cns3xxx_pcie_hw_init(struct cns3xxx_pcie *cnspci)
328 pci_bus_read_config_byte(&bus, devfn, PCI_SUBORDINATE_BUS, &tmp8); 289 pci_bus_read_config_byte(&bus, devfn, PCI_SUBORDINATE_BUS, &tmp8);
329 290
330 pci_bus_write_config_word(&bus, devfn, PCI_MEMORY_BASE, mem_base); 291 pci_bus_write_config_word(&bus, devfn, PCI_MEMORY_BASE, mem_base);
331 pci_bus_write_config_word(&bus, devfn, PCI_MEMORY_LIMIT, host_base); 292 pci_bus_write_config_word(&bus, devfn, PCI_MEMORY_LIMIT, mem_limit);
332 pci_bus_write_config_word(&bus, devfn, PCI_IO_BASE_UPPER16, io_base); 293 pci_bus_write_config_word(&bus, devfn, PCI_IO_BASE_UPPER16, io_base);
333 pci_bus_write_config_word(&bus, devfn, PCI_IO_LIMIT_UPPER16, cfg0_base); 294 pci_bus_write_config_word(&bus, devfn, PCI_IO_LIMIT_UPPER16, io_limit);
334 295
335 if (!cnspci->linked) 296 if (!cnspci->linked)
336 return; 297 return;
@@ -368,8 +329,6 @@ static int __init cns3xxx_pcie_init(void)
368 "imprecise external abort"); 329 "imprecise external abort");
369 330
370 for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) { 331 for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) {
371 iotable_init(cns3xxx_pcie[i].cfg_bases,
372 ARRAY_SIZE(cns3xxx_pcie[i].cfg_bases));
373 cns3xxx_pwr_clk_en(0x1 << PM_CLK_GATE_REG_OFFSET_PCIE(i)); 332 cns3xxx_pwr_clk_en(0x1 << PM_CLK_GATE_REG_OFFSET_PCIE(i));
374 cns3xxx_pwr_soft_rst(0x1 << PM_SOFT_RST_REG_OFFST_PCIE(i)); 333 cns3xxx_pwr_soft_rst(0x1 << PM_SOFT_RST_REG_OFFST_PCIE(i));
375 cns3xxx_pcie_check_link(&cns3xxx_pcie[i]); 334 cns3xxx_pcie_check_link(&cns3xxx_pcie[i]);
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index a075b3e0c5c7..626d2b82d0f3 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -214,11 +214,6 @@ config DA850_WL12XX
214 Say Y if you want to use a wl1271 expansion card connected to the 214 Say Y if you want to use a wl1271 expansion card connected to the
215 AM18x EVM. 215 AM18x EVM.
216 216
217config GPIO_PCA953X
218 default MACH_DAVINCI_DA850_EVM
219
220config KEYBOARD_GPIO_POLLED
221 default MACH_DAVINCI_DA850_EVM
222 217
223config MACH_TNETV107X 218config MACH_TNETV107X
224 bool "TI TNETV107X Reference Platform" 219 bool "TI TNETV107X Reference Platform"
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index 987605b78556..3de4dc9a1698 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -799,11 +799,12 @@ static __init void davinci_evm_init(void)
799 /* irlml6401 switches over 1A, in under 8 msec */ 799 /* irlml6401 switches over 1A, in under 8 msec */
800 davinci_setup_usb(1000, 8); 800 davinci_setup_usb(1000, 8);
801 801
802 soc_info->emac_pdata->phy_id = DM644X_EVM_PHY_ID; 802 if (IS_BUILTIN(CONFIG_PHYLIB)) {
803 /* Register the fixup for PHY on DaVinci */ 803 soc_info->emac_pdata->phy_id = DM644X_EVM_PHY_ID;
804 phy_register_fixup_for_uid(LXT971_PHY_ID, LXT971_PHY_MASK, 804 /* Register the fixup for PHY on DaVinci */
805 davinci_phy_fixup); 805 phy_register_fixup_for_uid(LXT971_PHY_ID, LXT971_PHY_MASK,
806 806 davinci_phy_fixup);
807 }
807} 808}
808 809
809MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM") 810MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 157ba88433c9..fd021ba539fe 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -242,6 +242,7 @@ unsigned int ep93xx_chip_revision(void)
242 v >>= EP93XX_SYSCON_SYSCFG_REV_SHIFT; 242 v >>= EP93XX_SYSCON_SYSCFG_REV_SHIFT;
243 return v; 243 return v;
244} 244}
245EXPORT_SYMBOL_GPL(ep93xx_chip_revision);
245 246
246/************************************************************************* 247/*************************************************************************
247 * EP93xx GPIO 248 * EP93xx GPIO
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index f18be40e5b21..8d0042c9d4d3 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -404,8 +404,10 @@ static int __init exynos4_l2x0_cache_init(void)
404 if (ret) 404 if (ret)
405 return ret; 405 return ret;
406 406
407 l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs); 407 if (IS_ENABLED(CONFIG_S5P_SLEEP)) {
408 clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long)); 408 l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
409 clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
410 }
409 return 0; 411 return 0;
410} 412}
411early_initcall(exynos4_l2x0_cache_init); 413early_initcall(exynos4_l2x0_cache_init);
diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c
index f57cb91f02aa..93d2decc112d 100644
--- a/arch/arm/mach-exynos/cpuidle.c
+++ b/arch/arm/mach-exynos/cpuidle.c
@@ -14,6 +14,7 @@
14#include <linux/cpu_pm.h> 14#include <linux/cpu_pm.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/export.h> 16#include <linux/export.h>
17#include <linux/module.h>
17#include <linux/time.h> 18#include <linux/time.h>
18#include <linux/platform_device.h> 19#include <linux/platform_device.h>
19 20
diff --git a/arch/arm/mach-footbridge/Kconfig b/arch/arm/mach-footbridge/Kconfig
index fba55fb9f47d..07152d00fc50 100644
--- a/arch/arm/mach-footbridge/Kconfig
+++ b/arch/arm/mach-footbridge/Kconfig
@@ -52,6 +52,7 @@ config ARCH_EBSA285_HOST
52 select FOOTBRIDGE_HOST 52 select FOOTBRIDGE_HOST
53 select ISA 53 select ISA
54 select ISA_DMA 54 select ISA_DMA
55 select ARCH_MAY_HAVE_PC_FDC
55 select PCI 56 select PCI
56 help 57 help
57 Say Y here if you intend to run this kernel on the EBSA285 card 58 Say Y here if you intend to run this kernel on the EBSA285 card
@@ -94,6 +95,5 @@ config FOOTBRIDGE_ADDIN
94# EBSA285 board in either host or addin mode 95# EBSA285 board in either host or addin mode
95config ARCH_EBSA285 96config ARCH_EBSA285
96 bool 97 bool
97 select ARCH_MAY_HAVE_PC_FDC
98 98
99endif 99endif
diff --git a/arch/arm/mach-footbridge/Makefile b/arch/arm/mach-footbridge/Makefile
index 0b64dd430d61..c3faa3bc84dd 100644
--- a/arch/arm/mach-footbridge/Makefile
+++ b/arch/arm/mach-footbridge/Makefile
@@ -4,11 +4,12 @@
4 4
5# Object file lists. 5# Object file lists.
6 6
7obj-y := common.o dc21285.o dma.o isa-irq.o 7obj-y := common.o dma.o isa-irq.o
8obj-m := 8obj-m :=
9obj-n := 9obj-n :=
10obj- := 10obj- :=
11 11
12pci-y += dc21285.o
12pci-$(CONFIG_ARCH_CATS) += cats-pci.o 13pci-$(CONFIG_ARCH_CATS) += cats-pci.o
13pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o 14pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o
14pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o 15pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
diff --git a/arch/arm/mach-footbridge/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c
index 9669cc0b6318..da0415094856 100644
--- a/arch/arm/mach-footbridge/cats-hw.c
+++ b/arch/arm/mach-footbridge/cats-hw.c
@@ -78,9 +78,11 @@ __initcall(cats_hw_init);
78static void __init 78static void __init
79fixup_cats(struct tag *tags, char **cmdline, struct meminfo *mi) 79fixup_cats(struct tag *tags, char **cmdline, struct meminfo *mi)
80{ 80{
81#if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_DUMMY_CONSOLE)
81 screen_info.orig_video_lines = 25; 82 screen_info.orig_video_lines = 25;
82 screen_info.orig_video_points = 16; 83 screen_info.orig_video_points = 16;
83 screen_info.orig_y = 24; 84 screen_info.orig_y = 24;
85#endif
84} 86}
85 87
86MACHINE_START(CATS, "Chalice-CATS") 88MACHINE_START(CATS, "Chalice-CATS")
diff --git a/arch/arm/mach-hisi/Makefile b/arch/arm/mach-hisi/Makefile
index 6870058d0a48..2ae1b59267c2 100644
--- a/arch/arm/mach-hisi/Makefile
+++ b/arch/arm/mach-hisi/Makefile
@@ -3,5 +3,4 @@
3# 3#
4 4
5obj-y += hisilicon.o 5obj-y += hisilicon.o
6obj-$(CONFIG_SMP) += platsmp.o 6obj-$(CONFIG_SMP) += platsmp.o hotplug.o
7obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
diff --git a/arch/arm/mach-hisi/hotplug.c b/arch/arm/mach-hisi/hotplug.c
index b909854eee7f..abd441b0c604 100644
--- a/arch/arm/mach-hisi/hotplug.c
+++ b/arch/arm/mach-hisi/hotplug.c
@@ -178,6 +178,7 @@ static inline void cpu_enter_lowpower(void)
178 : "cc"); 178 : "cc");
179} 179}
180 180
181#ifdef CONFIG_HOTPLUG_CPU
181void hi3xxx_cpu_die(unsigned int cpu) 182void hi3xxx_cpu_die(unsigned int cpu)
182{ 183{
183 cpu_enter_lowpower(); 184 cpu_enter_lowpower();
@@ -198,3 +199,4 @@ int hi3xxx_cpu_kill(unsigned int cpu)
198 hi3xxx_set_cpu(cpu, false); 199 hi3xxx_set_cpu(cpu, false);
199 return 1; 200 return 1;
200} 201}
202#endif
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index abeff25532ab..271a255864d2 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -6,8 +6,8 @@ config ARCH_INTEGRATOR_AP
6 bool "Support Integrator/AP and Integrator/PP2 platforms" 6 bool "Support Integrator/AP and Integrator/PP2 platforms"
7 select CLKSRC_MMIO 7 select CLKSRC_MMIO
8 select MIGHT_HAVE_PCI 8 select MIGHT_HAVE_PCI
9 select SERIAL_AMBA_PL010 9 select SERIAL_AMBA_PL010 if TTY
10 select SERIAL_AMBA_PL010_CONSOLE 10 select SERIAL_AMBA_PL010_CONSOLE if TTY
11 select SOC_BUS 11 select SOC_BUS
12 help 12 help
13 Include support for the ARM(R) Integrator/AP and 13 Include support for the ARM(R) Integrator/AP and
@@ -18,8 +18,8 @@ config ARCH_INTEGRATOR_CP
18 select ARCH_CINTEGRATOR 18 select ARCH_CINTEGRATOR
19 select ARM_TIMER_SP804 19 select ARM_TIMER_SP804
20 select PLAT_VERSATILE_CLCD 20 select PLAT_VERSATILE_CLCD
21 select SERIAL_AMBA_PL011 21 select SERIAL_AMBA_PL011 if TTY
22 select SERIAL_AMBA_PL011_CONSOLE 22 select SERIAL_AMBA_PL011_CONSOLE if TTY
23 select SOC_BUS 23 select SOC_BUS
24 help 24 help
25 Include support for the ARM(R) Integrator CP platform. 25 Include support for the ARM(R) Integrator CP platform.
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c
index 200970d56f6d..4977296f0c78 100644
--- a/arch/arm/mach-ixp4xx/common-pci.c
+++ b/arch/arm/mach-ixp4xx/common-pci.c
@@ -315,33 +315,6 @@ static int abort_handler(unsigned long addr, unsigned int fsr, struct pt_regs *r
315 return 0; 315 return 0;
316} 316}
317 317
318
319static int ixp4xx_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
320{
321 return (dma_addr + size) >= SZ_64M;
322}
323
324/*
325 * Setup DMA mask to 64MB on PCI devices. Ignore all other devices.
326 */
327static int ixp4xx_pci_platform_notify(struct device *dev)
328{
329 if (dev_is_pci(dev)) {
330 *dev->dma_mask = SZ_64M - 1;
331 dev->coherent_dma_mask = SZ_64M - 1;
332 dmabounce_register_dev(dev, 2048, 4096, ixp4xx_needs_bounce);
333 }
334 return 0;
335}
336
337static int ixp4xx_pci_platform_notify_remove(struct device *dev)
338{
339 if (dev_is_pci(dev))
340 dmabounce_unregister_dev(dev);
341
342 return 0;
343}
344
345void __init ixp4xx_pci_preinit(void) 318void __init ixp4xx_pci_preinit(void)
346{ 319{
347 unsigned long cpuid = read_cpuid_id(); 320 unsigned long cpuid = read_cpuid_id();
@@ -475,20 +448,8 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys)
475 pci_add_resource_offset(&sys->resources, &res[0], sys->io_offset); 448 pci_add_resource_offset(&sys->resources, &res[0], sys->io_offset);
476 pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset); 449 pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset);
477 450
478 platform_notify = ixp4xx_pci_platform_notify;
479 platform_notify_remove = ixp4xx_pci_platform_notify_remove;
480
481 return 1; 451 return 1;
482} 452}
483 453
484int dma_set_coherent_mask(struct device *dev, u64 mask)
485{
486 if (mask >= SZ_64M - 1)
487 return 0;
488
489 return -EIO;
490}
491
492EXPORT_SYMBOL(ixp4xx_pci_read); 454EXPORT_SYMBOL(ixp4xx_pci_read);
493EXPORT_SYMBOL(ixp4xx_pci_write); 455EXPORT_SYMBOL(ixp4xx_pci_write);
494EXPORT_SYMBOL(dma_set_coherent_mask);
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index a465f27bc263..be882c95bd36 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -30,8 +30,8 @@
30#include <linux/export.h> 30#include <linux/export.h>
31#include <linux/gpio.h> 31#include <linux/gpio.h>
32#include <linux/cpu.h> 32#include <linux/cpu.h>
33#include <linux/pci.h>
33#include <linux/sched_clock.h> 34#include <linux/sched_clock.h>
34
35#include <mach/udc.h> 35#include <mach/udc.h>
36#include <mach/hardware.h> 36#include <mach/hardware.h>
37#include <mach/io.h> 37#include <mach/io.h>
@@ -40,7 +40,6 @@
40#include <asm/page.h> 40#include <asm/page.h>
41#include <asm/irq.h> 41#include <asm/irq.h>
42#include <asm/system_misc.h> 42#include <asm/system_misc.h>
43
44#include <asm/mach/map.h> 43#include <asm/mach/map.h>
45#include <asm/mach/irq.h> 44#include <asm/mach/irq.h>
46#include <asm/mach/time.h> 45#include <asm/mach/time.h>
@@ -578,6 +577,54 @@ void ixp4xx_restart(enum reboot_mode mode, const char *cmd)
578 } 577 }
579} 578}
580 579
580#ifdef CONFIG_PCI
581static int ixp4xx_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
582{
583 return (dma_addr + size) > SZ_64M;
584}
585
586static int ixp4xx_platform_notify_remove(struct device *dev)
587{
588 if (dev_is_pci(dev))
589 dmabounce_unregister_dev(dev);
590
591 return 0;
592}
593#endif
594
595/*
596 * Setup DMA mask to 64MB on PCI devices and 4 GB on all other things.
597 */
598static int ixp4xx_platform_notify(struct device *dev)
599{
600 dev->dma_mask = &dev->coherent_dma_mask;
601
602#ifdef CONFIG_PCI
603 if (dev_is_pci(dev)) {
604 dev->coherent_dma_mask = DMA_BIT_MASK(28); /* 64 MB */
605 dmabounce_register_dev(dev, 2048, 4096, ixp4xx_needs_bounce);
606 return 0;
607 }
608#endif
609
610 dev->coherent_dma_mask = DMA_BIT_MASK(32);
611 return 0;
612}
613
614int dma_set_coherent_mask(struct device *dev, u64 mask)
615{
616 if (dev_is_pci(dev))
617 mask &= DMA_BIT_MASK(28); /* 64 MB */
618
619 if ((mask & DMA_BIT_MASK(28)) == DMA_BIT_MASK(28)) {
620 dev->coherent_dma_mask = mask;
621 return 0;
622 }
623
624 return -EIO; /* device wanted sub-64MB mask */
625}
626EXPORT_SYMBOL(dma_set_coherent_mask);
627
581#ifdef CONFIG_IXP4XX_INDIRECT_PCI 628#ifdef CONFIG_IXP4XX_INDIRECT_PCI
582/* 629/*
583 * In the case of using indirect PCI, we simply return the actual PCI 630 * In the case of using indirect PCI, we simply return the actual PCI
@@ -600,12 +647,16 @@ static void ixp4xx_iounmap(void __iomem *addr)
600 if (!is_pci_memory((__force u32)addr)) 647 if (!is_pci_memory((__force u32)addr))
601 __iounmap(addr); 648 __iounmap(addr);
602} 649}
650#endif
603 651
604void __init ixp4xx_init_early(void) 652void __init ixp4xx_init_early(void)
605{ 653{
654 platform_notify = ixp4xx_platform_notify;
655#ifdef CONFIG_PCI
656 platform_notify_remove = ixp4xx_platform_notify_remove;
657#endif
658#ifdef CONFIG_IXP4XX_INDIRECT_PCI
606 arch_ioremap_caller = ixp4xx_ioremap_caller; 659 arch_ioremap_caller = ixp4xx_ioremap_caller;
607 arch_iounmap = ixp4xx_iounmap; 660 arch_iounmap = ixp4xx_iounmap;
608}
609#else
610void __init ixp4xx_init_early(void) {}
611#endif 661#endif
662}
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c
index e54ff491c105..80bd9d6d04de 100644
--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -4,6 +4,7 @@
4 */ 4 */
5 5
6#include <linux/delay.h> 6#include <linux/delay.h>
7#include <linux/gpio.h>
7#include <linux/hdlc.h> 8#include <linux/hdlc.h>
8#include <linux/i2c-gpio.h> 9#include <linux/i2c-gpio.h>
9#include <linux/io.h> 10#include <linux/io.h>
@@ -79,19 +80,19 @@ static u8 control_value;
79 80
80static void set_scl(u8 value) 81static void set_scl(u8 value)
81{ 82{
82 gpio_line_set(GPIO_SCL, !!value); 83 gpio_set_value(GPIO_SCL, !!value);
83 udelay(3); 84 udelay(3);
84} 85}
85 86
86static void set_sda(u8 value) 87static void set_sda(u8 value)
87{ 88{
88 gpio_line_set(GPIO_SDA, !!value); 89 gpio_set_value(GPIO_SDA, !!value);
89 udelay(3); 90 udelay(3);
90} 91}
91 92
92static void set_str(u8 value) 93static void set_str(u8 value)
93{ 94{
94 gpio_line_set(GPIO_STR, !!value); 95 gpio_set_value(GPIO_STR, !!value);
95 udelay(3); 96 udelay(3);
96} 97}
97 98
@@ -108,8 +109,8 @@ static void output_control(void)
108{ 109{
109 int i; 110 int i;
110 111
111 gpio_line_config(GPIO_SCL, IXP4XX_GPIO_OUT); 112 gpio_direction_output(GPIO_SCL, 1);
112 gpio_line_config(GPIO_SDA, IXP4XX_GPIO_OUT); 113 gpio_direction_output(GPIO_SDA, 1);
113 114
114 for (i = 0; i < 8; i++) { 115 for (i = 0; i < 8; i++) {
115 set_scl(0); 116 set_scl(0);
@@ -151,8 +152,8 @@ static int hss_set_clock(int port, unsigned int clock_type)
151 152
152static irqreturn_t hss_dcd_irq(int irq, void *pdev) 153static irqreturn_t hss_dcd_irq(int irq, void *pdev)
153{ 154{
154 int i, port = (irq == IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N)); 155 int port = (irq == IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N));
155 gpio_line_get(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N, &i); 156 int i = gpio_get_value(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N);
156 set_carrier_cb_tab[port](pdev, !i); 157 set_carrier_cb_tab[port](pdev, !i);
157 return IRQ_HANDLED; 158 return IRQ_HANDLED;
158} 159}
@@ -168,7 +169,7 @@ static int hss_open(int port, void *pdev,
168 else 169 else
169 irq = IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N); 170 irq = IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N);
170 171
171 gpio_line_get(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N, &i); 172 i = gpio_get_value(port ? GPIO_HSS1_DCD_N : GPIO_HSS0_DCD_N);
172 set_carrier_cb(pdev, !i); 173 set_carrier_cb(pdev, !i);
173 174
174 set_carrier_cb_tab[!!port] = set_carrier_cb; 175 set_carrier_cb_tab[!!port] = set_carrier_cb;
@@ -181,7 +182,7 @@ static int hss_open(int port, void *pdev,
181 182
182 set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 0); 183 set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 0);
183 output_control(); 184 output_control();
184 gpio_line_set(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 0); 185 gpio_set_value(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 0);
185 return 0; 186 return 0;
186} 187}
187 188
@@ -193,7 +194,7 @@ static void hss_close(int port, void *pdev)
193 194
194 set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 1); 195 set_control(port ? CONTROL_HSS1_DTR_N : CONTROL_HSS0_DTR_N, 1);
195 output_control(); 196 output_control();
196 gpio_line_set(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 1); 197 gpio_set_value(port ? GPIO_HSS1_RTS_N : GPIO_HSS0_RTS_N, 1);
197} 198}
198 199
199 200
@@ -413,13 +414,21 @@ static void __init gmlr_init(void)
413 if (hw_bits & CFG_HW_HAS_EEPROM) 414 if (hw_bits & CFG_HW_HAS_EEPROM)
414 device_tab[devices++] = &device_i2c; /* max index 6 */ 415 device_tab[devices++] = &device_i2c; /* max index 6 */
415 416
416 gpio_line_config(GPIO_SCL, IXP4XX_GPIO_OUT); 417 gpio_request(GPIO_SCL, "SCL/clock");
417 gpio_line_config(GPIO_SDA, IXP4XX_GPIO_OUT); 418 gpio_request(GPIO_SDA, "SDA/data");
418 gpio_line_config(GPIO_STR, IXP4XX_GPIO_OUT); 419 gpio_request(GPIO_STR, "strobe");
419 gpio_line_config(GPIO_HSS0_RTS_N, IXP4XX_GPIO_OUT); 420 gpio_request(GPIO_HSS0_RTS_N, "HSS0 RTS");
420 gpio_line_config(GPIO_HSS1_RTS_N, IXP4XX_GPIO_OUT); 421 gpio_request(GPIO_HSS1_RTS_N, "HSS1 RTS");
421 gpio_line_config(GPIO_HSS0_DCD_N, IXP4XX_GPIO_IN); 422 gpio_request(GPIO_HSS0_DCD_N, "HSS0 DCD");
422 gpio_line_config(GPIO_HSS1_DCD_N, IXP4XX_GPIO_IN); 423 gpio_request(GPIO_HSS1_DCD_N, "HSS1 DCD");
424
425 gpio_direction_output(GPIO_SCL, 1);
426 gpio_direction_output(GPIO_SDA, 1);
427 gpio_direction_output(GPIO_STR, 0);
428 gpio_direction_output(GPIO_HSS0_RTS_N, 1);
429 gpio_direction_output(GPIO_HSS1_RTS_N, 1);
430 gpio_direction_input(GPIO_HSS0_DCD_N);
431 gpio_direction_input(GPIO_HSS1_DCD_N);
423 irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS0_DCD_N), IRQ_TYPE_EDGE_BOTH); 432 irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS0_DCD_N), IRQ_TYPE_EDGE_BOTH);
424 irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N), IRQ_TYPE_EDGE_BOTH); 433 irq_set_irq_type(IXP4XX_GPIO_IRQ(GPIO_HSS1_DCD_N), IRQ_TYPE_EDGE_BOTH);
425 434
diff --git a/arch/arm/mach-ixp4xx/include/mach/io.h b/arch/arm/mach-ixp4xx/include/mach/io.h
index 5cf30d1b78d2..559c69a47731 100644
--- a/arch/arm/mach-ixp4xx/include/mach/io.h
+++ b/arch/arm/mach-ixp4xx/include/mach/io.h
@@ -48,9 +48,10 @@ extern int ixp4xx_pci_write(u32 addr, u32 cmd, u32 data);
48 * fallback to the default. 48 * fallback to the default.
49 */ 49 */
50 50
51extern unsigned long pcibios_min_mem;
51static inline int is_pci_memory(u32 addr) 52static inline int is_pci_memory(u32 addr)
52{ 53{
53 return (addr >= PCIBIOS_MIN_MEM) && (addr <= 0x4FFFFFFF); 54 return (addr >= pcibios_min_mem) && (addr <= 0x4FFFFFFF);
54} 55}
55 56
56#define writeb(v, p) __indirect_writeb(v, p) 57#define writeb(v, p) __indirect_writeb(v, p)
diff --git a/arch/arm/mach-ixp4xx/omixp-setup.c b/arch/arm/mach-ixp4xx/omixp-setup.c
index 75ef03dc9964..2d494b454376 100644
--- a/arch/arm/mach-ixp4xx/omixp-setup.c
+++ b/arch/arm/mach-ixp4xx/omixp-setup.c
@@ -17,9 +17,7 @@
17#include <linux/serial_8250.h> 17#include <linux/serial_8250.h>
18#include <linux/mtd/mtd.h> 18#include <linux/mtd/mtd.h>
19#include <linux/mtd/partitions.h> 19#include <linux/mtd/partitions.h>
20#ifdef CONFIG_LEDS_CLASS
21#include <linux/leds.h> 20#include <linux/leds.h>
22#endif
23 21
24#include <asm/setup.h> 22#include <asm/setup.h>
25#include <asm/memory.h> 23#include <asm/memory.h>
diff --git a/arch/arm/mach-ks8695/board-og.c b/arch/arm/mach-ks8695/board-og.c
index 002bc619bb68..f2658168eeff 100644
--- a/arch/arm/mach-ks8695/board-og.c
+++ b/arch/arm/mach-ks8695/board-og.c
@@ -44,7 +44,8 @@ static void __init og_register_pci(void)
44 if (machine_is_im4004()) 44 if (machine_is_im4004())
45 ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_LOW); 45 ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_LOW);
46 46
47 ks8695_init_pci(&og_pci); 47 if (IS_ENABLED(CONFIG_PCI))
48 ks8695_init_pci(&og_pci);
48} 49}
49 50
50/* 51/*
diff --git a/arch/arm/mach-lpc32xx/common.c b/arch/arm/mach-lpc32xx/common.c
index d7aa54c25c59..de03620d7fa7 100644
--- a/arch/arm/mach-lpc32xx/common.c
+++ b/arch/arm/mach-lpc32xx/common.c
@@ -99,6 +99,7 @@ u32 lpc32xx_return_iram_size(void)
99 99
100 return iram_size; 100 return iram_size;
101} 101}
102EXPORT_SYMBOL_GPL(lpc32xx_return_iram_size);
102 103
103/* 104/*
104 * Computes PLL rate from PLL register and input clock 105 * Computes PLL rate from PLL register and input clock
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index 0c002099c3a3..7e0248582efd 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -231,7 +231,7 @@ static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
231 .debounce_interval = 30, 231 .debounce_interval = 30,
232}; 232};
233 233
234#if defined(CONFIG_USB_EHCI_MV) 234#if IS_ENABLED(CONFIG_USB_EHCI_MV)
235static struct mv_usb_platform_data pxa168_sph_pdata = { 235static struct mv_usb_platform_data pxa168_sph_pdata = {
236 .mode = MV_USB_MODE_HOST, 236 .mode = MV_USB_MODE_HOST,
237 .phy_init = pxa_usb_phy_init, 237 .phy_init = pxa_usb_phy_init,
@@ -258,7 +258,7 @@ static void __init common_init(void)
258 /* off-chip devices */ 258 /* off-chip devices */
259 platform_device_register(&smc91x_device); 259 platform_device_register(&smc91x_device);
260 260
261#if defined(CONFIG_USB_EHCI_MV) 261#if IS_ENABLED(CONFIG_USB_EHCI_MV)
262 pxa168_add_usb_host(&pxa168_sph_pdata); 262 pxa168_add_usb_host(&pxa168_sph_pdata);
263#endif 263#endif
264} 264}
diff --git a/arch/arm/mach-mmp/devices.c b/arch/arm/mach-mmp/devices.c
index dd2d8b103cc8..2bcb766af05d 100644
--- a/arch/arm/mach-mmp/devices.c
+++ b/arch/arm/mach-mmp/devices.c
@@ -72,7 +72,7 @@ int __init pxa_register_device(struct pxa_device_desc *desc,
72 return platform_device_add(pdev); 72 return platform_device_add(pdev);
73} 73}
74 74
75#if defined(CONFIG_USB) || defined(CONFIG_USB_GADGET) 75#if IS_ENABLED(CONFIG_USB) || IS_ENABLED(CONFIG_USB_GADGET)
76 76
77/***************************************************************************** 77/*****************************************************************************
78 * The registers read/write routines 78 * The registers read/write routines
@@ -112,9 +112,9 @@ static void u2o_write(void __iomem *base, unsigned int offset,
112 readl_relaxed(base + offset); 112 readl_relaxed(base + offset);
113} 113}
114 114
115#if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV) 115#if IS_ENABLED(CONFIG_USB_MV_UDC) || IS_ENABLED(CONFIG_USB_EHCI_MV)
116 116
117#if defined(CONFIG_CPU_PXA910) || defined(CONFIG_CPU_PXA168) 117#if IS_ENABLED(CONFIG_CPU_PXA910) || IS_ENABLED(CONFIG_CPU_PXA168)
118 118
119static DEFINE_MUTEX(phy_lock); 119static DEFINE_MUTEX(phy_lock);
120static int phy_init_cnt; 120static int phy_init_cnt;
@@ -238,10 +238,10 @@ void pxa_usb_phy_deinit(void __iomem *phy_reg)
238#endif 238#endif
239#endif 239#endif
240 240
241#ifdef CONFIG_USB_SUPPORT 241#if IS_ENABLED(CONFIG_USB_SUPPORT)
242static u64 usb_dma_mask = ~(u32)0; 242static u64 usb_dma_mask = ~(u32)0;
243 243
244#ifdef CONFIG_USB_MV_UDC 244#if IS_ENABLED(CONFIG_USB_MV_UDC)
245struct resource pxa168_u2o_resources[] = { 245struct resource pxa168_u2o_resources[] = {
246 /* regbase */ 246 /* regbase */
247 [0] = { 247 [0] = {
@@ -276,7 +276,7 @@ struct platform_device pxa168_device_u2o = {
276}; 276};
277#endif /* CONFIG_USB_MV_UDC */ 277#endif /* CONFIG_USB_MV_UDC */
278 278
279#ifdef CONFIG_USB_EHCI_MV_U2O 279#if IS_ENABLED(CONFIG_USB_EHCI_MV_U2O)
280struct resource pxa168_u2oehci_resources[] = { 280struct resource pxa168_u2oehci_resources[] = {
281 /* regbase */ 281 /* regbase */
282 [0] = { 282 [0] = {
@@ -312,7 +312,7 @@ struct platform_device pxa168_device_u2oehci = {
312}; 312};
313#endif 313#endif
314 314
315#if defined(CONFIG_USB_MV_OTG) 315#if IS_ENABLED(CONFIG_USB_MV_OTG)
316struct resource pxa168_u2ootg_resources[] = { 316struct resource pxa168_u2ootg_resources[] = {
317 /* regbase */ 317 /* regbase */
318 [0] = { 318 [0] = {
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index cfadd974f5ce..ac4af81de3ea 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -164,8 +164,8 @@ static struct i2c_board_info ttc_dkb_i2c_info[] = {
164 }, 164 },
165}; 165};
166 166
167#ifdef CONFIG_USB_SUPPORT 167#if IS_ENABLED(CONFIG_USB_SUPPORT)
168#if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV_U2O) 168#if IS_ENABLED(CONFIG_USB_MV_UDC) || IS_ENABLED(CONFIG_USB_EHCI_MV_U2O)
169 169
170static struct mv_usb_platform_data ttc_usb_pdata = { 170static struct mv_usb_platform_data ttc_usb_pdata = {
171 .vbus = NULL, 171 .vbus = NULL,
@@ -178,14 +178,14 @@ static struct mv_usb_platform_data ttc_usb_pdata = {
178#endif 178#endif
179#endif 179#endif
180 180
181#ifdef CONFIG_MTD_NAND_PXA3xx 181#if IS_ENABLED(CONFIG_MTD_NAND_PXA3xx)
182static struct pxa3xx_nand_platform_data dkb_nand_info = { 182static struct pxa3xx_nand_platform_data dkb_nand_info = {
183 .enable_arbiter = 1, 183 .enable_arbiter = 1,
184 .num_cs = 1, 184 .num_cs = 1,
185}; 185};
186#endif 186#endif
187 187
188#ifdef CONFIG_MMP_DISP 188#if IS_ENABLED(CONFIG_MMP_DISP)
189/* path config */ 189/* path config */
190#define CFG_IOPADMODE(iopad) (iopad) /* 0x0 ~ 0xd */ 190#define CFG_IOPADMODE(iopad) (iopad) /* 0x0 ~ 0xd */
191#define SCLK_SOURCE_SELECT(x) (x << 30) /* 0x0 ~ 0x3 */ 191#define SCLK_SOURCE_SELECT(x) (x << 30) /* 0x0 ~ 0x3 */
@@ -275,7 +275,7 @@ static void __init ttc_dkb_init(void)
275 275
276 /* on-chip devices */ 276 /* on-chip devices */
277 pxa910_add_uart(1); 277 pxa910_add_uart(1);
278#ifdef CONFIG_MTD_NAND_PXA3xx 278#if IS_ENABLED(CONFIG_MTD_NAND_PXA3xx)
279 pxa910_add_nand(&dkb_nand_info); 279 pxa910_add_nand(&dkb_nand_info);
280#endif 280#endif
281 281
@@ -285,22 +285,22 @@ static void __init ttc_dkb_init(void)
285 sizeof(struct pxa_gpio_platform_data)); 285 sizeof(struct pxa_gpio_platform_data));
286 platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices)); 286 platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices));
287 287
288#ifdef CONFIG_USB_MV_UDC 288#if IS_ENABLED(CONFIG_USB_MV_UDC)
289 pxa168_device_u2o.dev.platform_data = &ttc_usb_pdata; 289 pxa168_device_u2o.dev.platform_data = &ttc_usb_pdata;
290 platform_device_register(&pxa168_device_u2o); 290 platform_device_register(&pxa168_device_u2o);
291#endif 291#endif
292 292
293#ifdef CONFIG_USB_EHCI_MV_U2O 293#if IS_ENABLED(CONFIG_USB_EHCI_MV_U2O)
294 pxa168_device_u2oehci.dev.platform_data = &ttc_usb_pdata; 294 pxa168_device_u2oehci.dev.platform_data = &ttc_usb_pdata;
295 platform_device_register(&pxa168_device_u2oehci); 295 platform_device_register(&pxa168_device_u2oehci);
296#endif 296#endif
297 297
298#ifdef CONFIG_USB_MV_OTG 298#if IS_ENABLED(CONFIG_USB_MV_OTG)
299 pxa168_device_u2ootg.dev.platform_data = &ttc_usb_pdata; 299 pxa168_device_u2ootg.dev.platform_data = &ttc_usb_pdata;
300 platform_device_register(&pxa168_device_u2ootg); 300 platform_device_register(&pxa168_device_u2ootg);
301#endif 301#endif
302 302
303#ifdef CONFIG_MMP_DISP 303#if IS_ENABLED(CONFIG_MMP_DISP)
304 add_disp(); 304 add_disp();
305#endif 305#endif
306} 306}
diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig
index 3795ae28a613..e9b45bb58263 100644
--- a/arch/arm/mach-moxart/Kconfig
+++ b/arch/arm/mach-moxart/Kconfig
@@ -1,5 +1,5 @@
1config ARCH_MOXART 1config ARCH_MOXART
2 bool "MOXA ART SoC" if ARCH_MULTI_V4T 2 bool "MOXA ART SoC" if ARCH_MULTI_V4
3 select CPU_FA526 3 select CPU_FA526
4 select ARM_DMA_MEM_BUFFERABLE 4 select ARM_DMA_MEM_BUFFERABLE
5 select USE_OF 5 select USE_OF
diff --git a/arch/arm/mach-msm/dma.c b/arch/arm/mach-msm/dma.c
index f8f6adfa07c6..fb9762464718 100644
--- a/arch/arm/mach-msm/dma.c
+++ b/arch/arm/mach-msm/dma.c
@@ -18,6 +18,7 @@
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/completion.h> 20#include <linux/completion.h>
21#include <linux/module.h>
21#include <mach/dma.h> 22#include <mach/dma.h>
22#include <mach/msm_iomap.h> 23#include <mach/msm_iomap.h>
23 24
@@ -77,6 +78,7 @@ void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd, int graceful)
77{ 78{
78 writel((graceful << 31), DMOV_FLUSH0(id)); 79 writel((graceful << 31), DMOV_FLUSH0(id));
79} 80}
81EXPORT_SYMBOL_GPL(msm_dmov_stop_cmd);
80 82
81void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd) 83void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
82{ 84{
@@ -115,6 +117,7 @@ void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
115 } 117 }
116 spin_unlock_irqrestore(&msm_dmov_lock, irq_flags); 118 spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
117} 119}
120EXPORT_SYMBOL_GPL(msm_dmov_enqueue_cmd);
118 121
119struct msm_dmov_exec_cmdptr_cmd { 122struct msm_dmov_exec_cmdptr_cmd {
120 struct msm_dmov_cmd dmov_cmd; 123 struct msm_dmov_cmd dmov_cmd;
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
index adc8971c7266..34e09474636d 100644
--- a/arch/arm/mach-msm/io.c
+++ b/arch/arm/mach-msm/io.c
@@ -78,8 +78,10 @@ void __init msm_map_common_io(void)
78 asm("mcr p15, 0, %0, c15, c2, 4" : : "r" (0)); 78 asm("mcr p15, 0, %0, c15, c2, 4" : : "r" (0));
79#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \ 79#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
80 defined(CONFIG_DEBUG_MSM_UART3) 80 defined(CONFIG_DEBUG_MSM_UART3)
81#ifdef CONFIG_MMU
81 debug_ll_addr(&msm_io_desc[size - 1].pfn, 82 debug_ll_addr(&msm_io_desc[size - 1].pfn,
82 &msm_io_desc[size - 1].virtual); 83 &msm_io_desc[size - 1].virtual);
84#endif
83 msm_io_desc[size - 1].pfn = __phys_to_pfn(msm_io_desc[size - 1].pfn); 85 msm_io_desc[size - 1].pfn = __phys_to_pfn(msm_io_desc[size - 1].pfn);
84#endif 86#endif
85 iotable_init(msm_io_desc, size); 87 iotable_init(msm_io_desc, size);
diff --git a/arch/arm/mach-mvebu/armada-370-xp.c b/arch/arm/mach-mvebu/armada-370-xp.c
index f6c9d1d85c14..5b793ebb0a24 100644
--- a/arch/arm/mach-mvebu/armada-370-xp.c
+++ b/arch/arm/mach-mvebu/armada-370-xp.c
@@ -21,6 +21,7 @@
21#include <linux/clocksource.h> 21#include <linux/clocksource.h>
22#include <linux/dma-mapping.h> 22#include <linux/dma-mapping.h>
23#include <linux/mbus.h> 23#include <linux/mbus.h>
24#include <linux/signal.h>
24#include <linux/slab.h> 25#include <linux/slab.h>
25#include <asm/hardware/cache-l2x0.h> 26#include <asm/hardware/cache-l2x0.h>
26#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-nspire/nspire.c b/arch/arm/mach-nspire/nspire.c
index 4b2ed2e8352f..3d24ebf12095 100644
--- a/arch/arm/mach-nspire/nspire.c
+++ b/arch/arm/mach-nspire/nspire.c
@@ -63,7 +63,7 @@ static void __init nspire_init(void)
63 nspire_auxdata, NULL); 63 nspire_auxdata, NULL);
64} 64}
65 65
66static void nspire_restart(char mode, const char *cmd) 66static void nspire_restart(enum reboot_mode mode, const char *cmd)
67{ 67{
68 void __iomem *base = ioremap(NSPIRE_MISC_PHYS_BASE, SZ_4K); 68 void __iomem *base = ioremap(NSPIRE_MISC_PHYS_BASE, SZ_4K);
69 if (!base) 69 if (!base)
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index fd90cafc2e36..65d2acb31498 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -318,6 +318,9 @@ static void __init h2_init_smc91x(void)
318 318
319static int tps_setup(struct i2c_client *client, void *context) 319static int tps_setup(struct i2c_client *client, void *context)
320{ 320{
321 if (!IS_BUILTIN(CONFIG_TPS65010))
322 return -ENOSYS;
323
321 tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V | 324 tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V |
322 TPS_LDO1_ENABLE | TPS_VLDO1_3_0V); 325 TPS_LDO1_ENABLE | TPS_VLDO1_3_0V);
323 326
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index d68909b095f1..3a0262156e93 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -191,6 +191,9 @@ static struct platform_device osk5912_tps_leds = {
191 191
192static int osk_tps_setup(struct i2c_client *client, void *context) 192static int osk_tps_setup(struct i2c_client *client, void *context)
193{ 193{
194 if (!IS_BUILTIN(CONFIG_TPS65010))
195 return -ENOSYS;
196
194 /* Set GPIO 1 HIGH to disable VBUS power supply; 197 /* Set GPIO 1 HIGH to disable VBUS power supply;
195 * OHCI driver powers it up/down as needed. 198 * OHCI driver powers it up/down as needed.
196 */ 199 */
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index 40a1ae319610..dbee729e3b6d 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -71,7 +71,11 @@ static unsigned int mpui7xx_sleep_save[MPUI7XX_SLEEP_SAVE_SIZE];
71static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE]; 71static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE];
72static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE]; 72static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE];
73 73
74#ifdef CONFIG_OMAP_32K_TIMER 74#ifndef CONFIG_OMAP_32K_TIMER
75
76static unsigned short enable_dyn_sleep = 0;
77
78#else
75 79
76static unsigned short enable_dyn_sleep = 1; 80static unsigned short enable_dyn_sleep = 1;
77 81
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index e022a869bff2..6037a9a01ed5 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -222,6 +222,7 @@ void __init ti81xx_init_irq(void)
222static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) 222static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs)
223{ 223{
224 u32 irqnr; 224 u32 irqnr;
225 int handled_irq = 0;
225 226
226 do { 227 do {
227 irqnr = readl_relaxed(base_addr + 0x98); 228 irqnr = readl_relaxed(base_addr + 0x98);
@@ -249,8 +250,15 @@ out:
249 if (irqnr) { 250 if (irqnr) {
250 irqnr = irq_find_mapping(domain, irqnr); 251 irqnr = irq_find_mapping(domain, irqnr);
251 handle_IRQ(irqnr, regs); 252 handle_IRQ(irqnr, regs);
253 handled_irq = 1;
252 } 254 }
253 } while (irqnr); 255 } while (irqnr);
256
257 /* If an irq is masked or deasserted while active, we will
258 * keep ending up here with no irq handled. So remove it from
259 * the INTC with an ack.*/
260 if (!handled_irq)
261 omap_ack_irq(NULL);
254} 262}
255 263
256asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) 264asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs)
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 3318cae96e7d..1219280bb976 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -2541,8 +2541,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2541 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 2541 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2542 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 2542 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2543 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 2543 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2544 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 2544 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2545 SIDLE_SMART_WKUP),
2546 .sysc_fields = &omap_hwmod_sysc_type1, 2545 .sysc_fields = &omap_hwmod_sysc_type1,
2547}; 2546};
2548 2547
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index 7bdd22afce69..d4d0fce325c7 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -103,7 +103,7 @@ static inline void enable_omap3630_toggle_l2_on_restore(void) { }
103 103
104#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0) 104#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0)
105 105
106#if defined(CONFIG_ARCH_OMAP4) 106#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4)
107extern u16 pm44xx_errata; 107extern u16 pm44xx_errata;
108#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id)) 108#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id))
109#else 109#else
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
index 2cb2f06c20f5..14f2cae4109c 100644
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -33,7 +33,6 @@ config MACH_KUROBOX_PRO
33config MACH_DNS323 33config MACH_DNS323
34 bool "D-Link DNS-323" 34 bool "D-Link DNS-323"
35 select I2C_BOARDINFO 35 select I2C_BOARDINFO
36 select PHYLIB
37 help 36 help
38 Say 'Y' here if you want your kernel to support the 37 Say 'Y' here if you want your kernel to support the
39 D-Link DNS-323 platform. 38 D-Link DNS-323 platform.
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index 70974732cbf0..56edeab17b68 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -642,6 +642,8 @@ static void __init dns323_init(void)
642 platform_device_register_simple("dns323c-fan", 0, NULL, 0); 642 platform_device_register_simple("dns323c-fan", 0, NULL, 0);
643 643
644 /* Register fixup for the PHY LEDs */ 644 /* Register fixup for the PHY LEDs */
645 if (!IS_BUILTIN(CONFIG_PHYLIB))
646 break;
645 phy_register_fixup_for_uid(MARVELL_PHY_ID_88E1118, 647 phy_register_fixup_for_uid(MARVELL_PHY_ID_88E1118,
646 MARVELL_PHY_ID_MASK, 648 MARVELL_PHY_ID_MASK,
647 dns323c_phy_fixup); 649 dns323c_phy_fixup);
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 96100dbf5a2e..a280cc42636b 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -53,12 +53,16 @@ config MACH_TAVOREVB
53 select CPU_PXA930 53 select CPU_PXA930
54 select CPU_PXA935 54 select CPU_PXA935
55 select PXA3xx 55 select PXA3xx
56 select FB
57 select FB_PXA
56 58
57config MACH_SAAR 59config MACH_SAAR
58 bool "PXA930 Handheld Platform (aka SAAR)" 60 bool "PXA930 Handheld Platform (aka SAAR)"
59 select CPU_PXA930 61 select CPU_PXA930
60 select CPU_PXA935 62 select CPU_PXA935
61 select PXA3xx 63 select PXA3xx
64 select FB
65 select FB_PXA
62 66
63comment "Third Party Dev Platforms (sorted by vendor name)" 67comment "Third Party Dev Platforms (sorted by vendor name)"
64 68
@@ -69,8 +73,7 @@ config ARCH_PXA_IDP
69config ARCH_VIPER 73config ARCH_VIPER
70 bool "Arcom/Eurotech VIPER SBC" 74 bool "Arcom/Eurotech VIPER SBC"
71 select ARCOM_PCMCIA 75 select ARCOM_PCMCIA
72 select HAVE_PWM 76 select I2C_GPIO if I2C=y
73 select I2C_GPIO
74 select ISA 77 select ISA
75 select PXA25x 78 select PXA25x
76 select PXA_HAVE_ISA_IRQS 79 select PXA_HAVE_ISA_IRQS
@@ -164,7 +167,6 @@ config MACH_XCEP
164 select MTD_CFI_INTELEXT 167 select MTD_CFI_INTELEXT
165 select MTD_PHYSMAP 168 select MTD_PHYSMAP
166 select PXA25x 169 select PXA25x
167 select SMC91X
168 help 170 help
169 PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash. 171 PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash.
170 Tuned for usage in Libera instruments for particle accelerators. 172 Tuned for usage in Libera instruments for particle accelerators.
@@ -181,6 +183,7 @@ config MACH_TRIZEPS4
181config MACH_TRIZEPS4WL 183config MACH_TRIZEPS4WL
182 bool "Keith und Koep Trizeps4-WL DIMM-Module" 184 bool "Keith und Koep Trizeps4-WL DIMM-Module"
183 depends on TRIZEPS_PXA 185 depends on TRIZEPS_PXA
186 select MACH_TRIZEPS4
184 select PXA27x 187 select PXA27x
185 select TRIZEPS_PCMCIA 188 select TRIZEPS_PCMCIA
186 189
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index 2f71b3fbd319..43596e0ed051 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -331,7 +331,6 @@ static struct pxa2xx_udc_mach_info balloon3_udc_info __initdata = {
331static void __init balloon3_udc_init(void) 331static void __init balloon3_udc_init(void)
332{ 332{
333 pxa_set_udc_info(&balloon3_udc_info); 333 pxa_set_udc_info(&balloon3_udc_info);
334 platform_device_register(&balloon3_gpio_vbus);
335} 334}
336#else 335#else
337static inline void balloon3_udc_init(void) {} 336static inline void balloon3_udc_init(void) {}
diff --git a/arch/arm/mach-pxa/colibri-evalboard.c b/arch/arm/mach-pxa/colibri-evalboard.c
index 8404b24240ea..638b0bb88426 100644
--- a/arch/arm/mach-pxa/colibri-evalboard.c
+++ b/arch/arm/mach-pxa/colibri-evalboard.c
@@ -20,6 +20,7 @@
20#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
21#include <linux/i2c.h> 21#include <linux/i2c.h>
22#include <linux/i2c/pxa-i2c.h> 22#include <linux/i2c/pxa-i2c.h>
23#include <asm/io.h>
23 24
24#include <mach/pxa27x.h> 25#include <mach/pxa27x.h>
25#include <mach/colibri.h> 26#include <mach/colibri.h>
diff --git a/arch/arm/mach-realview/include/mach/memory.h b/arch/arm/mach-realview/include/mach/memory.h
index 2022e092f0ca..db09170e3832 100644
--- a/arch/arm/mach-realview/include/mach/memory.h
+++ b/arch/arm/mach-realview/include/mach/memory.h
@@ -56,6 +56,8 @@
56#define PAGE_OFFSET1 (PAGE_OFFSET + 0x10000000) 56#define PAGE_OFFSET1 (PAGE_OFFSET + 0x10000000)
57#define PAGE_OFFSET2 (PAGE_OFFSET + 0x30000000) 57#define PAGE_OFFSET2 (PAGE_OFFSET + 0x30000000)
58 58
59#define PHYS_OFFSET PLAT_PHYS_OFFSET
60
59#define __phys_to_virt(phys) \ 61#define __phys_to_virt(phys) \
60 ((phys) >= 0x80000000 ? (phys) - 0x80000000 + PAGE_OFFSET2 : \ 62 ((phys) >= 0x80000000 ? (phys) - 0x80000000 + PAGE_OFFSET2 : \
61 (phys) >= 0x20000000 ? (phys) - 0x20000000 + PAGE_OFFSET1 : \ 63 (phys) >= 0x20000000 ? (phys) - 0x20000000 + PAGE_OFFSET1 : \
diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig
index d876431d64c0..f2727f2cc661 100644
--- a/arch/arm/mach-s3c24xx/Kconfig
+++ b/arch/arm/mach-s3c24xx/Kconfig
@@ -537,7 +537,7 @@ config MACH_AT2440EVB
537 537
538config MACH_MINI2440 538config MACH_MINI2440
539 bool "MINI2440 development board" 539 bool "MINI2440 development board"
540 select EEPROM_AT24 540 select EEPROM_AT24 if I2C
541 select LEDS_CLASS 541 select LEDS_CLASS
542 select LEDS_TRIGGERS 542 select LEDS_TRIGGERS
543 select LEDS_TRIGGER_BACKLIGHT 543 select LEDS_TRIGGER_BACKLIGHT
@@ -573,7 +573,7 @@ config MACH_OSIRIS
573config MACH_OSIRIS_DVS 573config MACH_OSIRIS_DVS
574 tristate "Simtec IM2440D20 (OSIRIS) Dynamic Voltage Scaling driver" 574 tristate "Simtec IM2440D20 (OSIRIS) Dynamic Voltage Scaling driver"
575 depends on MACH_OSIRIS 575 depends on MACH_OSIRIS
576 select TPS65010 576 depends on TPS65010
577 help 577 help
578 Say Y/M here if you want to have dynamic voltage scaling support 578 Say Y/M here if you want to have dynamic voltage scaling support
579 on the Simtec IM2440D20 (OSIRIS) module via the TPS65011. 579 on the Simtec IM2440D20 (OSIRIS) module via the TPS65011.
diff --git a/arch/arm/mach-s3c24xx/common.c b/arch/arm/mach-s3c24xx/common.c
index 4adaa4b43ffe..1d77d709ec22 100644
--- a/arch/arm/mach-s3c24xx/common.c
+++ b/arch/arm/mach-s3c24xx/common.c
@@ -484,7 +484,7 @@ struct platform_device s3c2440_device_dma = {
484}; 484};
485#endif 485#endif
486 486
487#if defined(CONFIG_CPUS_3C2443) || defined(CONFIG_CPU_S3C2416) 487#if defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2416)
488static struct resource s3c2443_dma_resource[] = { 488static struct resource s3c2443_dma_resource[] = {
489 [0] = DEFINE_RES_MEM(S3C24XX_PA_DMA, S3C24XX_SZ_DMA), 489 [0] = DEFINE_RES_MEM(S3C24XX_PA_DMA, S3C24XX_SZ_DMA),
490 [1] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA0), 490 [1] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA0),
diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index d9170e9f8ccd..ee7bb2905a99 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -196,7 +196,7 @@ static void gta02_charger_worker(struct work_struct *work)
196 * If the PCF50633 ADC is disabled we fallback to a 196 * If the PCF50633 ADC is disabled we fallback to a
197 * 100mA limit for safety. 197 * 100mA limit for safety.
198 */ 198 */
199 pcf50633_mbc_usb_curlim_set(pcf, 100); 199 pcf50633_mbc_usb_curlim_set(gta02_pcf, 100);
200#endif 200#endif
201} 201}
202 202
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index 64f04e6f9c31..3136d86b0d6e 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -86,8 +86,7 @@ config MACH_SMDK6400
86 bool "SMDK6400" 86 bool "SMDK6400"
87 select CPU_S3C6400 87 select CPU_S3C6400
88 select S3C64XX_SETUP_SDHCI 88 select S3C64XX_SETUP_SDHCI
89 select S3C_DEV_HSMMC 89 select S3C_DEV_HSMMC1
90 select S3C_DEV_NAND
91 help 90 help
92 Machine support for the Samsung SMDK6400 91 Machine support for the Samsung SMDK6400
93 92
diff --git a/arch/arm/mach-s3c64xx/irq-pm.c b/arch/arm/mach-s3c64xx/irq-pm.c
index 1649c0d1c1b8..ddf65583a5d8 100644
--- a/arch/arm/mach-s3c64xx/irq-pm.c
+++ b/arch/arm/mach-s3c64xx/irq-pm.c
@@ -55,7 +55,13 @@ static struct irq_grp_save {
55 u32 mask; 55 u32 mask;
56} eint_grp_save[5]; 56} eint_grp_save[5];
57 57
58static u32 irq_uart_mask[CONFIG_SERIAL_SAMSUNG_UARTS]; 58#ifndef CONFIG_SERIAL_SAMSUNG_UARTS
59#define SERIAL_SAMSUNG_UARTS 0
60#else
61#define SERIAL_SAMSUNG_UARTS CONFIG_SERIAL_SAMSUNG_UARTS
62#endif
63
64static u32 irq_uart_mask[SERIAL_SAMSUNG_UARTS];
59 65
60static int s3c64xx_irq_pm_suspend(void) 66static int s3c64xx_irq_pm_suspend(void)
61{ 67{
@@ -66,7 +72,7 @@ static int s3c64xx_irq_pm_suspend(void)
66 72
67 s3c_pm_do_save(irq_save, ARRAY_SIZE(irq_save)); 73 s3c_pm_do_save(irq_save, ARRAY_SIZE(irq_save));
68 74
69 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) 75 for (i = 0; i < SERIAL_SAMSUNG_UARTS; i++)
70 irq_uart_mask[i] = __raw_readl(S3C_VA_UARTx(i) + S3C64XX_UINTM); 76 irq_uart_mask[i] = __raw_readl(S3C_VA_UARTx(i) + S3C64XX_UINTM);
71 77
72 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) { 78 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) {
@@ -87,7 +93,7 @@ static void s3c64xx_irq_pm_resume(void)
87 93
88 s3c_pm_do_restore(irq_save, ARRAY_SIZE(irq_save)); 94 s3c_pm_do_restore(irq_save, ARRAY_SIZE(irq_save));
89 95
90 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) 96 for (i = 0; i < SERIAL_SAMSUNG_UARTS; i++)
91 __raw_writel(irq_uart_mask[i], S3C_VA_UARTx(i) + S3C64XX_UINTM); 97 __raw_writel(irq_uart_mask[i], S3C_VA_UARTx(i) + S3C64XX_UINTM);
92 98
93 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) { 99 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) {
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
index 7ccfef227c77..9c00d83f7151 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
@@ -401,4 +401,4 @@ static int __init wlf_gf_module_register(void)
401{ 401{
402 return i2c_add_driver(&wlf_gf_module_driver); 402 return i2c_add_driver(&wlf_gf_module_driver);
403} 403}
404module_init(wlf_gf_module_register); 404device_initcall(wlf_gf_module_register);
diff --git a/arch/arm/mach-s5p64x0/common.c b/arch/arm/mach-s5p64x0/common.c
index 42e14f2e7ca7..f07edc304efb 100644
--- a/arch/arm/mach-s5p64x0/common.c
+++ b/arch/arm/mach-s5p64x0/common.c
@@ -205,6 +205,7 @@ void __init s5p64x0_init_io(struct map_desc *mach_desc, int size)
205 samsung_pwm_set_platdata(&s5p64x0_pwm_variant); 205 samsung_pwm_set_platdata(&s5p64x0_pwm_variant);
206} 206}
207 207
208#ifdef CONFIG_CPU_S5P6440
208void __init s5p6440_map_io(void) 209void __init s5p6440_map_io(void)
209{ 210{
210 /* initialize any device information early */ 211 /* initialize any device information early */
@@ -218,7 +219,9 @@ void __init s5p6440_map_io(void)
218 219
219 iotable_init(s5p6440_iodesc, ARRAY_SIZE(s5p6440_iodesc)); 220 iotable_init(s5p6440_iodesc, ARRAY_SIZE(s5p6440_iodesc));
220} 221}
222#endif
221 223
224#ifdef CONFIG_CPU_S5P6450
222void __init s5p6450_map_io(void) 225void __init s5p6450_map_io(void)
223{ 226{
224 /* initialize any device information early */ 227 /* initialize any device information early */
@@ -232,13 +235,14 @@ void __init s5p6450_map_io(void)
232 235
233 iotable_init(s5p6450_iodesc, ARRAY_SIZE(s5p6450_iodesc)); 236 iotable_init(s5p6450_iodesc, ARRAY_SIZE(s5p6450_iodesc));
234} 237}
238#endif
235 239
236/* 240/*
237 * s5p64x0_init_clocks 241 * s5p64x0_init_clocks
238 * 242 *
239 * register and setup the CPU clocks 243 * register and setup the CPU clocks
240 */ 244 */
241 245#ifdef CONFIG_CPU_S5P6440
242void __init s5p6440_init_clocks(int xtal) 246void __init s5p6440_init_clocks(int xtal)
243{ 247{
244 printk(KERN_DEBUG "%s: initializing clocks\n", __func__); 248 printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
@@ -248,7 +252,9 @@ void __init s5p6440_init_clocks(int xtal)
248 s5p6440_register_clocks(); 252 s5p6440_register_clocks();
249 s5p6440_setup_clocks(); 253 s5p6440_setup_clocks();
250} 254}
255#endif
251 256
257#ifdef CONFIG_CPU_S5P6450
252void __init s5p6450_init_clocks(int xtal) 258void __init s5p6450_init_clocks(int xtal)
253{ 259{
254 printk(KERN_DEBUG "%s: initializing clocks\n", __func__); 260 printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
@@ -258,13 +264,14 @@ void __init s5p6450_init_clocks(int xtal)
258 s5p6450_register_clocks(); 264 s5p6450_register_clocks();
259 s5p6450_setup_clocks(); 265 s5p6450_setup_clocks();
260} 266}
267#endif
261 268
262/* 269/*
263 * s5p64x0_init_irq 270 * s5p64x0_init_irq
264 * 271 *
265 * register the CPU interrupts 272 * register the CPU interrupts
266 */ 273 */
267 274#ifdef CONFIG_CPU_S5P6440
268void __init s5p6440_init_irq(void) 275void __init s5p6440_init_irq(void)
269{ 276{
270 /* S5P6440 supports 2 VIC */ 277 /* S5P6440 supports 2 VIC */
@@ -279,7 +286,9 @@ void __init s5p6440_init_irq(void)
279 286
280 s5p_init_irq(vic, ARRAY_SIZE(vic)); 287 s5p_init_irq(vic, ARRAY_SIZE(vic));
281} 288}
289#endif
282 290
291#ifdef CONFIG_CPU_S5P6450
283void __init s5p6450_init_irq(void) 292void __init s5p6450_init_irq(void)
284{ 293{
285 /* S5P6450 supports only 2 VIC */ 294 /* S5P6450 supports only 2 VIC */
@@ -294,6 +303,7 @@ void __init s5p6450_init_irq(void)
294 303
295 s5p_init_irq(vic, ARRAY_SIZE(vic)); 304 s5p_init_irq(vic, ARRAY_SIZE(vic));
296} 305}
306#endif
297 307
298struct bus_type s5p64x0_subsys = { 308struct bus_type s5p64x0_subsys = {
299 .name = "s5p64x0-core", 309 .name = "s5p64x0-core",
@@ -321,6 +331,7 @@ int __init s5p64x0_init(void)
321} 331}
322 332
323/* uart registration process */ 333/* uart registration process */
334#ifdef CONFIG_CPU_S5P6440
324void __init s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no) 335void __init s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no)
325{ 336{
326 int uart; 337 int uart;
@@ -332,11 +343,14 @@ void __init s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no)
332 343
333 s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no); 344 s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no);
334} 345}
346#endif
335 347
348#ifdef CONFIG_CPU_S5P6450
336void __init s5p6450_init_uarts(struct s3c2410_uartcfg *cfg, int no) 349void __init s5p6450_init_uarts(struct s3c2410_uartcfg *cfg, int no)
337{ 350{
338 s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no); 351 s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no);
339} 352}
353#endif
340 354
341#define eint_offset(irq) ((irq) - IRQ_EINT(0)) 355#define eint_offset(irq) ((irq) - IRQ_EINT(0))
342 356
diff --git a/arch/arm/mach-s5p64x0/common.h b/arch/arm/mach-s5p64x0/common.h
index f3a9b43cba4a..cbe7f3d731d0 100644
--- a/arch/arm/mach-s5p64x0/common.h
+++ b/arch/arm/mach-s5p64x0/common.h
@@ -25,10 +25,10 @@ void s5p6450_register_clocks(void);
25void s5p6450_setup_clocks(void); 25void s5p6450_setup_clocks(void);
26 26
27void s5p64x0_restart(enum reboot_mode mode, const char *cmd); 27void s5p64x0_restart(enum reboot_mode mode, const char *cmd);
28extern int s5p64x0_init(void);
28 29
29#ifdef CONFIG_CPU_S5P6440 30#ifdef CONFIG_CPU_S5P6440
30 31
31extern int s5p64x0_init(void);
32extern void s5p6440_map_io(void); 32extern void s5p6440_map_io(void);
33extern void s5p6440_init_clocks(int xtal); 33extern void s5p6440_init_clocks(int xtal);
34 34
@@ -38,12 +38,10 @@ extern void s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no);
38#define s5p6440_init_clocks NULL 38#define s5p6440_init_clocks NULL
39#define s5p6440_init_uarts NULL 39#define s5p6440_init_uarts NULL
40#define s5p6440_map_io NULL 40#define s5p6440_map_io NULL
41#define s5p64x0_init NULL
42#endif 41#endif
43 42
44#ifdef CONFIG_CPU_S5P6450 43#ifdef CONFIG_CPU_S5P6450
45 44
46extern int s5p64x0_init(void);
47extern void s5p6450_map_io(void); 45extern void s5p6450_map_io(void);
48extern void s5p6450_init_clocks(int xtal); 46extern void s5p6450_init_clocks(int xtal);
49 47
@@ -53,7 +51,6 @@ extern void s5p6450_init_uarts(struct s3c2410_uartcfg *cfg, int no);
53#define s5p6450_init_clocks NULL 51#define s5p6450_init_clocks NULL
54#define s5p6450_init_uarts NULL 52#define s5p6450_init_uarts NULL
55#define s5p6450_map_io NULL 53#define s5p6450_map_io NULL
56#define s5p64x0_init NULL
57#endif 54#endif
58 55
59#endif /* __ARCH_ARM_MACH_S5P64X0_COMMON_H */ 56#endif /* __ARCH_ARM_MACH_S5P64X0_COMMON_H */
diff --git a/arch/arm/mach-s5p64x0/irq-pm.c b/arch/arm/mach-s5p64x0/irq-pm.c
index 3e6f2456ee9d..d5f0fd66b635 100644
--- a/arch/arm/mach-s5p64x0/irq-pm.c
+++ b/arch/arm/mach-s5p64x0/irq-pm.c
@@ -34,7 +34,9 @@ static struct irq_grp_save {
34 u32 mask; 34 u32 mask;
35} eint_grp_save[4]; 35} eint_grp_save[4];
36 36
37#ifdef CONFIG_SERIAL_SAMSUNG
37static u32 irq_uart_mask[CONFIG_SERIAL_SAMSUNG_UARTS]; 38static u32 irq_uart_mask[CONFIG_SERIAL_SAMSUNG_UARTS];
39#endif
38 40
39static int s5p64x0_irq_pm_suspend(void) 41static int s5p64x0_irq_pm_suspend(void)
40{ 42{
@@ -45,8 +47,10 @@ static int s5p64x0_irq_pm_suspend(void)
45 47
46 s3c_pm_do_save(irq_save, ARRAY_SIZE(irq_save)); 48 s3c_pm_do_save(irq_save, ARRAY_SIZE(irq_save));
47 49
50#ifdef CONFIG_SERIAL_SAMSUNG
48 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) 51 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++)
49 irq_uart_mask[i] = __raw_readl(S3C_VA_UARTx(i) + S3C64XX_UINTM); 52 irq_uart_mask[i] = __raw_readl(S3C_VA_UARTx(i) + S3C64XX_UINTM);
53#endif
50 54
51 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) { 55 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) {
52 grp->con = __raw_readl(S5P64X0_EINT12CON + (i * 4)); 56 grp->con = __raw_readl(S5P64X0_EINT12CON + (i * 4));
@@ -66,8 +70,10 @@ static void s5p64x0_irq_pm_resume(void)
66 70
67 s3c_pm_do_restore(irq_save, ARRAY_SIZE(irq_save)); 71 s3c_pm_do_restore(irq_save, ARRAY_SIZE(irq_save));
68 72
73#ifdef CONFIG_SERIAL_SAMSUNG
69 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) 74 for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++)
70 __raw_writel(irq_uart_mask[i], S3C_VA_UARTx(i) + S3C64XX_UINTM); 75 __raw_writel(irq_uart_mask[i], S3C_VA_UARTx(i) + S3C64XX_UINTM);
76#endif
71 77
72 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) { 78 for (i = 0; i < ARRAY_SIZE(eint_grp_save); i++, grp++) {
73 __raw_writel(grp->con, S5P64X0_EINT12CON + (i * 4)); 79 __raw_writel(grp->con, S5P64X0_EINT12CON + (i * 4));
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index caaedafbbf5f..8c3abe521757 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -189,6 +189,7 @@ config MACH_TORBRECK
189 select S5PV210_SETUP_I2C1 189 select S5PV210_SETUP_I2C1
190 select S5PV210_SETUP_I2C2 190 select S5PV210_SETUP_I2C2
191 select S5PV210_SETUP_SDHCI 191 select S5PV210_SETUP_SDHCI
192 select SAMSUNG_DEV_IDE
192 help 193 help
193 Machine support for aESOP Torbreck 194 Machine support for aESOP Torbreck
194 195
diff --git a/arch/arm/mach-sunxi/Makefile b/arch/arm/mach-sunxi/Makefile
index d9397202d6ec..27b168f121a1 100644
--- a/arch/arm/mach-sunxi/Makefile
+++ b/arch/arm/mach-sunxi/Makefile
@@ -1,2 +1,2 @@
1obj-$(CONFIG_ARCH_SUNXI) += sunxi.o 1obj-$(CONFIG_ARCH_SUNXI) += sunxi.o
2obj-$(CONFIG_SMP) += platsmp.o headsmp.o 2obj-$(CONFIG_SMP) += platsmp.o
diff --git a/arch/arm/mach-sunxi/headsmp.S b/arch/arm/mach-sunxi/headsmp.S
deleted file mode 100644
index a10d494fb37b..000000000000
--- a/arch/arm/mach-sunxi/headsmp.S
+++ /dev/null
@@ -1,9 +0,0 @@
1#include <linux/linkage.h>
2#include <linux/init.h>
3
4 .section ".text.head", "ax"
5
6ENTRY(sun6i_secondary_startup)
7 msr cpsr_fsxc, #0xd3
8 b secondary_startup
9ENDPROC(sun6i_secondary_startup)
diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c
index 7b141d8342a1..0c7dbce033cc 100644
--- a/arch/arm/mach-sunxi/platsmp.c
+++ b/arch/arm/mach-sunxi/platsmp.c
@@ -82,7 +82,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu,
82 spin_lock(&cpu_lock); 82 spin_lock(&cpu_lock);
83 83
84 /* Set CPU boot address */ 84 /* Set CPU boot address */
85 writel(virt_to_phys(sun6i_secondary_startup), 85 writel(virt_to_phys(secondary_startup),
86 cpucfg_membase + CPUCFG_PRIVATE0_REG); 86 cpucfg_membase + CPUCFG_PRIVATE0_REG);
87 87
88 /* Assert the CPU core in reset */ 88 /* Assert the CPU core in reset */
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index ca8ecdee47d8..241622e2fea3 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -264,7 +264,7 @@ config CPU_ARM1026
264 264
265# SA110 265# SA110
266config CPU_SA110 266config CPU_SA110
267 bool "Support StrongARM(R) SA-110 processor" if ARCH_RPC 267 bool
268 select CPU_32v3 if ARCH_RPC 268 select CPU_32v3 if ARCH_RPC
269 select CPU_32v4 if !ARCH_RPC 269 select CPU_32v4 if !ARCH_RPC
270 select CPU_ABRT_EV4 270 select CPU_ABRT_EV4
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 58645a58d0d8..b57e922f1614 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -427,8 +427,7 @@ comment "Power management"
427 427
428config SAMSUNG_PM_DEBUG 428config SAMSUNG_PM_DEBUG
429 bool "S3C2410 PM Suspend debug" 429 bool "S3C2410 PM Suspend debug"
430 depends on PM 430 depends on PM && DEBUG_KERNEL && DEBUG_S3C_UART
431 select DEBUG_LL
432 help 431 help
433 Say Y here if you want verbose debugging from the PM Suspend and 432 Say Y here if you want verbose debugging from the PM Suspend and
434 Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt> 433 Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>
@@ -445,7 +444,8 @@ config S3C_PM_DEBUG_LED_SMDK
445 444
446config SAMSUNG_PM_CHECK 445config SAMSUNG_PM_CHECK
447 bool "S3C2410 PM Suspend Memory CRC" 446 bool "S3C2410 PM Suspend Memory CRC"
448 depends on PM && CRC32 447 depends on PM
448 select CRC32
449 help 449 help
450 Enable the PM code's memory area checksum over sleep. This option 450 Enable the PM code's memory area checksum over sleep. This option
451 will generate CRCs of all blocks of memory, and store them before 451 will generate CRCs of all blocks of memory, and store them before
diff --git a/arch/arm/plat-samsung/init.c b/arch/arm/plat-samsung/init.c
index aa9511b6914a..a30df396ca34 100644
--- a/arch/arm/plat-samsung/init.c
+++ b/arch/arm/plat-samsung/init.c
@@ -97,7 +97,9 @@ void __init s3c24xx_init_clocks(int xtal)
97#if IS_ENABLED(CONFIG_SAMSUNG_ATAGS) 97#if IS_ENABLED(CONFIG_SAMSUNG_ATAGS)
98static int nr_uarts __initdata = 0; 98static int nr_uarts __initdata = 0;
99 99
100#ifdef CONFIG_SERIAL_SAMSUNG_UARTS
100static struct s3c2410_uartcfg uart_cfgs[CONFIG_SERIAL_SAMSUNG_UARTS]; 101static struct s3c2410_uartcfg uart_cfgs[CONFIG_SERIAL_SAMSUNG_UARTS];
102#endif
101 103
102/* s3c24xx_init_uartdevs 104/* s3c24xx_init_uartdevs
103 * 105 *
@@ -112,6 +114,7 @@ void __init s3c24xx_init_uartdevs(char *name,
112 struct s3c24xx_uart_resources *res, 114 struct s3c24xx_uart_resources *res,
113 struct s3c2410_uartcfg *cfg, int no) 115 struct s3c2410_uartcfg *cfg, int no)
114{ 116{
117#ifdef CONFIG_SERIAL_SAMSUNG_UARTS
115 struct platform_device *platdev; 118 struct platform_device *platdev;
116 struct s3c2410_uartcfg *cfgptr = uart_cfgs; 119 struct s3c2410_uartcfg *cfgptr = uart_cfgs;
117 struct s3c24xx_uart_resources *resp; 120 struct s3c24xx_uart_resources *resp;
@@ -134,6 +137,7 @@ void __init s3c24xx_init_uartdevs(char *name,
134 } 137 }
135 138
136 nr_uarts = no; 139 nr_uarts = no;
140#endif
137} 141}
138 142
139void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no) 143void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
diff --git a/drivers/clk/ti/clk-44xx.c b/drivers/clk/ti/clk-44xx.c
index ae00218b5da3..02517a8206bd 100644
--- a/drivers/clk/ti/clk-44xx.c
+++ b/drivers/clk/ti/clk-44xx.c
@@ -222,7 +222,6 @@ static struct ti_dt_clk omap44xx_clks[] = {
222 DT_CLK(NULL, "auxclk5_src_ck", "auxclk5_src_ck"), 222 DT_CLK(NULL, "auxclk5_src_ck", "auxclk5_src_ck"),
223 DT_CLK(NULL, "auxclk5_ck", "auxclk5_ck"), 223 DT_CLK(NULL, "auxclk5_ck", "auxclk5_ck"),
224 DT_CLK(NULL, "auxclkreq5_ck", "auxclkreq5_ck"), 224 DT_CLK(NULL, "auxclkreq5_ck", "auxclkreq5_ck"),
225 DT_CLK("50000000.gpmc", "fck", "dummy_ck"),
226 DT_CLK("omap_i2c.1", "ick", "dummy_ck"), 225 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
227 DT_CLK("omap_i2c.2", "ick", "dummy_ck"), 226 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
228 DT_CLK("omap_i2c.3", "ick", "dummy_ck"), 227 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
diff --git a/drivers/clk/ti/clk-54xx.c b/drivers/clk/ti/clk-54xx.c
index 0ef9f581286b..08f3d1b915b3 100644
--- a/drivers/clk/ti/clk-54xx.c
+++ b/drivers/clk/ti/clk-54xx.c
@@ -182,7 +182,6 @@ static struct ti_dt_clk omap54xx_clks[] = {
182 DT_CLK(NULL, "auxclk3_src_ck", "auxclk3_src_ck"), 182 DT_CLK(NULL, "auxclk3_src_ck", "auxclk3_src_ck"),
183 DT_CLK(NULL, "auxclk3_ck", "auxclk3_ck"), 183 DT_CLK(NULL, "auxclk3_ck", "auxclk3_ck"),
184 DT_CLK(NULL, "auxclkreq3_ck", "auxclkreq3_ck"), 184 DT_CLK(NULL, "auxclkreq3_ck", "auxclkreq3_ck"),
185 DT_CLK(NULL, "gpmc_ck", "dummy_ck"),
186 DT_CLK("omap_i2c.1", "ick", "dummy_ck"), 185 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
187 DT_CLK("omap_i2c.2", "ick", "dummy_ck"), 186 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
188 DT_CLK("omap_i2c.3", "ick", "dummy_ck"), 187 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
index 9977653f2d63..f7e40734c819 100644
--- a/drivers/clk/ti/clk-7xx.c
+++ b/drivers/clk/ti/clk-7xx.c
@@ -262,7 +262,6 @@ static struct ti_dt_clk dra7xx_clks[] = {
262 DT_CLK(NULL, "vip1_gclk_mux", "vip1_gclk_mux"), 262 DT_CLK(NULL, "vip1_gclk_mux", "vip1_gclk_mux"),
263 DT_CLK(NULL, "vip2_gclk_mux", "vip2_gclk_mux"), 263 DT_CLK(NULL, "vip2_gclk_mux", "vip2_gclk_mux"),
264 DT_CLK(NULL, "vip3_gclk_mux", "vip3_gclk_mux"), 264 DT_CLK(NULL, "vip3_gclk_mux", "vip3_gclk_mux"),
265 DT_CLK(NULL, "gpmc_ck", "dummy_ck"),
266 DT_CLK("omap_i2c.1", "ick", "dummy_ck"), 265 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
267 DT_CLK("omap_i2c.2", "ick", "dummy_ck"), 266 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
268 DT_CLK("omap_i2c.3", "ick", "dummy_ck"), 267 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 531769b2433a..63922b9ba6b7 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -661,9 +661,9 @@ static void gic_raise_softirq(const struct cpumask *mask, unsigned int irq)
661 661
662 /* 662 /*
663 * Ensure that stores to Normal memory are visible to the 663 * Ensure that stores to Normal memory are visible to the
664 * other CPUs before issuing the IPI. 664 * other CPUs before they observe us issuing the IPI.
665 */ 665 */
666 dsb(); 666 dmb(ishst);
667 667
668 /* this always happens on GIC0 */ 668 /* this always happens on GIC0 */
669 writel_relaxed(map << 16 | irq, gic_data_dist_base(&gic_data[0]) + GIC_DIST_SOFTINT); 669 writel_relaxed(map << 16 | irq, gic_data_dist_base(&gic_data[0]) + GIC_DIST_SOFTINT);
diff --git a/include/linux/pxa2xx_ssp.h b/include/linux/pxa2xx_ssp.h
index 49444203328a..f2b405116166 100644
--- a/include/linux/pxa2xx_ssp.h
+++ b/include/linux/pxa2xx_ssp.h
@@ -219,7 +219,7 @@ static inline u32 pxa_ssp_read_reg(struct ssp_device *dev, u32 reg)
219 return __raw_readl(dev->mmio_base + reg); 219 return __raw_readl(dev->mmio_base + reg);
220} 220}
221 221
222#ifdef CONFIG_ARCH_PXA 222#if IS_ENABLED(CONFIG_PXA_SSP)
223struct ssp_device *pxa_ssp_request(int port, const char *label); 223struct ssp_device *pxa_ssp_request(int port, const char *label);
224void pxa_ssp_free(struct ssp_device *); 224void pxa_ssp_free(struct ssp_device *);
225struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node, 225struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node,