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