commit 8b806e0201b97844d0eff4713eb88f0a6d0f689d Author: Arnd Bergmann Date: Fri Jun 14 17:16:30 2013 +0200 ARM: exynos multiplatform, next try Signed-off-by: Arnd Bergmann 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 +#include /* 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 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 --- Makefile.orig 2013-11-04 12:47:11.527488114 -0500 +++ b/arch/arm/boot/dts/Makefile 2013-11-04 12:47:18.933540972 -0500 @@ -48,7 +48,7 @@ dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ dove-cubox.dtb \ dove-dove-db.dtb -dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ +dtb-$(CONFIG_ARCH_EXYNOS_COMMON) += exynos4210-origen.dtb \ exynos4210-smdkv310.dtb \ exynos4210-trats.dtb \ exynos4210-universal_c210.dtb \