xref: /rk3399_rockchip-uboot/board/corscience/tricorder/tricorder-eeprom.h (revision 85b8c5c4bf80025de4632ae6c9a8a606e51508a4)
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