linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Nicolas Ferre <nicolas.ferre@atmel.com>,
	Andrew Victor <linux@maxim.org.za>,
	Albin Tonnerre <albin.tonnerre@free-electrons.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH 18/19] ARM: at91: suspend both memory controllers on at91sam9263
Date: Fri, 25 Jan 2013 15:57:29 +0000	[thread overview]
Message-ID: <32362906.GDijhnXAWC@wuerfel> (raw)
In-Reply-To: <20130125154219.GM7360@game.jcrosoft.org>

On Friday 25 January 2013 16:42:19 Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 14:14 Fri 25 Jan     , Arnd Bergmann wrote:
> > For the past three years, we have had a #warning in
> > mach-at91 about the sdram_selfrefresh_enable or
> > at91sam9_standby functions possibly not working on
> > at91sam9263. In the meantime a function was added
> > to do the right thing on at91sam9g45, which looks like
> > it should also work on '9263.
> > 
> > This patch blindly removes the warning and changes the
> > at91sam9263 to use the same code at at91sam9g45, which
> > may or may not be the right solution. If it is not,
> > maybe someone could provide a better fix.
> it's not
> 
> the 9g45 use DDR Controler where the 9263 use a SDRAM controler
> 

Ah, right. What about this one then?

	Arnd
	
8<-----
Subject: [PATCH] ARM: at91: suspend both memory controllers on at91sam9263

For the past three years, we have had a #warning in
mach-at91 about the sdram_selfrefresh_enable or
at91sam9_standby functions possibly not working on
at91sam9263. In the meantime a function was added
to do the right thing on at91sam9g45, which looks like
it should also work on '9263.

This patch blindly removes the warning and changes the
at91sam9263 to use the same code at at91sam9g45, which
may or may not be the right solution. If it is not,
maybe someone could provide a better fix.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Andrew Victor <linux@maxim.org.za>
Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>

diff --git a/arch/arm/mach-at91/cpuidle.c b/arch/arm/mach-at91/cpuidle.c
index 0c63815..4c67946 100644
--- a/arch/arm/mach-at91/cpuidle.c
+++ b/arch/arm/mach-at91/cpuidle.c
@@ -38,6 +38,8 @@ static int at91_enter_idle(struct cpuidle_device *dev,
 		at91rm9200_standby();
 	else if (cpu_is_at91sam9g45())
 		at91sam9g45_standby();
+	else if (cpu_is_at91sam9263())
+		at91sam9263_standby();
 	else
 		at91sam9_standby();
 
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index adb6db8..b8017c1 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -267,6 +267,8 @@ static int at91_pm_enter(suspend_state_t state)
 				at91rm9200_standby();
 			else if (cpu_is_at91sam9g45())
 				at91sam9g45_standby();
+			else if (cpu_is_at91sam9263())
+				at91sam9263_standby();
 			else
 				at91sam9_standby();
 			break;
diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h
index 38f467c..2f5908f 100644
--- a/arch/arm/mach-at91/pm.h
+++ b/arch/arm/mach-at91/pm.h
@@ -70,13 +70,31 @@ static inline void at91sam9g45_standby(void)
 	at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);
 }
 
-#ifdef CONFIG_SOC_AT91SAM9263
-/*
- * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
- * handle those cases both here and in the Suspend-To-RAM support.
+/* We manage both DDRAM/SDRAM controllers, we need more than one value to
+ * remember.
  */
