Thread (25 messages) 25 messages, 5 authors, 2014-07-29
STALE4365d

[PATCH v7 5/6] ARM: Exynos: switch to using generic cpufreq driver for exynos4210/5250/5420

From: Thomas Abraham <hidden>
Date: 2014-07-29 05:37:44
Also in: linux-pm, linux-samsung-soc

On Sat, Jul 19, 2014 at 6:57 PM, Tomasz Figa [off-list ref] wrote:
On 14.07.2014 15:38, Thomas Abraham wrote:
quoted
From: Thomas Abraham <redacted>

Remove the platform device instantiation for exynos cpufreq driver and add the
platform device for generic cpufreq drivers.

Cc: Kukjin Kim <redacted>
Signed-off-by: Thomas Abraham <redacted>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Amit Daniel Kachhap <redacted>
Tested-by: Arjun K.V <redacted>
---
 arch/arm/mach-exynos/exynos.c |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 2a43a17..5028b35 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -183,7 +183,20 @@ void __init exynos_cpuidle_init(void)

 void __init exynos_cpufreq_init(void)
 {
-     platform_device_register_simple("exynos-cpufreq", -1, NULL, 0);
+     char *dev_name;
+
+     if (of_machine_is_compatible("samsung,exynos5440"))
+             return;
The original code registers the device unconditionally. Why Exynos5440
is excluded now?
quoted
+     if (of_machine_is_compatible("samsung,exynos5420"))
+             dev_name = "arm-bL-cpufreq-dt";
+     else
+             if (of_machine_is_compatible("samsung,exynos4412") ||
+                     of_machine_is_compatible("samsung,exynos4212"))
+                     dev_name = "exynos-cpufreq";
+             else
+                     dev_name = "cpufreq-cpu0";
+
+     platform_device_register_simple(dev_name, -1, NULL, 0);
 }
How about rewriting this to:

static const struct of_device_id exynos_cpufreq_matches[] = {
        { .compatible = "samsung,exynos5420",
                        .data = "arm-bL-cpufreq-dt" },
        { .compatible = "samsung,exynos5250",
                        .data = "cpufreq-cpu0" },
        { .compatible = "samsung,exynos4210",
                        .data = "cpufreq-cpu0" },
        { /* sentinel */ }
};

void __init exynos_cpufreq_init(void)
{
        struct device_node *root = of_find_node_by_path("/");
        const struct of_device_id *match;

        match = of_match_node(exynos_cpufreq_matches, root);
        if (!match) {
                platform_device_register_simple("exynos-cpufreq", -1,
                                                NULL, 0);
                return;
        }

        platform_device_register_simple(match->data, -1, NULL, 0);
}

This way it is much more readable and original behavior is preserved for
any SoCs not supported by new drivers.
Thanks for the suggestion Tomasz.
Best regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help