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