diff mbox

[v3] cpufreq: exynos: Fix the compile error

Message ID 000001cf70f0$2e48f930$8adaeb90$@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

jhbird.choi@samsung.com May 16, 2014, 10:18 a.m. UTC
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(-)

Comments

Kim Kukjin May 16, 2014, 10:54 a.m. UTC | #1
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
Viresh Kumar May 16, 2014, 11:07 a.m. UTC | #2
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..
Rafael J. Wysocki May 16, 2014, 11:04 p.m. UTC | #3
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.
Kim Kukjin May 16, 2014, 11:24 p.m. UTC | #4
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
Kim Kukjin May 16, 2014, 11:26 p.m. UTC | #5
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
Tomasz Figa May 16, 2014, 11:28 p.m. UTC | #6
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
Tomasz Figa May 16, 2014, 11:37 p.m. UTC | #7
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
Kim Kukjin May 16, 2014, 11:44 p.m. UTC | #8
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
Rafael J. Wysocki May 19, 2014, 11:33 p.m. UTC | #9
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
Kim Kukjin May 20, 2014, 12:29 a.m. UTC | #10
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 mbox

Patch

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;