Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1503603 > unrolled thread

[PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff

Started byAlexandre Belloni <alexandre.belloni@free-electrons.com>
First post2016-10-19 16:20 +0200
Last post2016-10-19 18:40 +0200
Articles 4 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff Alexandre Belloni <alexandre.belloni@free-electrons.com> - 2016-10-19 16:20 +0200
    Re: [PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff Geert Uytterhoeven <geert@linux-m68k.org> - 2016-10-19 16:30 +0200
      Re: [PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff Nicolas Ferre <nicolas.ferre@atmel.com> - 2016-10-19 16:40 +0200
    [PATCH v2 1/2] ARM: at91: define LPDDR types Alexandre Belloni <alexandre.belloni@free-electrons.com> - 2016-10-19 18:40 +0200

#1503603 — [PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff

FromAlexandre Belloni <alexandre.belloni@free-electrons.com>
Date2016-10-19 16:20 +0200
Subject[PATCH v2 0/2] ARM: at91: properly handle LPDDR poweroff
Message-ID<stZSN-2nd-7@gated-at.bofh.it>
Hi,

This patch set improves LPDDR support on SoCs using the Atmel MPDDR controller.

LPDDR memories can only handle up to 400 uncontrolled power offs in their
life. The proper power off sequence has to be applied before shutting down the
SoC.

I'm not too happy with the code duplication but this is a design choice
that has been made before because both shutdown controllers are really
different apart from the shutdown itself.

I guess it is still better than slowly killing the LPDDR.

Changes in v2:
 - Fix typos
 - Add a comment for the dummy read access of AT91_SHDW_CR
 - Properly set up pm_power_off in at91_poweroff_probe()


Alexandre Belloni (2):
  ARM: at91: define LPDDR types
  power/reset: at91-poweroff: timely shutdown LPDDR memories

 drivers/power/reset/at91-poweroff.c      | 54 +++++++++++++++++++++++++++++++-
 drivers/power/reset/at91-sama5d2_shdwc.c | 49 ++++++++++++++++++++++++++++-
 include/soc/at91/at91sam9_ddrsdr.h       |  3 ++
 3 files changed, 104 insertions(+), 2 deletions(-)

-- 
2.9.3

[toc] | [next] | [standalone]


#1503684

FromGeert Uytterhoeven <geert@linux-m68k.org>
Date2016-10-19 16:30 +0200
Message-ID<su02v-2rf-113@gated-at.bofh.it>
In reply to#1503603
On Wed, Oct 19, 2016 at 1:44 PM, Alexandre Belloni
<alexandre.belloni@free-electrons.com> wrote:
> LPDDR memories can only handle up to 400 uncontrolled power offs in their
> life. The proper power off sequence has to be applied before shutting down the
> SoC.

Interesting. How many boards have been killed during kernelci.org
operation?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

[toc] | [prev] | [next] | [standalone]


#1503712

FromNicolas Ferre <nicolas.ferre@atmel.com>
Date2016-10-19 16:40 +0200
Message-ID<su0ca-2v4-61@gated-at.bofh.it>
In reply to#1503684
Le 19/10/2016 à 16:07, Geert Uytterhoeven a écrit :
> On Wed, Oct 19, 2016 at 1:44 PM, Alexandre Belloni
> <alexandre.belloni@free-electrons.com> wrote:
>> LPDDR memories can only handle up to 400 uncontrolled power offs in their
>> life. The proper power off sequence has to be applied before shutting down the
>> SoC.
> 
> Interesting. How many boards have been killed during kernelci.org
> operation?

The reason given above is usually the one that prevent manufacturers
from using LPDDR on "evaluation" boards. So all Atmel boards use
SDRAM/DDR2/DDR3 not the LP variants.

Final products (and internal validation boards, obviously) though use
these type of RAM so we must be prepared to handle them.

Best regards,
-- 
Nicolas Ferre

[toc] | [prev] | [next] | [standalone]


#1504118 — [PATCH v2 1/2] ARM: at91: define LPDDR types

FromAlexandre Belloni <alexandre.belloni@free-electrons.com>
Date2016-10-19 18:40 +0200
Subject[PATCH v2 1/2] ARM: at91: define LPDDR types
Message-ID<su24i-3OH-29@gated-at.bofh.it>
In reply to#1503603
The Atmel MPDDR controller support LPDDR2 and LPDDR3 memories, add their
types.

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
 include/soc/at91/at91sam9_ddrsdr.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/soc/at91/at91sam9_ddrsdr.h b/include/soc/at91/at91sam9_ddrsdr.h
index dc10c52e0e91..393362bdb860 100644
--- a/include/soc/at91/at91sam9_ddrsdr.h
+++ b/include/soc/at91/at91sam9_ddrsdr.h
@@ -81,6 +81,7 @@
 #define			AT91_DDRSDRC_LPCB_POWER_DOWN		2
 #define			AT91_DDRSDRC_LPCB_DEEP_POWER_DOWN	3
 #define		AT91_DDRSDRC_CLKFR	(1 << 2)	/* Clock Frozen */
+#define		AT91_DDRSDRC_LPDDR2_PWOFF	(1 << 3)	/* LPDDR Power Off */
 #define		AT91_DDRSDRC_PASR	(7 << 4)	/* Partial Array Self Refresh */
 #define		AT91_DDRSDRC_TCSR	(3 << 8)	/* Temperature Compensated Self Refresh */
 #define		AT91_DDRSDRC_DS		(3 << 10)	/* Drive Strength */
@@ -96,7 +97,9 @@
 #define			AT91_DDRSDRC_MD_SDR		0
 #define			AT91_DDRSDRC_MD_LOW_POWER_SDR	1
 #define			AT91_DDRSDRC_MD_LOW_POWER_DDR	3
+#define			AT91_DDRSDRC_MD_LPDDR3		5
 #define			AT91_DDRSDRC_MD_DDR2		6	/* [SAM9 Only] */
+#define			AT91_DDRSDRC_MD_LPDDR2		7
 #define		AT91_DDRSDRC_DBW	(1 << 4)		/* Data Bus Width */
 #define			AT91_DDRSDRC_DBW_32BITS		(0 <<  4)
 #define			AT91_DDRSDRC_DBW_16BITS		(1 <<  4)
-- 
2.9.3

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web