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: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Родитель
b9d7c5d3f4
Коммит
bd51de53e1
|
@ -853,18 +853,11 @@ config ARCH_S5PV210
|
||||||
help
|
help
|
||||||
Samsung S5PV210/S5PC110 series based systems
|
Samsung S5PV210/S5PC110 series based systems
|
||||||
|
|
||||||
config ARCH_EXYNOS
|
config ARCH_EXYNOS_SINGLE
|
||||||
bool "Samsung EXYNOS"
|
bool "Samsung EXYNOS"
|
||||||
select ARCH_HAS_CPUFREQ
|
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
select ARCH_HAS_HOLES_MEMORYMODEL
|
||||||
select ARCH_SPARSEMEM_ENABLE
|
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_S3C2410_WATCHDOG if WATCHDOG
|
||||||
select HAVE_S3C_RTC if RTC_CLASS
|
|
||||||
select NEED_MACH_GPIO_H
|
select NEED_MACH_GPIO_H
|
||||||
select NEED_MACH_MEMORY_H
|
select NEED_MACH_MEMORY_H
|
||||||
help
|
help
|
||||||
|
|
|
@ -4,7 +4,7 @@ CONFIG_KALLSYMS_ALL=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
CONFIG_ARCH_EXYNOS=y
|
CONFIG_ARCH_EXYNOS_SINGLE=y
|
||||||
CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
||||||
CONFIG_MACH_SMDKC210=y
|
CONFIG_MACH_SMDKC210=y
|
||||||
CONFIG_MACH_ARMLEX4210=y
|
CONFIG_MACH_ARMLEX4210=y
|
||||||
|
|
|
@ -7,6 +7,20 @@
|
||||||
|
|
||||||
# Configuration options for the EXYNOS4
|
# 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
|
if ARCH_EXYNOS
|
||||||
|
|
||||||
menu "SAMSUNG EXYNOS SoCs Support"
|
menu "SAMSUNG EXYNOS SoCs Support"
|
||||||
|
@ -19,6 +33,9 @@ config ARCH_EXYNOS4
|
||||||
help
|
help
|
||||||
Samsung EXYNOS4 SoCs based systems
|
Samsung EXYNOS4 SoCs based systems
|
||||||
|
|
||||||
|
config ARCH_EXYNOS4_SINGLE
|
||||||
|
def_bool ARCH_EXYNOS4 && ARCH_EXYNOS_SINGLE
|
||||||
|
|
||||||
config ARCH_EXYNOS5
|
config ARCH_EXYNOS5
|
||||||
bool "SAMSUNG EXYNOS5"
|
bool "SAMSUNG EXYNOS5"
|
||||||
select HAVE_SMP
|
select HAVE_SMP
|
||||||
|
@ -35,7 +52,7 @@ config CPU_EXYNOS4210
|
||||||
select PM_GENERIC_DOMAINS
|
select PM_GENERIC_DOMAINS
|
||||||
select S5P_PM if PM
|
select S5P_PM if PM
|
||||||
select S5P_SLEEP if PM
|
select S5P_SLEEP if PM
|
||||||
select SAMSUNG_DMADEV
|
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
|
||||||
help
|
help
|
||||||
Enable EXYNOS4210 CPU support
|
Enable EXYNOS4210 CPU support
|
||||||
|
|
||||||
|
@ -45,7 +62,7 @@ config SOC_EXYNOS4212
|
||||||
depends on ARCH_EXYNOS4
|
depends on ARCH_EXYNOS4
|
||||||
select S5P_PM if PM
|
select S5P_PM if PM
|
||||||
select S5P_SLEEP if PM
|
select S5P_SLEEP if PM
|
||||||
select SAMSUNG_DMADEV
|
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
|
||||||
help
|
help
|
||||||
Enable EXYNOS4212 SoC support
|
Enable EXYNOS4212 SoC support
|
||||||
|
|
||||||
|
@ -53,7 +70,7 @@ config SOC_EXYNOS4412
|
||||||
bool "SAMSUNG EXYNOS4412"
|
bool "SAMSUNG EXYNOS4412"
|
||||||
default y
|
default y
|
||||||
depends on ARCH_EXYNOS4
|
depends on ARCH_EXYNOS4
|
||||||
select SAMSUNG_DMADEV
|
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
|
||||||
help
|
help
|
||||||
Enable EXYNOS4412 SoC support
|
Enable EXYNOS4412 SoC support
|
||||||
|
|
||||||
|
@ -64,7 +81,7 @@ config SOC_EXYNOS5250
|
||||||
select S5P_PM if PM
|
select S5P_PM if PM
|
||||||
select S5P_SLEEP if PM
|
select S5P_SLEEP if PM
|
||||||
select S5P_DEV_MFC
|
select S5P_DEV_MFC
|
||||||
select SAMSUNG_DMADEV
|
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
|
||||||
help
|
help
|
||||||
Enable EXYNOS5250 SoC support
|
Enable EXYNOS5250 SoC support
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
# http://www.samsung.com/
|
# http://www.samsung.com/
|
||||||
#
|
#
|
||||||
# Licensed under GPLv2
|
# Licensed under GPLv2
|
||||||
|
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
|
||||||
|
|
||||||
obj-y :=
|
obj-y :=
|
||||||
obj-m :=
|
obj-m :=
|
||||||
|
@ -48,12 +49,12 @@ obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
|
||||||
# device support
|
# device support
|
||||||
|
|
||||||
obj-y += dev-uart.o
|
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_EXYNOS4_DEV_AHCI) += dev-ahci.o
|
||||||
obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o
|
obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o
|
||||||
obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.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_FIMC) += setup-fimc.o
|
||||||
obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o
|
obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o
|
||||||
obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
|
obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
|
||||||
|
|
|
@ -368,6 +368,9 @@ static void __init exynos4_map_io(void)
|
||||||
else
|
else
|
||||||
iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1));
|
iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1));
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_EXYNOS_ATAGS))
|
||||||
|
return
|
||||||
|
|
||||||
/* initialize device information early */
|
/* initialize device information early */
|
||||||
exynos4_default_sdhci0();
|
exynos4_default_sdhci0();
|
||||||
exynos4_default_sdhci1();
|
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);
|
s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_EXYNOS_ATAGS
|
||||||
static void __iomem *exynos_eint_base;
|
static void __iomem *exynos_eint_base;
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(eint_lock);
|
static DEFINE_SPINLOCK(eint_lock);
|
||||||
|
@ -875,3 +880,4 @@ static int __init exynos_init_irq_eint(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
arch_initcall(exynos_init_irq_eint);
|
arch_initcall(exynos_init_irq_eint);
|
||||||
|
#endif
|
||||||
|
|
|
@ -13,6 +13,10 @@ config PLAT_SAMSUNG
|
||||||
help
|
help
|
||||||
Base platform code for all Samsung SoC based systems
|
Base platform code for all Samsung SoC based systems
|
||||||
|
|
||||||
|
config PLAT_SAMSUNG_SINGLE
|
||||||
|
def_bool PLAT_SAMSUNG && !ARCH_MULTIPLATFORM
|
||||||
|
|
||||||
|
|
||||||
config PLAT_S5P
|
config PLAT_S5P
|
||||||
bool
|
bool
|
||||||
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
|
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
|
||||||
|
@ -23,7 +27,7 @@ config PLAT_S5P
|
||||||
select GIC_NON_BANKED if ARCH_EXYNOS4
|
select GIC_NON_BANKED if ARCH_EXYNOS4
|
||||||
select NO_IOPORT
|
select NO_IOPORT
|
||||||
select PLAT_SAMSUNG
|
select PLAT_SAMSUNG
|
||||||
select S3C_GPIO_TRACK
|
select S3C_GPIO_TRACK if PLAT_SAMSUNG_SINGLE
|
||||||
select S5P_GPIO_DRVSTR
|
select S5P_GPIO_DRVSTR
|
||||||
select SAMSUNG_CLKSRC
|
select SAMSUNG_CLKSRC
|
||||||
select SAMSUNG_GPIOLIB_4BIT
|
select SAMSUNG_GPIOLIB_4BIT
|
||||||
|
@ -178,6 +182,7 @@ config S5P_DEV_UART
|
||||||
|
|
||||||
config S3C_ADC
|
config S3C_ADC
|
||||||
bool "ADC common driver support"
|
bool "ADC common driver support"
|
||||||
|
depends on PLAT_SAMSUNG_SINGLE
|
||||||
help
|
help
|
||||||
Core support for the ADC block found in the Samsung SoC systems
|
Core support for the ADC block found in the Samsung SoC systems
|
||||||
for drivers such as the touchscreen and hwmon to use to share
|
for drivers such as the touchscreen and hwmon to use to share
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
#
|
#
|
||||||
# Licensed under GPLv2
|
# Licensed under GPLv2
|
||||||
|
|
||||||
|
ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include
|
||||||
|
ccflags-$(CONFIG_ARCH_EXYNOS) += -I$(srctree)/arch/arm/mach-exynos/include
|
||||||
|
|
||||||
obj-y :=
|
obj-y :=
|
||||||
obj-m :=
|
obj-m :=
|
||||||
obj-n := dummy.o
|
obj-n := dummy.o
|
||||||
|
@ -34,7 +37,7 @@ obj-$(CONFIG_S3C_ADC) += adc.o
|
||||||
|
|
||||||
obj-y += platformdata.o
|
obj-y += platformdata.o
|
||||||
|
|
||||||
obj-y += devs.o
|
obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += devs.o
|
||||||
obj-y += dev-uart.o
|
obj-y += dev-uart.o
|
||||||
obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o
|
obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o
|
||||||
obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o
|
obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o
|
||||||
|
@ -51,9 +54,10 @@ obj-$(CONFIG_S3C_DMA) += dma.o s3c-dma-ops.o
|
||||||
obj-$(CONFIG_SAMSUNG_DMADEV) += dma-ops.o
|
obj-$(CONFIG_SAMSUNG_DMADEV) += dma-ops.o
|
||||||
|
|
||||||
# PM support
|
# PM support
|
||||||
|
|
||||||
obj-$(CONFIG_PM) += pm.o
|
obj-$(CONFIG_PM) += pm.o
|
||||||
|
ifdef CONFIG_PLAT_SAMSUNG_SINGLE
|
||||||
obj-$(CONFIG_PM) += pm-gpio.o
|
obj-$(CONFIG_PM) += pm-gpio.o
|
||||||
|
endif
|
||||||
obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o
|
obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o
|
||||||
|
|
||||||
obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o
|
obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o
|
||||||
|
|
|
@ -166,6 +166,7 @@ extern void s3c_pm_check_store(void);
|
||||||
*/
|
*/
|
||||||
extern void s3c_pm_configure_extint(void);
|
extern void s3c_pm_configure_extint(void);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PLAT_SAMSUNG_SINGLE
|
||||||
/**
|
/**
|
||||||
* samsung_pm_restore_gpios() - restore the state of the gpios after sleep.
|
* samsung_pm_restore_gpios() - restore the state of the gpios after sleep.
|
||||||
*
|
*
|
||||||
|
@ -181,6 +182,10 @@ extern void samsung_pm_restore_gpios(void);
|
||||||
* Save the GPIO states for resotration on resume. See samsung_pm_restore_gpios().
|
* Save the GPIO states for resotration on resume. See samsung_pm_restore_gpios().
|
||||||
*/
|
*/
|
||||||
extern void samsung_pm_save_gpios(void);
|
extern void samsung_pm_save_gpios(void);
|
||||||
|
#else
|
||||||
|
#define samsung_pm_restore_gpios() do { } while(0)
|
||||||
|
#define samsung_pm_save_gpios() do { } while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void s3c_pm_save_core(void);
|
extern void s3c_pm_save_core(void);
|
||||||
extern void s3c_pm_restore_core(void);
|
extern void s3c_pm_restore_core(void);
|
||||||
|
|
|
@ -57,7 +57,7 @@ obj-$(CONFIG_GPIO_PL061) += gpio-pl061.o
|
||||||
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
|
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
|
||||||
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
|
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
|
||||||
obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
|
obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
|
||||||
obj-$(CONFIG_PLAT_SAMSUNG) += gpio-samsung.o
|
obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += gpio-samsung.o
|
||||||
obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o
|
obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o
|
||||||
obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
|
obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
|
||||||
obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o
|
obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o
|
||||||
|
|
Загрузка…
Ссылка в новой задаче