From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pb0-f49.google.com ([209.85.160.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1SPdA5-0002jb-TY for linux-mtd@lists.infradead.org; Wed, 02 May 2012 17:16:22 +0000 Received: by mail-pb0-f49.google.com with SMTP id rq13so1447669pbb.36 for ; Wed, 02 May 2012 10:16:21 -0700 (PDT) From: Brian Norris To: Subject: [PATCH v4 08/10] mtd: gpmi-nand: utilize oob_requested parameter Date: Wed, 2 May 2012 10:15:02 -0700 Message-Id: <1335978904-8005-9-git-send-email-computersforpeace@gmail.com> In-Reply-To: <1335978904-8005-1-git-send-email-computersforpeace@gmail.com> References: <1335978904-8005-1-git-send-email-computersforpeace@gmail.com> Cc: Huang Shijie , Brian Norris , David Woodhouse , Wolfram Sang , Artem Bityutskiy List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Don't read OOB if the caller didn't request it. Signed-off-by: Brian Norris Acked-by: Huang Shijie --- drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 35 +++++++++++++++++-------------- 1 files changed, 19 insertions(+), 16 deletions(-) diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c index ec16f2e..805bcf3 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -907,22 +907,25 @@ static int gpmi_ecc_read_page(struct mtd_info *mtd, struct nand_chip *chip, mtd->ecc_stats.corrected += corrected; } - /* - * It's time to deliver the OOB bytes. See gpmi_ecc_read_oob() for - * details about our policy for delivering the OOB. - * - * We fill the caller's buffer with set bits, and then copy the block - * mark to th caller's buffer. Note that, if block mark swapping was - * necessary, it has already been done, so we can rely on the first - * byte of the auxiliary buffer to contain the block mark. - */ - memset(chip->oob_poi, ~0, mtd->oobsize); - chip->oob_poi[0] = ((uint8_t *) auxiliary_virt)[0]; + if (oob_required) { + /* + * It's time to deliver the OOB bytes. See gpmi_ecc_read_oob() + * for details about our policy for delivering the OOB. + * + * We fill the caller's buffer with set bits, and then copy the + * block mark to th caller's buffer. Note that, if block mark + * swapping was necessary, it has already been done, so we can + * rely on the first byte of the auxiliary buffer to contain + * the block mark. + */ + memset(chip->oob_poi, ~0, mtd->oobsize); + chip->oob_poi[0] = ((uint8_t *) auxiliary_virt)[0]; - read_page_swap_end(this, buf, mtd->writesize, - this->payload_virt, this->payload_phys, - nfc_geo->payload_size, - payload_virt, payload_phys); + read_page_swap_end(this, buf, mtd->writesize, + this->payload_virt, this->payload_phys, + nfc_geo->payload_size, + payload_virt, payload_phys); + } exit_nfc: return ret; } -- 1.7.5.4.2.g519b1