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