Linux on ARM based TI OMAP SoCs
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: Nishanth Menon <nm@ti.com>
Cc: linux-omap@vger.kernel.org, khilman@deeprootsystems.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 03/15] ARM: OMAP4+: PM: Consolidate and use OMAP4 PM code for OMAP5
Date: Sat, 2 Mar 2013 11:13:37 +0530	[thread overview]
Message-ID: <51319189.1060302@ti.com> (raw)
In-Reply-To: <20130301174300.GA22220@kahuna>

On Friday 01 March 2013 11:13 PM, Nishanth Menon wrote:
> On 17:40-20130301, Santosh Shilimkar wrote:
>> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm_omap4plus.c
>> similarity index 74%
>> rename from arch/arm/mach-omap2/pm44xx.c
>> rename to arch/arm/mach-omap2/pm_omap4plus.c
>> index 1d03110..95d2712 100644
>> --- a/arch/arm/mach-omap2/pm44xx.c
>> +++ b/arch/arm/mach-omap2/pm_omap4plus.c
>> @@ -1,7 +1,7 @@
>>  /*
>> - * OMAP4 Power Management Routines
>> + * OMAP4PLUS Power Management Routines
>>   *
>> - * Copyright (C) 2010-2011 Texas Instruments, Inc.
>> + * Copyright (C) 2010-2013 Texas Instruments, Inc.
>>   * Rajendra Nayak <rnayak@ti.com>
>>   * Santosh Shilimkar <santosh.shilimkar@ti.com>
>>   *
>> @@ -125,55 +125,77 @@ static void omap_default_idle(void)
>>  }
>>  
>>  /**
>> - * omap4_pm_init - Init routine for OMAP4 PM
>> + * omap4_init_static_deps - Init static clkdm dependencies on OMAP4
>>   *
>> - * Initializes all powerdomain and clockdomain target states
>> - * and all PRCM settings.
>> + * The dynamic dependency between MPUSS -> MEMIF and
>> + * MPUSS -> L4_PER/L3_* and DUCATI -> L3_* doesn't work as
>> + * expected. The hardware recommendation is to enable static
>> + * dependencies for these to avoid system lock ups or random crashes.
>> + * The L4 wakeup depedency is added to workaround the OCP sync hardware
>> + * BUG with 32K synctimer which lead to incorrect timer value read
>> + * from the 32K counter. The BUG applies for GPTIMER1 and WDT2 which
>> + * are part of L4 wakeup clockdomain.
>>   */
>> -int __init omap4_pm_init(void)
>> +static inline int omap4_init_static_deps(void)
>>  {
>>  	int ret;
>> -	struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm;
>> -	struct clockdomain *ducati_clkdm, *l3_2_clkdm;
>> +	struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup;
>> +	struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm;
>>  
>> -	if (omap_rev() == OMAP4430_REV_ES1_0) {
>> -		WARN(1, "Power Management not supported on OMAP4430 ES1.0\n");
>> -		return -ENODEV;
>> -	}
>> -
>> -	pr_err("Power Management for TI OMAP4.\n");
>> -
>> -	ret = pwrdm_for_each(pwrdms_setup, NULL);
>> -	if (ret) {
>> -		pr_err("Failed to setup powerdomains\n");
>> -		goto err2;
>> -	}
>> -
>> -	/*
>> -	 * The dynamic dependency between MPUSS -> MEMIF and
>> -	 * MPUSS -> L4_PER/L3_* and DUCATI -> L3_* doesn't work as
>> -	 * expected. The hardware recommendation is to enable static
>> -	 * dependencies for these to avoid system lock ups or random crashes.
>> -	 */
>>  	mpuss_clkdm = clkdm_lookup("mpuss_clkdm");
>>  	emif_clkdm = clkdm_lookup("l3_emif_clkdm");
>>  	l3_1_clkdm = clkdm_lookup("l3_1_clkdm");
>>  	l3_2_clkdm = clkdm_lookup("l3_2_clkdm");
>> +	l4_per_clkdm = clkdm_lookup("l4_per_clkdm");
>> +	l4wkup = clkdm_lookup("l4_wkup_clkdm");
> These static dependencies now seems added for OMAP4?
> Sounds like a separate patch as it is not exactly what $subject claims.
>>  	ducati_clkdm = clkdm_lookup("ducati_clkdm");
These are accidently added. I have removed these two in another series.
Will remove this one from the patch.

>> -	if ((!mpuss_clkdm) || (!emif_clkdm) || (!l3_1_clkdm) ||
>> -		(!l3_2_clkdm) || (!ducati_clkdm))
>> -		goto err2;
>> +	if ((!mpuss_clkdm) || (!emif_clkdm) || (!l3_1_clkdm) || (!l4wkup) ||
>> +		(!l3_2_clkdm) || (!ducati_clkdm) || (!l4_per_clkdm))
>> +		return -EINVAL;
>>  
>>  	ret = clkdm_add_wkdep(mpuss_clkdm, emif_clkdm);
>>  	ret |= clkdm_add_wkdep(mpuss_clkdm, l3_1_clkdm);
>>  	ret |= clkdm_add_wkdep(mpuss_clkdm, l3_2_clkdm);
>> +	ret |= clkdm_add_wkdep(mpuss_clkdm, l4_per_clkdm);
>> +	ret |= clkdm_add_wkdep(mpuss_clkdm, l4wkup);
>>  	ret |= clkdm_add_wkdep(ducati_clkdm, l3_1_clkdm);
>>  	ret |= clkdm_add_wkdep(ducati_clkdm, l3_2_clkdm);
>>  	if (ret) {
>>  		pr_err("Failed to add MPUSS -> L3/EMIF/L4PER, DUCATI -> L3 wakeup dependency\n");
>> +	}
>> +
>> +	return ret;
>> +}
>> +
>> +/**
>> + * omap4_pm_init - Init routine for OMAP4+ devices
>> + *
>> + * Initializes all powerdomain and clockdomain target states
>> + * and all PRCM settings.
>> + */
>> +int __init omap4_pm_init(void)
> could we rename it as omap4plus_pm_init while we are at it?
> This will help differentiate at least functions which are omap4 only and
> ones which we reuse for omap4plus?
Not needed. That way we have to rename all our omap2_* varients to
omap2plus. omap4_* is assumed to be omap4 and onwards just like
omap2_*

