blob: 8376bd1a9e01d7fcfb2fbfbf9c4a083c6b33cd5a [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Thomas Gleixnere4f06482005-11-07 11:15:37 +00002 * Parts of INFTL headers shared with userspace
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 */
5
6#ifndef __MTD_INFTL_USER_H__
7#define __MTD_INFTL_USER_H__
8
Jaswinder Singh Rajput70c2ed62009-01-30 22:32:35 +05309#include <linux/types.h>
10
Linus Torvalds1da177e2005-04-16 15:20:36 -070011#define OSAK_VERSION 0x5120
12#define PERCENTUSED 98
13
14#define SECTORSIZE 512
15
16/* Block Control Information */
17
18struct inftl_bci {
Arnd Bergmannccef7ab2009-02-26 00:51:41 +010019 __u8 ECCsig[6];
20 __u8 Status;
21 __u8 Status1;
Linus Torvalds1da177e2005-04-16 15:20:36 -070022} __attribute__((packed));
23
24struct inftl_unithead1 {
Arnd Bergmannccef7ab2009-02-26 00:51:41 +010025 __u16 virtualUnitNo;
26 __u16 prevUnitNo;
27 __u8 ANAC;
28 __u8 NACs;
29 __u8 parityPerField;
30 __u8 discarded;
Linus Torvalds1da177e2005-04-16 15:20:36 -070031} __attribute__((packed));
32
33struct inftl_unithead2 {
Arnd Bergmannccef7ab2009-02-26 00:51:41 +010034 __u8 parityPerField;
35 __u8 ANAC;
36 __u16 prevUnitNo;
37 __u16 virtualUnitNo;
38 __u8 NACs;
39 __u8 discarded;
Linus Torvalds1da177e2005-04-16 15:20:36 -070040} __attribute__((packed));
41
42struct inftl_unittail {
Arnd Bergmannccef7ab2009-02-26 00:51:41 +010043 __u8 Reserved[4];
44 __u16 EraseMark;
45 __u16 EraseMark1;
Linus Torvalds1da177e2005-04-16 15:20:36 -070046} __attribute__((packed));
47
48union inftl_uci {
49 struct inftl_unithead1 a;
50 struct inftl_unithead2 b;
51 struct inftl_unittail c;
52};
53
54struct inftl_oob {
55 struct inftl_bci b;
56 union inftl_uci u;
57};
58
59
60/* INFTL Media Header */
61
62struct 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
72struct 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