summaryrefslogtreecommitdiff
path: root/src/vendorcode
diff options
context:
space:
mode:
authorJagadish Krishnamoorthy <jagadish.krishnamoorthy@intel.com>2016-05-18 15:18:58 -0700
committerAaron Durbin <adurbin@chromium.org>2016-05-24 20:28:48 +0200
commite2e561d31fcb1a9227a06ed1fb821090815050c7 (patch)
tree67363215bbfeb065ebe7992beb40f9002d07ff45 /src/vendorcode
parentf8841120b2627a25fcc57b67662f727f9c20941e (diff)
vendorcode/chromeos/vbnv: Add CMOS init function
Add cmos init helper function. This function saves the Vboot NV data, calls cmos init and restores the Vboot NV data. Change-Id: I8475f23d849fb5b5a2d16738b4d5e99f112883da Signed-off-by: Jagadish Krishnamoorthy <jagadish.krishnamoorthy@intel.com> Reviewed-on: https://review.coreboot.org/14898 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/vendorcode')
-rw-r--r--src/vendorcode/google/chromeos/vbnv.h1
-rw-r--r--src/vendorcode/google/chromeos/vbnv_cmos.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/vbnv.h b/src/vendorcode/google/chromeos/vbnv.h
index 3d88507a85..5d21cc8481 100644
--- a/src/vendorcode/google/chromeos/vbnv.h
+++ b/src/vendorcode/google/chromeos/vbnv.h
@@ -29,6 +29,7 @@ int vboot_wants_oprom(void);
/* CMOS backend */
void read_vbnv_cmos(uint8_t *vbnv_copy);
void save_vbnv_cmos(const uint8_t *vbnv_copy);
+void init_vbnv_cmos(int rtc_fail);
/* Flash backend */
void read_vbnv_flash(uint8_t *vbnv_copy);
diff --git a/src/vendorcode/google/chromeos/vbnv_cmos.c b/src/vendorcode/google/chromeos/vbnv_cmos.c
index 6dfc74cc09..da0d3005fd 100644
--- a/src/vendorcode/google/chromeos/vbnv_cmos.c
+++ b/src/vendorcode/google/chromeos/vbnv_cmos.c
@@ -51,6 +51,19 @@ void save_vbnv_cmos(const uint8_t *vbnv_copy)
cmos_write(vbnv_copy[i], CONFIG_VBNV_OFFSET + 14 + i);
}
+void init_vbnv_cmos(int rtc_fail)
+{
+ uint8_t vbnv[VBNV_BLOCK_SIZE];
+
+ if (rtc_fail)
+ read_vbnv_cmos(vbnv);
+
+ cmos_init(rtc_fail);
+
+ if (rtc_fail)
+ save_vbnv_cmos(vbnv);
+}
+
#if IS_ENABLED(CONFIG_CHROMEOS_VBNV_CMOS_BACKUP_TO_FLASH)
static void back_up_vbnv_cmos(void *unused)
{