mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 01:49:36 +00:00
![Krzysztof Kozlowski](/assets/img/avatar_default.png)
The Exynos Chip ID driver on Exynos SoCs has so far only informational purpose - to expose the SoC device in sysfs. No other drivers depend on it so there is really no benefit of initializing it early. The code would be the most flexible if converted to a regular driver. However there is already another driver - Exynos ASV (Adaptive Supply Voltage) - which binds to the device node of Chip ID. The solution is to convert the Exynos Chip ID to a built in driver and merge the Exynos ASV into it. This has several benefits: 1. Although the Exynos ASV driver binds to a device node present in all Exynos DTS (generic compatible), it fails to probe except on the supported ones (only Exynos5422). This means that the regular boot process has a planned/normal device probe failure. Merging the ASV into Chip ID will remove this probe failure because the final driver will always bind, just with disabled ASV features. 2. Allows to use dev_info() as the SoC bus is present (since core_initcall). 3. Could speed things up because of execution of Chip ID code in a SMP environment (after bringing up secondary CPUs, unlike early_initcall), This reduces the amount of work to be done early, when the kernel has to bring up critical devices. 5. Makes the Chip ID code defer-probe friendly, Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Link: https://lore.kernel.org/r/20201207190517.262051-5-krzk@kernel.org Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
129 lines
2.5 KiB
Text
129 lines
2.5 KiB
Text
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
|
|
# http://www.samsung.com/
|
|
|
|
# Configuration options for the Samsung Exynos
|
|
|
|
menuconfig ARCH_EXYNOS
|
|
bool "Samsung Exynos"
|
|
depends on ARCH_MULTI_V7
|
|
select ARCH_SUPPORTS_BIG_ENDIAN
|
|
select ARM_AMBA
|
|
select ARM_GIC
|
|
select EXYNOS_IRQ_COMBINER
|
|
select COMMON_CLK_SAMSUNG
|
|
select EXYNOS_CHIPID
|
|
select EXYNOS_THERMAL
|
|
select EXYNOS_PMU
|
|
select EXYNOS_SROM
|
|
select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
|
|
select GPIOLIB
|
|
select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
|
|
select HAVE_ARM_SCU if SMP
|
|
select HAVE_S3C2410_I2C if I2C
|
|
select HAVE_S3C_RTC if RTC_CLASS
|
|
select PINCTRL
|
|
select PINCTRL_EXYNOS
|
|
select PM_GENERIC_DOMAINS if PM
|
|
select S5P_DEV_MFC
|
|
select SAMSUNG_MC
|
|
select SOC_SAMSUNG
|
|
select SRAM
|
|
select THERMAL
|
|
select THERMAL_OF
|
|
select MFD_SYSCON
|
|
select MEMORY
|
|
select CLKSRC_EXYNOS_MCT
|
|
select POWER_RESET
|
|
select POWER_RESET_SYSCON
|
|
select POWER_RESET_SYSCON_POWEROFF
|
|
help
|
|
Support for Samsung Exynos SoCs
|
|
|
|
if ARCH_EXYNOS
|
|
|
|
config S5P_DEV_MFC
|
|
bool
|
|
help
|
|
Compile in setup memory (init) code for MFC
|
|
|
|
config ARCH_EXYNOS3
|
|
bool "Samsung Exynos3"
|
|
default y
|
|
select ARM_CPU_SUSPEND if PM
|
|
help
|
|
Samsung Exynos3 (Cortex-A7) SoC based systems
|
|
|
|
config ARCH_EXYNOS4
|
|
bool "Samsung Exynos4"
|
|
default y
|
|
select ARM_CPU_SUSPEND if PM_SLEEP
|
|
select CLKSRC_SAMSUNG_PWM if CPU_EXYNOS4210
|
|
select CPU_EXYNOS4210
|
|
select GIC_NON_BANKED
|
|
help
|
|
Samsung Exynos4 (Cortex-A9) SoC based systems
|
|
|
|
config ARCH_EXYNOS5
|
|
bool "Samsung Exynos5"
|
|
default y
|
|
help
|
|
Samsung Exynos5 (Cortex-A15/A7) SoC based systems
|
|
|
|
comment "Exynos SoCs"
|
|
|
|
config SOC_EXYNOS3250
|
|
bool "Samsung Exynos3250"
|
|
default y
|
|
depends on ARCH_EXYNOS3
|
|
|
|
config CPU_EXYNOS4210
|
|
bool "Samsung Exynos4210"
|
|
default y
|
|
depends on ARCH_EXYNOS4
|
|
|
|
config SOC_EXYNOS4412
|
|
bool "Samsung Exynos4412"
|
|
default y
|
|
depends on ARCH_EXYNOS4
|
|
|
|
config SOC_EXYNOS5250
|
|
bool "Samsung Exynos5250"
|
|
default y
|
|
depends on ARCH_EXYNOS5
|
|
|
|
config SOC_EXYNOS5260
|
|
bool "Samsung Exynos5260"
|
|
default y
|
|
depends on ARCH_EXYNOS5
|
|
|
|
config SOC_EXYNOS5410
|
|
bool "Samsung Exynos5410"
|
|
default y
|
|
depends on ARCH_EXYNOS5
|
|
|
|
config SOC_EXYNOS5420
|
|
bool "Samsung Exynos5420"
|
|
default y
|
|
depends on ARCH_EXYNOS5
|
|
select EXYNOS_MCPM if SMP
|
|
select ARM_CCI400_PORT_CTRL
|
|
select ARM_CPU_SUSPEND
|
|
|
|
config SOC_EXYNOS5800
|
|
bool "Samsung EXYNOS5800"
|
|
default y
|
|
depends on SOC_EXYNOS5420
|
|
select EXYNOS_REGULATOR_COUPLER
|
|
|
|
config EXYNOS_MCPM
|
|
bool
|
|
select MCPM
|
|
|
|
config EXYNOS_CPU_SUSPEND
|
|
bool
|
|
select ARM_CPU_SUSPEND
|
|
default PM_SLEEP || ARM_EXYNOS_CPUIDLE
|
|
|
|
endif
|