All of lore.kernel.org
 help / color / mirror / Atom feed
From: gregory.clement@free-electrons.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 1/4] ARM: mvebu: add broken-idle option
Date: Mon, 12 Oct 2015 18:23:54 +0200	[thread overview]
Message-ID: <87egh0kqcl.fsf@free-electrons.com> (raw)
In-Reply-To: <87y4f8kqj9.fsf@free-electrons.com> (Gregory CLEMENT's message of "Mon, 12 Oct 2015 18:19:54 +0200")


 On lun., oct. 12 2015, Gregory CLEMENT <gregory.clement@free-electrons.com> wrote:

> Hi Simon,
>  
>  On mar., oct. 06 2015, Simon Guinot <simon.guinot@sequanux.org> wrote:
>
>> From: Vincent Donnefort <vdonnefort@gmail.com>
>>
>> The broken-idle option can be activated from the coherency-fabric DT
>> node. This property allows to disable the idle capability, when the
>> hardware doesn't support it, like the Seagate Personal Cloud boards.
>>
>> Signed-off-by: Vincent Donnefort <vdonnefort@gmail.com>
>
> Applied on mvebu/config
Actually on mvebu/soc

>
> Thanks,
>
> Gregory
>> ---
>>  .../devicetree/bindings/arm/coherency-fabric.txt   |  5 ++++
>>  arch/arm/mach-mvebu/pmsu.c                         | 29 +++++++++++++++++++---
>>  2 files changed, 31 insertions(+), 3 deletions(-)
>>
>> Changes for v5:
>> - Make the broken-idle property boolean.
>> - Don't use the broken-idle flag for Armada 38x.
>>
>> diff --git a/Documentation/devicetree/bindings/arm/coherency-fabric.txt b/Documentation/devicetree/bindings/arm/coherency-fabric.txt
>> index 8dd46617c889..9b5c3f620e65 100644
>> --- a/Documentation/devicetree/bindings/arm/coherency-fabric.txt
>> +++ b/Documentation/devicetree/bindings/arm/coherency-fabric.txt
>> @@ -27,6 +27,11 @@ Required properties:
>>   * For "marvell,armada-380-coherency-fabric", only one pair is needed
>>     for the per-CPU fabric registers.
>>  
>> +Optional properties:
>> +
>> +- broken-idle: boolean to set when the Idle mode is not supported by the
>> +  hardware.
>> +
>>  Examples:
>>  
>>  coherency-fabric at d0020200 {
>> diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c
>> index e8fdb9ceedf0..cba3fa985734 100644
>> --- a/arch/arm/mach-mvebu/pmsu.c
>> +++ b/arch/arm/mach-mvebu/pmsu.c
>> @@ -379,6 +379,16 @@ static struct notifier_block mvebu_v7_cpu_pm_notifier = {
>>  
>>  static struct platform_device mvebu_v7_cpuidle_device;
>>  
>> +static int broken_idle(struct device_node *np)
>> +{
>> +	if (of_property_read_bool(np, "broken-idle")) {
>> +		pr_warn("CPU idle is currently broken: disabling\n");
>> +		return 0;
>> +	}
>> +
>> +	return 1;
>> +}
>> +
>>  static __init int armada_370_cpuidle_init(void)
>>  {
>>  	struct device_node *np;
>> @@ -387,7 +397,9 @@ static __init int armada_370_cpuidle_init(void)
>>  	np = of_find_compatible_node(NULL, NULL, "marvell,coherency-fabric");
>>  	if (!np)
>>  		return -ENODEV;
>> -	of_node_put(np);
>> +
>> +	if (!broken_idle(np))
>> +		goto end;
>>  
>>  	/*
>>  	 * On Armada 370, there is "a slow exit process from the deep
>> @@ -406,6 +418,8 @@ static __init int armada_370_cpuidle_init(void)
>>  	mvebu_v7_cpuidle_device.dev.platform_data = armada_370_xp_cpu_suspend;
>>  	mvebu_v7_cpuidle_device.name = "cpuidle-armada-370";
>>  
>> +end:
>> +	of_node_put(np);
>>  	return 0;
>>  }
>>  
>> @@ -422,6 +436,10 @@ static __init int armada_38x_cpuidle_init(void)
>>  				     "marvell,armada-380-coherency-fabric");
>>  	if (!np)
>>  		return -ENODEV;
>> +
>> +	if (!broken_idle(np))
>> +		goto end;
>> +
>>  	of_node_put(np);
>>  
>>  	np = of_find_compatible_node(NULL, NULL,
>> @@ -430,7 +448,6 @@ static __init int armada_38x_cpuidle_init(void)
>>  		return -ENODEV;
>>  	mpsoc_base = of_iomap(np, 0);
>>  	BUG_ON(!mpsoc_base);
>> -	of_node_put(np);
>>  
>>  	/* Set up reset mask when powering down the cpus */
>>  	reg = readl(mpsoc_base + MPCORE_RESET_CTL);
>> @@ -450,6 +467,8 @@ static __init int armada_38x_cpuidle_init(void)
>>  	mvebu_v7_cpuidle_device.dev.platform_data = armada_38x_cpu_suspend;
>>  	mvebu_v7_cpuidle_device.name = "cpuidle-armada-38x";
>>  
>> +end:
>> +	of_node_put(np);
>>  	return 0;
>>  }
>>  
>> @@ -460,12 +479,16 @@ static __init int armada_xp_cpuidle_init(void)
>>  	np = of_find_compatible_node(NULL, NULL, "marvell,coherency-fabric");
>>  	if (!np)
>>  		return -ENODEV;
>> -	of_node_put(np);
>> +
>> +	if (!broken_idle(np))
>> +		goto end;
>>  
>>  	mvebu_cpu_resume = armada_370_xp_cpu_resume;
>>  	mvebu_v7_cpuidle_device.dev.platform_data = armada_370_xp_cpu_suspend;
>>  	mvebu_v7_cpuidle_device.name = "cpuidle-armada-xp";
>>  
>> +end:
>> +	of_node_put(np);
>>  	return 0;
>>  }
>>  
>> -- 
>> 2.1.4
>>
>
> -- 
> Gregory Clement, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com

-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2015-10-12 16:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-06 14:13 [PATCH v5 0/4] Add support for the Armada-370-based Seagate NAS Simon Guinot
2015-10-06 14:13 ` [PATCH v5 1/4] ARM: mvebu: add broken-idle option Simon Guinot
2015-10-12 16:19   ` Gregory CLEMENT
2015-10-12 16:23     ` Gregory CLEMENT [this message]
2015-10-22 17:40   ` Olof Johansson
2015-10-23  7:57     ` Gregory CLEMENT
2015-10-23 10:59       ` [PATCH v6] " Vincent Donnefort
2015-10-23 10:59         ` [PATCH] " Vincent Donnefort
2015-10-23 15:37           ` Gregory CLEMENT
2015-10-06 14:13 ` [PATCH v5 2/4] ARM: mvebu: add DT support for Seagate NAS 2 and 4-Bay Simon Guinot
2015-10-12 16:20   ` Gregory CLEMENT
2015-10-06 14:13 ` [PATCH v5 3/4] ARM: mvebu: add DT support for Seagate Personal Cloud Simon Guinot
2015-10-12 16:20   ` Gregory CLEMENT
2015-10-06 14:13 ` [PATCH v5 4/4] ARM: mvebu: enable options for Seagate NAS in mvebu_v7_defconfig Simon Guinot
2015-10-12 16:22   ` Gregory CLEMENT

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=87egh0kqcl.fsf@free-electrons.com \
    --to=gregory.clement@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.