From 786593248121951e460b21f97d18783b834c938a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 10 Jun 2016 20:58:24 -0600 Subject: ec/google: Add support for the EC 'get time' function Some platforms have an RTC provided by the Chrome OS EC. Allow the EC to implement rtc_get() so that this can be plumbed in. BUG=chrome-os-partner:52220 BRANCH=none TEST=(partial) with future commits, boot on gru and see output: Date: 1970-01-17 (Saturday) Time: 1:42:44 Then reboot ~10 seconds later and see output: Date: 1970-01-17 (Saturday) Time: 1:42:53 Change-Id: I3b38f23b259837cdd4bd99167961b7bd245683b3 Signed-off-by: Martin Roth Original-Commit-Id: 4a4a26da37323c9ac33030c8f1510efae5ac2505 Original-Change-Id: Icaa381d32517dfed8d3b7927495b67a027d5ceea Original-Signed-off-by: Simon Glass Original-Reviewed-on: https://chromium-review.googlesource.com/351780 Original-Commit-Ready: Vadim Bendebury Original-Tested-by: Vadim Bendebury Original-Reviewed-by: Vadim Bendebury Reviewed-on: https://review.coreboot.org/15302 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh Reviewed-by: Paul Menzel --- src/ec/google/chromeec/ec.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/ec/google/chromeec/ec.c') diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index 87ab13acec..1a381d716e 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "chip.h" @@ -142,6 +143,26 @@ int google_chromeec_check_feature(int feature) return r.flags[feature / 32] & EC_FEATURE_MASK_0(feature); } +#if IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_RTC) +int rtc_get(struct rtc_time *time) +{ + struct chromeec_command cmd; + struct ec_response_rtc r; + + cmd.cmd_code = EC_CMD_RTC_GET_VALUE; + cmd.cmd_version = 0; + cmd.cmd_size_in = 0; + cmd.cmd_data_out = &r; + cmd.cmd_size_out = sizeof(r); + cmd.cmd_dev_index = 0; + + if (google_chromeec_command(&cmd) != 0) + return -1; + + return rtc_to_tm(r.time, time); +} +#endif + #ifndef __SMM__ #ifdef __PRE_RAM__ void google_chromeec_check_ec_image(int expected_type) -- cgit v1.2.3