1/*
2 * $Id: inftl-user.h,v 1.1.1.1 2007/08/03 18:53:45 Exp $
3 *
4 * Parts of INFTL headers shared with userspace
5 *
6 */
7
8#ifndef __MTD_INFTL_USER_H__
9#define __MTD_INFTL_USER_H__
10
11#define	OSAK_VERSION	0x5120
12#define	PERCENTUSED	98
13
14#define	SECTORSIZE	512
15
16/* Block Control Information */
17
18struct inftl_bci {
19	uint8_t ECCsig[6];
20	uint8_t Status;
21	uint8_t Status1;
22} __attribute__((packed));
23
24struct 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
33struct 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
42struct inftl_unittail {
43	uint8_t Reserved[4];
44	uint16_t EraseMark;
45	uint16_t EraseMark1;
46} __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