blob: 390d21c080aa98108d4cfef8bc5f10c2a1e84a0e [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Thomas Gleixnere4f06482005-11-07 11:15:37 +00002 * Parts of NFTL headers shared with userspace
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 */
5
6#ifndef __MTD_NFTL_USER_H__
7#define __MTD_NFTL_USER_H__
8
9/* Block Control Information */
10
11struct nftl_bci {
12 unsigned char ECCSig[6];
13 uint8_t Status;
14 uint8_t Status1;
15}__attribute__((packed));
16
17/* Unit Control Information */
18
19struct nftl_uci0 {
20 uint16_t VirtUnitNum;
21 uint16_t ReplUnitNum;
22 uint16_t SpareVirtUnitNum;
23 uint16_t SpareReplUnitNum;
24} __attribute__((packed));
25
26struct nftl_uci1 {
27 uint32_t WearInfo;
28 uint16_t EraseMark;
29 uint16_t EraseMark1;
30} __attribute__((packed));
31
32struct nftl_uci2 {
33 uint16_t FoldMark;
34 uint16_t FoldMark1;
35 uint32_t unused;
36} __attribute__((packed));
37
38union nftl_uci {
39 struct nftl_uci0 a;
40 struct nftl_uci1 b;
41 struct nftl_uci2 c;
42};
43
44struct nftl_oob {
45 struct nftl_bci b;
46 union nftl_uci u;
47};
48
49/* NFTL Media Header */
50
51struct NFTLMediaHeader {
52 char DataOrgID[6];
53 uint16_t NumEraseUnits;
54 uint16_t FirstPhysicalEUN;
55 uint32_t FormattedSize;
56 unsigned char UnitSizeFactor;
57} __attribute__((packed));
58
59#define MAX_ERASE_ZONES (8192 - 512)
60
61#define ERASE_MARK 0x3c69
62#define SECTOR_FREE 0xff
63#define SECTOR_USED 0x55
64#define SECTOR_IGNORE 0x11
65#define SECTOR_DELETED 0x00
66
67#define FOLD_MARK_IN_PROGRESS 0x5555
68
69#define ZONE_GOOD 0xff
70#define ZONE_BAD_ORIGINAL 0
71#define ZONE_BAD_MARKED 7
72
73
74#endif /* __MTD_NFTL_USER_H__ */