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