On Sat, Jul 19, 2014 at 6:57 PM, Tomasz Figa <tomasz.figa@xxxxxxxxx> wrote: > On 14.07.2014 15:38, Thomas Abraham wrote: >> From: Thomas Abraham <thomas.ab@xxxxxxxxxxx> >> >> Remove the platform device instantiation for exynos cpufreq driver and add the >> platform device for generic cpufreq drivers. >> >> Cc: Kukjin Kim <kgene.kim@xxxxxxxxxxx> >> Signed-off-by: Thomas Abraham <thomas.ab@xxxxxxxxxxx> >> Acked-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx> >> Reviewed-by: Amit Daniel Kachhap <amit.daniel@xxxxxxxxxxx> >> Tested-by: Arjun K.V <arjun.kv@xxxxxxxxxxx> >> --- >> 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. 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html