diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2017-02-16 14:26:46 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-02-24 15:23:24 -0800 |
commit | f0b564b4a031fdc974a98a13308a62a460ae4a69 (patch) | |
tree | 4a98eb323e3771fb38f575462fd83fbe2a13ce1a /chip/mec1322 | |
parent | fb8e36631af8395d45d3bef79822c03dd6298ca3 (diff) | |
download | chrome-ec-f0b564b4a031fdc974a98a13308a62a460ae4a69.tar.gz |
system: Add generic bbram read / write routines
Add generic routines to read or write a byte to battery-backed RAM, and
implement vbnvcontext get/set using these routines.
BUG=chrome-os-partner:62952
BRANCH=reef
TEST=On reef, with subsequent commit, run "cutoff" on the console,
reattach AC, and verify device successfully wakes. Also verify Rp is
dropped on console 'reboot' and F3 + power from RW.
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I14691923f2e5198e901b6b5199e92c58c68cd18d
Reviewed-on: https://chromium-review.googlesource.com/444444
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'chip/mec1322')
-rw-r--r-- | chip/mec1322/system.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/chip/mec1322/system.c b/chip/mec1322/system.c index 26d89c10e3..54ff2f45c8 100644 --- a/chip/mec1322/system.c +++ b/chip/mec1322/system.c @@ -23,7 +23,7 @@ /* 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 */ + HIBDATA_INDEX_SAVED_RESET_FLAGS, /* Saved reset flags */ }; static void check_reset_cause(void) @@ -166,14 +166,30 @@ const char *system_get_chip_revision(void) return buf; } -int system_get_vbnvcontext(uint8_t *block) +int system_get_bbram(enum system_bbram_idx idx, uint8_t *value) { - return EC_ERROR_UNIMPLEMENTED; + enum hibdata_index hibdata; + + switch (idx) { + default: + return EC_ERROR_UNIMPLEMENTED; + } + + *value = MEC1322_VBAT_RAM(hibdata); + return EC_SUCCESS; } -int system_set_vbnvcontext(const uint8_t *block) +int system_set_bbram(enum system_bbram_idx idx, uint8_t value) { - return EC_ERROR_UNIMPLEMENTED; + enum hibdata_index hibdata; + + switch (idx) { + default: + return EC_ERROR_UNIMPLEMENTED; + } + + MEC1322_VBAT_RAM(hibdata) = value; + return EC_SUCCESS; } int system_set_scratchpad(uint32_t value) |