From 526204780ec52b0f037f5ecdac6838698e64d8a3 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Fri, 10 Apr 2015 19:59:01 +0200 Subject: [PATCH] ARM: Exynos: switch to using generic cpufreq driver for Exynos4x12 The new CPU clock type allows the use of generic CPUfreq driver. Switch Exynos4x12 to using generic cpufreq driver. This patch also takes care of making ARM_EXYNOS_CPU_FREQ_BOOST_SW config option depend on cpufreq-dt driver instead of exynos-cpufreq one and fixes the minor issue present with the old code (support for 'boost' mode in the exynos-cpufreq driver was enabled for all supported SoCs even though 'boost' frequency was provided only for Exynos4x12 ones). Cc: Tomasz Figa Cc: Kukjin Kim Cc: Javier Martinez Canillas Cc: Thomas Abraham Signed-off-by: Bartlomiej Zolnierkiewicz --- arch/arm/mach-exynos/exynos.c | 14 ++++++++++++++ drivers/cpufreq/Kconfig.arm | 2 +- drivers/cpufreq/exynos-cpufreq.c | 3 --- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index ed9b48ce6751..e13eac15ad1f 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -229,6 +230,12 @@ static void __init exynos_init_irq(void) exynos_map_pmu(); } +struct cpufreq_dt_platform_data cpufreq_dt_pd = { +#ifdef CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW + .boost_supported = true, +#endif +}; + static const struct of_device_id exynos_cpufreq_matches[] = { { .compatible = "samsung,exynos4210", .data = "cpufreq-dt" }, { /* sentinel */ } @@ -239,6 +246,13 @@ static void __init exynos_cpufreq_init(void) struct device_node *root = of_find_node_by_path("/"); const struct of_device_id *match; + if (of_machine_is_compatible("samsung,exynos4212") || + of_machine_is_compatible("samsung,exynos4412")) { + platform_device_register_data(NULL, "cpufreq-dt", -1, + &cpufreq_dt_pd, sizeof(cpufreq_dt_pd)); + return; + } + match = of_match_node(exynos_cpufreq_matches, root); if (!match) { platform_device_register_simple("exynos-cpufreq", -1, NULL, 0); diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm index 1d7ddc549082..78cb0b9e1755 100644 --- a/drivers/cpufreq/Kconfig.arm +++ b/drivers/cpufreq/Kconfig.arm @@ -60,7 +60,7 @@ config ARM_EXYNOS5250_CPUFREQ config ARM_EXYNOS_CPU_FREQ_BOOST_SW bool "EXYNOS Frequency Overclocking - Software" - depends on ARM_EXYNOS_CPUFREQ && THERMAL + depends on CPUFREQ_DT && THERMAL select CPU_FREQ_BOOST_SW select EXYNOS_THERMAL help diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c index 2d78f63ded07..e48d4f157724 100644 --- a/drivers/cpufreq/exynos-cpufreq.c +++ b/drivers/cpufreq/exynos-cpufreq.c @@ -125,9 +125,6 @@ static struct cpufreq_driver exynos_driver = { .init = exynos_cpufreq_cpu_init, .name = "exynos_cpufreq", .attr = cpufreq_generic_attr, -#ifdef CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW - .boost_supported = true, -#endif #ifdef CONFIG_PM .suspend = cpufreq_generic_suspend, #endif -- 2.34.1