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