kernel/arm-exynos-mp.patch

429 lines
12 KiB
Diff

commit 8b806e0201b97844d0eff4713eb88f0a6d0f689d
Author: Arnd Bergmann <arnd@arndb.de>
Date: Fri Jun 14 17:16:30 2013 +0200
ARM: exynos multiplatform, next try
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index e401a76..fad9324 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -422,7 +422,7 @@ choice
config DEBUG_S3C_UART0
depends on PLAT_SAMSUNG
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
bool "Use S3C UART 0 for low-level debug"
help
Say Y here if you want the debug print routines to direct
@@ -434,7 +434,7 @@ choice
config DEBUG_S3C_UART1
depends on PLAT_SAMSUNG
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
bool "Use S3C UART 1 for low-level debug"
help
Say Y here if you want the debug print routines to direct
@@ -446,7 +446,7 @@ choice
config DEBUG_S3C_UART2
depends on PLAT_SAMSUNG
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
bool "Use S3C UART 2 for low-level debug"
help
Say Y here if you want the debug print routines to direct
@@ -457,7 +457,7 @@ choice
by CONFIG_S3C_LOWLEVEL_UART_PORT.
config DEBUG_S3C_UART3
- depends on PLAT_SAMSUNG && ARCH_EXYNOS
+ depends on PLAT_SAMSUNG && ARCH_EXYNOS_COMMON
select DEBUG_EXYNOS_UART
bool "Use S3C UART 3 for low-level debug"
help
diff --git a/arch/arm/include/debug/samsung.S b/arch/arm/include/debug/samsung.S
index f3a9cff..8d8d922 100644
--- a/arch/arm/include/debug/samsung.S
+++ b/arch/arm/include/debug/samsung.S
@@ -9,7 +9,7 @@
* published by the Free Software Foundation.
*/
-#include <plat/regs-serial.h>
+#include <linux/serial_s3c.h>
/* The S5PV210/S5PC110 implementations are as belows. */
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 855d4a7..8744890 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -7,13 +7,24 @@
# Configuration options for the EXYNOS4
-if ARCH_EXYNOS
+config ARCH_EXYNOS_MULTI
+ bool "Samsung EXYNOS" if ARCH_MULTI_V7
+ select ARCH_HAS_CPUFREQ
+ select CPU_V7
+ select GENERIC_CLOCKEVENTS
+ select HAVE_CLK
+ select HAVE_S3C2410_I2C if I2C
+ select HAVE_S3C_RTC if RTC_CLASS
+ help
+ Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
+
+if ARCH_EXYNOS || ARCH_EXYNOS_MULTI
menu "SAMSUNG EXYNOS SoCs Support"
config ARCH_EXYNOS4
bool "SAMSUNG EXYNOS4"
- default y
+ default ARCH_EXYNOS
select GIC_NON_BANKED
select HAVE_ARM_SCU if SMP
select HAVE_SMP
@@ -24,12 +35,16 @@ config ARCH_EXYNOS4
config ARCH_EXYNOS5
bool "SAMSUNG EXYNOS5"
+ default ARCH_EXYNOS
select HAVE_ARM_SCU if SMP
select HAVE_SMP
select PINCTRL
help
Samsung EXYNOS5 (Cortex-A15) SoC based systems
+config ARCH_EXYNOS_COMMON
+ def_bool ARCH_EXYNOS4 || ARCH_EXYNOS5
+
comment "EXYNOS SoCs"
config CPU_EXYNOS4210
@@ -41,7 +56,7 @@ config CPU_EXYNOS4210
select PM_GENERIC_DOMAINS if PM
select S5P_PM if PM
select S5P_SLEEP if PM
- select SAMSUNG_DMADEV
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
help
Enable EXYNOS4210 CPU support
@@ -49,10 +64,11 @@ config SOC_EXYNOS4212
bool "SAMSUNG EXYNOS4212"
default y
depends on ARCH_EXYNOS4
+ select MACH_EXYNOS4_DT
select PINCTRL_EXYNOS
select S5P_PM if PM
select S5P_SLEEP if PM
- select SAMSUNG_DMADEV
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
help
Enable EXYNOS4212 SoC support
@@ -60,8 +76,9 @@ config SOC_EXYNOS4412
bool "SAMSUNG EXYNOS4412"
default y
depends on ARCH_EXYNOS4
+ select MACH_EXYNOS4_DT
select PINCTRL_EXYNOS
- select SAMSUNG_DMADEV
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
help
Enable EXYNOS4412 SoC support
@@ -70,11 +87,12 @@ config SOC_EXYNOS5250
default y
depends on ARCH_EXYNOS5
select PINCTRL_EXYNOS
+ select MACH_EXYNOS5_DT
select PM_GENERIC_DOMAINS if PM
select S5P_PM if PM
select S5P_SLEEP if PM
select S5P_DEV_MFC
- select SAMSUNG_DMADEV
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
help
Enable EXYNOS5250 SoC support
@@ -121,9 +139,7 @@ config MACH_EXYNOS4_DT
with this machine file.
config MACH_EXYNOS5_DT
- bool "SAMSUNG EXYNOS5 Machine using device tree"
- default y
- depends on ARCH_EXYNOS5
+ bool
select ARM_AMBA
select CLKSRC_OF
select USB_ARCH_HAS_XHCI
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index e970a7a..ae397bb 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
@@ -5,14 +5,11 @@
#
# Licensed under GPLv2
-obj-y :=
-obj-m :=
-obj-n :=
-obj- :=
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung
-# Core
+ifdef CONFIG_ARCH_EXYNOS_COMMON
-obj-$(CONFIG_ARCH_EXYNOS) += common.o
+obj-y += pmu.o
obj-$(CONFIG_S5P_PM) += pm.o
obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
@@ -24,8 +21,8 @@
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
-obj-$(CONFIG_ARCH_EXYNOS) += exynos-smc.o
-obj-$(CONFIG_ARCH_EXYNOS) += firmware.o
++obj-y += exynos-smc.o
++obj-y += firmware.o
plus_sec := $(call as-instr,.arch_extension sec,+sec)
AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec)
@@ -34,3 +31,5 @@
obj-$(CONFIG_MACH_EXYNOS4_DT) += mach-exynos4-dt.o
obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
+
+endif
index 3dc5cbe..e61abdc 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -6,7 +6,7 @@
config PLAT_SAMSUNG
bool
- depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P || ARCH_EXYNOS
+ depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P || ARCH_EXYNOS_COMMON
default y
select GENERIC_IRQ_CHIP
select NO_IOPORT
@@ -176,6 +176,7 @@ config S5P_DEV_UART
config S3C_ADC
bool "ADC common driver support"
+ depends on !ARCH_MULTIPLATFORM
help
Core support for the ADC block found in the Samsung SoC systems
for drivers such as the touchscreen and hwmon to use to share
@@ -396,6 +397,7 @@ config S5P_DEV_USB_EHCI
config S3C24XX_PWM
bool "PWM device support"
+ depends on !ARCH_MULTIPLATFORM
select PWM
select PWM_SAMSUNG
help
@@ -453,7 +455,7 @@ comment "Power management"
config SAMSUNG_PM_DEBUG
bool "S3C2410 PM Suspend debug"
depends on PM
- select DEBUG_LL
+ depends on DEBUG_LL && SERIAL_SAMSUNG
help
Say Y here if you want verbose debugging from the PM Suspend and
Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 98d07d8..b458e7d 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -4,6 +4,9 @@
#
# Licensed under GPLv2
+ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include
+ccflags-$(CONFIG_ARCH_EXYNOS_COMMON) += -I$(srctree)/arch/arm/mach-exynos/include
+
obj-y :=
obj-m :=
obj-n := dummy.o
diff --git a/arch/arm/plat-samsung/s5p-irq-pm.c b/arch/arm/plat-samsung/s5p-irq-pm.c
index 7c1e3b7..dc66bb5 100644
--- a/arch/arm/plat-samsung/s5p-irq-pm.c
+++ b/arch/arm/plat-samsung/s5p-irq-pm.c
@@ -40,7 +40,7 @@ int s3c_irq_wake(struct irq_data *data, unsigned int state)
unsigned long irqbit;
unsigned int irq_rtc_tic, irq_rtc_alarm;
-#ifdef CONFIG_ARCH_EXYNOS
+#ifdef CONFIG_ARCH_EXYNOS_COMMON
if (soc_is_exynos5250()) {
irq_rtc_tic = EXYNOS5_IRQ_RTC_TIC;
irq_rtc_alarm = EXYNOS5_IRQ_RTC_ALARM;
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 81465c2..6bd8b5a 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -75,7 +75,7 @@ config CLKSRC_METAG_GENERIC
This option enables support for the Meta per-thread timers.
config CLKSRC_EXYNOS_MCT
- def_bool y if ARCH_EXYNOS
+ def_bool y if ARCH_EXYNOS_COMMON
help
Support for Multi Core Timer controller on Exynos SoCs.
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index de4d5d9..ffe9cb3 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -27,6 +27,7 @@ config ARM_EXYNOS_CPUFREQ
If in doubt, say N.
+if ARM_EXYNOS_CPUFREQ
config ARM_EXYNOS4210_CPUFREQ
def_bool CPU_EXYNOS4210
help
@@ -54,6 +55,7 @@ config ARM_EXYNOS5440_CPUFREQ
SoC. The nature of exynos5440 clock controller is
different than previous exynos controllers so not using
the common exynos framework.
+endif
config ARM_HIGHBANK_CPUFREQ
tristate "Calxeda Highbank-based"
diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig
index 31f3adb..15454ad 100644
--- a/drivers/devfreq/Kconfig
+++ b/drivers/devfreq/Kconfig
@@ -68,6 +68,7 @@ comment "DEVFREQ Drivers"
config ARM_EXYNOS4_BUS_DEVFREQ
bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
depends on CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412
+ depends on !ARCH_MULTIPLATFORM
select ARCH_HAS_OPP
select DEVFREQ_GOV_SIMPLE_ONDEMAND
help
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index 6c6034e..d9ed7c0 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -168,7 +168,7 @@ config TEGRA_IOMMU_SMMU
config EXYNOS_IOMMU
bool "Exynos IOMMU Support"
- depends on ARCH_EXYNOS && EXYNOS_DEV_SYSMMU
+ depends on ARCH_EXYNOS_COMMON && EXYNOS_DEV_SYSMMU
select IOMMU_API
help
Support for the IOMMU(System MMU) of Samsung Exynos application
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 5a8ad51..03688dd 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -252,7 +252,7 @@ config PINCTRL_SAMSUNG
config PINCTRL_EXYNOS
bool "Pinctrl driver data for Samsung EXYNOS SoCs other than 5440"
- depends on OF && GPIOLIB && ARCH_EXYNOS
+ depends on OF && GPIOLIB && ARCH_EXYNOS_COMMON
select PINCTRL_SAMSUNG
config PINCTRL_EXYNOS5440
diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index 75840b5..746a931 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -140,7 +140,7 @@ config PWM_RENESAS_TPU
config PWM_SAMSUNG
tristate "Samsung PWM support"
- depends on PLAT_SAMSUNG
+ depends on PLAT_SAMSUNG && !ARCH_MULTIPLATFORM
help
Generic PWM framework driver for Samsung.
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 89cbbab..830b8e7 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -365,7 +365,7 @@ config SPI_S3C24XX_FIQ
config SPI_S3C64XX
tristate "Samsung S3C64XX series type SPI"
- depends on (ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5P64X0 || ARCH_EXYNOS)
+ depends on (ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5P64X0 || ARCH_EXYNOS_COMMON)
select S3C64XX_DMA if ARCH_S3C64XX
help
SPI driver for Samsung S3C64XX and newer SoCs.
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 4263d01..d7ad720 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -462,7 +462,7 @@ config USB_OHCI_SH
config USB_OHCI_EXYNOS
boolean "OHCI support for Samsung EXYNOS SoC Series"
- depends on ARCH_EXYNOS
+ depends on ARCH_EXYNOS_COMMON
help
Enable support for the Samsung Exynos SOC's on-chip OHCI controller.
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 2c301f8..0ba3e03 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2039,7 +2039,7 @@ config FB_TMIO_ACCELL
config FB_S3C
tristate "Samsung S3C framebuffer support"
depends on FB && (CPU_S3C2416 || ARCH_S3C64XX || ARCH_S5P64X0 || \
- ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
+ ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS_COMMON)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig
index b8abda5..216af14 100644
--- a/drivers/video/exynos/Kconfig
+++ b/drivers/video/exynos/Kconfig
@@ -15,7 +15,7 @@ if EXYNOS_VIDEO
config EXYNOS_MIPI_DSI
bool "EXYNOS MIPI DSI driver support."
- depends on ARCH_S5PV210 || ARCH_EXYNOS
+ depends on ARCH_S5PV210 || ARCH_EXYNOS_COMMON
help
This enables support for MIPI-DSI device.
@@ -29,7 +29,7 @@ config EXYNOS_LCD_S6E8AX0
config EXYNOS_DP
bool "EXYNOS DP driver support"
- depends on ARCH_EXYNOS
+ depends on ARCH_EXYNOS_COMMON
default n
help
This enables support for DP device.
diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
index 9855dfc..fcb2045 100644
--- a/sound/soc/samsung/Kconfig
+++ b/sound/soc/samsung/Kconfig
@@ -1,6 +1,6 @@
config SND_SOC_SAMSUNG
tristate "ASoC support for Samsung"
- depends on PLAT_SAMSUNG
+ depends on PLAT_SAMSUNG && !ARCH_MULTIPLATFORM
select S3C64XX_DMA if ARCH_S3C64XX
select S3C2410_DMA if ARCH_S3C24XX
help