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