15#if EFI_STORAGE_MFS == TRUE
27 SettingStorageMFS(MFSDriver *drv) {
37bool SettingStorageMFS::isReady(){
41bool SettingStorageMFS::isIdSupported(
size_t id) {
42#if (EFI_STORAGE_INT_FLASH == TRUE)
49 if ((
id >= 1) && (
id < MFS_CFG_MAX_RECORDS)) {
56StorageStatus SettingStorageMFS::store(
size_t id,
const uint8_t *ptr,
size_t size) {
57 efiPrintf(
"MFS: Writing storage ID %d ... %d bytes",
id,
size);
61 mfs_error_t err = mfsWriteRecord(m_drv,
id,
size, ptr);
64 int elapsed_Ms = US2MS(NT2US(endNt - startNt));
66 if (err >= MFS_NO_ERROR) {
67 efiPrintf(
"MFS: Write done with no errors after %d mS MFS status %d", elapsed_Ms, err);
69 efiPrintf(
"MFS: Write FAILED after %d with MFS status %d", elapsed_Ms, err);
78 efiPrintf(
"MFS: Reading storage ID %d ... %d bytes",
id,
size);
80 size_t readed_size =
size;
81 mfs_error_t err = mfsReadRecord(m_drv,
id, &readed_size, ptr);
83 if (err >= MFS_NO_ERROR) {
84 if (readed_size !=
size) {
85 efiPrintf(
"MFS: Incorrect size expected %d readed %d",
size, readed_size);
88 efiPrintf(
"MFS: Reding done with no errors and MFS status %d", err);
90 efiPrintf(
"MFS: Read FAILED with MFS status %d", err);
103 err = mfsErase(m_drv);
106 int elapsed_Ms = US2MS(NT2US(endNt - startNt));
107 efiPrintf(
"MFS: format done %d mS err %d", elapsed_Ms, err);
120static SettingStorageMFS storageMFS(&
mfsd);
134 mfs_error_t err = mfsStart(&
mfsd, mfsConfig);
135 if (err < MFS_NO_ERROR) {
136 efiPrintf(
"MFS: storage failed to start: %d", err);
142 storageMFS.m_ready =
true;
virtual StorageStatus read(size_t id, uint8_t *ptr, size_t size)=0
virtual StorageStatus store(size_t id, const uint8_t *ptr, size_t size)=0
virtual bool isIdSupported(size_t id)=0
virtual StorageStatus format()=0
static union @47 NO_CACHE
bool storageRegisterStorage(StorageType type, SettingStorageBase *storage)
@ EFI_SETTINGS_BACKUP_RECORD_ID
static NO_CACHE mfs_nocache_buffer_t mfsbuf
const MFSConfig * boardGetMfsConfig(void)