public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Bob Liu <lliubbo@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 15/16] Blackfin: Bf60x: add resume from hibernate
Date: Tue, 7 Aug 2012 16:07:54 +0800	[thread overview]
Message-ID: <1344326875-348-15-git-send-email-lliubbo@gmail.com> (raw)
In-Reply-To: <1344326875-348-1-git-send-email-lliubbo@gmail.com>

From: Steven Miao <realmz6@gmail.com>

Add Bf60x resume from hibernate support

Signed-off-by: Steven Miao <realmz6@gmail.com>
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
---
 arch/blackfin/cpu/initcode.c |   46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/arch/blackfin/cpu/initcode.c b/arch/blackfin/cpu/initcode.c
index c68302f..0640c81 100644
--- a/arch/blackfin/cpu/initcode.c
+++ b/arch/blackfin/cpu/initcode.c
@@ -507,6 +507,11 @@ maybe_self_refresh(ADI_BOOT_DATA *bs)
 		return false;
 
 #ifdef __ADSPBF60x__
+	/* resume from hibernate, return false let ddr initialize */
+	if ((bfin_read32(DPM0_STAT) & 0xF0) == 0x50) {
+		serial_putc('b');
+		return false;
+	}
 
 #else /* __ADSPBF60x__ */
 
@@ -821,6 +826,7 @@ program_memory_controller(ADI_BOOT_DATA *bs, bool put_into_srfs)
 	while (!(bfin_read_DMC0_STAT() & DLLCALDONE))
 		continue;
 	serial_putc('!');
+
 #else /* __ADSPBF60x__ */
 
 	/* Program the external memory controller before we come out of
@@ -888,7 +894,46 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs)
 		return;
 
 	serial_putc('b');
+#ifdef __ADSPBF60x__
+	if (bfin_read32(DPM0_RESTORE0) != 0) {
+		uint32_t reg = bfin_read_DMC0_CTL();
+		reg &= ~0x8;
+		bfin_write_DMC0_CTL(reg);
+
+		while ((bfin_read_DMC0_STAT() & 0x8))
+			continue;
+		while (!(bfin_read_DMC0_STAT() & 0x1))
+			continue;
+
+		serial_putc('z');
+		volatile uint32_t *hibernate_magic = bfin_read32(DPM0_RESTORE4);
+		__builtin_bfin_ssync(); /* make sure memory controller is done */
+		if (hibernate_magic[0] == 0xDEADBEEF) {
+			serial_putc('c');
+
+			__builtin_bfin_ssync();
+
+			bfin_write_EVT15(hibernate_magic[1]);
+			bfin_write_IMASK(EVT_IVG15);
+			__asm__ __volatile__ (
+				/* load reti early to avoid anomaly 281 */
+				"reti = %2;"
+				/* clear hibernate magic */
+				"[%0] = %1;"
+				/* load stack pointer */
+				"SP = [%0 + 8];"
+				/* lower ourselves from reset ivg to ivg15 */
+				"raise 15;"
+				"nop;nop;nop;"
+				"rti;"
+				:
+				: "p"(hibernate_magic), "d"(0x2000 /* jump.s 0 */), "d"(0xffa00000)
+			);
+		}
 
+
+	}
+#else
 	/* Are we coming out of hibernate (suspend to memory) ?
 	 * The memory layout is:
 	 * 0x0: hibernate magic for anomaly 307 (0xDEADBEEF)
@@ -920,6 +965,7 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs)
 		}
 		serial_putc('d');
 	}
+#endif
 
 	serial_putc('e');
 }
-- 
1.7.9.5

  parent reply	other threads:[~2012-08-07  8:07 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-07  8:07 [U-Boot] [PATCH 01/16] Blackfin: BF60x: new processor port Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 02/16] Blackfin: bf609-ezkit: new board port Bob Liu
2012-08-08  4:41   ` Mike Frysinger
2012-08-20  7:55     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 03/16] Blackfin: Bf60x: support big cplb page Bob Liu
2012-08-08  4:48   ` Mike Frysinger
2012-08-20  8:00     ` Bob Liu
2012-08-23  3:49       ` Mike Frysinger
2012-08-07  8:07 ` [U-Boot] [PATCH 04/16] Blackfin: Rsi: add support for bf609-ezkit Bob Liu
2012-08-08  4:52   ` Mike Frysinger
2012-08-20  8:01     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 05/16] Blackfin: Paraflash: " Bob Liu
2012-08-08  4:55   ` Mike Frysinger
2012-08-20  8:01     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 06/16] Blackfin: Bf609-ezkit: implement soft switch Bob Liu
2012-08-08  4:59   ` Mike Frysinger
2012-08-20  8:11     ` Bob Liu
2012-08-23  3:53       ` Mike Frysinger
2012-08-07  8:07 ` [U-Boot] [PATCH 07/16] Blackfin: Spi: add bf6xx spi driver Bob Liu
2012-08-08  5:02   ` Mike Frysinger
2012-08-20  8:11     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 08/16] Blackfin: add more print info for Bf60x Bob Liu
2012-08-08  5:04   ` Mike Frysinger
2012-08-20  8:12     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 09/16] Blackfin: Bf60x: add reset support Bob Liu
2012-08-08  5:05   ` Mike Frysinger
2012-08-20  8:13     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 10/16] Blackfin: Bf60x: Check card ready for each RSI command Bob Liu
2012-08-08  5:05   ` Mike Frysinger
2012-08-20  8:13     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 11/16] Blackfin: Bf60x: support clock init Bob Liu
2012-08-08  5:06   ` Mike Frysinger
2012-08-07  8:07 ` [U-Boot] [PATCH 12/16] Blackfin: Bf60x: initcode: set up uart baud properly Bob Liu
2012-08-08  5:06   ` Mike Frysinger
2012-08-07  8:07 ` [U-Boot] [PATCH 13/16] Blackfin: Bf60x: add hw watchdog support Bob Liu
2012-08-08  5:11   ` Mike Frysinger
2012-08-20  8:25     ` Bob Liu
2012-08-07  8:07 ` [U-Boot] [PATCH 14/16] Blackfin: setup SMC if user desires it Bob Liu
2012-08-07  8:07 ` Bob Liu [this message]
2012-08-07  8:07 ` [U-Boot] [PATCH 16/16] Blackfin: update license to Clear BSD license Bob Liu
2012-08-08  5:12   ` Mike Frysinger
2012-08-20  8:25     ` Bob Liu
2012-08-08  4:39 ` [U-Boot] [PATCH 01/16] Blackfin: BF60x: new processor port Mike Frysinger
2012-08-20  7:54   ` Bob Liu

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=1344326875-348-15-git-send-email-lliubbo@gmail.com \
    --to=lliubbo@gmail.com \
    --cc=u-boot@lists.denx.de \
    /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