Commit d12523f1 authored by Olof Johansson's avatar Olof Johansson

Merge tag 'samsung-drivers-4.12' of...

Merge tag 'samsung-drivers-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into next/drivers

Samsung SoC drivers update for v4.12 - split building of the PMU driver between
ARMv7 and ARMv8.

* tag 'samsung-drivers-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 32d8b52b a0ebf662
...@@ -8,7 +8,13 @@ if SOC_SAMSUNG ...@@ -8,7 +8,13 @@ if SOC_SAMSUNG
config EXYNOS_PMU config EXYNOS_PMU
bool "Exynos PMU controller driver" if COMPILE_TEST bool "Exynos PMU controller driver" if COMPILE_TEST
depends on (ARM && ARCH_EXYNOS) || ((ARM || ARM64) && COMPILE_TEST) depends on ARCH_EXYNOS || ((ARM || ARM64) && COMPILE_TEST)
select EXYNOS_PMU_ARM_DRIVERS if ARM && ARCH_EXYNOS
# There is no need to enable these drivers for ARMv8
config EXYNOS_PMU_ARM_DRIVERS
bool "Exynos PMU ARMv7-specific driver extensions" if COMPILE_TEST
depends on EXYNOS_PMU
config EXYNOS_PM_DOMAINS config EXYNOS_PM_DOMAINS
bool "Exynos PM domains" if COMPILE_TEST bool "Exynos PM domains" if COMPILE_TEST
......
obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o exynos3250-pmu.o exynos4-pmu.o \ obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o
obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) += exynos3250-pmu.o exynos4-pmu.o \
exynos5250-pmu.o exynos5420-pmu.o exynos5250-pmu.o exynos5420-pmu.o
obj-$(CONFIG_EXYNOS_PM_DOMAINS) += pm_domains.o obj-$(CONFIG_EXYNOS_PM_DOMAINS) += pm_domains.o
...@@ -68,28 +68,38 @@ void exynos_sys_powerdown_conf(enum sys_powerdown mode) ...@@ -68,28 +68,38 @@ void exynos_sys_powerdown_conf(enum sys_powerdown mode)
} }
} }
/*
* Split the data between ARM architectures because it is relatively big
* and useless on other arch.
*/
#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS
#define exynos_pmu_data_arm_ptr(data) (&data)
#else
#define exynos_pmu_data_arm_ptr(data) NULL
#endif
/* /*
* PMU platform driver and devicetree bindings. * PMU platform driver and devicetree bindings.
*/ */
static const struct of_device_id exynos_pmu_of_device_ids[] = { static const struct of_device_id exynos_pmu_of_device_ids[] = {
{ {
.compatible = "samsung,exynos3250-pmu", .compatible = "samsung,exynos3250-pmu",
.data = &exynos3250_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos3250_pmu_data),
}, { }, {
.compatible = "samsung,exynos4210-pmu", .compatible = "samsung,exynos4210-pmu",
.data = &exynos4210_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos4210_pmu_data),
}, { }, {
.compatible = "samsung,exynos4212-pmu", .compatible = "samsung,exynos4212-pmu",
.data = &exynos4212_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos4212_pmu_data),
}, { }, {
.compatible = "samsung,exynos4412-pmu", .compatible = "samsung,exynos4412-pmu",
.data = &exynos4412_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos4412_pmu_data),
}, { }, {
.compatible = "samsung,exynos5250-pmu", .compatible = "samsung,exynos5250-pmu",
.data = &exynos5250_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos5250_pmu_data),
}, { }, {
.compatible = "samsung,exynos5420-pmu", .compatible = "samsung,exynos5420-pmu",
.data = &exynos5420_pmu_data, .data = exynos_pmu_data_arm_ptr(exynos5420_pmu_data),
}, { }, {
.compatible = "samsung,exynos5433-pmu", .compatible = "samsung,exynos5433-pmu",
}, },
......
...@@ -31,6 +31,8 @@ struct exynos_pmu_data { ...@@ -31,6 +31,8 @@ struct exynos_pmu_data {
}; };
extern void __iomem *pmu_base_addr; extern void __iomem *pmu_base_addr;
#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS
/* list of all exported SoC specific data */ /* list of all exported SoC specific data */
extern const struct exynos_pmu_data exynos3250_pmu_data; extern const struct exynos_pmu_data exynos3250_pmu_data;
extern const struct exynos_pmu_data exynos4210_pmu_data; extern const struct exynos_pmu_data exynos4210_pmu_data;
...@@ -38,6 +40,7 @@ extern const struct exynos_pmu_data exynos4212_pmu_data; ...@@ -38,6 +40,7 @@ extern const struct exynos_pmu_data exynos4212_pmu_data;
extern const struct exynos_pmu_data exynos4412_pmu_data; extern const struct exynos_pmu_data exynos4412_pmu_data;
extern const struct exynos_pmu_data exynos5250_pmu_data; extern const struct exynos_pmu_data exynos5250_pmu_data;
extern const struct exynos_pmu_data exynos5420_pmu_data; extern const struct exynos_pmu_data exynos5420_pmu_data;
#endif
extern void pmu_raw_writel(u32 val, u32 offset); extern void pmu_raw_writel(u32 val, u32 offset);
extern u32 pmu_raw_readl(u32 offset); extern u32 pmu_raw_readl(u32 offset);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment