From patchwork Mon Jan 9 12:24:26 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Kushwaha X-Patchwork-Id: 135011 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:4978:20e::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id EFC51B6F71 for ; Mon, 9 Jan 2012 23:26:05 +1100 (EST) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1RkEHI-0003hM-Vh; Mon, 09 Jan 2012 12:24:41 +0000 Received: from tx2ehsobe001.messaging.microsoft.com ([65.55.88.11] helo=TX2EHSOBE002.bigfish.com) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1RkEHC-0003gP-Ep for linux-mtd@lists.infradead.org; Mon, 09 Jan 2012 12:24:38 +0000 Received: from mail103-tx2-R.bigfish.com (10.9.14.237) by TX2EHSOBE002.bigfish.com (10.9.40.22) with Microsoft SMTP Server id 14.1.225.23; Mon, 9 Jan 2012 12:24:32 +0000 Received: from mail103-tx2 (localhost [127.0.0.1]) by mail103-tx2-R.bigfish.com (Postfix) with ESMTP id 8C9201800D3; Mon, 9 Jan 2012 12:24:22 +0000 (UTC) X-SpamScore: 0 X-BigFish: VS0(zzzz1202hzz8275bh8275dhz2dh2a8h668h839h61h) X-Spam-TCS-SCL: 0:0 X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI Received: from mail103-tx2 (localhost.localdomain [127.0.0.1]) by mail103-tx2 (MessageSwitch) id 1326111862401327_21804; Mon, 9 Jan 2012 12:24:22 +0000 (UTC) Received: from TX2EHSMHS040.bigfish.com (unknown [10.9.14.248]) by mail103-tx2.bigfish.com (Postfix) with ESMTP id 51560C007A; Mon, 9 Jan 2012 12:24:22 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by TX2EHSMHS040.bigfish.com (10.9.99.140) with Microsoft SMTP Server (TLS) id 14.1.225.23; Mon, 9 Jan 2012 12:24:31 +0000 Received: from az33smr02.freescale.net (10.64.34.200) by 039-SN1MMR1-001.039d.mgd.msft.net (10.84.1.13) with Microsoft SMTP Server id 14.1.355.3; Mon, 9 Jan 2012 06:24:31 -0600 Received: from b32579-VirtualBox.ap.freescale.net (b32579-VirtualBox-010232132074.ap.freescale.net [10.232.132.74] (may be forged)) by az33smr02.freescale.net (8.13.1/8.13.0) with ESMTP id q09CORCl024299; Mon, 9 Jan 2012 06:24:28 -0600 (CST) From: Prabhakar Kushwaha To: , Subject: [PATCH 2/2][v2] mtd/nand: Fix IFC driver to support 2K NAND page Date: Mon, 9 Jan 2012 17:54:26 +0530 Message-ID: <1326111866-13120-1-git-send-email-prabhakar@freescale.com> X-Mailer: git-send-email 1.7.5.4 MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-Spam-Note: CRM114 invocation failed X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [65.55.88.11 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: scottwood@freescale.com, Poonam Aggrwal , Prabhakar Kushwaha X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org 1) OOB area should be updated irrespective of NAND page size. Earlier it was updated only for 512byte NAND page. 2) During OOB update fbcr should be equal to OOB size. Signed-off-by: Poonam Aggrwal Signed-off-by: Prabhakar Kushwaha --- git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc.git (branch next) This patch is created on top of IFC driver patch (already floated in mailing list). Please find their link: http://patchwork.ozlabs.org/patch/133315/ http://patchwork.ozlabs.org/patch/133316/ Tested on P1010RDB Changes for v2: Incorporated Scott's comments - Added missed NAND_CMD_READOOB - Updated function as per Scott's advice drivers/mtd/nand/fsl_ifc_nand.c | 21 +++++++++------------ 1 files changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c index c0529ea..52bd706d 100644 --- a/drivers/mtd/nand/fsl_ifc_nand.c +++ b/drivers/mtd/nand/fsl_ifc_nand.c @@ -440,22 +440,19 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command, out_be32(&ifc->ifc_nand.nand_fir1, (IFC_FIR_OP_CW1 << IFC_NAND_FIR1_OP5_SHIFT)); - if (column >= mtd->writesize) { - /* OOB area --> READOOB */ - column -= mtd->writesize; - nand_fcr0 |= NAND_CMD_READOOB << - IFC_NAND_FCR0_CMD0_SHIFT; - ifc_nand_ctrl->oob = 1; - } else if (column < 256) - /* First 256 bytes --> READ0 */ + if (column >= mtd->writesize) nand_fcr0 |= - NAND_CMD_READ0 << IFC_NAND_FCR0_CMD0_SHIFT; + NAND_CMD_READOOB << IFC_NAND_FCR0_CMD0_SHIFT; else - /* Second 256 bytes --> READ1 */ nand_fcr0 |= - NAND_CMD_READ1 << IFC_NAND_FCR0_CMD0_SHIFT; + NAND_CMD_READ0 << IFC_NAND_FCR0_CMD0_SHIFT; } + if (column >= mtd->writesize) { + /* OOB area --> READOOB */ + column -= mtd->writesize; + ifc_nand_ctrl->oob = 1; + } out_be32(&ifc->ifc_nand.nand_fcr0, nand_fcr0); set_addr(mtd, column, page_addr, ifc_nand_ctrl->oob); return; @@ -466,7 +463,7 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command, int full_page; if (ifc_nand_ctrl->oob) { out_be32(&ifc->ifc_nand.nand_fbcr, - ifc_nand_ctrl->index); + ifc_nand_ctrl->index - ifc_nand_ctrl->column); full_page = 0; } else { out_be32(&ifc->ifc_nand.nand_fbcr, 0);