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 __u8 ECCsig[6]; 20 __u8 Status; 21 __u8 Status1; 22 } __attribute__((packed)); 23 24 struct inftl_unithead1 { 25 __u16 virtualUnitNo; 26 __u16 prevUnitNo; 27 __u8 ANAC; 28 __u8 NACs; 29 __u8 parityPerField; 30 __u8 discarded; 31 } __attribute__((packed)); 32 33 struct inftl_unithead2 { 34 __u8 parityPerField; 35 __u8 ANAC; 36 __u16 prevUnitNo; 37 __u16 virtualUnitNo; 38 __u8 NACs; 39 __u8 discarded; 40 } __attribute__((packed)); 41 42 struct inftl_unittail { 43 __u8 Reserved[4]; 44 __u16 EraseMark; 45 __u16 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