|
|
@@ -1174,13 +1174,14 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
int data_col_addr, i, gaps = 0;
|
|
|
int datafrag_len, eccfrag_len, aligned_len, aligned_pos;
|
|
|
int busw = (chip->options & NAND_BUSWIDTH_16) ? 2 : 1;
|
|
|
- int index = 0;
|
|
|
+ int index;
|
|
|
unsigned int max_bitflips = 0;
|
|
|
|
|
|
/* Column address within the page aligned to ECC size (256bytes) */
|
|
|
start_step = data_offs / chip->ecc.size;
|
|
|
end_step = (data_offs + readlen - 1) / chip->ecc.size;
|
|
|
num_steps = end_step - start_step + 1;
|
|
|
+ index = start_step * chip->ecc.bytes;
|
|
|
|
|
|
/* Data size aligned to ECC ecc.size */
|
|
|
datafrag_len = num_steps * chip->ecc.size;
|
|
|
@@ -1217,8 +1218,6 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
* Send the command to read the particular ECC bytes take care
|
|
|
* about buswidth alignment in read_buf.
|
|
|
*/
|
|
|
- index = start_step * chip->ecc.bytes;
|
|
|
-
|
|
|
aligned_pos = eccpos[index] & ~(busw - 1);
|
|
|
aligned_len = eccfrag_len;
|
|
|
if (eccpos[index] & (busw - 1))
|