inftl-user.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. * Parts of INFTL headers shared with userspace
  3. *
  4. */
  5. #ifndef __MTD_INFTL_USER_H__
  6. #define __MTD_INFTL_USER_H__
  7. #define OSAK_VERSION 0x5120
  8. #define PERCENTUSED 98
  9. #define SECTORSIZE 512
  10. /* Block Control Information */
  11. struct inftl_bci {
  12. uint8_t ECCsig[6];
  13. uint8_t Status;
  14. uint8_t Status1;
  15. } __attribute__((packed));
  16. struct inftl_unithead1 {
  17. uint16_t virtualUnitNo;
  18. uint16_t prevUnitNo;
  19. uint8_t ANAC;
  20. uint8_t NACs;
  21. uint8_t parityPerField;
  22. uint8_t discarded;
  23. } __attribute__((packed));
  24. struct inftl_unithead2 {
  25. uint8_t parityPerField;
  26. uint8_t ANAC;
  27. uint16_t prevUnitNo;
  28. uint16_t virtualUnitNo;
  29. uint8_t NACs;
  30. uint8_t discarded;
  31. } __attribute__((packed));
  32. struct inftl_unittail {
  33. uint8_t Reserved[4];
  34. uint16_t EraseMark;
  35. uint16_t EraseMark1;
  36. } __attribute__((packed));
  37. union inftl_uci {
  38. struct inftl_unithead1 a;
  39. struct inftl_unithead2 b;
  40. struct inftl_unittail c;
  41. };
  42. struct inftl_oob {
  43. struct inftl_bci b;
  44. union inftl_uci u;
  45. };
  46. /* INFTL Media Header */
  47. struct INFTLPartition {
  48. __u32 virtualUnits;
  49. __u32 firstUnit;
  50. __u32 lastUnit;
  51. __u32 flags;
  52. __u32 spareUnits;
  53. __u32 Reserved0;
  54. __u32 Reserved1;
  55. } __attribute__((packed));
  56. struct INFTLMediaHeader {
  57. char bootRecordID[8];
  58. __u32 NoOfBootImageBlocks;
  59. __u32 NoOfBinaryPartitions;
  60. __u32 NoOfBDTLPartitions;
  61. __u32 BlockMultiplierBits;
  62. __u32 FormatFlags;
  63. __u32 OsakVersion;
  64. __u32 PercentUsed;
  65. struct INFTLPartition Partitions[4];
  66. } __attribute__((packed));
  67. /* Partition flag types */
  68. #define INFTL_BINARY 0x20000000
  69. #define INFTL_BDTL 0x40000000
  70. #define INFTL_LAST 0x80000000
  71. #endif /* __MTD_INFTL_USER_H__ */