Hello,
We try to enable "on-die ecc" feature in nand in Micron's nand MT29F4G16ABBDA.
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xbc (Micron NAND 512MiB 1,8V 16-bit)
I am doing set&get from u-boot, but after enabling the feature, I keep reading that its values is still disabled.
Is there any idea what might be wrong?
This is still a part of the ongoing struggle with ecc issue with omap3530. We still have failures with our nand, our last hope is enabling the on-die feature.
#define NAND_CMD_GET_FEATURES 0xee
#define NAND_CMD_SET_FEATURES 0xef
int set_on_die_ecc(struct mtd_info *mtd)
{
struct nand_chip *chip = mtd->priv;
int addr = 0x90;
int i =0, status;
uint8_t data;
uint8_t buf[8];
buf[0] = 0x8;
chip->cmdfunc(mtd,NAND_CMD_SET_FEATURES,addr,-1);
ndelay(1000);
chip->write_buf(mtd, buf,4);
status = chip->waitfunc(mtd, chip);
if (status & NAND_STATUS_FAIL)
return -EIO;
}
int test_on_die_ecc(struct mtd_info *mtd)
{
struct nand_chip *chip = mtd->priv;
int i =0;
int addr = 0x90;
uint8_t data; chip->cmdfunc(mtd,NAND_CMD_GET_FEATURES,addr,-1);
ndelay(1000);
data = chip->read_byte(mtd);
printf("0x%x\n",data);
}
Any idea or advise will help,
Ran