tricorder-eeprom.h 1.1 KB

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