From 53643ec32564ad413af207e12b5ca19079f912b3 Mon Sep 17 00:00:00 2001 From: Jagannadha Sutradharudu Teki Date: Fri, 7 Dec 2012 15:23:38 +0530 Subject: [PATCH] zynq: nand: Fix SET_FEATURES issue for OnDie ECC NAND Use writeb in place of write_buf to set features used to enable OnDie ECC. Signed-off-by: Jagannadha Sutradharudu Teki --- drivers/mtd/nand/zynq_nand.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/zynq_nand.c b/drivers/mtd/nand/zynq_nand.c index 4f2c9443d1b..fc1018e777a 100644 --- a/drivers/mtd/nand/zynq_nand.c +++ b/drivers/mtd/nand/zynq_nand.c @@ -1022,7 +1022,7 @@ int zynq_nand_init(struct nand_chip *nand_chip) extern struct mtd_info nand_info[]; unsigned long ecc_page_size; int err = 0; - u8 maf_id, dev_id; + u8 maf_id, dev_id, i; u8 get_feature[4]; u8 set_feature[4] = {0x08, 0x00, 0x00, 0x00}; unsigned long ecc_cfg; @@ -1093,7 +1093,12 @@ int zynq_nand_init(struct nand_chip *nand_chip) (dev_id == 0xd3) || (dev_id == 0xc3))) { nand_chip->cmdfunc(mtd, NAND_CMD_SET_FEATURES, ONDIE_ECC_FEATURE_ADDR, -1); - nand_chip->write_buf(mtd, set_feature, 4); + + for (i = 0; i < 4; i++) + writeb(set_feature[i], nand_chip->IO_ADDR_W); + + /* wait for 1us after writing data with SET_FEATURES command */ + ndelay(1000); nand_chip->cmdfunc(mtd, NAND_CMD_GET_FEATURES, ONDIE_ECC_FEATURE_ADDR, -1); -- 2.47.3