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