1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Parts of INFTL headers shared with userspace
4 *
5 */
6
7#ifndef __MTD_INFTL_USER_H__
8#define __MTD_INFTL_USER_H__
9
10#include <linux/types.h>
11
12#define	OSAK_VERSION	0x5120
13#define	PERCENTUSED	98
14
15#define	SECTORSIZE	512
16
17/* Block Control Information */
18
19struct inftl_bci {
20	__u8 ECCsig[6];
21	__u8 Status;
22	__u8 Status1;
23} __attribute__((packed));
24
25struct inftl_unithead1 {
26	__u16 virtualUnitNo;
27	__u16 prevUnitNo;
28	__u8 ANAC;
29	__u8 NACs;
30	__u8 parityPerField;
31	__u8 discarded;
32} __attribute__((packed));
33
34struct inftl_unithead2 {
35	__u8 parityPerField;
36	__u8 ANAC;
37	__u16 prevUnitNo;
38	__u16 virtualUnitNo;
39	__u8 NACs;
40	__u8 discarded;
41} __attribute__((packed));
42
43struct inftl_unittail {
44	__u8 Reserved[4];
45	__u16 EraseMark;
46	__u16 EraseMark1;
47} __attribute__((packed));
48
49union inftl_uci {
50	struct inftl_unithead1 a;
51	struct inftl_unithead2 b;
52	struct inftl_unittail c;
53};
54
55struct inftl_oob {
56	struct inftl_bci b;
57	union inftl_uci u;
58};
59
60
61/* INFTL Media Header */
62
63struct INFTLPartition {
64	__u32 virtualUnits;
65	__u32 firstUnit;
66	__u32 lastUnit;
67	__u32 flags;
68	__u32 spareUnits;
69	__u32 Reserved0;
70	__u32 Reserved1;
71} __attribute__((packed));
72
73struct INFTLMediaHeader {
74	char bootRecordID[8];
75	__u32 NoOfBootImageBlocks;
76	__u32 NoOfBinaryPartitions;
77	__u32 NoOfBDTLPartitions;
78	__u32 BlockMultiplierBits;
79	__u32 FormatFlags;
80	__u32 OsakVersion;
81	__u32 PercentUsed;
82	struct INFTLPartition Partitions[4];
83} __attribute__((packed));
84
85/* Partition flag types */
86#define	INFTL_BINARY	0x20000000
87#define	INFTL_BDTL	0x40000000
88#define	INFTL_LAST	0x80000000
89
90#endif /* __MTD_INFTL_USER_H__ */
91
92
93