xref: /openbmc/u-boot/include/eeprom_layout.h (revision e8f80a5a)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2aa9e6044SNikita Kiryanov /*
3aa9e6044SNikita Kiryanov  * (C) Copyright 2009-2016 CompuLab, Ltd.
4aa9e6044SNikita Kiryanov  *
5aa9e6044SNikita Kiryanov  * Authors: Nikita Kiryanov <nikita@compulab.co.il>
6aa9e6044SNikita Kiryanov  *	    Igor Grinberg <grinberg@compulab.co.il>
7aa9e6044SNikita Kiryanov  */
8aa9e6044SNikita Kiryanov 
9aa9e6044SNikita Kiryanov #ifndef _LAYOUT_
10aa9e6044SNikita Kiryanov #define _LAYOUT_
11aa9e6044SNikita Kiryanov 
12aa9e6044SNikita Kiryanov #define RESERVED_FIELDS			NULL
13aa9e6044SNikita Kiryanov #define LAYOUT_VERSION_UNRECOGNIZED	-1
14aa9e6044SNikita Kiryanov #define LAYOUT_VERSION_AUTODETECT	-2
15aa9e6044SNikita Kiryanov 
16aa9e6044SNikita Kiryanov struct eeprom_layout {
17aa9e6044SNikita Kiryanov 	struct eeprom_field *fields;
18aa9e6044SNikita Kiryanov 	int num_of_fields;
19aa9e6044SNikita Kiryanov 	int layout_version;
20aa9e6044SNikita Kiryanov 	unsigned char *data;
21aa9e6044SNikita Kiryanov 	int data_size;
22aa9e6044SNikita Kiryanov 	void (*print)(const struct eeprom_layout *eeprom_layout);
23aa9e6044SNikita Kiryanov 	int (*update)(struct eeprom_layout *eeprom_layout, char *field_name,
24aa9e6044SNikita Kiryanov 		      char *new_data);
25aa9e6044SNikita Kiryanov };
26aa9e6044SNikita Kiryanov 
27aa9e6044SNikita Kiryanov void eeprom_layout_setup(struct eeprom_layout *layout, unsigned char *buf,
28aa9e6044SNikita Kiryanov 			 unsigned int buf_size, int layout_version);
29aa9e6044SNikita Kiryanov __weak void __eeprom_layout_assign(struct eeprom_layout *layout,
30aa9e6044SNikita Kiryanov 				   int layout_version);
31aa9e6044SNikita Kiryanov 
32aa9e6044SNikita Kiryanov #endif
33