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