xref: /aosp_15_r20/external/kernel-headers/original/uapi/mtd/nftl-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  * Copyright © 1999-2010 David Woodhouse <[email protected]>
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * This program is free software; you can redistribute it and/or modify
6*f80ad8b4SAndroid Build Coastguard Worker  * it under the terms of the GNU General Public License as published by
7*f80ad8b4SAndroid Build Coastguard Worker  * the Free Software Foundation; either version 2 of the License, or
8*f80ad8b4SAndroid Build Coastguard Worker  * (at your option) any later version.
9*f80ad8b4SAndroid Build Coastguard Worker  *
10*f80ad8b4SAndroid Build Coastguard Worker  * This program is distributed in the hope that it will be useful,
11*f80ad8b4SAndroid Build Coastguard Worker  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12*f80ad8b4SAndroid Build Coastguard Worker  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*f80ad8b4SAndroid Build Coastguard Worker  * GNU General Public License for more details.
14*f80ad8b4SAndroid Build Coastguard Worker  *
15*f80ad8b4SAndroid Build Coastguard Worker  * You should have received a copy of the GNU General Public License
16*f80ad8b4SAndroid Build Coastguard Worker  * along with this program; if not, write to the Free Software
17*f80ad8b4SAndroid Build Coastguard Worker  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18*f80ad8b4SAndroid Build Coastguard Worker  *
19*f80ad8b4SAndroid Build Coastguard Worker  */
20*f80ad8b4SAndroid Build Coastguard Worker 
21*f80ad8b4SAndroid Build Coastguard Worker #ifndef __MTD_NFTL_USER_H__
22*f80ad8b4SAndroid Build Coastguard Worker #define __MTD_NFTL_USER_H__
23*f80ad8b4SAndroid Build Coastguard Worker 
24*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
25*f80ad8b4SAndroid Build Coastguard Worker 
26*f80ad8b4SAndroid Build Coastguard Worker /* Block Control Information */
27*f80ad8b4SAndroid Build Coastguard Worker 
28*f80ad8b4SAndroid Build Coastguard Worker struct nftl_bci {
29*f80ad8b4SAndroid Build Coastguard Worker 	unsigned char ECCSig[6];
30*f80ad8b4SAndroid Build Coastguard Worker 	__u8 Status;
31*f80ad8b4SAndroid Build Coastguard Worker 	__u8 Status1;
32*f80ad8b4SAndroid Build Coastguard Worker }__attribute__((packed));
33*f80ad8b4SAndroid Build Coastguard Worker 
34*f80ad8b4SAndroid Build Coastguard Worker /* Unit Control Information */
35*f80ad8b4SAndroid Build Coastguard Worker 
36*f80ad8b4SAndroid Build Coastguard Worker struct nftl_uci0 {
37*f80ad8b4SAndroid Build Coastguard Worker 	__u16 VirtUnitNum;
38*f80ad8b4SAndroid Build Coastguard Worker 	__u16 ReplUnitNum;
39*f80ad8b4SAndroid Build Coastguard Worker 	__u16 SpareVirtUnitNum;
40*f80ad8b4SAndroid Build Coastguard Worker 	__u16 SpareReplUnitNum;
41*f80ad8b4SAndroid Build Coastguard Worker } __attribute__((packed));
42*f80ad8b4SAndroid Build Coastguard Worker 
43*f80ad8b4SAndroid Build Coastguard Worker struct nftl_uci1 {
44*f80ad8b4SAndroid Build Coastguard Worker 	__u32 WearInfo;
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 struct nftl_uci2 {
50*f80ad8b4SAndroid Build Coastguard Worker         __u16 FoldMark;
51*f80ad8b4SAndroid Build Coastguard Worker         __u16 FoldMark1;
52*f80ad8b4SAndroid Build Coastguard Worker 	__u32 unused;
53*f80ad8b4SAndroid Build Coastguard Worker } __attribute__((packed));
54*f80ad8b4SAndroid Build Coastguard Worker 
55*f80ad8b4SAndroid Build Coastguard Worker union nftl_uci {
56*f80ad8b4SAndroid Build Coastguard Worker 	struct nftl_uci0 a;
57*f80ad8b4SAndroid Build Coastguard Worker 	struct nftl_uci1 b;
58*f80ad8b4SAndroid Build Coastguard Worker 	struct nftl_uci2 c;
59*f80ad8b4SAndroid Build Coastguard Worker };
60*f80ad8b4SAndroid Build Coastguard Worker 
61*f80ad8b4SAndroid Build Coastguard Worker struct nftl_oob {
62*f80ad8b4SAndroid Build Coastguard Worker 	struct nftl_bci b;
63*f80ad8b4SAndroid Build Coastguard Worker 	union nftl_uci u;
64*f80ad8b4SAndroid Build Coastguard Worker };
65*f80ad8b4SAndroid Build Coastguard Worker 
66*f80ad8b4SAndroid Build Coastguard Worker /* NFTL Media Header */
67*f80ad8b4SAndroid Build Coastguard Worker 
68*f80ad8b4SAndroid Build Coastguard Worker struct NFTLMediaHeader {
69*f80ad8b4SAndroid Build Coastguard Worker 	char DataOrgID[6];
70*f80ad8b4SAndroid Build Coastguard Worker 	__u16 NumEraseUnits;
71*f80ad8b4SAndroid Build Coastguard Worker 	__u16 FirstPhysicalEUN;
72*f80ad8b4SAndroid Build Coastguard Worker 	__u32 FormattedSize;
73*f80ad8b4SAndroid Build Coastguard Worker 	unsigned char UnitSizeFactor;
74*f80ad8b4SAndroid Build Coastguard Worker } __attribute__((packed));
75*f80ad8b4SAndroid Build Coastguard Worker 
76*f80ad8b4SAndroid Build Coastguard Worker #define MAX_ERASE_ZONES (8192 - 512)
77*f80ad8b4SAndroid Build Coastguard Worker 
78*f80ad8b4SAndroid Build Coastguard Worker #define ERASE_MARK 0x3c69
79*f80ad8b4SAndroid Build Coastguard Worker #define SECTOR_FREE 0xff
80*f80ad8b4SAndroid Build Coastguard Worker #define SECTOR_USED 0x55
81*f80ad8b4SAndroid Build Coastguard Worker #define SECTOR_IGNORE 0x11
82*f80ad8b4SAndroid Build Coastguard Worker #define SECTOR_DELETED 0x00
83*f80ad8b4SAndroid Build Coastguard Worker 
84*f80ad8b4SAndroid Build Coastguard Worker #define FOLD_MARK_IN_PROGRESS 0x5555
85*f80ad8b4SAndroid Build Coastguard Worker 
86*f80ad8b4SAndroid Build Coastguard Worker #define ZONE_GOOD 0xff
87*f80ad8b4SAndroid Build Coastguard Worker #define ZONE_BAD_ORIGINAL 0
88*f80ad8b4SAndroid Build Coastguard Worker #define ZONE_BAD_MARKED 7
89*f80ad8b4SAndroid Build Coastguard Worker 
90*f80ad8b4SAndroid Build Coastguard Worker 
91*f80ad8b4SAndroid Build Coastguard Worker #endif /* __MTD_NFTL_USER_H__ */
92