diff options
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 | |||
824 | M: Alexander Shiyan <shc_work@mail.ru> | 824 | M: Alexander Shiyan <shc_work@mail.ru> |
825 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | 825 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
826 | S: Odd Fixes | 826 | S: Odd Fixes |
827 | F: arch/arm/mach-clps711x/ | 827 | N: clps711x |
828 | 828 | ||
829 | ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE | 829 | ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE |
830 | M: Hartley Sweeten <hsweeten@visionengravers.com> | 830 | M: 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 | ||
777 | config ARCH_S5P64X0 | 781 | config 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 | |||
794 | config ARCH_S5PC100 | 799 | config 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 | ||
887 | comment "CPU Core family selection" | 894 | comment "CPU Core family selection" |
888 | 895 | ||
896 | config 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 | |||
889 | config ARCH_MULTI_V4T | 902 | config 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 |
200 | CONFIG_CRC_T10DIF=m | 200 | CONFIG_CRC_T10DIF=m |
201 | CONFIG_GPIO_PCA953X=y | ||
202 | CONFIG_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 | |||
94 | CONFIG_LOGO=y | 94 | CONFIG_LOGO=y |
95 | CONFIG_USB=y | 95 | CONFIG_USB=y |
96 | CONFIG_USB_EHCI_HCD=y | 96 | CONFIG_USB_EHCI_HCD=y |
97 | CONFIG_USB_EHCI_S5P=y | 97 | CONFIG_USB_EHCI_EXYNOS=y |
98 | CONFIG_USB_STORAGE=y | 98 | CONFIG_USB_STORAGE=y |
99 | CONFIG_USB_DWC3=y | 99 | CONFIG_USB_DWC3=y |
100 | CONFIG_USB_PHY=y | 100 | CONFIG_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 | }; |
75 | extern struct secondary_data secondary_data; | 75 | extern struct secondary_data secondary_data; |
76 | extern volatile int pen_release; | 76 | extern volatile int pen_release; |
77 | extern void secondary_startup(void); | ||
77 | 78 | ||
78 | extern int __cpu_disable(void); | 79 | extern 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 */ |
93 | 10: movw \rp, #TEGRA_PMC_SCRATCH20 & 0xffff | 90 | 10: 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 |
101 | 11: ubfx \rv, \rp, #15, #3 @ 17:15 are UART ID | 98 | 11: 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 | ||
61 | menu "Atmel AT91 System-on-Chip" | 62 | menu "Atmel AT91 System-on-Chip" |
62 | 63 | ||
@@ -64,11 +65,22 @@ choice | |||
64 | 65 | ||
65 | prompt "Core type" | 66 | prompt "Core type" |
66 | 67 | ||
68 | config 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 | |||
67 | config SOC_SAM_V4_V5 | 79 | config 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 | ||
73 | config SOC_SAM_V7 | 85 | config 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 | # ---------------------------------------------------------- |
194 | endif # SOC_SAM_V4_V5 | ||
195 | |||
182 | 196 | ||
197 | if SOC_SAM_V4_V5 || ARCH_AT91X40 | ||
183 | source arch/arm/mach-at91/Kconfig.non_dt | 198 | source arch/arm/mach-at91/Kconfig.non_dt |
184 | endif # SOC_SAM_V4_V5 | 199 | endif |
185 | 200 | ||
186 | comment "Generic Board Type" | 201 | comment "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 | ||
6 | choice | 6 | choice |
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 | ||
9 | config ARCH_AT91_NONE | 10 | config 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 | ||
42 | config ARCH_AT91X40 | ||
43 | bool "AT91x40" | ||
44 | depends on !MMU | ||
45 | select ARCH_USES_GETTIMEOFFSET | ||
46 | select MULTI_IRQ_HANDLER | ||
47 | select SPARSE_IRQ | ||
48 | |||
49 | endchoice | 43 | endchoice |
50 | 44 | ||
51 | config ARCH_AT91SAM9G20 | 45 | config 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 | } |
39 | EXPORT_SYMBOL_GPL(sam9_smc_write_mode); | ||
39 | 40 | ||
40 | static void sam9_smc_cs_configure(void __iomem *base, | 41 | static 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 | } |
73 | EXPORT_SYMBOL_GPL(sam9_smc_configure); | ||
72 | 74 | ||
73 | static void sam9_smc_cs_read_mode(void __iomem *base, | 75 | static 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 | } |
89 | EXPORT_SYMBOL_GPL(sam9_smc_read_mode); | ||
87 | 90 | ||
88 | static void sam9_smc_cs_read(void __iomem *base, | 91 | static 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) |
355 | static struct of_device_id rstc_ids[] = { | 355 | static 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 | ||
247 | MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") | 247 | MACHINE_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 | ||
369 | DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx") | 401 | DT_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 | ||
26 | enum cns3xxx_access_type { | ||
27 | CNS3XXX_HOST_TYPE = 0, | ||
28 | CNS3XXX_CFG0_TYPE, | ||
29 | CNS3XXX_CFG1_TYPE, | ||
30 | CNS3XXX_NUM_ACCESS_TYPES, | ||
31 | }; | ||
32 | |||
33 | struct cns3xxx_pcie { | 26 | struct 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 | ||
181 | static struct cns3xxx_pcie cns3xxx_pcie[] = { | 179 | static 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 | ||
217 | config GPIO_PCA953X | ||
218 | default MACH_DAVINCI_DA850_EVM | ||
219 | |||
220 | config KEYBOARD_GPIO_POLLED | ||
221 | default MACH_DAVINCI_DA850_EVM | ||
222 | 217 | ||
223 | config MACH_TNETV107X | 218 | config 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 | ||
809 | MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM") | 810 | MACHINE_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 | } |
245 | EXPORT_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 | } |
411 | early_initcall(exynos4_l2x0_cache_init); | 413 | early_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 |
95 | config ARCH_EBSA285 | 96 | config ARCH_EBSA285 |
96 | bool | 97 | bool |
97 | select ARCH_MAY_HAVE_PC_FDC | ||
98 | 98 | ||
99 | endif | 99 | endif |
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 | ||
7 | obj-y := common.o dc21285.o dma.o isa-irq.o | 7 | obj-y := common.o dma.o isa-irq.o |
8 | obj-m := | 8 | obj-m := |
9 | obj-n := | 9 | obj-n := |
10 | obj- := | 10 | obj- := |
11 | 11 | ||
12 | pci-y += dc21285.o | ||
12 | pci-$(CONFIG_ARCH_CATS) += cats-pci.o | 13 | pci-$(CONFIG_ARCH_CATS) += cats-pci.o |
13 | pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o | 14 | pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o |
14 | pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o | 15 | pci-$(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); | |||
78 | static void __init | 78 | static void __init |
79 | fixup_cats(struct tag *tags, char **cmdline, struct meminfo *mi) | 79 | fixup_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 | ||
86 | MACHINE_START(CATS, "Chalice-CATS") | 88 | MACHINE_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 | ||
5 | obj-y += hisilicon.o | 5 | obj-y += hisilicon.o |
6 | obj-$(CONFIG_SMP) += platsmp.o | 6 | obj-$(CONFIG_SMP) += platsmp.o hotplug.o |
7 | obj-$(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 | ||
181 | void hi3xxx_cpu_die(unsigned int cpu) | 182 | void 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 | |||
319 | static 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 | */ | ||
327 | static 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 | |||
337 | static 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 | |||
345 | void __init ixp4xx_pci_preinit(void) | 318 | void __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 | ||
484 | int 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 | |||
492 | EXPORT_SYMBOL(ixp4xx_pci_read); | 454 | EXPORT_SYMBOL(ixp4xx_pci_read); |
493 | EXPORT_SYMBOL(ixp4xx_pci_write); | 455 | EXPORT_SYMBOL(ixp4xx_pci_write); |
494 | EXPORT_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 | ||
581 | static 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 | |||
586 | static 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 | */ | ||
598 | static 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 | |||
614 | int 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 | } | ||
626 | EXPORT_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 | ||
604 | void __init ixp4xx_init_early(void) | 652 | void __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 | ||
610 | void __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 | ||
80 | static void set_scl(u8 value) | 81 | static 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 | ||
86 | static void set_sda(u8 value) | 87 | static 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 | ||
92 | static void set_str(u8 value) | 93 | static 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 | ||
152 | static irqreturn_t hss_dcd_irq(int irq, void *pdev) | 153 | static 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 | ||
51 | extern unsigned long pcibios_min_mem; | ||
51 | static inline int is_pci_memory(u32 addr) | 52 | static 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 | } |
102 | EXPORT_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) |
235 | static struct mv_usb_platform_data pxa168_sph_pdata = { | 235 | static 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 | ||
119 | static DEFINE_MUTEX(phy_lock); | 119 | static DEFINE_MUTEX(phy_lock); |
120 | static int phy_init_cnt; | 120 | static 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) |
242 | static u64 usb_dma_mask = ~(u32)0; | 242 | static u64 usb_dma_mask = ~(u32)0; |
243 | 243 | ||
244 | #ifdef CONFIG_USB_MV_UDC | 244 | #if IS_ENABLED(CONFIG_USB_MV_UDC) |
245 | struct resource pxa168_u2o_resources[] = { | 245 | struct 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) |
280 | struct resource pxa168_u2oehci_resources[] = { | 280 | struct 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) |
316 | struct resource pxa168_u2ootg_resources[] = { | 316 | struct 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 | ||
170 | static struct mv_usb_platform_data ttc_usb_pdata = { | 170 | static 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) |
182 | static struct pxa3xx_nand_platform_data dkb_nand_info = { | 182 | static 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 @@ | |||
1 | config ARCH_MOXART | 1 | config 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 | } |
81 | EXPORT_SYMBOL_GPL(msm_dmov_stop_cmd); | ||
80 | 82 | ||
81 | void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd) | 83 | void 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 | } |
120 | EXPORT_SYMBOL_GPL(msm_dmov_enqueue_cmd); | ||
118 | 121 | ||
119 | struct msm_dmov_exec_cmdptr_cmd { | 122 | struct 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 | ||
66 | static void nspire_restart(char mode, const char *cmd) | 66 | static 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 | ||
319 | static int tps_setup(struct i2c_client *client, void *context) | 319 | static 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 | ||
192 | static int osk_tps_setup(struct i2c_client *client, void *context) | 192 | static 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]; | |||
71 | static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE]; | 71 | static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE]; |
72 | static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE]; | 72 | static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE]; |
73 | 73 | ||
74 | #ifdef CONFIG_OMAP_32K_TIMER | 74 | #ifndef CONFIG_OMAP_32K_TIMER |
75 | |||
76 | static unsigned short enable_dyn_sleep = 0; | ||
77 | |||
78 | #else | ||
75 | 79 | ||
76 | static unsigned short enable_dyn_sleep = 1; | 80 | static 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) | |||
222 | static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) | 222 | static 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 | ||
256 | asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) | 264 | asmlinkage 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) |
107 | extern u16 pm44xx_errata; | 107 | extern 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 | |||
33 | config MACH_DNS323 | 33 | config 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 | ||
57 | config MACH_SAAR | 59 | config 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 | ||
63 | comment "Third Party Dev Platforms (sorted by vendor name)" | 67 | comment "Third Party Dev Platforms (sorted by vendor name)" |
64 | 68 | ||
@@ -69,8 +73,7 @@ config ARCH_PXA_IDP | |||
69 | config ARCH_VIPER | 73 | config 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 | |||
181 | config MACH_TRIZEPS4WL | 183 | config 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 = { | |||
331 | static void __init balloon3_udc_init(void) | 331 | static 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 |
337 | static inline void balloon3_udc_init(void) {} | 336 | static 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 | ||
538 | config MACH_MINI2440 | 538 | config 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 | |||
573 | config MACH_OSIRIS_DVS | 573 | config 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) |
488 | static struct resource s3c2443_dma_resource[] = { | 488 | static 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 | ||
58 | static 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 | |||
64 | static u32 irq_uart_mask[SERIAL_SAMSUNG_UARTS]; | ||
59 | 65 | ||
60 | static int s3c64xx_irq_pm_suspend(void) | 66 | static 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 | } |
404 | module_init(wlf_gf_module_register); | 404 | device_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 | ||
208 | void __init s5p6440_map_io(void) | 209 | void __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 | ||
222 | void __init s5p6450_map_io(void) | 225 | void __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 | |
242 | void __init s5p6440_init_clocks(int xtal) | 246 | void __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 | ||
252 | void __init s5p6450_init_clocks(int xtal) | 258 | void __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 | |
268 | void __init s5p6440_init_irq(void) | 275 | void __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 | ||
283 | void __init s5p6450_init_irq(void) | 292 | void __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 | ||
298 | struct bus_type s5p64x0_subsys = { | 308 | struct 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 | ||
324 | void __init s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no) | 335 | void __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 | ||
336 | void __init s5p6450_init_uarts(struct s3c2410_uartcfg *cfg, int no) | 349 | void __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); | |||
25 | void s5p6450_setup_clocks(void); | 25 | void s5p6450_setup_clocks(void); |
26 | 26 | ||
27 | void s5p64x0_restart(enum reboot_mode mode, const char *cmd); | 27 | void s5p64x0_restart(enum reboot_mode mode, const char *cmd); |
28 | extern int s5p64x0_init(void); | ||
28 | 29 | ||
29 | #ifdef CONFIG_CPU_S5P6440 | 30 | #ifdef CONFIG_CPU_S5P6440 |
30 | 31 | ||
31 | extern int s5p64x0_init(void); | ||
32 | extern void s5p6440_map_io(void); | 32 | extern void s5p6440_map_io(void); |
33 | extern void s5p6440_init_clocks(int xtal); | 33 | extern 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 | ||
46 | extern int s5p64x0_init(void); | ||
47 | extern void s5p6450_map_io(void); | 45 | extern void s5p6450_map_io(void); |
48 | extern void s5p6450_init_clocks(int xtal); | 46 | extern 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 | ||
37 | static u32 irq_uart_mask[CONFIG_SERIAL_SAMSUNG_UARTS]; | 38 | static u32 irq_uart_mask[CONFIG_SERIAL_SAMSUNG_UARTS]; |
39 | #endif | ||
38 | 40 | ||
39 | static int s5p64x0_irq_pm_suspend(void) | 41 | static 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 @@ | |||
1 | obj-$(CONFIG_ARCH_SUNXI) += sunxi.o | 1 | obj-$(CONFIG_ARCH_SUNXI) += sunxi.o |
2 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 2 | obj-$(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 | |||
6 | ENTRY(sun6i_secondary_startup) | ||
7 | msr cpsr_fsxc, #0xd3 | ||
8 | b secondary_startup | ||
9 | ENDPROC(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 |
266 | config CPU_SA110 | 266 | config 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 | ||
428 | config SAMSUNG_PM_DEBUG | 428 | config 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 | ||
446 | config SAMSUNG_PM_CHECK | 445 | config 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) |
98 | static int nr_uarts __initdata = 0; | 98 | static int nr_uarts __initdata = 0; |
99 | 99 | ||
100 | #ifdef CONFIG_SERIAL_SAMSUNG_UARTS | ||
100 | static struct s3c2410_uartcfg uart_cfgs[CONFIG_SERIAL_SAMSUNG_UARTS]; | 101 | static 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 | ||
139 | void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no) | 143 | void __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) |
223 | struct ssp_device *pxa_ssp_request(int port, const char *label); | 223 | struct ssp_device *pxa_ssp_request(int port, const char *label); |
224 | void pxa_ssp_free(struct ssp_device *); | 224 | void pxa_ssp_free(struct ssp_device *); |
225 | struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node, | 225 | struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node, |