-#warning Assuming EB1 SDRAM controller is *NOT* used
-#endif
+static inline void at91sam9263_standby(void)
+{
+	u32 lpr0, lpr1;
+	u32 saved_lpr0, saved_lpr1;
+
+	saved_lpr1 = at91_ramc_read(1, AT91_SDRAMC_LPR);
+	lpr1 = saved_lpr1 & ~AT91_SDRAMC_LPCB;
+	lpr1 |= AT91_SDRAMC_LPCB_SELF_REFRESH;
+
+	saved_lpr0 = at91_ramc_read(0, AT91_SDRAMC_LPR);
+	lpr0 = saved_lpr0 & ~AT91_SDRAMC_LPCB;
+	lpr0 |= AT91_SDRAMC_LPCB_SELF_REFRESH;
+
+	/* self-refresh mode now */
+	at91_ramc_write(0, AT91_SDRAMC_LPR, lpr0);
+	at91_ramc_write(1, AT91_SDRAMC_LPR, lpr1);
+
+	cpu_do_idle();
+
+	at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr0);
+	at91_ramc_write(1, AT91_SDRAMC_LPR, saved_lpr1);
+}
 
 static inline void at91sam9_standby(void)
 {


  reply	other threads:[~2013-01-25 15:57 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-25 14:14 [PATCH 00/19] ARM: common warning fixes Arnd Bergmann
2013-01-25 14:14 ` [PATCH 01/19] ARM: shmobile: fix defconfig warning on CONFIG_USB Arnd Bergmann
2013-01-25 14:14 ` [PATCH 02/19] ARM: disable virt_to_bus/virt_to_bus almost everywhere Arnd Bergmann
2013-01-25 14:14 ` [PATCH 03/19] ARM: msm: proc_comm_boot_wait should not be __init Arnd Bergmann
2013-01-25 18:16   ` David Brown
2013-02-12  1:42     ` Olof Johansson
2013-01-25 14:14 ` [PATCH 04/19] oss/dmabuf: use dma_map_single Arnd Bergmann
2013-01-25 14:14 ` [PATCH 05/19] sched: warnings in kernel/sched/fair.c Arnd Bergmann
2013-01-25 16:00   ` Paul Turner
2013-01-26 12:17   ` [tip:sched/urgent] sched: Fix warning " tip-bot for Arnd Bergmann
2013-01-25 14:14 ` [PATCH 06/19] sched/debug: fix format string for 32 bit platforms Arnd Bergmann
2013-01-25 16:01   ` Paul Turner
2013-01-26 12:19   ` [tip:sched/urgent] sched/debug: Fix format string for 32-bit platforms tip-bot for Arnd Bergmann
2013-01-25 14:14 ` [PATCH 07/19] scripts/sortextable: silence script output Arnd Bergmann
2013-01-25 23:06   ` David Daney
2013-01-25 14:14 ` [PATCH 08/19] lockdep: avoid warning about unused variables Arnd Bergmann
2013-01-25 14:14 ` [PATCH 09/19] mfd/twl4030: don't warn about uninitialized return code Arnd Bergmann
2013-01-25 14:25   ` Peter Ujfalusi
2013-01-25 14:34     ` Arnd Bergmann
2013-01-25 14:35   ` Amit Kucheria
2013-01-25 14:14 ` [PATCH 10/19] watchdog: at91sam9: at91_wdt_dt_ids cannot be __init Arnd Bergmann
2013-01-25 14:14 ` [PATCH 11/19] regmap: avoid undefined return from regmap_read_debugfs Arnd Bergmann
2013-01-26  4:42   ` Mark Brown
2013-01-26  4:52     ` Mark Brown
2013-01-26  9:17     ` Arnd Bergmann
2013-01-26  9:49       ` Mark Brown
2013-01-26  9:59         ` Russell King - ARM Linux
2013-01-26 10:03           ` Mark Brown
2013-01-26 10:07             ` Russell King - ARM Linux
2013-01-26 11:45               ` [PATCH 11/19] regmap: regmap: avoid spurious warning in regmap_read_debugfs Arnd Bergmann
2013-01-27  2:51                 ` Mark Brown
2013-01-25 14:14 ` [PATCH 12/19] pinctrl: exynos: don't mark probing functions as __init Arnd Bergmann
2013-01-25 17:51   ` Kukjin Kim
2013-01-29 22:08   ` Linus Walleij
2013-01-25 14:14 ` [PATCH 13/19] pinctrl: nomadik: nmk_prcm_gpiocr_get_mode may be unused Arnd Bergmann
2013-01-29 22:11   ` Linus Walleij
2013-01-25 14:14 ` [PATCH 14/19] spi/atmel: remove incorrect __exit_p() Arnd Bergmann
2013-02-05 13:34   ` Grant Likely
2013-01-25 14:14 ` [PATCH 15/19] sunrpc: don't warn for unused variable 'buf' Arnd Bergmann
2013-01-25 14:14 ` [PATCH 16/19] mac80211: avoid a build warning Arnd Bergmann
2013-01-25 14:17   ` Johannes Berg
2013-01-25 14:14 ` [PATCH 17/19] input/joystick: use get_cycles on ARM Arnd Bergmann
2013-01-25 14:14 ` [PATCH 18/19] ARM: at91: suspend both memory controllers on at91sam9263 Arnd Bergmann
2013-01-25 15:42   ` Jean-Christophe PLAGNIOL-VILLARD
2013-01-25 15:57     ` Arnd Bergmann [this message]
2013-01-25 14:14 ` [PATCH 19/19] [INCOMPLETE] ARM: make return_address available for ARM_UNWIND Arnd Bergmann
2013-01-25 16:26   ` Dave Martin
2013-01-25 16:44     ` Steven Rostedt
2013-01-25 16:59       ` Dave Martin
2013-01-25 17:08         ` Steven Rostedt
2013-01-25 17:22           ` Dave Martin
2013-01-26  0:45         ` Arnd Bergmann
2013-01-28  2:33           ` Keun-O Park
2013-01-28 12:50             ` Dave Martin
2013-01-29  2:13               ` Keun-O Park
2014-01-07 14:33                 ` Arnd Bergmann
2014-01-07 14:41                   ` Russell King - ARM Linux
2014-01-07 15:48                     ` Arnd Bergmann
2014-01-07 16:36                       ` Dave Martin
2014-01-07 18:31                         ` Steven Rostedt
2013-01-25 22:43 ` [PATCHv2 00/19] ARM: common warning fixes Arnd Bergmann
2013-01-25 22:44   ` [PATCH 01/19] ARM: shmobile: fix defconfig warning on CONFIG_USB Arnd Bergmann
2013-01-28  0:21     ` Simon Horman
2013-01-25 22:44   ` [PATCH 02/19] ARM: disable virt_to_bus/virt_to_bus almost everywhere Arnd Bergmann
2013-01-25 22:44   ` [PATCH 03/19] ARM: msm: proc_comm_boot_wait should not be __init Arnd Bergmann
2013-01-25 22:44   ` [PATCH 04/19] oss/dmabuf: use dma_map_single Arnd Bergmann
2013-01-25 22:44   ` [PATCH 05/19] sched: warnings in kernel/sched/fair.c Arnd Bergmann
2013-01-25 22:44   ` [PATCH 06/19] sched/debug: fix format string for 32 bit platforms Arnd Bergmann
2013-01-25 22:44   ` [PATCH 07/19] scripts/sortextable: silence script output Arnd Bergmann
2013-01-25 22:44   ` [PATCH 08/19] lockdep: avoid warning about unused variables Arnd Bergmann
2013-01-25 22:44   ` [PATCH 09/19] mfd/twl4030: don't warn about uninitialized return code Arnd Bergmann
2013-01-27  0:42     ` Samuel Ortiz
2013-01-25 22:44   ` [PATCH 10/19] watchdog: at91sam9: at91_wdt_dt_ids cannot be __init Arnd Bergmann
2013-01-28  8:32     ` Nicolas Ferre
2013-01-28 10:19       ` Fabio Porcedda
2013-01-28  9:49     ` Fabio Porcedda
2013-01-30 19:31     ` Wim Van Sebroeck
2013-01-25 22:44   ` [PATCH 11/19] regmap: avoid undefined return from regmap_read_debugfs Arnd Bergmann
2013-01-25 22:44   ` [PATCH 12/19] pinctrl: exynos: don't mark probing functions as __init Arnd Bergmann
2013-01-25 22:44   ` [PATCH 13/19] pinctrl: nomadik: nmk_prcm_gpiocr_get_mode may be unused Arnd Bergmann
2013-01-25 22:44   ` [PATCH 14/19] spi/atmel: remove incorrect __exit_p() Arnd Bergmann
2013-01-28  8:33     ` Nicolas Ferre
2013-01-25 22:44   ` [PATCH 15/19] sunrpc: don't warn for unused variable 'buf' Arnd Bergmann
2013-01-25 23:04     ` Myklebust, Trond
2013-01-25 23:45       ` Arnd Bergmann
2013-01-26 11:03         ` Russell King - ARM Linux
2013-01-26 13:34           ` Arnd Bergmann
2013-01-28 23:18             ` J. Bruce Fields
2013-01-25 22:44   ` [PATCH 16/19] ARM: sa1100: don't warn about mach/ide.h Arnd Bergmann
2013-01-25 22:44   ` [PATCH 17/19] input/joystick: use get_cycles on ARM Arnd Bergmann
2013-01-25 22:44   ` [PATCH 18/19] ARM: at91: suspend both memory controllers on at91sam9263 Arnd Bergmann
2013-04-18 13:45     ` Nicolas Ferre
2013-04-18 14:15       ` Arnd Bergmann
2013-04-18 14:19         ` Nicolas Ferre
2013-04-18 14:20           ` Arnd Bergmann
2013-04-18 14:32           ` Daniel Lezcano
2013-01-25 22:44   ` [PATCH 19/19] [INCOMPLETE] ARM: make return_address available for ARM_UNWIND Arnd Bergmann
2013-01-26 10:05   ` [PATCHv2 00/19] ARM: common warning fixes Russell King - ARM Linux
2013-01-26 13:31     ` Arnd Bergmann

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=32362906.GDijhnXAWC@wuerfel \
    --to=arnd@arndb.de \
    --cc=albin.tonnerre@free-electrons.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@maxim.org.za \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.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;
as well as URLs for NNTP newsgroup(s).