diff options
-rw-r--r-- | board/cr50/tpm2/virtual_nvmem.c | 19 | ||||
-rw-r--r-- | board/cr50/tpm2/virtual_nvmem.h | 5 | ||||
-rw-r--r-- | chip/g/factory_config.c | 2 | ||||
-rw-r--r-- | chip/g/factory_config.h | 7 |
4 files changed, 31 insertions, 2 deletions
diff --git a/board/cr50/tpm2/virtual_nvmem.c b/board/cr50/tpm2/virtual_nvmem.c index 1eb00e5daa..e2a0b963c7 100644 --- a/board/cr50/tpm2/virtual_nvmem.c +++ b/board/cr50/tpm2/virtual_nvmem.c @@ -10,6 +10,7 @@ #include "board_id.h" #include "console.h" #include "dcrypto.h" +#include "factory_config.h" #include "link_defs.h" #include "rma_auth.h" #include "sn_bits.h" @@ -320,6 +321,18 @@ static void GetRSUDevID(BYTE *to, size_t offset, size_t size) } BUILD_ASSERT(VIRTUAL_NV_INDEX_RSU_DEV_ID_SIZE == SHA256_DIGEST_SIZE); +static void GetFactoryCfg(BYTE *to, size_t offset, size_t size) +{ + uint64_t fc; + + if (read_factory_config(&fc) != EC_SUCCESS) { + memset(to, 0, size); + return; + } + memcpy(to, ((BYTE *)&fc) + offset, size); +} +BUILD_ASSERT(VIRTUAL_NV_INDEX_FACTORY_CONFIG_SIZE == INFO_FACTORY_CFG_SIZE); + /* * Registration of current virtual indexes. * @@ -344,6 +357,12 @@ static const struct virtual_nv_index_cfg index_config[] = { REGISTER_CONFIG(VIRTUAL_NV_INDEX_RSU_DEV_ID, VIRTUAL_NV_INDEX_RSU_DEV_ID_SIZE, GetRSUDevID) + /* TODO(b/278118981): implement get RMA BYTES and WV UDS */ + REGISTER_DEPRECATED_CONFIG(VIRTUAL_NV_INDEX_RMA_BYTES_UNIMPLEMENTED) + REGISTER_DEPRECATED_CONFIG(VIRTUAL_NV_INDEX_WV_UDS_BYTES_UNIMPLEMENTED) + REGISTER_CONFIG(VIRTUAL_NV_INDEX_FACTORY_CONFIG, + VIRTUAL_NV_INDEX_FACTORY_CONFIG_SIZE, + GetFactoryCfg) }; /* Check validity check of above config. */ diff --git a/board/cr50/tpm2/virtual_nvmem.h b/board/cr50/tpm2/virtual_nvmem.h index 75fc24db06..f8b9f46169 100644 --- a/board/cr50/tpm2/virtual_nvmem.h +++ b/board/cr50/tpm2/virtual_nvmem.h @@ -27,7 +27,9 @@ enum virtual_nv_index { VIRTUAL_NV_INDEX_RSU_DEV_ID, /* Reserved for generic TPM2.0 stand-alone counter. */ /* TODO(b/191163997): support reading RMA bytes via this index. */ - /* VIRTUAL_NV_INDEX_RMA_BYTES = 0x013fff04, */ + VIRTUAL_NV_INDEX_RMA_BYTES_UNIMPLEMENTED, + VIRTUAL_NV_INDEX_WV_UDS_BYTES_UNIMPLEMENTED, + VIRTUAL_NV_INDEX_FACTORY_CONFIG, VIRTUAL_NV_INDEX_END, }; /* Reserved space for future virtual indexes; this is the last valid index. */ @@ -40,5 +42,6 @@ enum virtual_nv_index { #define VIRTUAL_NV_INDEX_SN_DATA_SIZE 16 #define VIRTUAL_NV_INDEX_G2F_CERT_SIZE 315 #define VIRTUAL_NV_INDEX_RSU_DEV_ID_SIZE 32 +#define VIRTUAL_NV_INDEX_FACTORY_CONFIG_SIZE INFO_FACTORY_CFG_SIZE #endif /* __EC_BOARD_CR50_TPM2_VIRTUAL_NVMEM_H */ diff --git a/chip/g/factory_config.c b/chip/g/factory_config.c index 4e30b79e8c..8ead8dae67 100644 --- a/chip/g/factory_config.c +++ b/chip/g/factory_config.c @@ -25,7 +25,7 @@ static int factory_config_is_blank(uint64_t fc) * @return EC_SUCCESS or an error code in cases of various failures to read the * flash space. */ -static int read_factory_config(uint64_t *fc) +int read_factory_config(uint64_t *fc) { uint32_t *fc_p; int i; diff --git a/chip/g/factory_config.h b/chip/g/factory_config.h index 26345c1eb9..4f0de5fc3a 100644 --- a/chip/g/factory_config.h +++ b/chip/g/factory_config.h @@ -13,4 +13,11 @@ */ void print_factory_config(void); +/** + * Read the INFO1 factory config value into fc. + * + * @return EC_SUCCESS or an error code in cases of various failures to read the + * flash space. + */ +int read_factory_config(uint64_t *fc); #endif /* ! __EC_CHIP_G_FACTORY_CONFIG_H */ |