md: Allow read error in a single drive raid1 to be passed up.
[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         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