aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/fw_config.h6
-rw-r--r--src/lib/fw_config.c11
2 files changed, 15 insertions, 2 deletions
diff --git a/src/include/fw_config.h b/src/include/fw_config.h
index 3c8772598e..b702871358 100644
--- a/src/include/fw_config.h
+++ b/src/include/fw_config.h
@@ -57,6 +57,12 @@ bool fw_config_probe(const struct fw_config *match);
void fw_config_for_each_found(void (*cb)(const struct fw_config *config, void *arg), void *arg);
/**
+ * fw_config_is_provisioned() - Determine if FW_CONFIG has been provisioned.
+ * Return %true if FW_CONFIG has been provisioned, %false otherwise.
+ */
+bool fw_config_is_provisioned(void);
+
+/**
* fw_config_get_found() - Return a pointer to the fw_config struct for a given field.
* @field_mask: A field mask from static.h, e.g., FW_CONFIG_FIELD_FEATURE_MASK
*
diff --git a/src/lib/fw_config.c b/src/lib/fw_config.c
index 2f7186cc86..2c4c6b290c 100644
--- a/src/lib/fw_config.c
+++ b/src/lib/fw_config.c
@@ -28,7 +28,7 @@ uint64_t fw_config_get(void)
sizeof(fw_config_value)) != sizeof(fw_config_value)) {
printk(BIOS_WARNING, "%s: Could not get fw_config from CBFS\n",
__func__);
- fw_config_value = 0;
+ fw_config_value = UNDEFINED_FW_CONFIG;
} else {
printk(BIOS_INFO, "FW_CONFIG value from CBFS is 0x%" PRIx64 "\n",
fw_config_value);
@@ -38,8 +38,10 @@ uint64_t fw_config_get(void)
/* Read the value from EC CBI. */
if (CONFIG(FW_CONFIG_SOURCE_CHROMEEC_CBI)) {
- if (google_chromeec_cbi_get_fw_config(&fw_config_value))
+ if (google_chromeec_cbi_get_fw_config(&fw_config_value)) {
printk(BIOS_WARNING, "%s: Could not get fw_config from EC\n", __func__);
+ fw_config_value = UNDEFINED_FW_CONFIG;
+ }
}
printk(BIOS_INFO, "FW_CONFIG value is 0x%" PRIx64 "\n", fw_config_value);
@@ -63,6 +65,11 @@ bool fw_config_probe(const struct fw_config *match)
return false;
}
+bool fw_config_is_provisioned(void)
+{
+ return fw_config_get() != UNDEFINED_FW_CONFIG;
+}
+
#if ENV_RAMSTAGE
/*