diff options
author | Vic (Chun-Ju) Yang <victoryang@chromium.org> | 2013-11-28 12:07:32 +0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-12-02 04:54:15 +0000 |
commit | 0e0bc8bbbdfd29e6e6e4efc43b60e0ac42e1dd77 (patch) | |
tree | 4569e95d074afee2ac8e40af04f5b1bd862ec741 /chip | |
parent | 8d2fc77326c598a4379e45b0946d0dba5d09617f (diff) | |
download | chrome-ec-0e0bc8bbbdfd29e6e6e4efc43b60e0ac42e1dd77.tar.gz |
mec1322: Add support for VBAT backed RAM
This will be used for saving data across reboots.
BUG=chrome-os-partner:24107
TEST=Enable scratchpad command and check value is preserved across
watchdog reboot.
BRANCH=None
Change-Id: Ifd68541a3f842c466b6ff49bcc654c92df48aac6
Signed-off-by: Vic (Chun-Ju) Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/178276
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'chip')
-rw-r--r-- | chip/mec1322/registers.h | 1 | ||||
-rw-r--r-- | chip/mec1322/system.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/chip/mec1322/registers.h b/chip/mec1322/registers.h index 18bf3ba936..159e29c230 100644 --- a/chip/mec1322/registers.h +++ b/chip/mec1322/registers.h @@ -121,6 +121,7 @@ static inline uintptr_t gpio_port_base(int port_id) #define MEC1322_VBAT_BASE 0x4000a400 #define MEC1322_VBAT_STS REG32(MEC1322_VBAT_BASE + 0x0) #define MEC1322_VBAT_CE REG32(MEC1322_VBAT_BASE + 0x8) +#define MEC1322_VBAT_RAM(x) REG32(MEC1322_VBAT_BASE + 0x400 + 4 * (x)) /* LPC */ diff --git a/chip/mec1322/system.c b/chip/mec1322/system.c index 276803289b..62c08e028d 100644 --- a/chip/mec1322/system.c +++ b/chip/mec1322/system.c @@ -16,6 +16,11 @@ #include "timer.h" #include "util.h" +/* Indices for hibernate data registers (RAM backed by VBAT) */ +enum hibdata_index { + HIBDATA_INDEX_SCRATCHPAD = 0, /* General-purpose scratchpad */ + HIBDATA_INDEX_SAVED_RESET_FLAGS /* Saved reset flags */ +}; @@ -78,6 +83,17 @@ int system_set_vbnvcontext(const uint8_t *block) return EC_ERROR_UNIMPLEMENTED; } +int system_set_scratchpad(uint32_t value) +{ + MEC1322_VBAT_RAM(HIBDATA_INDEX_SCRATCHPAD) = value; + return EC_SUCCESS; +} + +uint32_t system_get_scratchpad(void) +{ + return MEC1322_VBAT_RAM(HIBDATA_INDEX_SCRATCHPAD); +} + void system_hibernate(uint32_t seconds, uint32_t microseconds) { /* TODO(crosbug.com/p/24107): Implement this */ |