Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6
[linux-2.6] / include / mtd / inftl-user.h
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