| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 |  * Derived from (and probably identical to): | 
 | 3 |  * ftl.h 1.7 1999/10/25 20:23:17 | 
 | 4 |  * | 
 | 5 |  * The contents of this file are subject to the Mozilla Public License | 
 | 6 |  * Version 1.1 (the "License"); you may not use this file except in | 
 | 7 |  * compliance with the License. You may obtain a copy of the License | 
 | 8 |  * at http://www.mozilla.org/MPL/ | 
 | 9 |  * | 
 | 10 |  * Software distributed under the License is distributed on an "AS IS" | 
 | 11 |  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See | 
 | 12 |  * the License for the specific language governing rights and | 
| Thomas Gleixner | 61ecfa8 | 2005-11-07 11:15:31 +0000 | [diff] [blame] | 13 |  * limitations under the License. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 |  * | 
 | 15 |  * The initial developer of the original code is David A. Hinds | 
 | 16 |  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds | 
 | 17 |  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved. | 
 | 18 |  * | 
 | 19 |  * Alternatively, the contents of this file may be used under the | 
 | 20 |  * terms of the GNU General Public License version 2 (the "GPL"), in | 
 | 21 |  * which case the provisions of the GPL are applicable instead of the | 
 | 22 |  * above.  If you wish to allow the use of your version of this file | 
 | 23 |  * only under the terms of the GPL and not to allow others to use | 
 | 24 |  * your version of this file under the MPL, indicate your decision by | 
 | 25 |  * deleting the provisions above and replace them with the notice and | 
 | 26 |  * other provisions required by the GPL.  If you do not delete the | 
 | 27 |  * provisions above, a recipient may use your version of this file | 
 | 28 |  * under either the MPL or the GPL. | 
 | 29 |  */ | 
 | 30 |  | 
 | 31 | #ifndef _LINUX_FTL_H | 
 | 32 | #define _LINUX_FTL_H | 
 | 33 |  | 
 | 34 | typedef struct erase_unit_header_t { | 
 | 35 |     u_int8_t	LinkTargetTuple[5]; | 
 | 36 |     u_int8_t	DataOrgTuple[10]; | 
 | 37 |     u_int8_t	NumTransferUnits; | 
 | 38 |     u_int32_t	EraseCount; | 
 | 39 |     u_int16_t	LogicalEUN; | 
 | 40 |     u_int8_t	BlockSize; | 
 | 41 |     u_int8_t	EraseUnitSize; | 
 | 42 |     u_int16_t	FirstPhysicalEUN; | 
 | 43 |     u_int16_t	NumEraseUnits; | 
 | 44 |     u_int32_t	FormattedSize; | 
 | 45 |     u_int32_t	FirstVMAddress; | 
 | 46 |     u_int16_t	NumVMPages; | 
 | 47 |     u_int8_t	Flags; | 
 | 48 |     u_int8_t	Code; | 
 | 49 |     u_int32_t	SerialNumber; | 
 | 50 |     u_int32_t	AltEUHOffset; | 
 | 51 |     u_int32_t	BAMOffset; | 
 | 52 |     u_int8_t	Reserved[12]; | 
 | 53 |     u_int8_t	EndTuple[2]; | 
 | 54 | } erase_unit_header_t; | 
 | 55 |  | 
 | 56 | /* Flags in erase_unit_header_t */ | 
 | 57 | #define HIDDEN_AREA		0x01 | 
 | 58 | #define REVERSE_POLARITY	0x02 | 
 | 59 | #define DOUBLE_BAI		0x04 | 
 | 60 |  | 
 | 61 | /* Definitions for block allocation information */ | 
 | 62 |  | 
 | 63 | #define BLOCK_FREE(b)		((b) == 0xffffffff) | 
 | 64 | #define BLOCK_DELETED(b)	(((b) == 0) || ((b) == 0xfffffffe)) | 
 | 65 |  | 
 | 66 | #define BLOCK_TYPE(b)		((b) & 0x7f) | 
 | 67 | #define BLOCK_ADDRESS(b)	((b) & ~0x7f) | 
 | 68 | #define BLOCK_NUMBER(b)		((b) >> 9) | 
 | 69 | #define BLOCK_CONTROL		0x30 | 
 | 70 | #define BLOCK_DATA		0x40 | 
 | 71 | #define BLOCK_REPLACEMENT	0x60 | 
 | 72 | #define BLOCK_BAD		0x70 | 
 | 73 |  | 
 | 74 | #endif /* _LINUX_FTL_H */ |