aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos/chromeos.h
diff options
context:
space:
mode:
authorCheng-Yi Chiang <cychiang@google.com>2019-10-14 12:10:51 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-10-24 15:45:37 +0000
commitcfde82c1d74bf044bf849adaaf44fc3a268ec10f (patch)
treee45a986ac392bbc06af8a0600a1d70101fb21985 /src/vendorcode/google/chromeos/chromeos.h
parentfcdb03358d5d950c3a7c878e67b2750f464e3708 (diff)
google/chromeos: Add a library to get DSM calibration data
On ChromeOS, there will be VPD values for dynamic speaker management (DSM) calibration data. They are resistor calibration values and temperature during calibration. These VPD fields use "dsm_calib_" prefix. Known keys are: "dsm_calib_r0_0" "dsm_calib_r0_1" "dsm_calib_r0_2" "dsm_calib_r0_3" "dsm_calib_temp_0" For now these values are unsigned decimal numbers greater than 0. This library will be used for RT1011 device driver in the patch series. Note that in the future we may encode more values into this VPD field if needed. We retain the flexibility for coreboot device driver or codec driver to decode/parse the VPD values based on the needed use case per-board. BUG=b:140397934 BRANCH=none TEST=On Helios, with patch series, check realtek,r0_calib and realtek,temperature_calib are available to rt1011 codec driver. Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> Change-Id: Ib9579a5cc055f8f438cb30a8acaf250a343db19e Reviewed-on: https://review.coreboot.org/c/coreboot/+/36028 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/vendorcode/google/chromeos/chromeos.h')
-rw-r--r--src/vendorcode/google/chromeos/chromeos.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h
index e5420ac099..a40c4c9a88 100644
--- a/src/vendorcode/google/chromeos/chromeos.h
+++ b/src/vendorcode/google/chromeos/chromeos.h
@@ -23,6 +23,7 @@
#include <rules.h>
#include <security/vboot/misc.h>
#include <security/vboot/vboot_common.h>
+#include <types.h>
#if CONFIG(CHROMEOS)
/* functions implemented in watchdog.c */
@@ -58,6 +59,16 @@ static inline void chromeos_reserve_ram_oops(struct device *dev, int idx) {}
void cbmem_add_vpd_calibration_data(void);
+/**
+ * get_dsm_calibration_from_key - Gets value related to DSM calibration from VPD
+ * @key: The key in RO_VPD. The valid prefix is "dsm_calib_". The valid keys are
+ * documented in https://chromeos.google.com/partner/dlm/docs/factory/vpd.html.
+ * @value: Output value. The value read from VPD parsed into uint64_t integer.
+ *
+ * Returns CB_SUCCESS on success or CB_ERR on failure.
+ */
+enum cb_err get_dsm_calibration_from_key(const char *key, uint64_t *value);
+
/*
* Create the OIPG package containing the Chrome OS gpios described by
* the chromeos_gpio array.