devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org
Cc: devicetree@vger.kernel.org,
	Chander Kashyap <k.chander@samsung.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Charles Garcia Tobin <Charles.Garcia-Tobin@arm.com>,
	Nicolas Pitre <nico@linaro.org>, Rob Herring <robh+dt@kernel.org>,
	Grant Likely <grant.likely@linaro.org>,
	Peter De Schrijver <pdeschrijver@nvidia.com>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Amit Kucheria <amit.kucheria@linaro.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Antti Miettinen <ananaza@iki.fi>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Kevin Hilman <khilman@linaro.org>,
	Sebastian Capella <sebcape@gmail.com>,
	Tomasz Figa <t.figa@samsung.com>, Mark Brown <broonie@kernel.org>,
	Paul Walmsley <paul@pwsan.com>,
	Geoff Levand <geoff@infradead.org>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Ashwin
Subject: Re: [PATCH v8 7/8] drivers: cpuidle: initialize big.LITTLE driver through DT
Date: Wed, 03 Sep 2014 15:29:01 +0200	[thread overview]
Message-ID: <5407179D.6040909@linaro.org> (raw)
In-Reply-To: <1409585324-3678-8-git-send-email-lorenzo.pieralisi@arm.com>

On 09/01/2014 05:28 PM, Lorenzo Pieralisi wrote:
> With the introduction of DT based idle states, CPUidle drivers for ARM
> can now initialize idle states data through properties in the device tree.
>
> This patch adds code to the big.LITTLE CPUidle driver to dynamically
> initialize idle states data through the updated device tree source file.
>
> Cc: Chander Kashyap <k.chander@samsung.com>
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>

