@@ -218,7 +218,8 @@ static void gpmi_dump_info(struct gpmi_nand_data *this)
218218 "ECC Strength : %u\n"
219219 "Page Size in Bytes : %u\n"
220220 "Metadata Size in Bytes : %u\n"
221- "ECC Chunk Size in Bytes: %u\n"
221+ "ECC0 Chunk Size in Bytes: %u\n"
222+ "ECCn Chunk Size in Bytes: %u\n"
222223 "ECC Chunk Count : %u\n"
223224 "Payload Size in Bytes : %u\n"
224225 "Auxiliary Size in Bytes: %u\n"
@@ -229,7 +230,8 @@ static void gpmi_dump_info(struct gpmi_nand_data *this)
229230 geo -> ecc_strength ,
230231 geo -> page_size ,
231232 geo -> metadata_size ,
232- geo -> ecc_chunk_size ,
233+ geo -> ecc0_chunk_size ,
234+ geo -> eccn_chunk_size ,
233235 geo -> ecc_chunk_count ,
234236 geo -> payload_size ,
235237 geo -> auxiliary_size ,
@@ -293,13 +295,14 @@ static int set_geometry_by_ecc_info(struct gpmi_nand_data *this,
293295 nanddev_get_ecc_requirements (& chip -> base )-> step_size );
294296 return - EINVAL ;
295297 }
296- geo -> ecc_chunk_size = ecc_step ;
298+ geo -> ecc0_chunk_size = ecc_step ;
299+ geo -> eccn_chunk_size = ecc_step ;
297300 geo -> ecc_strength = round_up (ecc_strength , 2 );
298301 if (!gpmi_check_ecc (this ))
299302 return - EINVAL ;
300303
301304 /* Keep the C >= O */
302- if (geo -> ecc_chunk_size < mtd -> oobsize ) {
305+ if (geo -> eccn_chunk_size < mtd -> oobsize ) {
303306 dev_err (this -> dev ,
304307 "unsupported nand chip. ecc size: %d, oob size : %d\n" ,
305308 ecc_step , mtd -> oobsize );
@@ -309,7 +312,7 @@ static int set_geometry_by_ecc_info(struct gpmi_nand_data *this,
309312 /* The default value, see comment in the legacy_set_geometry(). */
310313 geo -> metadata_size = 10 ;
311314
312- geo -> ecc_chunk_count = mtd -> writesize / geo -> ecc_chunk_size ;
315+ geo -> ecc_chunk_count = mtd -> writesize / geo -> eccn_chunk_size ;
313316
314317 /*
315318 * Now, the NAND chip with 2K page(data chunk is 512byte) shows below:
@@ -431,13 +434,15 @@ static int legacy_set_geometry(struct gpmi_nand_data *this)
431434 geo -> gf_len = 13 ;
432435
433436 /* The default for chunk size. */
434- geo -> ecc_chunk_size = 512 ;
435- while (geo -> ecc_chunk_size < mtd -> oobsize ) {
436- geo -> ecc_chunk_size *= 2 ; /* keep C >= O */
437+ geo -> ecc0_chunk_size = 512 ;
438+ geo -> eccn_chunk_size = 512 ;
439+ while (geo -> eccn_chunk_size < mtd -> oobsize ) {
440+ geo -> ecc0_chunk_size *= 2 ; /* keep C >= O */
441+ geo -> eccn_chunk_size *= 2 ; /* keep C >= O */
437442 geo -> gf_len = 14 ;
438443 }
439444
440- geo -> ecc_chunk_count = mtd -> writesize / geo -> ecc_chunk_size ;
445+ geo -> ecc_chunk_count = mtd -> writesize / geo -> eccn_chunk_size ;
441446
442447 /* We use the same ECC strength for all chunks. */
443448 geo -> ecc_strength = get_ecc_strength (this );
@@ -864,7 +869,7 @@ static int gpmi_raw_len_to_len(struct gpmi_nand_data *this, int raw_len)
864869 * we are passed in exec_op. Calculate the data length from it.
865870 */
866871 if (this -> bch )
867- return ALIGN_DOWN (raw_len , this -> bch_geometry .ecc_chunk_size );
872+ return ALIGN_DOWN (raw_len , this -> bch_geometry .eccn_chunk_size );
868873 else
869874 return raw_len ;
870875}
@@ -1256,7 +1261,7 @@ static int gpmi_count_bitflips(struct nand_chip *chip, void *buf, int first,
12561261
12571262 /* Read ECC bytes into our internal raw_buffer */
12581263 offset = nfc_geo -> metadata_size * 8 ;
1259- offset += ((8 * nfc_geo -> ecc_chunk_size ) + eccbits ) * (i + 1 );
1264+ offset += ((8 * nfc_geo -> eccn_chunk_size ) + eccbits ) * (i + 1 );
12601265 offset -= eccbits ;
12611266 bitoffset = offset % 8 ;
12621267 eccbytes = DIV_ROUND_UP (offset + eccbits , 8 );
@@ -1293,16 +1298,16 @@ static int gpmi_count_bitflips(struct nand_chip *chip, void *buf, int first,
12931298 if (i == 0 ) {
12941299 /* The first block includes metadata */
12951300 flips = nand_check_erased_ecc_chunk (
1296- buf + i * nfc_geo -> ecc_chunk_size ,
1297- nfc_geo -> ecc_chunk_size ,
1301+ buf + i * nfc_geo -> eccn_chunk_size ,
1302+ nfc_geo -> eccn_chunk_size ,
12981303 eccbuf , eccbytes ,
12991304 this -> auxiliary_virt ,
13001305 nfc_geo -> metadata_size ,
13011306 nfc_geo -> ecc_strength );
13021307 } else {
13031308 flips = nand_check_erased_ecc_chunk (
1304- buf + i * nfc_geo -> ecc_chunk_size ,
1305- nfc_geo -> ecc_chunk_size ,
1309+ buf + i * nfc_geo -> eccn_chunk_size ,
1310+ nfc_geo -> eccn_chunk_size ,
13061311 eccbuf , eccbytes ,
13071312 NULL , 0 ,
13081313 nfc_geo -> ecc_strength );
@@ -1331,20 +1336,21 @@ static void gpmi_bch_layout_std(struct gpmi_nand_data *this)
13311336 struct bch_geometry * geo = & this -> bch_geometry ;
13321337 unsigned int ecc_strength = geo -> ecc_strength >> 1 ;
13331338 unsigned int gf_len = geo -> gf_len ;
1334- unsigned int block_size = geo -> ecc_chunk_size ;
1339+ unsigned int block0_size = geo -> ecc0_chunk_size ;
1340+ unsigned int blockn_size = geo -> eccn_chunk_size ;
13351341
13361342 this -> bch_flashlayout0 =
13371343 BF_BCH_FLASH0LAYOUT0_NBLOCKS (geo -> ecc_chunk_count - 1 ) |
13381344 BF_BCH_FLASH0LAYOUT0_META_SIZE (geo -> metadata_size ) |
13391345 BF_BCH_FLASH0LAYOUT0_ECC0 (ecc_strength , this ) |
13401346 BF_BCH_FLASH0LAYOUT0_GF (gf_len , this ) |
1341- BF_BCH_FLASH0LAYOUT0_DATA0_SIZE (block_size , this );
1347+ BF_BCH_FLASH0LAYOUT0_DATA0_SIZE (block0_size , this );
13421348
13431349 this -> bch_flashlayout1 =
13441350 BF_BCH_FLASH0LAYOUT1_PAGE_SIZE (geo -> page_size ) |
13451351 BF_BCH_FLASH0LAYOUT1_ECCN (ecc_strength , this ) |
13461352 BF_BCH_FLASH0LAYOUT1_GF (gf_len , this ) |
1347- BF_BCH_FLASH0LAYOUT1_DATAN_SIZE (block_size , this );
1353+ BF_BCH_FLASH0LAYOUT1_DATAN_SIZE (blockn_size , this );
13481354}
13491355
13501356static int gpmi_ecc_read_page (struct nand_chip * chip , uint8_t * buf ,
@@ -1444,12 +1450,12 @@ static int gpmi_ecc_read_subpage(struct nand_chip *chip, uint32_t offs,
14441450 BF_BCH_FLASH0LAYOUT0_META_SIZE (meta ) |
14451451 BF_BCH_FLASH0LAYOUT0_ECC0 (ecc_strength , this ) |
14461452 BF_BCH_FLASH0LAYOUT0_GF (geo -> gf_len , this ) |
1447- BF_BCH_FLASH0LAYOUT0_DATA0_SIZE (geo -> ecc_chunk_size , this );
1453+ BF_BCH_FLASH0LAYOUT0_DATA0_SIZE (geo -> eccn_chunk_size , this );
14481454
14491455 this -> bch_flashlayout1 = BF_BCH_FLASH0LAYOUT1_PAGE_SIZE (page_size ) |
14501456 BF_BCH_FLASH0LAYOUT1_ECCN (ecc_strength , this ) |
14511457 BF_BCH_FLASH0LAYOUT1_GF (geo -> gf_len , this ) |
1452- BF_BCH_FLASH0LAYOUT1_DATAN_SIZE (geo -> ecc_chunk_size , this );
1458+ BF_BCH_FLASH0LAYOUT1_DATAN_SIZE (geo -> eccn_chunk_size , this );
14531459
14541460 this -> bch = true;
14551461
@@ -1618,7 +1624,7 @@ static int gpmi_ecc_read_page_raw(struct nand_chip *chip, uint8_t *buf,
16181624 struct mtd_info * mtd = nand_to_mtd (chip );
16191625 struct gpmi_nand_data * this = nand_get_controller_data (chip );
16201626 struct bch_geometry * nfc_geo = & this -> bch_geometry ;
1621- int eccsize = nfc_geo -> ecc_chunk_size ;
1627+ int eccsize = nfc_geo -> eccn_chunk_size ;
16221628 int eccbits = nfc_geo -> ecc_strength * nfc_geo -> gf_len ;
16231629 u8 * tmp_buf = this -> raw_buffer ;
16241630 size_t src_bit_off ;
@@ -1703,7 +1709,7 @@ static int gpmi_ecc_write_page_raw(struct nand_chip *chip, const uint8_t *buf,
17031709 struct mtd_info * mtd = nand_to_mtd (chip );
17041710 struct gpmi_nand_data * this = nand_get_controller_data (chip );
17051711 struct bch_geometry * nfc_geo = & this -> bch_geometry ;
1706- int eccsize = nfc_geo -> ecc_chunk_size ;
1712+ int eccsize = nfc_geo -> eccn_chunk_size ;
17071713 int eccbits = nfc_geo -> ecc_strength * nfc_geo -> gf_len ;
17081714 u8 * tmp_buf = this -> raw_buffer ;
17091715 uint8_t * oob = chip -> oob_poi ;
@@ -2077,7 +2083,7 @@ static int gpmi_init_last(struct gpmi_nand_data *this)
20772083 ecc -> read_oob_raw = gpmi_ecc_read_oob_raw ;
20782084 ecc -> write_oob_raw = gpmi_ecc_write_oob_raw ;
20792085 ecc -> engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST ;
2080- ecc -> size = bch_geo -> ecc_chunk_size ;
2086+ ecc -> size = bch_geo -> eccn_chunk_size ;
20812087 ecc -> strength = bch_geo -> ecc_strength ;
20822088 mtd_set_ooblayout (mtd , & gpmi_ooblayout_ops );
20832089
0 commit comments