===================================================================
@@ -851,12 +851,12 @@
} else {
/* send the command to read the particular ecc bytes */
/* take care about buswidth alignment in read_buf */
- aligned_pos = eccpos[start_step * chip->ecc.bytes] & ~(busw - 1);
- aligned_len = eccfrag_len;
- if (eccpos[start_step * chip->ecc.bytes] & (busw - 1))
- aligned_len++;
- if (eccpos[(start_step + num_steps) * chip->ecc.bytes] & (busw - 1))
- aligned_len++;
+
+ int pos;
+
+ pos = eccpos[start_step * chip->ecc.bytes];
+ aligned_pos = pos & ~(busw - 1);
+ aligned_len = ALIGN(eccfrag_len+(pos-aligned_pos), busw);
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, mtd->writesize + aligned_pos, -1);
chip->read_buf(mtd, &chip->oob_poi[aligned_pos], aligned_len);