common/util/guid.c (47 lines of code) (raw):

#include <stdio.h> #include <string.h> #include "guid.h" #include "plat_guid.h" // size of 1 to satisfy compiler warning __weak const EEPROM_CFG guid_config[1] = {}; uint8_t GUID_read(EEPROM_ENTRY *entry) { uint8_t status; if (entry->config.dev_id >= MAX_GUID_ID) { printf("GUID read device ID %x not exist\n", entry->config.dev_id); return GUID_INVALID_ID; } if ((entry->offset + entry->data_len) >= (GUID_START + GUID_SIZE)) { // Check data write out of range printf("GUID read out of range, type: %x, ID: %x\n", entry->config.dev_type, entry->config.dev_id); return GUID_OUT_OF_RANGE; } memcpy(&entry->config, &guid_config[entry->config.dev_id], sizeof(guid_config[entry->config.dev_id])); status = eeprom_read(entry); if (!status) { return GUID_FAIL_TO_ACCESS; } return GUID_READ_SUCCESS; } uint8_t GUID_write(EEPROM_ENTRY *entry) { uint8_t status; if (entry->config.dev_id >= MAX_GUID_ID) { printf("GUID write device ID %x not exist\n", entry->config.dev_id); return GUID_INVALID_ID; } if ((entry->offset + entry->data_len) >= (GUID_START + GUID_SIZE)) { // Check data write out of range printf("GUID write out of range, type: %x, ID: %x\n", entry->config.dev_type, entry->config.dev_id); return GUID_OUT_OF_RANGE; } memcpy(&entry->config, &guid_config[entry->config.dev_id], sizeof(guid_config[entry->config.dev_id])); status = eeprom_write(entry); if (!status) { return GUID_FAIL_TO_ACCESS; } return GUID_WRITE_SUCCESS; }