459f1da88b
The new tricordereeprom command can read and write the eeprom for hardware detection on tricorder devices. Signed-off-by: Andreas Bießmann <andreas.biessmann@corscience.de>
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
/*
|
|
* (C) Copyright 2013
|
|
* Corscience GmbH & Co. KG, <www.corscience.de>
|
|
* Andreas Bießmann <andreas.biessmann@corscience.de>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
#ifndef TRICORDER_EEPROM_H_
|
|
#define TRICORDER_EEPROM_H_
|
|
|
|
#include <linux/compiler.h>
|
|
|
|
#define TRICORDER_EEPROM_MAGIC 0xc2a94f52
|
|
#define TRICORDER_EEPROM_VERSION 1
|
|
|
|
#define TRICORDER_BOARD_NAME_LENGTH 12
|
|
#define TRICORDER_BOARD_VERSION_LENGTH 4
|
|
#define TRICORDER_BOARD_SERIAL_LENGTH 12
|
|
#define TRICORDER_INTERFACE_VERSION_LENGTH 4
|
|
|
|
struct tricorder_eeprom {
|
|
uint32_t magic;
|
|
uint16_t length;
|
|
uint16_t version;
|
|
char board_name[TRICORDER_BOARD_NAME_LENGTH];
|
|
char board_version[TRICORDER_BOARD_VERSION_LENGTH];
|
|
char board_serial[TRICORDER_BOARD_SERIAL_LENGTH];
|
|
char interface_version[TRICORDER_INTERFACE_VERSION_LENGTH];
|
|
uint32_t crc32;
|
|
} __packed;
|
|
|
|
#define TRICORDER_EEPROM_SIZE sizeof(struct tricorder_eeprom)
|
|
#define TRICORDER_EEPROM_CRC_SIZE (TRICORDER_EEPROM_SIZE - \
|
|
sizeof(uint32_t))
|
|
|
|
/**
|
|
* @brief read eeprom information from a specific eeprom address
|
|
*/
|
|
int tricorder_get_eeprom(int addr, struct tricorder_eeprom *eeprom);
|
|
|
|
#endif /* TRICORDER_EEPROM_H_ */
|