From mboxrd@z Thu Jan 1 00:00:00 1970 From: tomasz.figa@gmail.com (Tomasz Figa) Date: Sat, 19 Jul 2014 15:27:35 +0200 Subject: [PATCH v7 5/6] ARM: Exynos: switch to using generic cpufreq driver for exynos4210/5250/5420 In-Reply-To: <1405345118-4269-6-git-send-email-thomas.ab@samsung.com> References: <1405345118-4269-1-git-send-email-thomas.ab@samsung.com> <1405345118-4269-6-git-send-email-thomas.ab@samsung.com> Message-ID: <53CA7247.1080009@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 14.07.2014 15:38, Thomas Abraham wrote: > From: Thomas Abraham > > Remove the platform device instantiation for exynos cpufreq driver and add the > platform device for generic cpufreq drivers. > > Cc: Kukjin Kim > Signed-off-by: Thomas Abraham > Acked-by: Viresh Kumar > Reviewed-by: Amit Daniel Kachhap > Tested-by: Arjun K.V > --- > 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? > + 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. Best regards, Tomasz