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