> ---
>   arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 23 +++++++++++++++++++++++
>   drivers/cpuidle/Kconfig.arm                |  1 +
>   drivers/cpuidle/cpuidle-big_little.c       | 19 +++++++++++++++++++
>   3 files changed, 43 insertions(+)
>
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> index a25c262..322fd15 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> @@ -38,6 +38,7 @@
>   			compatible = "arm,cortex-a15";
>   			reg = <0>;
>   			cci-control-port = <&cci_control1>;
> +			cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
>   		};
>
>   		cpu1: cpu@1 {
> @@ -45,6 +46,7 @@
>   			compatible = "arm,cortex-a15";
>   			reg = <1>;
>   			cci-control-port = <&cci_control1>;
> +			cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
>   		};
>
>   		cpu2: cpu@2 {
> @@ -52,6 +54,7 @@
>   			compatible = "arm,cortex-a7";
>   			reg = <0x100>;
>   			cci-control-port = <&cci_control2>;
> +			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
>   		};
>
>   		cpu3: cpu@3 {
> @@ -59,6 +62,7 @@
>   			compatible = "arm,cortex-a7";
>   			reg = <0x101>;
>   			cci-control-port = <&cci_control2>;
> +			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
>   		};
>
>   		cpu4: cpu@4 {
> @@ -66,6 +70,25 @@
>   			compatible = "arm,cortex-a7";
>   			reg = <0x102>;
>   			cci-control-port = <&cci_control2>;
> +			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
> +		};
> +
> +		idle-states {
> +			CLUSTER_SLEEP_BIG: cluster-sleep-big {
> +				compatible = "arm,idle-state";
> +				local-timer-stop;
> +				entry-latency-us = <1000>;
> +				exit-latency-us = <700>;
> +				min-residency-us = <2000>;
> +			};
> +
> +			CLUSTER_SLEEP_LITTLE: cluster-sleep-little {
> +				compatible = "arm,idle-state";
> +				local-timer-stop;
> +				entry-latency-us = <1000>;
> +				exit-latency-us = <500>;
> +				min-residency-us = <2500>;
> +			};
>   		};
>   	};
>
> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
> index 38cff69..e339c7f 100644
> --- a/drivers/cpuidle/Kconfig.arm
> +++ b/drivers/cpuidle/Kconfig.arm
> @@ -7,6 +7,7 @@ config ARM_BIG_LITTLE_CPUIDLE
>   	depends on MCPM
>   	select ARM_CPU_SUSPEND
>   	select CPU_IDLE_MULTIPLE_DRIVERS
> +	select DT_IDLE_STATES
>   	help
>   	  Select this option to enable CPU idle driver for big.LITTLE based
>   	  ARM systems. Driver manages CPUs coordination through MCPM and
> diff --git a/drivers/cpuidle/cpuidle-big_little.c b/drivers/cpuidle/cpuidle-big_little.c
> index ef94c3b..85d09bc 100644
> --- a/drivers/cpuidle/cpuidle-big_little.c
> +++ b/drivers/cpuidle/cpuidle-big_little.c
> @@ -24,6 +24,8 @@
>   #include <asm/smp_plat.h>
>   #include <asm/suspend.h>
>
> +#include "dt_idle_states.h"
> +
>   static int bl_enter_powerdown(struct cpuidle_device *dev,
>   			      struct cpuidle_driver *drv, int idx);
>
> @@ -73,6 +75,12 @@ static struct cpuidle_driver bl_idle_little_driver = {
>   	.state_count = 2,
>   };
>
> +static const struct of_device_id bl_idle_state_match[] __initconst = {
> +	{ .compatible = "arm,idle-state",
> +	  .data = bl_enter_powerdown },
> +	{ },
> +};
> +
>   static struct cpuidle_driver bl_idle_big_driver = {
>   	.name = "big_idle",
>   	.owner = THIS_MODULE,
> @@ -190,6 +198,17 @@ static int __init bl_idle_init(void)
>   	if (ret)
>   		goto out_uninit_little;
>
> +	/* Start at index 1, index 0 standard WFI */
> +	ret = dt_init_idle_driver(&bl_idle_big_driver, bl_idle_state_match, 1);
> +	if (ret < 0)
> +		goto out_uninit_big;
> +
> +	/* Start at index 1, index 0 standard WFI */
> +	ret = dt_init_idle_driver(&bl_idle_little_driver,
> +				  bl_idle_state_match, 1);
> +	if (ret < 0)
> +		goto out_uninit_big;
> +
>   	ret = cpuidle_register(&bl_idle_little_driver, NULL);
>   	if (ret)
>   		goto out_uninit_big;
>


-- 
  <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


  reply	other threads:[~2014-09-03 13:29 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-01 15:28 [PATCH v8 0/8] ARM generic idle states Lorenzo Pieralisi
2014-09-01 15:28 ` [PATCH v8 1/8] arm64: kernel: refactor the CPU suspend API for retention states Lorenzo Pieralisi
     [not found] ` <1409585324-3678-1-git-send-email-lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>
2014-09-01 15:28   ` [PATCH v8 2/8] Documentation: arm: define DT idle states bindings Lorenzo Pieralisi
2014-09-01 15:28 ` [PATCH v8 3/8] drivers: cpuidle: implement DT based idle states infrastructure Lorenzo Pieralisi
2014-09-03 13:25   ` Daniel Lezcano
2014-09-03 17:30     ` Lorenzo Pieralisi
2014-09-01 15:28 ` [PATCH v8 4/8] arm64: kernel: introduce cpu_init_idle CPU operation Lorenzo Pieralisi
2014-09-03 17:34   ` Lina Iyer
2014-09-03 17:46     ` Lorenzo Pieralisi
2014-09-03 19:16       ` Lina Iyer
2014-09-01 15:28 ` [PATCH v8 5/8] arm64: add PSCI CPU_SUSPEND based cpu_suspend support Lorenzo Pieralisi
2014-09-01 15:28 ` [PATCH v8 6/8] drivers: cpuidle: CPU idle ARM64 driver Lorenzo Pieralisi
2014-09-03 17:37   ` Lorenzo Pieralisi
2014-09-04 16:03     ` Catalin Marinas
2014-09-04 17:29       ` Lorenzo Pieralisi
2014-09-05  9:21         ` Will Deacon
2014-09-05 15:34           ` Lorenzo Pieralisi
2014-09-11  8:28             ` Daniel Lezcano
2014-09-11  8:57               ` Lorenzo Pieralisi
     [not found]                 ` <20140911085727.GA25773-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-09-11  9:32                   ` Daniel Lezcano
2014-09-12 10:32                     ` Catalin Marinas
2014-09-12 11:26                       ` Lorenzo Pieralisi
2014-09-23 13:35                         ` Bartlomiej Zolnierkiewicz
2014-09-23 18:14                           ` Lorenzo Pieralisi
2014-09-14 16:59                 ` Tomasz Figa
2014-09-23 13:42                   ` Bartlomiej Zolnierkiewicz
2014-09-23 18:16                     ` Lorenzo Pieralisi
2014-09-29 11:08                   ` Lorenzo Pieralisi
2014-09-01 15:28 ` [PATCH v8 7/8] drivers: cpuidle: initialize big.LITTLE driver through DT Lorenzo Pieralisi
2014-09-03 13:29   ` Daniel Lezcano [this message]
2014-09-01 15:28 ` [PATCH v8 8/8] drivers: cpuidle: initialize Exynos " Lorenzo Pieralisi
2014-09-03 13:32   ` Daniel Lezcano
2014-09-03 17:29     ` Lorenzo Pieralisi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5407179D.6040909@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --cc=Charles.Garcia-Tobin@arm.com \
    --cc=amit.kucheria@linaro.org \
    --cc=ananaza@iki.fi \
    --cc=b.zolnierkie@samsung.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=geoff@infradead.org \
    --cc=grant.likely@linaro.org \
    --cc=k.chander@samsung.com \
    --cc=khilman@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=nico@linaro.org \
    --cc=paul@pwsan.com \
    --cc=pdeschrijver@nvidia.com \
    --cc=robh+dt@kernel.org \
    --cc=santosh.shilimkar@ti.com \
    --cc=sboyd@codeaurora.org \
    --cc=sebcape@gmail.com \
    --cc=sudeep.holla@arm.com \
    --cc=t.figa@samsung.com \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).