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