@ -125,6 +125,69 @@ static struct nand_ecclayout oob_4096_ecc8 = {
. oobfree = { { 2 , 6 } , { 136 , 82 } } ,
} ;
/* 8192-byte page size with 4-bit ECC */
static struct nand_ecclayout oob_8192_ecc4 = {
. eccbytes = 128 ,
. eccpos = {
8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ,
16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 ,
24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ,
32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 ,
48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 ,
56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 ,
64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 ,
72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 ,
80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 ,
88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 ,
96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 ,
104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 ,
112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 ,
120 , 121 , 122 , 123 , 124 , 125 , 126 , 127 ,
128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 ,
} ,
. oobfree = { { 2 , 6 } , { 136 , 208 } } ,
} ;
/* 8192-byte page size with 8-bit ECC -- requires 218-byte OOB */
static struct nand_ecclayout oob_8192_ecc8 = {
. eccbytes = 256 ,
. eccpos = {
8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ,
16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 ,
24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ,
32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 ,
48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 ,
56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 ,
64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 ,
72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 ,
80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 ,
88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 ,
96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 ,
104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 ,
112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 ,
120 , 121 , 122 , 123 , 124 , 125 , 126 , 127 ,
128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 ,
136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 ,
144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 ,
152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 ,
160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 ,
168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 ,
176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 ,
184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 ,
192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 ,
200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 ,
208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 ,
216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 ,
224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 ,
232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 ,
240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 ,
248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 ,
256 , 257 , 258 , 259 , 260 , 261 , 262 , 263 ,
} ,
. oobfree = { { 2 , 6 } , { 264 , 80 } } ,
} ;
/*
* Generic flash bbt descriptors
@ -913,6 +976,21 @@ static int fsl_ifc_chip_init(int devnum, u8 *addr)
priv - > bufnum_mask = 1 ;
break ;
case CSOR_NAND_PGS_8K :
if ( ( csor & CSOR_NAND_ECC_MODE_MASK ) = =
CSOR_NAND_ECC_MODE_4 ) {
layout = & oob_8192_ecc4 ;
nand - > ecc . strength = 4 ;
} else {
layout = & oob_8192_ecc8 ;
nand - > ecc . strength = 8 ;
nand - > ecc . bytes = 16 ;
}
priv - > bufnum_mask = 0 ;
break ;
default :
printf ( " ifc nand: bad csor %#x: bad page size \n " , csor ) ;
return - ENODEV ;