• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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