summaryrefslogtreecommitdiff
path: root/src/mainboard/prodrive/atlas/vpd.h
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2023-03-27 12:06:08 +0200
committerFelix Held <felix-coreboot@felixheld.de>2023-03-30 13:35:51 +0000
commitd4c5fc0e8ed962215767a9445df12be880994ad5 (patch)
treee8563b8541e556739b8a5fcfcc7726765c62bec1 /src/mainboard/prodrive/atlas/vpd.h
parent603dd56618d21e9000ea392bccb43054f284f140 (diff)
mb/prodrive/atlas: Rework EEPROM layout structures
To avoid having to calculate the length of a struct separately, rework the code to give the struct a tag name, so that `sizeof()` can be used instead. This involves refactoring the `get_emi_eeprom_vpd()` function to return a struct instead of a union, so callers can no longer access the EEPROM data as an array of bytes without additional code, but this array view is only used inside `get_emi_eeprom_vpd()` when reading the data from EMI. Change-Id: Id1bc40939631baa131b5f60eadbfe42838294ebe Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/73983 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Diffstat (limited to 'src/mainboard/prodrive/atlas/vpd.h')
-rw-r--r--src/mainboard/prodrive/atlas/vpd.h22
1 files changed, 6 insertions, 16 deletions
diff --git a/src/mainboard/prodrive/atlas/vpd.h b/src/mainboard/prodrive/atlas/vpd.h
index 3955c119a7..086dc8ca28 100644
--- a/src/mainboard/prodrive/atlas/vpd.h
+++ b/src/mainboard/prodrive/atlas/vpd.h
@@ -36,24 +36,14 @@ enum atlas_profile {
#define ATLAS_SN_PN_LENGTH 20
-#define EMI_EEPROM_LAYOUT_LENGTH ( \
- sizeof(struct emi_eeprom_vpd_header) + \
- ATLAS_SN_PN_LENGTH + \
- ATLAS_SN_PN_LENGTH + \
- sizeof(uint16_t) \
- )
-
-union emi_eeprom_vpd {
- struct __packed {
- struct emi_eeprom_vpd_header header;
- char serial_number[ATLAS_SN_PN_LENGTH]; /* xx-xx-xxx-xxx */
- char part_number[ATLAS_SN_PN_LENGTH]; /* xxx-xxxx-xxxx.Rxx */
- uint16_t profile;
- };
- uint8_t raw[EMI_EEPROM_LAYOUT_LENGTH];
+struct __packed emi_eeprom_vpd {
+ struct emi_eeprom_vpd_header header;
+ char serial_number[ATLAS_SN_PN_LENGTH]; /* xx-xx-xxx-xxx */
+ char part_number[ATLAS_SN_PN_LENGTH]; /* xxx-xxxx-xxxx.Rxx */
+ uint16_t profile;
};
/* Always returns a non-NULL pointer to valid data */
-const union emi_eeprom_vpd *get_emi_eeprom_vpd(void);
+const struct emi_eeprom_vpd *get_emi_eeprom_vpd(void);
#endif /* ATLAS_VPD_H */