summaryrefslogtreecommitdiff
path: root/common/cbi.c
diff options
context:
space:
mode:
authorMarco Chen <marcochen@google.com>2020-08-10 12:19:10 +0800
committerCommit Bot <commit-bot@chromium.org>2020-08-13 22:26:17 +0000
commit0212d4a3ce01452ddaba46f076f90e9a5e90e589 (patch)
tree9afc036ff84e5807f9bcd7faaf7e94e0bb3f7725 /common/cbi.c
parentdc7e87f2503eab5ef0f5cf4d66286c52ec647751 (diff)
downloadchrome-ec-0212d4a3ce01452ddaba46f076f90e9a5e90e589.tar.gz
cbi: add Second Source Factory Cache (SSFC) CBI field
SSFC field will be leveraged to record what second source is used in the DUT by probing components in the factory or RMA. Firmware code should refer to this field to judge what driver should be configured for a specific component. For example, the board code can arrange what sensor driver should be set into motion_sensors array if there are multiple sources of base or lid sensor. As the definition of FW_CONFIG, it describe which "features" the firmware code should enable or disable. For example, whether lid / base sensors should be enabled or not but not care about what second source is in this DUT. BRANCH=none BUG=b:163285687 TEST=call `cbi-util` to create the cbi image with SSFC and show created content. TEST=`make buildall -j` TEST=`make runhosttests -j` Change-Id: Icb4aa00ae47ab025198e7fd5edd6aab96a4bf53e Signed-off-by: Marco Chen <marcochen@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2344268 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'common/cbi.c')
-rw-r--r--common/cbi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/cbi.c b/common/cbi.c
index 6918ad50dd..e30e35aad3 100644
--- a/common/cbi.c
+++ b/common/cbi.c
@@ -327,6 +327,14 @@ int cbi_get_fw_config(uint32_t *fw_config)
&size);
}
+int cbi_get_ssfc(uint32_t *ssfc)
+{
+ uint8_t size = sizeof(*ssfc);
+
+ return cbi_get_board_info(CBI_TAG_SSFC, (uint8_t *)ssfc,
+ &size);
+}
+
int cbi_get_pcb_supplier(uint32_t *pcb_supplier)
{
uint8_t size = sizeof(*pcb_supplier);
@@ -451,6 +459,7 @@ static void dump_cbi(void)
print_tag("SKU_ID", cbi_get_sku_id(&val), &val);
print_tag("FW_CONFIG", cbi_get_fw_config(&val), &val);
print_tag("PCB_SUPPLIER", cbi_get_pcb_supplier(&val), &val);
+ print_tag("SSFC", cbi_get_ssfc(&val), &val);
}
static int cc_cbi(int argc, char **argv)