tricorder-eeprom.h 1.1 KB

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