Message ID | 000001cf70f0$2e48f930$8adaeb90$@samsung.com (mailing list archive) |
---|---|
State | New, 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
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..
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
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
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
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
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
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
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
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(-)