diff options
Diffstat (limited to 'board')
-rw-r--r-- | board/cr50/tpm2/virtual_nvmem.c | 19 | ||||
-rw-r--r-- | board/cr50/tpm2/virtual_nvmem.h | 5 |
2 files changed, 23 insertions, 1 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 */ |