diff mbox

[v3,3/5] ARM: Exynos: switch to using generic cpufreq driver for Exynos4x12

Message ID 2347616.SxxJmTVssu@amdc1976 (mailing list archive)
State New, archived
Headers show

Commit Message

Bartlomiej Zolnierkiewicz Aug. 3, 2015, 1:55 p.m. UTC
Hi,

On Monday, August 03, 2015 08:15:13 PM Krzysztof Kozlowski wrote:
> W dniu 03.08.2015 o 19:36, Bartlomiej Zolnierkiewicz pisze:
> > On Monday, August 03, 2015 03:59:26 PM Viresh Kumar wrote:
> >> On 03-08-15, 12:17, Bartlomiej Zolnierkiewicz wrote:
> >>>
> >>> Hi,
> >>>
> >>> On Saturday, August 01, 2015 04:47:21 PM Viresh Kumar wrote:
> >>>> On 31-07-15, 20:49, Bartlomiej Zolnierkiewicz wrote:
> >>>>> diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
> >>>>> index 659879a..bf6d596 100644
> >>>>> --- a/drivers/cpufreq/Kconfig
> >>>>> +++ b/drivers/cpufreq/Kconfig
> >>>>> @@ -191,6 +191,7 @@ config CPUFREQ_DT
> >>>>>  	# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
> >>>>>  	depends on !CPU_THERMAL || THERMAL
> >>>>>  	select PM_OPP
> >>>>> +	select EXYNOS_THERMAL if ARCH_EXYNOS
> >>>>>  	help
> >>>>>  	  This adds a generic DT based cpufreq driver for frequency management.
> >>>>>  	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
> >>>>
> >>>> No, we shouldn't pollute generic Kconfig options with platform specific stuff.
> >>>
> >>> The old code depended on this.  You couldn't enable boost support
> >>> without enabling thermal support (ARM_EXYNOS_CPU_FREQ_BOOST_SW
> >>> config option selected EXYNOS_THERMAL).
> >>>
> >>>> Why don't you enable thermal in your .config?
> >>>
> >>> It is enabled in exynos_defconfig but without the above change it
> >>> can disabled manually which is something that we don't want.
> >>
> >> You are not getting it. I am not asking you to not select thermal, but
> >> to select it from within your architecture Kconfig option if you want.
> > 
> > OK.  Krzysztof/Kukjin do you agree with selecting EXYNOS_THERMAL
> > from ARCH_EXYNOS in the platform code?
> 
> I agree, with your explanation it seems good. Can you just add this
> justification to the commit message?

Updated patch below (I'm not resending the whole series as all other
patches remain unchanged).

> > 
> >> Over that, thermal is really an option, not a dependency. So, if
> >> someone manually disables it, its his problem not yours :)
> > 
> > I would really like it to be dependency not an option (+ I think
> > that ideally it should be checked at runtime, IOW we should be
> > checking from cpufreq-dt driver if the thermal support is enabled
> > before enabling boost support).
> 
> That would be the best. It is fine with me if you want to do this in
> consecutive patches (after applying patch selecting/depending on it in
> mach-exynos code).

---------------------8<-------------------

From 2595b5e6164a2d1b76626e14302b148b7af5e050 Mon Sep 17 00:00:00 2001
From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Date: Mon, 3 Aug 2015 15:49:06 +0200
Subject: [PATCH] ARM: Exynos: switch to using generic cpufreq driver for
 Exynos4x12

The new CPU clock type allows the use of generic CPUfreq driver.
Switch Exynos4x12 to using generic cpufreq driver.

Previously (when exynos-cpufreq driver was used with boost
functionality) ARM_EXYNOS_CPU_FREQ_BOOST_SW config option
(which enabled boost functionality) selected EXYNOS_THERMAL
one.  After switching Exynos4x12 platforms to use cpufreq-dt
driver boost support is enabled in the cpufreq-dt driver
itself (because there are turbo OPPs defined in the board's
DTS file).  However we still would like to allow enabling
boost support only if thermal support is also enabled for
Exynos platforms.  To achieve this make ARCH_EXYNOS config
option select THERMAL and EXYNOS_THERMAL ones.

Please also note that the switch to use the generic cpufreq-dt
driver fixes the minor issue present with the old code (support
for 'boost' mode in the exynos-cpufreq driver was enabled for
all supported SoCs even though 'boost' frequency was provided
only for Exynos4x12 ones).

Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Thomas Abraham <thomas.ab@samsung.com>
Cc: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
---
 arch/arm/mach-exynos/Kconfig  | 2 ++
 arch/arm/mach-exynos/exynos.c | 2 ++
 2 files changed, 4 insertions(+)

