Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd51de53 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

ARM: exynos: enable multiplatform support



This makes it possible to enable the exynos platform as part of a
multiplatform kernel, in addition to keeping the single-platform
exynos support.

The multiplatform variant has a number of limitations at the moment:

* It only supports DT-enabled machines. This is not a problem in
  the long run, as non-DT machines for exynos are going away.
  The main problem here is that the gpio code and the exynos_eint
  irqchip are not multiplatform capable but still required for
  ATAGS based boot.
* The watchdog driver is still missing a conversion.
* sparsemem and memory_holes are currently not supported in
  multiplatform.

The the multiplatform aware ARCH_EXYNOS Kconfig symbol is disabled
for now, as dependent patches are still pending in other
subsystem trees. We will enable it once everything comes together.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent b9d7c5d3
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -853,18 +853,11 @@ config ARCH_S5PV210
	help
	  Samsung S5PV210/S5PC110 series based systems

config ARCH_EXYNOS
config ARCH_EXYNOS_SINGLE
	bool "Samsung EXYNOS"
	select ARCH_HAS_CPUFREQ
	select ARCH_HAS_HOLES_MEMORYMODEL
	select ARCH_SPARSEMEM_ENABLE
	select CLKDEV_LOOKUP
	select CPU_V7
	select GENERIC_CLOCKEVENTS
	select HAVE_CLK
	select HAVE_S3C2410_I2C if I2C
	select HAVE_S3C2410_WATCHDOG if WATCHDOG
	select HAVE_S3C_RTC if RTC_CLASS
	select NEED_MACH_GPIO_H
	select NEED_MACH_MEMORY_H
	help
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ CONFIG_KALLSYMS_ALL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_EXYNOS=y
CONFIG_ARCH_EXYNOS_SINGLE=y
CONFIG_S3C_LOWLEVEL_UART_PORT=1
CONFIG_MACH_SMDKC210=y
CONFIG_MACH_ARMLEX4210=y
+21 −4
Original line number Diff line number Diff line
@@ -7,6 +7,20 @@

# Configuration options for the EXYNOS4

config ARCH_EXYNOS
	# TODO: make this visible after all drivers are converted
	bool "Samsung EXYNOS" if ARCH_MULTI_V7 && BROKEN
	default ARCH_EXYNOS_SINGLE
	select ARCH_HAS_CPUFREQ
	select CLKDEV_LOOKUP
	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

menu "SAMSUNG EXYNOS SoCs Support"
@@ -19,6 +33,9 @@ config ARCH_EXYNOS4
	help
	  Samsung EXYNOS4 SoCs based systems

config ARCH_EXYNOS4_SINGLE
	def_bool ARCH_EXYNOS4 && ARCH_EXYNOS_SINGLE

config ARCH_EXYNOS5
	bool "SAMSUNG EXYNOS5"
	select HAVE_SMP
@@ -35,7 +52,7 @@ config CPU_EXYNOS4210
	select PM_GENERIC_DOMAINS
	select S5P_PM if PM
	select S5P_SLEEP if PM
	select SAMSUNG_DMADEV
	select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
	help
	  Enable EXYNOS4210 CPU support

@@ -45,7 +62,7 @@ config SOC_EXYNOS4212
	depends on ARCH_EXYNOS4
	select S5P_PM if PM
	select S5P_SLEEP if PM
	select SAMSUNG_DMADEV
	select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
	help
	  Enable EXYNOS4212 SoC support

@@ -53,7 +70,7 @@ config SOC_EXYNOS4412
	bool "SAMSUNG EXYNOS4412"
	default y
	depends on ARCH_EXYNOS4
	select SAMSUNG_DMADEV
	select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
	help
	  Enable EXYNOS4412 SoC support

@@ -64,7 +81,7 @@ config SOC_EXYNOS5250
	select S5P_PM if PM
	select S5P_SLEEP if PM
	select S5P_DEV_MFC
	select SAMSUNG_DMADEV
	select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
	help
	  Enable EXYNOS5250 SoC support

+3 −2
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#		http://www.samsung.com/
#
# Licensed under GPLv2
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include

obj-y				:=
obj-m				:=
@@ -48,12 +49,12 @@ obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
# device support

obj-y					+= dev-uart.o
obj-$(CONFIG_ARCH_EXYNOS4)		+= dev-audio.o
obj-$(CONFIG_ARCH_EXYNOS4_SINGLE)	+= dev-audio.o
obj-$(CONFIG_EXYNOS4_DEV_AHCI)		+= dev-ahci.o
obj-$(CONFIG_EXYNOS_DEV_DMA)		+= dma.o
obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI)	+= dev-ohci.o

obj-$(CONFIG_ARCH_EXYNOS)		+= setup-i2c0.o
obj-$(CONFIG_ARCH_EXYNOS_SINGLE)	+= setup-i2c0.o
obj-$(CONFIG_EXYNOS4_SETUP_FIMC)	+= setup-fimc.o
obj-$(CONFIG_EXYNOS4_SETUP_FIMD0)	+= setup-fimd0.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C1)	+= setup-i2c1.o
+6 −0
Original line number Diff line number Diff line
@@ -368,6 +368,9 @@ static void __init exynos4_map_io(void)
	else
		iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1));

	if (!IS_ENABLED(CONFIG_EXYNOS_ATAGS))
		return

	/* initialize device information early */
	exynos4_default_sdhci0();
	exynos4_default_sdhci1();
@@ -570,6 +573,8 @@ static void __init exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no)
	s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
}


#ifdef CONFIG_EXYNOS_ATAGS
static void __iomem *exynos_eint_base;

static DEFINE_SPINLOCK(eint_lock);
@@ -875,3 +880,4 @@ static int __init exynos_init_irq_eint(void)
	return 0;
}
arch_initcall(exynos_init_irq_eint);
#endif
Loading