Re: [PATCH 13/13] OMAP3630: PM: Errata i583: disable coreoff if < ES1.2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 19, 2010 at 2:54 AM, Nishanth Menon <nm@xxxxxx> wrote:
> From: Eduardo Valentin <eduardo.valentin@xxxxxxxxx>
>
> Limitation i583: Self_Refresh Exit issue after OFF mode
>
> Issue:
> When device is waking up from OFF mode, then SDRC state machine sends
> inappropriate sequence violating JEDEC standards.
>
> Impact:
> OMAP3630 < ES1.2 is impacted as follows depending on the platform:
> CS0: for 38.4MHz as internal sysclk, DDR content seen to be stable, while
>        for all other sysclk frequencies, varied levels of instability
>        seen based on varied parameters.
> CS1: impacted
>
> This patch takes option #3 as recommended by the Silicon errata:
> Avoid core power domain transitioning to OFF mode. Power consumption
> impact is expected in this case.
> To do this, we route OFF requests to RET request on the impacted revisions
> of silicon.
>
> [nm@xxxxxx: rebased the code to 2.6.37-rc2- short circuit code changed a bit]
> Signed-off-by: Nishanth Menon <nm@xxxxxx>
> Signed-off-by: Eduardo Valentin <eduardo.valentin@xxxxxxxxx>
> ---
>  arch/arm/mach-omap2/pm34xx.c |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 0102d60..1890e49 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -86,6 +86,7 @@ static int secure_ram_saved;
>
>  #define PER_WAKEUP_ERRATA_i582 (1 << 0)
>  #define RTA_ERRATA_i608                (1 << 1)
> +#define SDRC_WAKEUP_ERRATA_i583        (1 << 0)
This value should be (1 << 2).

>  static u16 pm34xx_errata;
>  #define IS_PM34XX_ERRATA(id)   (pm34xx_errata & (id))
>
> @@ -437,6 +438,17 @@ void omap_sram_idle(void)
>        omap3_intc_prepare_idle();
>
>        /* CORE */
> +       /*
> +        * Errata i583: implementation for ES rev < Es1.2 on 3630
> +        * We cannot enable OFF mode in a stable form for previous
> +        * revisions, transition instead to RET
> +        */
> +       if (IS_PM34XX_ERRATA(SDRC_WAKEUP_ERRATA_i583) &&
> +                       (core_next_state == PWRDM_POWER_OFF)) {
> +               pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_RET);
> +               core_next_state = PWRDM_POWER_RET;
> +       }
> +
>        if (core_next_state < PWRDM_POWER_ON) {
>                omap_uart_prepare_idle(0);
>                omap_uart_prepare_idle(1);
> @@ -1050,6 +1062,8 @@ static void pm_errata_configure(void)
>                pm34xx_errata |= PER_WAKEUP_ERRATA_i582;
>                if (cpu_is_omap3630() && (omap_rev() > OMAP3630_REV_ES1_1))
>                        pm34xx_errata &= ~PER_WAKEUP_ERRATA_i582;
> +               if (cpu_is_omap3630() && (omap_rev() < OMAP3630_REV_ES1_2))
> +                       pm34xx_errata |= SDRC_WAKEUP_ERRATA_i583;
>                if (cpu_is_omap3630())
>                        pm34xx_errata |= RTA_ERRATA_i608;
>                /* Enable the l2 cache toggling in sleep logic */
> --
> 1.6.3.3
>
>

Regards,
Jean
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux