From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v3 2/2] mtd: mediatek: driver for MTK Smart Device Gen1 NAND Date: Tue, 19 Apr 2016 22:24:46 +0200 Message-ID: <20160419222446.052cfa63@bbrezillon> References: <1460393772-26910-1-git-send-email-jorge.ramirez-ortiz@linaro.org> <1460393772-26910-3-git-send-email-jorge.ramirez-ortiz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1460393772-26910-3-git-send-email-jorge.ramirez-ortiz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+glpam-linux-mediatek=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Jorge Ramirez-Ortiz Cc: robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, daniel.thompson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, erin.lo-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org, linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, xiaolei.li-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org, computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org List-Id: linux-mediatek@lists.infradead.org On Mon, 11 Apr 2016 12:56:12 -0400 Jorge Ramirez-Ortiz wrote: > +static int mtk_nfc_read_oob(struct mtd_info *mtd, struct nand_chip *chip, > + int page) > +{ > + u8 *buf = chip->buffers->databuf; You're touching ->databuf here, and the core uses this buffer for its internal cache. If want to use this buffer you have to invalidate the cache by setting chip->pagebuf to -1 first. > + struct mtd_ecc_stats stats; > + int ret; > + > + stats = mtd->ecc_stats; > + > + memset(buf, 0xff, mtd->writesize); > + chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); > + > + ret = mtk_nfc_read_page_hwecc(mtd, chip, buf, 1, page); > + > + /* mark as invalid data 0x00 if UECC happens */ > + if ((mtd->ecc_stats.failed - stats.failed) > 0) > + memset(chip->oob_poi, 0, mtd->oobsize); > + > + if (ret < mtd->bitflip_threshold) > + mtd->ecc_stats.corrected = stats.corrected; > + > + return ret; > +} -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com