2005-04-17 02:20:36 +04:00
/*
2005-11-07 14:15:37 +03:00
* Parts of INFTL headers shared with userspace
2005-04-17 02:20:36 +04:00
*
*/
# ifndef __MTD_INFTL_USER_H__
# define __MTD_INFTL_USER_H__
2009-01-30 20:02:35 +03:00
# include <linux/types.h>
2005-04-17 02:20:36 +04:00
# define OSAK_VERSION 0x5120
# define PERCENTUSED 98
# define SECTORSIZE 512
/* Block Control Information */
struct inftl_bci {
2009-02-26 02:51:41 +03:00
__u8 ECCsig [ 6 ] ;
__u8 Status ;
__u8 Status1 ;
2005-04-17 02:20:36 +04:00
} __attribute__ ( ( packed ) ) ;
struct inftl_unithead1 {
2009-02-26 02:51:41 +03:00
__u16 virtualUnitNo ;
__u16 prevUnitNo ;
__u8 ANAC ;
__u8 NACs ;
__u8 parityPerField ;
__u8 discarded ;
2005-04-17 02:20:36 +04:00
} __attribute__ ( ( packed ) ) ;
struct inftl_unithead2 {
2009-02-26 02:51:41 +03:00
__u8 parityPerField ;
__u8 ANAC ;
__u16 prevUnitNo ;
__u16 virtualUnitNo ;
__u8 NACs ;
__u8 discarded ;
2005-04-17 02:20:36 +04:00
} __attribute__ ( ( packed ) ) ;
struct inftl_unittail {
2009-02-26 02:51:41 +03:00
__u8 Reserved [ 4 ] ;
__u16 EraseMark ;
__u16 EraseMark1 ;
2005-04-17 02:20:36 +04:00
} __attribute__ ( ( packed ) ) ;
union inftl_uci {
struct inftl_unithead1 a ;
struct inftl_unithead2 b ;
struct inftl_unittail c ;
} ;
struct inftl_oob {
struct inftl_bci b ;
union inftl_uci u ;
} ;
/* INFTL Media Header */
struct INFTLPartition {
__u32 virtualUnits ;
__u32 firstUnit ;
__u32 lastUnit ;
__u32 flags ;
__u32 spareUnits ;
__u32 Reserved0 ;
__u32 Reserved1 ;
} __attribute__ ( ( packed ) ) ;
struct INFTLMediaHeader {
char bootRecordID [ 8 ] ;
__u32 NoOfBootImageBlocks ;
__u32 NoOfBinaryPartitions ;
__u32 NoOfBDTLPartitions ;
__u32 BlockMultiplierBits ;
__u32 FormatFlags ;
__u32 OsakVersion ;
__u32 PercentUsed ;
struct INFTLPartition Partitions [ 4 ] ;
} __attribute__ ( ( packed ) ) ;
/* Partition flag types */
# define INFTL_BINARY 0x20000000
# define INFTL_BDTL 0x40000000
# define INFTL_LAST 0x80000000
# endif /* __MTD_INFTL_USER_H__ */