1*459f1da8SAndreas Bießmann /* 2*459f1da8SAndreas Bießmann * (C) Copyright 2013 3*459f1da8SAndreas Bießmann * Corscience GmbH & Co. KG, <www.corscience.de> 4*459f1da8SAndreas Bießmann * Andreas Bießmann <andreas.biessmann@corscience.de> 5*459f1da8SAndreas Bießmann * 6*459f1da8SAndreas Bießmann * SPDX-License-Identifier: GPL-2.0+ 7*459f1da8SAndreas Bießmann */ 8*459f1da8SAndreas Bießmann #ifndef TRICORDER_EEPROM_H_ 9*459f1da8SAndreas Bießmann #define TRICORDER_EEPROM_H_ 10*459f1da8SAndreas Bießmann 11*459f1da8SAndreas Bießmann #include <linux/compiler.h> 12*459f1da8SAndreas Bießmann 13*459f1da8SAndreas Bießmann #define TRICORDER_EEPROM_MAGIC 0xc2a94f52 14*459f1da8SAndreas Bießmann #define TRICORDER_EEPROM_VERSION 1 15*459f1da8SAndreas Bießmann 16*459f1da8SAndreas Bießmann #define TRICORDER_BOARD_NAME_LENGTH 12 17*459f1da8SAndreas Bießmann #define TRICORDER_BOARD_VERSION_LENGTH 4 18*459f1da8SAndreas Bießmann #define TRICORDER_BOARD_SERIAL_LENGTH 12 19*459f1da8SAndreas Bießmann #define TRICORDER_INTERFACE_VERSION_LENGTH 4 20*459f1da8SAndreas Bießmann 21*459f1da8SAndreas Bießmann struct tricorder_eeprom { 22*459f1da8SAndreas Bießmann uint32_t magic; 23*459f1da8SAndreas Bießmann uint16_t length; 24*459f1da8SAndreas Bießmann uint16_t version; 25*459f1da8SAndreas Bießmann char board_name[TRICORDER_BOARD_NAME_LENGTH]; 26*459f1da8SAndreas Bießmann char board_version[TRICORDER_BOARD_VERSION_LENGTH]; 27*459f1da8SAndreas Bießmann char board_serial[TRICORDER_BOARD_SERIAL_LENGTH]; 28*459f1da8SAndreas Bießmann char interface_version[TRICORDER_INTERFACE_VERSION_LENGTH]; 29*459f1da8SAndreas Bießmann uint32_t crc32; 30*459f1da8SAndreas Bießmann } __packed; 31*459f1da8SAndreas Bießmann 32*459f1da8SAndreas Bießmann #define TRICORDER_EEPROM_SIZE sizeof(struct tricorder_eeprom) 33*459f1da8SAndreas Bießmann #define TRICORDER_EEPROM_CRC_SIZE (TRICORDER_EEPROM_SIZE - \ 34*459f1da8SAndreas Bießmann sizeof(uint32_t)) 35*459f1da8SAndreas Bießmann 36*459f1da8SAndreas Bießmann /** 37*459f1da8SAndreas Bießmann * @brief read eeprom information from a specific eeprom address 38*459f1da8SAndreas Bießmann */ 39*459f1da8SAndreas Bießmann int tricorder_get_eeprom(int addr, struct tricorder_eeprom *eeprom); 40*459f1da8SAndreas Bießmann 41*459f1da8SAndreas Bießmann #endif /* TRICORDER_EEPROM_H_ */ 42