fw_config: Use UNDEFINED_FW_CONFIG to mean unprovisioned
A mainboard might want to configure some things differently when a device is in an unprovisioned state. In the case when fw_config comes from the Chromium EC, an unprovisioned device will not have a FW_CONFIG tag in its CBI. This patch will set the fw_config value to UNDEFINED_FW_CONFIG in the case of an error retrieving the value, as well as adding a function, `fw_config_is_provisioned()` to indicate the provisioning status. BUG=none TEST=remove fw_config from chromium EC CBI, add code to mainboard to print return value of fw_config_is_provisioned() (`0`), add fw_config back to CBI, run same test and see `1`. Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Change-Id: Ib3046233667e97a5f78961fabacbeb3099b3d442 Reviewed-on: https://review.coreboot.org/c/coreboot/+/47956 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Nick Vaccaro <nvaccaro@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		@@ -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
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user