Message ID | 000001cf70f0$2e48f930$8adaeb90$@samsung.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Jonghwan Choi wrote: > > Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to > mach") which lands in samsung tree causes build breakage > for cpufreq-exynos like following: > > drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': > drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of > function 'soc_is_exynos4210' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > function 'soc_is_exynos4212' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > function 'soc_is_exynos4412' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of > function 'soc_is_exynos5250' > [-Werror=implicit-function-declaration] > cc1: some warnings being treated as errors > make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 > make[2]: *** Waiting for unfinished jobs.... > drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': > drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of > function 'soc_is_exynos4212' > [-Werror=implicit-function-declaration] > cc1: some warnings being treated as errors > make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 > make[1]: *** [drivers/cpufreq] Error 2 > This fixes above error with getting SoC information via > of_machine_is_compatible() instead of soc_is_exynosXXXX(). > Probably, Suggested-by: Tomasz Figa ? > Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> Looks better. Rafael, if you have no objection on this, shall I pick this into samsung tree for 3.16 because of the current build breakage with enabling exynos cpufreq? Thanks, Kukjin > --- > drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- > drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ > drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- > 3 files changed, 29 insertions(+), 10 deletions(-) > > diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos- > cpufreq.c > index f99cfe2..9aecffef 100644 > --- a/drivers/cpufreq/exynos-cpufreq.c > +++ b/drivers/cpufreq/exynos-cpufreq.c > @@ -17,6 +17,7 @@ > #include <linux/regulator/consumer.h> > #include <linux/cpufreq.h> > #include <linux/platform_device.h> > +#include <linux/of.h> > > #include <plat/cpu.h> > > @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct > platform_device *pdev) > if (!exynos_info) > return -ENOMEM; > > - if (soc_is_exynos4210()) > + if (of_machine_is_compatible("samsung,exynos4210")) { > + exynos_info->type = EXYNOS_SOC_4210; > + } else if (of_machine_is_compatible("samsung,exynos4212")) { > + exynos_info->type = EXYNOS_SOC_4212; > + } else if (of_machine_is_compatible("samsung,exynos4412")) { > + exynos_info->type = EXYNOS_SOC_4212; > + } else if (of_machine_is_compatible("samsung,exynos5250")) { > + exynos_info->type = EXYNOS_SOC_5250; > + } else { > + pr_err("%s: Unknown SoC type\n", __func__); > + return -ENODEV; > + } > + > + if (exynos_info->type == EXYNOS_SOC_4210) > ret = exynos4210_cpufreq_init(exynos_info); > - else if (soc_is_exynos4212() || soc_is_exynos4412()) > + else if (exynos_info->type == EXYNOS_SOC_4212 || exynos_info->type > == EXYNOS_SOC_4412) > ret = exynos4x12_cpufreq_init(exynos_info); > - else if (soc_is_exynos5250()) > + else if (exynos_info->type == EXYNOS_SOC_5250) > ret = exynos5250_cpufreq_init(exynos_info); > else > return 0; > diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos- > cpufreq.h > index 3ddade8..f189547 100644 > --- a/drivers/cpufreq/exynos-cpufreq.h > +++ b/drivers/cpufreq/exynos-cpufreq.h > @@ -17,6 +17,13 @@ enum cpufreq_level_index { > L20, > }; > > +enum exynos_soc_type { > + EXYNOS_SOC_4210, > + EXYNOS_SOC_4212, > + EXYNOS_SOC_4412, > + EXYNOS_SOC_5250, > +}; > + > #define APLL_FREQ(f, a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, m, p, s) > \ > { \ > .freq = (f) * 1000, \ > @@ -34,6 +41,7 @@ struct apll_freq { > }; > > struct exynos_dvfs_info { > + enum exynos_soc_type type; > unsigned long mpll_freq_khz; > unsigned int pll_safe_idx; > struct clk *cpu_clk; > diff --git a/drivers/cpufreq/exynos4x12-cpufreq.c > b/drivers/cpufreq/exynos4x12-cpufreq.c > index 466c76a..63a3907 100644 > --- a/drivers/cpufreq/exynos4x12-cpufreq.c > +++ b/drivers/cpufreq/exynos4x12-cpufreq.c > @@ -100,7 +100,6 @@ static struct apll_freq apll_freq_4412[] = { > static void exynos4x12_set_clkdiv(unsigned int div_index) > { > unsigned int tmp; > - unsigned int stat_cpu1; > > /* Change Divider - CPU0 */ > > @@ -115,13 +114,11 @@ static void exynos4x12_set_clkdiv(unsigned int > div_index) > tmp = apll_freq_4x12[div_index].clk_div_cpu1; > > __raw_writel(tmp, EXYNOS4_CLKDIV_CPU1); > - if (soc_is_exynos4212()) > - stat_cpu1 = 0x11; > - else > - stat_cpu1 = 0x111; > > - while (__raw_readl(EXYNOS4_CLKDIV_STATCPU1) & stat_cpu1) > + do { > cpu_relax(); > + tmp = __raw_readl(EXYNOS4_CLKDIV_STATCPU1); > + } while (tmp != 0x0); > } > > static void exynos4x12_set_apll(unsigned int index) > @@ -184,7 +181,7 @@ int exynos4x12_cpufreq_init(struct exynos_dvfs_info > *info) > if (IS_ERR(mout_apll)) > goto err_mout_apll; > > - if (soc_is_exynos4212()) > + if (info->type == EXYNOS_SOC_4212) > apll_freq_4x12 = apll_freq_4212; > else > apll_freq_4x12 = apll_freq_4412; > -- > 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 16 May 2014 15:48, Jonghwan Choi <jhbird.choi@samsung.com> wrote: > Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to mach") which lands in samsung tree causes build breakage > for cpufreq-exynos like following: > > drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': > drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of function 'soc_is_exynos4210' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4212' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4412' > [-Werror=implicit-function-declaration] > drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of function 'soc_is_exynos5250' > [-Werror=implicit-function-declaration] > cc1: some warnings being treated as errors > make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 > make[2]: *** Waiting for unfinished jobs.... > drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': > drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of function 'soc_is_exynos4212' > [-Werror=implicit-function-declaration] > cc1: some warnings being treated as errors > make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 > make[1]: *** [drivers/cpufreq] Error 2 Blank line here.. > This fixes above error with getting SoC information via of_machine_is_compatible() instead of soc_is_exynosXXXX(). > > Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> > --- > drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- > drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ > drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- > 3 files changed, 29 insertions(+), 10 deletions(-) > > diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c > index f99cfe2..9aecffef 100644 > --- a/drivers/cpufreq/exynos-cpufreq.c > +++ b/drivers/cpufreq/exynos-cpufreq.c > @@ -17,6 +17,7 @@ > #include <linux/regulator/consumer.h> > #include <linux/cpufreq.h> > #include <linux/platform_device.h> > +#include <linux/of.h> > > #include <plat/cpu.h> > > @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) > if (!exynos_info) > return -ENOMEM; > > - if (soc_is_exynos4210()) > + if (of_machine_is_compatible("samsung,exynos4210")) { > + exynos_info->type = EXYNOS_SOC_4210; > + } else if (of_machine_is_compatible("samsung,exynos4212")) { > + exynos_info->type = EXYNOS_SOC_4212; > + } else if (of_machine_is_compatible("samsung,exynos4412")) { > + exynos_info->type = EXYNOS_SOC_4212; 4412 ? > + } else if (of_machine_is_compatible("samsung,exynos5250")) { > + exynos_info->type = EXYNOS_SOC_5250; > + } else { > + pr_err("%s: Unknown SoC type\n", __func__); > + return -ENODEV; > + } > + > + if (exynos_info->type == EXYNOS_SOC_4210) > ret = exynos4210_cpufreq_init(exynos_info); > - else if (soc_is_exynos4212() || soc_is_exynos4412()) > + else if (exynos_info->type == EXYNOS_SOC_4212 || exynos_info->type == EXYNOS_SOC_4412) > ret = exynos4x12_cpufreq_init(exynos_info); > - else if (soc_is_exynos5250()) > + else if (exynos_info->type == EXYNOS_SOC_5250) > ret = exynos5250_cpufreq_init(exynos_info); > else > return 0; Do this in the first if/else only.. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Friday, May 16, 2014 07:54:01 PM Kukjin Kim wrote: > Jonghwan Choi wrote: > > > > Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to > > mach") which lands in samsung tree causes build breakage > > for cpufreq-exynos like following: > > > > drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': > > drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of > > function 'soc_is_exynos4210' > > [-Werror=implicit-function-declaration] > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > > function 'soc_is_exynos4212' > > [-Werror=implicit-function-declaration] > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > > function 'soc_is_exynos4412' > > [-Werror=implicit-function-declaration] > > drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of > > function 'soc_is_exynos5250' > > [-Werror=implicit-function-declaration] > > cc1: some warnings being treated as errors > > make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 > > make[2]: *** Waiting for unfinished jobs.... > > drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': > > drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of > > function 'soc_is_exynos4212' > > [-Werror=implicit-function-declaration] > > cc1: some warnings being treated as errors > > make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 > > make[1]: *** [drivers/cpufreq] Error 2 > > This fixes above error with getting SoC information via > > of_machine_is_compatible() instead of soc_is_exynosXXXX(). > > > > Probably, > Suggested-by: Tomasz Figa ? > > > Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> > > Looks better. > > Rafael, if you have no objection on this, shall I pick this into samsung > tree for 3.16 because of the current build breakage with enabling exynos > cpufreq? Please go ahead.
On 05/17/14 08:04, Rafael J. Wysocki wrote: > On Friday, May 16, 2014 07:54:01 PM Kukjin Kim wrote: >> Jonghwan Choi wrote: >>> >>> Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to >>> mach") which lands in samsung tree causes build breakage >>> for cpufreq-exynos like following: >>> >>> drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': >>> drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of >>> function 'soc_is_exynos4210' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of >>> function 'soc_is_exynos4212' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of >>> function 'soc_is_exynos4412' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of >>> function 'soc_is_exynos5250' >>> [-Werror=implicit-function-declaration] >>> cc1: some warnings being treated as errors >>> make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 >>> make[2]: *** Waiting for unfinished jobs.... >>> drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': >>> drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of >>> function 'soc_is_exynos4212' >>> [-Werror=implicit-function-declaration] >>> cc1: some warnings being treated as errors >>> make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 >>> make[1]: *** [drivers/cpufreq] Error 2 >>> This fixes above error with getting SoC information via >>> of_machine_is_compatible() instead of soc_is_exynosXXXX(). >>> >> >> Probably, >> Suggested-by: Tomasz Figa ? >> >>> Signed-off-by: Jonghwan Choi<jhbird.choi@samsung.com> >> >> Looks better. >> >> Rafael, if you have no objection on this, shall I pick this into samsung >> tree for 3.16 because of the current build breakage with enabling exynos >> cpufreq? > > Please go ahead. > Done. Thanks, Kukjin -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/16/14 20:07, Viresh Kumar wrote: > On 16 May 2014 15:48, Jonghwan Choi<jhbird.choi@samsung.com> wrote: >> Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to mach") which lands in samsung tree causes build breakage >> for cpufreq-exynos like following: >> >> drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': >> drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of function 'soc_is_exynos4210' >> [-Werror=implicit-function-declaration] >> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4212' >> [-Werror=implicit-function-declaration] >> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4412' >> [-Werror=implicit-function-declaration] >> drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of function 'soc_is_exynos5250' >> [-Werror=implicit-function-declaration] >> cc1: some warnings being treated as errors >> make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 >> make[2]: *** Waiting for unfinished jobs.... >> drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': >> drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of function 'soc_is_exynos4212' >> [-Werror=implicit-function-declaration] >> cc1: some warnings being treated as errors >> make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 >> make[1]: *** [drivers/cpufreq] Error 2 > > Blank line here.. > >> This fixes above error with getting SoC information via of_machine_is_compatible() instead of soc_is_exynosXXXX(). >> >> Signed-off-by: Jonghwan Choi<jhbird.choi@samsung.com> >> --- >> drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- >> drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ >> drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- >> 3 files changed, 29 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c >> index f99cfe2..9aecffef 100644 >> --- a/drivers/cpufreq/exynos-cpufreq.c >> +++ b/drivers/cpufreq/exynos-cpufreq.c >> @@ -17,6 +17,7 @@ >> #include<linux/regulator/consumer.h> >> #include<linux/cpufreq.h> >> #include<linux/platform_device.h> >> +#include<linux/of.h> >> >> #include<plat/cpu.h> >> >> @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) >> if (!exynos_info) >> return -ENOMEM; >> >> - if (soc_is_exynos4210()) >> + if (of_machine_is_compatible("samsung,exynos4210")) { >> + exynos_info->type = EXYNOS_SOC_4210; >> + } else if (of_machine_is_compatible("samsung,exynos4212")) { >> + exynos_info->type = EXYNOS_SOC_4212; >> + } else if (of_machine_is_compatible("samsung,exynos4412")) { >> + exynos_info->type = EXYNOS_SOC_4212; > > 4412 ? > Yes, I will fix when I apply. >> + } else if (of_machine_is_compatible("samsung,exynos5250")) { >> + exynos_info->type = EXYNOS_SOC_5250; >> + } else { >> + pr_err("%s: Unknown SoC type\n", __func__); >> + return -ENODEV; >> + } >> + >> + if (exynos_info->type == EXYNOS_SOC_4210) >> ret = exynos4210_cpufreq_init(exynos_info); >> - else if (soc_is_exynos4212() || soc_is_exynos4412()) >> + else if (exynos_info->type == EXYNOS_SOC_4212 || exynos_info->type == EXYNOS_SOC_4412) >> ret = exynos4x12_cpufreq_init(exynos_info); >> - else if (soc_is_exynos5250()) >> + else if (exynos_info->type == EXYNOS_SOC_5250) >> ret = exynos5250_cpufreq_init(exynos_info); >> else >> return 0; > > Do this in the first if/else only.. Probably, you mean following in above? >> - if (soc_is_exynos4210()) I've applied this with fixing typo you mentioned just now, if any concerns, please kindly let me know. Thanks, Kukjin -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Kukjin, On 17.05.2014 01:24, Kukjin Kim wrote: > On 05/17/14 08:04, Rafael J. Wysocki wrote: >> On Friday, May 16, 2014 07:54:01 PM Kukjin Kim wrote: >>> Jonghwan Choi wrote: >>>> >>>> Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from >>>> plat to >>>> mach") which lands in samsung tree causes build breakage >>>> for cpufreq-exynos like following: >>>> >>>> drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': >>>> drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of >>>> function 'soc_is_exynos4210' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of >>>> function 'soc_is_exynos4212' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of >>>> function 'soc_is_exynos4412' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of >>>> function 'soc_is_exynos5250' >>>> [-Werror=implicit-function-declaration] >>>> cc1: some warnings being treated as errors >>>> make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 >>>> make[2]: *** Waiting for unfinished jobs.... >>>> drivers/cpufreq/exynos4x12-cpufreq.c: In function >>>> 'exynos4x12_set_clkdiv': >>>> drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit >>>> declaration of >>>> function 'soc_is_exynos4212' >>>> [-Werror=implicit-function-declaration] >>>> cc1: some warnings being treated as errors >>>> make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 >>>> make[1]: *** [drivers/cpufreq] Error 2 >>>> This fixes above error with getting SoC information via >>>> of_machine_is_compatible() instead of soc_is_exynosXXXX(). >>>> >>> >>> Probably, >>> Suggested-by: Tomasz Figa ? >>> >>>> Signed-off-by: Jonghwan Choi<jhbird.choi@samsung.com> >>> >>> Looks better. >>> >>> Rafael, if you have no objection on this, shall I pick this into samsung >>> tree for 3.16 because of the current build breakage with enabling exynos >>> cpufreq? >> >> Please go ahead. >> > Done. What about Viresh's comments? Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 17.05.2014 01:26, Kukjin Kim wrote: > On 05/16/14 20:07, Viresh Kumar wrote: >> On 16 May 2014 15:48, Jonghwan Choi<jhbird.choi@samsung.com> wrote: >>> Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from >>> plat to mach") which lands in samsung tree causes build breakage >>> for cpufreq-exynos like following: >>> >>> drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': >>> drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration >>> of function 'soc_is_exynos4210' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration >>> of function 'soc_is_exynos4212' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration >>> of function 'soc_is_exynos4412' >>> [-Werror=implicit-function-declaration] >>> drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration >>> of function 'soc_is_exynos5250' >>> [-Werror=implicit-function-declaration] >>> cc1: some warnings being treated as errors >>> make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 >>> make[2]: *** Waiting for unfinished jobs.... >>> drivers/cpufreq/exynos4x12-cpufreq.c: In function >>> 'exynos4x12_set_clkdiv': >>> drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit >>> declaration of function 'soc_is_exynos4212' >>> [-Werror=implicit-function-declaration] >>> cc1: some warnings being treated as errors >>> make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 >>> make[1]: *** [drivers/cpufreq] Error 2 >> >> Blank line here.. >> >>> This fixes above error with getting SoC information via >>> of_machine_is_compatible() instead of soc_is_exynosXXXX(). >>> >>> Signed-off-by: Jonghwan Choi<jhbird.choi@samsung.com> >>> --- >>> drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- >>> drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ >>> drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- >>> 3 files changed, 29 insertions(+), 10 deletions(-) >>> >>> diff --git a/drivers/cpufreq/exynos-cpufreq.c >>> b/drivers/cpufreq/exynos-cpufreq.c >>> index f99cfe2..9aecffef 100644 >>> --- a/drivers/cpufreq/exynos-cpufreq.c >>> +++ b/drivers/cpufreq/exynos-cpufreq.c >>> @@ -17,6 +17,7 @@ >>> #include<linux/regulator/consumer.h> >>> #include<linux/cpufreq.h> >>> #include<linux/platform_device.h> >>> +#include<linux/of.h> >>> >>> #include<plat/cpu.h> >>> >>> @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct >>> platform_device *pdev) >>> if (!exynos_info) >>> return -ENOMEM; >>> >>> - if (soc_is_exynos4210()) >>> + if (of_machine_is_compatible("samsung,exynos4210")) { >>> + exynos_info->type = EXYNOS_SOC_4210; >>> + } else if (of_machine_is_compatible("samsung,exynos4212")) { >>> + exynos_info->type = EXYNOS_SOC_4212; >>> + } else if (of_machine_is_compatible("samsung,exynos4412")) { >>> + exynos_info->type = EXYNOS_SOC_4212; >> >> 4412 ? >> > Yes, I will fix when I apply. > >>> + } else if (of_machine_is_compatible("samsung,exynos5250")) { >>> + exynos_info->type = EXYNOS_SOC_5250; >>> + } else { >>> + pr_err("%s: Unknown SoC type\n", __func__); >>> + return -ENODEV; >>> + } >>> + >>> + if (exynos_info->type == EXYNOS_SOC_4210) >>> ret = exynos4210_cpufreq_init(exynos_info); >>> - else if (soc_is_exynos4212() || soc_is_exynos4412()) >>> + else if (exynos_info->type == EXYNOS_SOC_4212 || >>> exynos_info->type == EXYNOS_SOC_4412) >>> ret = exynos4x12_cpufreq_init(exynos_info); >>> - else if (soc_is_exynos5250()) >>> + else if (exynos_info->type == EXYNOS_SOC_5250) >>> ret = exynos5250_cpufreq_init(exynos_info); >>> else >>> return 0; >> >> Do this in the first if/else only.. > > Probably, you mean following in above? > >>> - if (soc_is_exynos4210()) > > I've applied this with fixing typo you mentioned just now, if any > concerns, please kindly let me know. I think Viresh meant merging the two if/else blocks together, as follows: if (of_machine_is_compatible("samsung,exynos4210")) { exynos_info->type = EXYNOS_SOC_4210; ret = exynos4210_cpufreq_init(exynos_info); } else if (of_machine_is_compatible("samsung,exynos4212")) { exynos_info->type = EXYNOS_SOC_4212; ret = exynos4x12_cpufreq_init(exynos_info); } else if (of_machine_is_compatible("samsung,exynos4412")) { exynos_info->type = EXYNOS_SOC_4412; ret = exynos4x12_cpufreq_init(exynos_info); } else if (of_machine_is_compatible("samsung,exynos5250")) { exynos_info->type = EXYNOS_SOC_5250; ret = exynos5250_cpufreq_init(exynos_info); } else { pr_err("%s: Unknown SoC type\n", __func__); return -ENODEV; } Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/17/14 08:37, Tomasz Figa wrote: > On 17.05.2014 01:26, Kukjin Kim wrote: >> On 05/16/14 20:07, Viresh Kumar wrote: >>> On 16 May 2014 15:48, Jonghwan Choi<jhbird.choi@samsung.com> wrote: >>>> Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from >>>> plat to mach") which lands in samsung tree causes build breakage >>>> for cpufreq-exynos like following: >>>> >>>> drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': >>>> drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration >>>> of function 'soc_is_exynos4210' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration >>>> of function 'soc_is_exynos4212' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration >>>> of function 'soc_is_exynos4412' >>>> [-Werror=implicit-function-declaration] >>>> drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration >>>> of function 'soc_is_exynos5250' >>>> [-Werror=implicit-function-declaration] >>>> cc1: some warnings being treated as errors >>>> make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 >>>> make[2]: *** Waiting for unfinished jobs.... >>>> drivers/cpufreq/exynos4x12-cpufreq.c: In function >>>> 'exynos4x12_set_clkdiv': >>>> drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit >>>> declaration of function 'soc_is_exynos4212' >>>> [-Werror=implicit-function-declaration] >>>> cc1: some warnings being treated as errors >>>> make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 >>>> make[1]: *** [drivers/cpufreq] Error 2 >>> >>> Blank line here.. >>> >>>> This fixes above error with getting SoC information via >>>> of_machine_is_compatible() instead of soc_is_exynosXXXX(). >>>> >>>> Signed-off-by: Jonghwan Choi<jhbird.choi@samsung.com> >>>> --- >>>> drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- >>>> drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ >>>> drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- >>>> 3 files changed, 29 insertions(+), 10 deletions(-) >>>> >>>> diff --git a/drivers/cpufreq/exynos-cpufreq.c >>>> b/drivers/cpufreq/exynos-cpufreq.c >>>> index f99cfe2..9aecffef 100644 >>>> --- a/drivers/cpufreq/exynos-cpufreq.c >>>> +++ b/drivers/cpufreq/exynos-cpufreq.c >>>> @@ -17,6 +17,7 @@ >>>> #include<linux/regulator/consumer.h> >>>> #include<linux/cpufreq.h> >>>> #include<linux/platform_device.h> >>>> +#include<linux/of.h> >>>> >>>> #include<plat/cpu.h> >>>> >>>> @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct >>>> platform_device *pdev) >>>> if (!exynos_info) >>>> return -ENOMEM; >>>> >>>> - if (soc_is_exynos4210()) >>>> + if (of_machine_is_compatible("samsung,exynos4210")) { >>>> + exynos_info->type = EXYNOS_SOC_4210; >>>> + } else if (of_machine_is_compatible("samsung,exynos4212")) { >>>> + exynos_info->type = EXYNOS_SOC_4212; >>>> + } else if (of_machine_is_compatible("samsung,exynos4412")) { >>>> + exynos_info->type = EXYNOS_SOC_4212; >>> >>> 4412 ? >>> >> Yes, I will fix when I apply. >> >>>> + } else if (of_machine_is_compatible("samsung,exynos5250")) { >>>> + exynos_info->type = EXYNOS_SOC_5250; >>>> + } else { >>>> + pr_err("%s: Unknown SoC type\n", __func__); >>>> + return -ENODEV; >>>> + } >>>> + >>>> + if (exynos_info->type == EXYNOS_SOC_4210) >>>> ret = exynos4210_cpufreq_init(exynos_info); >>>> - else if (soc_is_exynos4212() || soc_is_exynos4412()) >>>> + else if (exynos_info->type == EXYNOS_SOC_4212 || >>>> exynos_info->type == EXYNOS_SOC_4412) >>>> ret = exynos4x12_cpufreq_init(exynos_info); >>>> - else if (soc_is_exynos5250()) >>>> + else if (exynos_info->type == EXYNOS_SOC_5250) >>>> ret = exynos5250_cpufreq_init(exynos_info); >>>> else >>>> return 0; >>> >>> Do this in the first if/else only.. >> >> Probably, you mean following in above? >> >>>> - if (soc_is_exynos4210()) >> >> I've applied this with fixing typo you mentioned just now, if any >> concerns, please kindly let me know. > > I think Viresh meant merging the two if/else blocks together, as follows: > > if (of_machine_is_compatible("samsung,exynos4210")) { > exynos_info->type = EXYNOS_SOC_4210; > ret = exynos4210_cpufreq_init(exynos_info); > } else if (of_machine_is_compatible("samsung,exynos4212")) { > exynos_info->type = EXYNOS_SOC_4212; > ret = exynos4x12_cpufreq_init(exynos_info); > } else if (of_machine_is_compatible("samsung,exynos4412")) { > exynos_info->type = EXYNOS_SOC_4412; > ret = exynos4x12_cpufreq_init(exynos_info); > } else if (of_machine_is_compatible("samsung,exynos5250")) { > exynos_info->type = EXYNOS_SOC_5250; > ret = exynos5250_cpufreq_init(exynos_info); > } else { > pr_err("%s: Unknown SoC type\n", __func__); > return -ENODEV; > } > Yeah, I just now realized same thing :( looks better, the SoC type is only used for 4212/4412 in other place though...I will modify as per Viresh's suggestion. Thanks, Kukjin -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Saturday, May 17, 2014 01:04:29 AM Rafael J. Wysocki wrote: > On Friday, May 16, 2014 07:54:01 PM Kukjin Kim wrote: > > Jonghwan Choi wrote: > > > > > > Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to > > > mach") which lands in samsung tree causes build breakage > > > for cpufreq-exynos like following: > > > > > > drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': > > > drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of > > > function 'soc_is_exynos4210' > > > [-Werror=implicit-function-declaration] > > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > > > function 'soc_is_exynos4212' > > > [-Werror=implicit-function-declaration] > > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of > > > function 'soc_is_exynos4412' > > > [-Werror=implicit-function-declaration] > > > drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of > > > function 'soc_is_exynos5250' > > > [-Werror=implicit-function-declaration] > > > cc1: some warnings being treated as errors > > > make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 > > > make[2]: *** Waiting for unfinished jobs.... > > > drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': > > > drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of > > > function 'soc_is_exynos4212' > > > [-Werror=implicit-function-declaration] > > > cc1: some warnings being treated as errors > > > make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 > > > make[1]: *** [drivers/cpufreq] Error 2 > > > This fixes above error with getting SoC information via > > > of_machine_is_compatible() instead of soc_is_exynosXXXX(). > > > > > > > Probably, > > Suggested-by: Tomasz Figa ? > > > > > Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> > > > > Looks better. > > > > Rafael, if you have no objection on this, shall I pick this into samsung > > tree for 3.16 because of the current build breakage with enabling exynos > > cpufreq? > > Please go ahead. Actually, this conflicts with one patch already in my tree. The resoultion is quite obvious, but it would be better to avoid this conflict altogether. Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Rafael J. Wysocki wrote: > > On Saturday, May 17, 2014 01:04:29 AM Rafael J. Wysocki wrote: > > On Friday, May 16, 2014 07:54:01 PM Kukjin Kim wrote: > > > Jonghwan Choi wrote: > > > > > > > > Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from > plat to > > > > mach") which lands in samsung tree causes build breakage > > > > for cpufreq-exynos like following: > > > > > > > > drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': > > > > drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration > of > > > > function 'soc_is_exynos4210' > > > > [-Werror=implicit-function-declaration] > > > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration > of > > > > function 'soc_is_exynos4212' > > > > [-Werror=implicit-function-declaration] > > > > drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration > of > > > > function 'soc_is_exynos4412' > > > > [-Werror=implicit-function-declaration] > > > > drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration > of > > > > function 'soc_is_exynos5250' > > > > [-Werror=implicit-function-declaration] > > > > cc1: some warnings being treated as errors > > > > make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 > > > > make[2]: *** Waiting for unfinished jobs.... > > > > drivers/cpufreq/exynos4x12-cpufreq.c: In function > 'exynos4x12_set_clkdiv': > > > > drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit > declaration of > > > > function 'soc_is_exynos4212' > > > > [-Werror=implicit-function-declaration] > > > > cc1: some warnings being treated as errors > > > > make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 > > > > make[1]: *** [drivers/cpufreq] Error 2 > > > > This fixes above error with getting SoC information via > > > > of_machine_is_compatible() instead of soc_is_exynosXXXX(). > > > > > > > > > > Probably, > > > Suggested-by: Tomasz Figa ? > > > > > > > Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> > > > > > > Looks better. > > > > > > Rafael, if you have no objection on this, shall I pick this into > samsung > > > tree for 3.16 because of the current build breakage with enabling > exynos > > > cpufreq? > > > > Please go ahead. > > Actually, this conflicts with one patch already in my tree. The > resoultion > is quite obvious, but it would be better to avoid this conflict altogether. > Yeah. If you don't mind, shall I pick the patch (commit e5eaa445b0dc)into samsung tree with your ack? Thanks, Kukjin -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c index f99cfe2..9aecffef 100644 --- a/drivers/cpufreq/exynos-cpufreq.c +++ b/drivers/cpufreq/exynos-cpufreq.c @@ -17,6 +17,7 @@ #include <linux/regulator/consumer.h> #include <linux/cpufreq.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <plat/cpu.h> @@ -163,11 +164,24 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) if (!exynos_info) return -ENOMEM; - if (soc_is_exynos4210()) + if (of_machine_is_compatible("samsung,exynos4210")) { + exynos_info->type = EXYNOS_SOC_4210; + } else if (of_machine_is_compatible("samsung,exynos4212")) { + exynos_info->type = EXYNOS_SOC_4212; + } else if (of_machine_is_compatible("samsung,exynos4412")) { + exynos_info->type = EXYNOS_SOC_4212; + } else if (of_machine_is_compatible("samsung,exynos5250")) { + exynos_info->type = EXYNOS_SOC_5250; + } else { + pr_err("%s: Unknown SoC type\n", __func__); + return -ENODEV; + } + + if (exynos_info->type == EXYNOS_SOC_4210) ret = exynos4210_cpufreq_init(exynos_info); - else if (soc_is_exynos4212() || soc_is_exynos4412()) + else if (exynos_info->type == EXYNOS_SOC_4212 || exynos_info->type == EXYNOS_SOC_4412) ret = exynos4x12_cpufreq_init(exynos_info); - else if (soc_is_exynos5250()) + else if (exynos_info->type == EXYNOS_SOC_5250) ret = exynos5250_cpufreq_init(exynos_info); else return 0; diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos-cpufreq.h index 3ddade8..f189547 100644 --- a/drivers/cpufreq/exynos-cpufreq.h +++ b/drivers/cpufreq/exynos-cpufreq.h @@ -17,6 +17,13 @@ enum cpufreq_level_index { L20, }; +enum exynos_soc_type { + EXYNOS_SOC_4210, + EXYNOS_SOC_4212, + EXYNOS_SOC_4412, + EXYNOS_SOC_5250, +}; + #define APLL_FREQ(f, a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, m, p, s) \ { \ .freq = (f) * 1000, \ @@ -34,6 +41,7 @@ struct apll_freq { }; struct exynos_dvfs_info { + enum exynos_soc_type type; unsigned long mpll_freq_khz; unsigned int pll_safe_idx; struct clk *cpu_clk; diff --git a/drivers/cpufreq/exynos4x12-cpufreq.c b/drivers/cpufreq/exynos4x12-cpufreq.c index 466c76a..63a3907 100644 --- a/drivers/cpufreq/exynos4x12-cpufreq.c +++ b/drivers/cpufreq/exynos4x12-cpufreq.c @@ -100,7 +100,6 @@ static struct apll_freq apll_freq_4412[] = { static void exynos4x12_set_clkdiv(unsigned int div_index) { unsigned int tmp; - unsigned int stat_cpu1; /* Change Divider - CPU0 */ @@ -115,13 +114,11 @@ static void exynos4x12_set_clkdiv(unsigned int div_index) tmp = apll_freq_4x12[div_index].clk_div_cpu1; __raw_writel(tmp, EXYNOS4_CLKDIV_CPU1); - if (soc_is_exynos4212()) - stat_cpu1 = 0x11; - else - stat_cpu1 = 0x111; - while (__raw_readl(EXYNOS4_CLKDIV_STATCPU1) & stat_cpu1) + do { cpu_relax(); + tmp = __raw_readl(EXYNOS4_CLKDIV_STATCPU1); + } while (tmp != 0x0); } static void exynos4x12_set_apll(unsigned int index) @@ -184,7 +181,7 @@ int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info) if (IS_ERR(mout_apll)) goto err_mout_apll; - if (soc_is_exynos4212()) + if (info->type == EXYNOS_SOC_4212) apll_freq_4x12 = apll_freq_4212; else apll_freq_4x12 = apll_freq_4412;
Commit 7da83a80 ("ARM: EXYNOS: Migrate Exynos specific macros from plat to mach") which lands in samsung tree causes build breakage for cpufreq-exynos like following: drivers/cpufreq/exynos-cpufreq.c: In function 'exynos_cpufreq_probe': drivers/cpufreq/exynos-cpufreq.c:166:2: error: implicit declaration of function 'soc_is_exynos4210' [-Werror=implicit-function-declaration] drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4212' [-Werror=implicit-function-declaration] drivers/cpufreq/exynos-cpufreq.c:168:2: error: implicit declaration of function 'soc_is_exynos4412' [-Werror=implicit-function-declaration] drivers/cpufreq/exynos-cpufreq.c:170:2: error: implicit declaration of function 'soc_is_exynos5250' [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors make[2]: *** [drivers/cpufreq/exynos-cpufreq.o] Error 1 make[2]: *** Waiting for unfinished jobs.... drivers/cpufreq/exynos4x12-cpufreq.c: In function 'exynos4x12_set_clkdiv': drivers/cpufreq/exynos4x12-cpufreq.c:118:2: error: implicit declaration of function 'soc_is_exynos4212' [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors make[2]: *** [drivers/cpufreq/exynos4x12-cpufreq.o] Error 1 make[1]: *** [drivers/cpufreq] Error 2 This fixes above error with getting SoC information via of_machine_is_compatible() instead of soc_is_exynosXXXX(). Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> --- drivers/cpufreq/exynos-cpufreq.c | 20 +++++++++++++++++--- drivers/cpufreq/exynos-cpufreq.h | 8 ++++++++ drivers/cpufreq/exynos4x12-cpufreq.c | 11 ++++------- 3 files changed, 29 insertions(+), 10 deletions(-)