Comments

Viresh Kumar Aug. 3, 2015, 3:50 p.m. UTC | #1
On 03-08-15, 15:55, Bartlomiej Zolnierkiewicz wrote:
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index 81064cd..491914c 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -25,6 +25,8 @@ menuconfig ARCH_EXYNOS
>  	select S5P_DEV_MFC
>  	select SRAM
>  	select MFD_SYSCON
> +	select THERMAL
> +	select EXYNOS_THERMAL

Why do you need to select both of them?

>  	help
>  	  Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5)
>  
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 77ac021..1c47aee 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -227,6 +227,8 @@ static void __init exynos_init_irq(void)
>  static const struct of_device_id exynos_cpufreq_matches[] = {
>  	{ .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
>  	{ .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
> +	{ .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
> +	{ .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
>  	{ .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
>  	{ /* sentinel */ }
>  };

Otherwise looks fine:

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Bartlomiej Zolnierkiewicz Aug. 3, 2015, 3:57 p.m. UTC | #2
On Monday, August 03, 2015 09:20:41 PM Viresh Kumar wrote:
> On 03-08-15, 15:55, Bartlomiej Zolnierkiewicz wrote:
> > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> > index 81064cd..491914c 100644
> > --- a/arch/arm/mach-exynos/Kconfig
> > +++ b/arch/arm/mach-exynos/Kconfig
> > @@ -25,6 +25,8 @@ menuconfig ARCH_EXYNOS
> >  	select S5P_DEV_MFC
> >  	select SRAM
> >  	select MFD_SYSCON
> > +	select THERMAL
> > +	select EXYNOS_THERMAL
> 
> Why do you need to select both of them?

Because otherwise you can disable the whole THERMAL subsystem support
(effectively disabling EXYNOS_THERMAL in the process).

This is the same way in which ARCH_EXYNOS handles PINCTRL_EXYNOS
support currently (it also selects PINCTRL subsystem).

> >  	help
> >  	  Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5)
> >  
> > diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> > index 77ac021..1c47aee 100644
> > --- a/arch/arm/mach-exynos/exynos.c
> > +++ b/arch/arm/mach-exynos/exynos.c
> > @@ -227,6 +227,8 @@ static void __init exynos_init_irq(void)
> >  static const struct of_device_id exynos_cpufreq_matches[] = {
> >  	{ .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
> >  	{ .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
> > +	{ .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
> > +	{ .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
> >  	{ .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
> >  	{ /* sentinel */ }
> >  };
> 
> Otherwise looks fine:
> 
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

Thanks!

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Krzysztof Kozlowski Aug. 4, 2015, 12:43 a.m. UTC | #3
On 03.08.2015 22:55, Bartlomiej Zolnierkiewicz wrote:
> 
> Hi,
> 
> On Monday, August 03, 2015 08:15:13 PM Krzysztof Kozlowski wrote:
>> W dniu 03.08.2015 o 19:36, Bartlomiej Zolnierkiewicz pisze:
>>> On Monday, August 03, 2015 03:59:26 PM Viresh Kumar wrote:
>>>> On 03-08-15, 12:17, Bartlomiej Zolnierkiewicz wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On Saturday, August 01, 2015 04:47:21 PM Viresh Kumar wrote:
>>>>>> On 31-07-15, 20:49, Bartlomiej Zolnierkiewicz wrote:
>>>>>>> diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
>>>>>>> index 659879a..bf6d596 100644
>>>>>>> --- a/drivers/cpufreq/Kconfig
>>>>>>> +++ b/drivers/cpufreq/Kconfig
>>>>>>> @@ -191,6 +191,7 @@ config CPUFREQ_DT
>>>>>>>  	# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
>>>>>>>  	depends on !CPU_THERMAL || THERMAL
>>>>>>>  	select PM_OPP
>>>>>>> +	select EXYNOS_THERMAL if ARCH_EXYNOS
>>>>>>>  	help
>>>>>>>  	  This adds a generic DT based cpufreq driver for frequency management.
>>>>>>>  	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
>>>>>>
>>>>>> No, we shouldn't pollute generic Kconfig options with platform specific stuff.
>>>>>
>>>>> The old code depended on this.  You couldn't enable boost support
>>>>> without enabling thermal support (ARM_EXYNOS_CPU_FREQ_BOOST_SW
>>>>> config option selected EXYNOS_THERMAL).
>>>>>
>>>>>> Why don't you enable thermal in your .config?
>>>>>
>>>>> It is enabled in exynos_defconfig but without the above change it
>>>>> can disabled manually which is something that we don't want.
>>>>
>>>> You are not getting it. I am not asking you to not select thermal, but
>>>> to select it from within your architecture Kconfig option if you want.
>>>
>>> OK.  Krzysztof/Kukjin do you agree with selecting EXYNOS_THERMAL
>>> from ARCH_EXYNOS in the platform code?
>>
>> I agree, with your explanation it seems good. Can you just add this
>> justification to the commit message?
> 
> Updated patch below (I'm not resending the whole series as all other
> patches remain unchanged).
> 
>>>
>>>> Over that, thermal is really an option, not a dependency. So, if
>>>> someone manually disables it, its his problem not yours :)
>>>
>>> I would really like it to be dependency not an option (+ I think
>>> that ideally it should be checked at runtime, IOW we should be
>>> checking from cpufreq-dt driver if the thermal support is enabled
>>> before enabling boost support).
>>
>> That would be the best. It is fine with me if you want to do this in
>> consecutive patches (after applying patch selecting/depending on it in
>> mach-exynos code).
> 
> ---------------------8<-------------------
> 
>>From 2595b5e6164a2d1b76626e14302b148b7af5e050 Mon Sep 17 00:00:00 2001
> From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
> Date: Mon, 3 Aug 2015 15:49:06 +0200
> Subject: [PATCH] ARM: Exynos: switch to using generic cpufreq driver for
>  Exynos4x12
> 
> The new CPU clock type allows the use of generic CPUfreq driver.
> Switch Exynos4x12 to using generic cpufreq driver.
> 
> Previously (when exynos-cpufreq driver was used with boost
> functionality) ARM_EXYNOS_CPU_FREQ_BOOST_SW config option
> (which enabled boost functionality) selected EXYNOS_THERMAL
> one.  After switching Exynos4x12 platforms to use cpufreq-dt
> driver boost support is enabled in the cpufreq-dt driver
> itself (because there are turbo OPPs defined in the board's
> DTS file).  However we still would like to allow enabling
> boost support only if thermal support is also enabled for
> Exynos platforms.  To achieve this make ARCH_EXYNOS config
> option select THERMAL and EXYNOS_THERMAL ones.
> 
> Please also note that the switch to use the generic cpufreq-dt
> driver fixes the minor issue present with the old code (support
> for 'boost' mode in the exynos-cpufreq driver was enabled for
> all supported SoCs even though 'boost' frequency was provided
> only for Exynos4x12 ones).
> 
> Cc: Tomasz Figa <tomasz.figa@gmail.com>
> Cc: Kukjin Kim <kgene.kim@samsung.com>
> Cc: Thomas Abraham <thomas.ab@samsung.com>
> Cc: Javier Martinez Canillas <javier@osg.samsung.com>
> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
> ---
>  arch/arm/mach-exynos/Kconfig  | 2 ++
>  arch/arm/mach-exynos/exynos.c | 2 ++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index 81064cd..491914c 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -25,6 +25,8 @@ menuconfig ARCH_EXYNOS
>  	select S5P_DEV_MFC
>  	select SRAM
>  	select MFD_SYSCON
> +	select THERMAL
> +	select EXYNOS_THERMAL
>  	help
>  	  Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5)
>  
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 77ac021..1c47aee 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -227,6 +227,8 @@ static void __init exynos_init_irq(void)
>  static const struct of_device_id exynos_cpufreq_matches[] = {
>  	{ .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
>  	{ .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
> +	{ .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
> +	{ .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
>  	{ .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
>  	{ /* sentinel */ }
>  };
> 

Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof
diff mbox

Patch

diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 81064cd..491914c 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -25,6 +25,8 @@  menuconfig ARCH_EXYNOS
 	select S5P_DEV_MFC
 	select SRAM
 	select MFD_SYSCON
+	select THERMAL
+	select EXYNOS_THERMAL
 	help
 	  Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5)
 
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 77ac021..1c47aee 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -227,6 +227,8 @@  static void __init exynos_init_irq(void)
 static const struct of_device_id exynos_cpufreq_matches[] = {
 	{ .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
 	{ .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
+	{ .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
+	{ .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
 	{ .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
 	{ /* sentinel */ }
 };