>> +{
>> +	int ret;
>> +
>> +	if (omap_rev() == OMAP4430_REV_ES1_0) {
> we have ID detection for OMAP5430_REV_ES1_0 in arch/arm/mach-omap2/id.c
> However, we do not support PM, so might as well use it to skip init?
Well the plan is to remove OMAP5 ES1.0 completely so no need to add
more checks. As already mentioned ES1.0 is not going to be supported
in mainline kernel.

Regerds,
Santosh

  reply	other threads:[~2013-03-02  5:42 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-01 12:10 [PATCH 00/15] ARM: OMAP5: PM: Add MPUSS suspend and CPUidle support Santosh Shilimkar
2013-03-01 12:10 ` [PATCH 01/15] ARM: OMAP4+: PM: Consolidate MPU subsystem PM code for re-use Santosh Shilimkar
2013-03-01 13:50   ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 02/15] ARM: OMAP5: PM: Update CPU context register offset Santosh Shilimkar
2013-03-01 17:34   ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 03/15] ARM: OMAP4+: PM: Consolidate and use OMAP4 PM code for OMAP5 Santosh Shilimkar
2013-03-01 17:43   ` Nishanth Menon
2013-03-02  5:43     ` Santosh Shilimkar [this message]
2013-03-04 18:21       ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 04/15] ARM: OMAP5: PM: Set MPUSS-EMIF clock-domain static dependency Santosh Shilimkar
2013-03-01 12:10 ` [PATCH 05/15] ARM: OMAP5: PM: Enables ES2 PM mode by default Santosh Shilimkar
2013-03-01 19:37   ` Nishanth Menon
2013-03-02  5:47     ` Santosh Shilimkar
2013-03-04 18:29       ` Nishanth Menon
2013-03-10 18:07         ` Santosh Shilimkar
2013-03-01 12:10 ` [PATCH 06/15] ARM: OMAP5: PM: Enable Mercury retention mode on CPUx powerdomains Santosh Shilimkar
2013-03-01 19:42   ` Nishanth Menon
2013-03-02  5:52     ` Santosh Shilimkar
2013-03-04 18:33       ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 07/15] ARM: OMAP5: Add init_late() hook to enable pm initialization Santosh Shilimkar
2013-03-01 20:12   ` Nishanth Menon
2013-03-02  6:00     ` Santosh Shilimkar
2013-03-04 18:35       ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 08/15] ARM: OMAP5: PM: Add CPU power off mode support Santosh Shilimkar
2013-03-01 21:36   ` Nishanth Menon
2013-03-02  6:14     ` Santosh Shilimkar
2013-03-04 18:38       ` Nishanth Menon
2013-03-01 12:10 ` [PATCH 09/15] ARM: OMAP4+: PM: Restore CPU power state to ON with clockdomain force wakeup method Santosh Shilimkar
2013-03-01 21:53   ` Nishanth Menon
2013-03-02  6:16     ` Santosh Shilimkar
2013-03-01 12:10 ` [PATCH 10/15] ARM: OMAP5: PM: Add MPU Open Switch Retention support Santosh Shilimkar
2013-03-01 22:05   ` Nishanth Menon
2013-03-01 12:11 ` [PATCH 11/15] ARM: OMAP5: PM: Add L2 memory power down support Santosh Shilimkar
2013-03-01 23:43   ` Nishanth Menon
2013-03-02  6:24     ` Santosh Shilimkar
2013-03-04 18:41       ` Nishanth Menon
2013-03-01 12:11 ` [PATCH 12/15] ARM: OMAP4+: CPUidle: Cleanup idle driver for OMAP5 support Santosh Shilimkar
2013-03-01 23:56   ` Nishanth Menon
2013-03-02  6:25     ` Santosh Shilimkar
2013-03-01 12:11 ` [PATCH 13/15] ARM: OMAP4+: CPUidle: Deprecate use of omap4_mpuss_read_prev_context_state() Santosh Shilimkar
2013-03-02  0:03   ` Nishanth Menon
2013-03-01 12:11 ` [PATCH 14/15] ARM: OMAP4+: CPUidle: Add OMAP5 idle driver support Santosh Shilimkar
2013-03-02  0:25   ` Nishanth Menon
2013-03-02  6:47     ` Santosh Shilimkar
2013-03-04 18:48       ` Nishanth Menon
2013-03-01 12:11 ` [PATCH 15/15] ARM: OMAP5: PM: handle device instance for for coldreset Santosh Shilimkar
2013-03-01 13:04   ` Nishanth Menon
2013-03-01 13:09     ` Santosh Shilimkar
2013-03-01 13:13       ` Nishanth Menon
2013-03-01 13:16         ` Santosh Shilimkar

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=51319189.1060302@ti.com \
    --to=santosh.shilimkar@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=nm@ti.com \
    /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