diff options
author | Marek BehĂșn <kabel@kernel.org> | 2024-06-18 17:34:33 +0200 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2024-07-08 08:20:58 +0200 |
commit | b5a6120227f05ef2c7858b67a3d76a226d9ec32f (patch) | |
tree | 9a4aeac150d3589c268ef2139786dbd06d695c32 /board/CZ.NIC/turris_omnia/eeprom.c | |
parent | 6ce75595859bbac303f43d0df6031bca6306d0e1 (diff) | |
download | u-boot-b5a6120227f05ef2c7858b67a3d76a226d9ec32f.zip u-boot-b5a6120227f05ef2c7858b67a3d76a226d9ec32f.tar.gz u-boot-b5a6120227f05ef2c7858b67a3d76a226d9ec32f.tar.bz2 |
arm: mvebu: turris_omnia: Extend EEPROM info structure
Extend the Omnia EEPROM information structure in preparation for more
variables to be stored there.
Signed-off-by: Marek BehĂșn <kabel@kernel.org>
Diffstat (limited to 'board/CZ.NIC/turris_omnia/eeprom.c')
-rw-r--r-- | board/CZ.NIC/turris_omnia/eeprom.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/board/CZ.NIC/turris_omnia/eeprom.c b/board/CZ.NIC/turris_omnia/eeprom.c index a4f1dab..ea13e95 100644 --- a/board/CZ.NIC/turris_omnia/eeprom.c +++ b/board/CZ.NIC/turris_omnia/eeprom.c @@ -60,9 +60,13 @@ static struct eeprom_field omnia_layout[] = { _DEF_FIELD("RAM size in GB", 4, ramsz), _DEF_FIELD("Wi-Fi Region", 4, region), _DEF_FIELD("CRC32 checksum", 4, bin), + _DEF_FIELD("Extended reserved fields", 44, reserved), + _DEF_FIELD("Extended CRC32 checksum", 4, bin), }; static struct eeprom_field *crc_field = &omnia_layout[3]; +static struct eeprom_field *ext_crc_field = + &omnia_layout[ARRAY_SIZE(omnia_layout) - 1]; static int omnia_update_field(struct eeprom_layout *layout, char *field_name, char *new_data) @@ -91,6 +95,11 @@ static int omnia_update_field(struct eeprom_layout *layout, char *field_name, put_unaligned_le32(crc, crc_field->buf); } + if (field < ext_crc_field) { + u32 crc = crc32(0, layout->data, 44); + put_unaligned_le32(crc, ext_crc_field->buf); + } + return 0; } @@ -99,7 +108,7 @@ void eeprom_layout_assign(struct eeprom_layout *layout, int) layout->fields = omnia_layout; layout->num_of_fields = ARRAY_SIZE(omnia_layout); layout->update = omnia_update_field; - layout->data_size = 16; + layout->data_size = 64; } int eeprom_layout_detect(unsigned char *) |