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