mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 14:12:51 +00:00
mtd: nand/fsmc: Read only 512 + 13 bytes for 8bit NAND devices
The ECC logic of FSMC works on 512 bytes data + 13 bytes ECC to generate error indices of up to 8 incorrect bits. The FSMC driver reads 14 instead of 13 oob bytes to accommodate for 16 bit device as well. Unfortunately, the internal ecc state machine gets corrupted for 8 bit devices reading 512 + 14 bytes of data resulting in error indices not getting reported. Fix this by reading 14 bytes only for 16 bit devices Signed-off-by: Vipin Kumar <vipin.kumar@st.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
4cbe1bf07a
commit
aea686b47c
@ -549,7 +549,9 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
|
||||
* to read at least 13 bytes even in case of 16 bit NAND
|
||||
* devices
|
||||
*/
|
||||
len = roundup(len, 2);
|
||||
if (chip->options & NAND_BUSWIDTH_16)
|
||||
len = roundup(len, 2);
|
||||
|
||||
chip->cmdfunc(mtd, NAND_CMD_READOOB, off, page);
|
||||
chip->read_buf(mtd, oob + j, len);
|
||||
j += len;
|
||||
|
Loading…
Reference in New Issue
Block a user