From patchwork Thu Jan 4 10:34:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siva Durga Prasad Paladugu X-Patchwork-Id: 855535 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="TDnLLYC5"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zC3zJ0bShz9sNx for ; Thu, 4 Jan 2018 21:32:59 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 8E113C21DC5; Thu, 4 Jan 2018 10:32:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C28E8C21C2B; Thu, 4 Jan 2018 10:32:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 16B92C21C2B; Thu, 4 Jan 2018 10:32:51 +0000 (UTC) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0061.outbound.protection.outlook.com [104.47.42.61]) by lists.denx.de (Postfix) with ESMTPS id 3904BC21C29 for ; Thu, 4 Jan 2018 10:32:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xBbk9+6HsUBV9Yn3WjrXrV4MM/OGsmb0QvR1eHcgN4Y=; b=TDnLLYC5PK+9DJ2P9Y78Lqd/pZe06bNPai8bJz3ERec4qTAGEh4vwJqp9LjpOVvai7Pb59ee2CjcZ76k7x3yfz85kRYp2Mom/4mPNe/H900Llp5YlqNCA7vLpPxzZ0oZVmOvcmPR+XqUOD9ec2Y1LIvIXNp2XLGlAPHCrowCBec= Received: from SN4PR0201CA0047.namprd02.prod.outlook.com (10.162.76.33) by MWHPR02MB3390.namprd02.prod.outlook.com (10.164.187.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Thu, 4 Jan 2018 10:32:47 +0000 Received: from CY1NAM02FT003.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::203) by SN4PR0201CA0047.outlook.office365.com (2603:10b6:803:2e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Thu, 4 Jan 2018 10:32:47 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT003.mail.protection.outlook.com (10.152.74.151) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Thu, 4 Jan 2018 10:32:46 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:35782 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pJ-0007qN-TR; Thu, 04 Jan 2018 02:32:45 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eX2pJ-0000sf-RZ; Thu, 04 Jan 2018 02:32:45 -0800 Received: from [172.23.37.99] (helo=xhdsivadur40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pH-0000sI-41; Thu, 04 Jan 2018 02:32:43 -0800 From: Siva Durga Prasad Paladugu To: Date: Thu, 4 Jan 2018 16:04:20 +0530 Message-ID: <1515062062-24291-1-git-send-email-sivadur@xilinx.com> X-Mailer: git-send-email 2.7.4 X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23572.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(39380400002)(376002)(2980300002)(438002)(199004)(189003)(47776003)(63266004)(107886003)(7696005)(5660300001)(2906002)(2351001)(106002)(8676002)(81166006)(305945005)(106466001)(8936002)(50226002)(81156014)(6666003)(36386004)(16586007)(316002)(54906003)(4326008)(9786002)(6916009)(50466002)(48376002)(36756003)(478600001)(77096006)(51416003)(356003)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR02MB3390; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:xapps1.xilinx.com,unknown-60-100.xilinx.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT003; 1:ESR6iVFYeut1xToKlce7u+TvI4q7bJlcS5aJ1OZEkaByhGuyokMNDkChC1ZEeVy6Vg/tnvCV21ab37U80lid7UGyamoXB/vAQAOiBXhz1Oobj8iSXtSFUaaJ6NSGksdM MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 86e6fe5d-f45c-4199-155c-08d5535e7ef5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:MWHPR02MB3390; X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB3390; 3:cBqwHypGQ4jqvbYRy7+hObvJxBGf+4+fvk3hE1IXEazbnEIlyio9AYfsa9g8EJNmoq4NqdiJtXnzEl2hoaxn/KTEPeDxXGGmlNojeaC5TCjpGQWBhASvP3LeN6A88kFIyvhrnahmRo+8CF8y+F+tr0kIxq3IYGi545d6BX3/rWSeDQxJLCEFadtRgigHFHNOL672qmHBui1iw25QD9v7I/W1HN5ITctdjirapF9FiOKc17iRak6SDQM2iMtlDad3rnOrLeUuha4RN5F9yPzD37jmPsrzJa3ZB01wQNsCAW2hNhZDYc2957P8B8ZfTZz93S8/bvWnkHpiZAs8F1FoU6r09idDKJGspq732S+hjIs=; 25:A4T8gOlfnlNWXeqsTxTVBVM9FgaWS2/3OxGSCOayY3bAqhNgPV0xjoBfGxj6ptaAb2hPN0yb2qPG1+xpyR/0shqhI9yMHEIkCMVev0wW/ac3s+yh6m55wDdDeEqs0q5yU/h9b0q2oOcJ9HGr3zxxkwkiQn4ahXqeNmKUVcWIo+SMFqU6esX1splV0auCXdMdLj1/9wOAs4rAdU2D6EhPtPu9YopHC+1AeZFZGNuA/A3xjgSOEedOFQKVCTCuIDHBLIzOBd+yfBJGd1/tkTGxmKgvTTJjx9RT8ik3yonOHZHSrwdJKRK1Z4jNjkNN+9YKv3IbPQfOCCmOf5amSqqk1g== X-MS-TrafficTypeDiagnostic: MWHPR02MB3390: X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB3390; 31:cq+tEVLB+wX189NuZphsr1LNbRfhWHg5wPKejKI9ZM0VON0Fh8jcYJaPZVZUHx2Spvn10iKqQ775Y12UrfMEj1NA/pkC3+U6ygQ07HPMDvpvZy3CdRkg/IWSK/Ti9gkfeqCat7Frd4yfPeVIzChNA9qTTFzg885FcAoGj4gBEL62yJ5O1wok6cWBhMTg9h8pn8KO7tOKJBbKSeq2/GZ5mg5rP3FeNJMzaAmjjfCyDR8=; 20:DHYX6qTKnIfJoJWoKyruzOrN5VeDoyMD+JzyEC5CNzVy/o47lr5FFiL0YvHWf5/cp42uOGVC6Z7TM/f3lNrBtBXC8jfnl9koGp3ezcWkapRXu8yxFA8BHkqoG7t9umcptP32WmqRaPEx69x3ULpIq/GthQ0tZSfkgHTx/MCB7xoS8KlJG0J8mk9sot3K9KksvayonIWrN7ieEN+ow5wJmmURcLSJh3DOB4NUAmnJTSx9FGm3Nx+U0nJipD5k+HHXD3kgeVIJT1VsB7zP0GCCZwLt8lIpfuJ1MoNMMtpVI9bzKlHgNzzOTN9Y2ScYExwS+qFCH3T3zur6kOmAx24qy/CACtBj6ta9TApQ3KGCu7Ra8WN6LN4f5tpYG8W+6STtUX6I4gU+ky+Yhj2JlGsSGIxFuLsColZ06awnN2TMcJBrasxU8vyJoluQB1/KurVFHAF2UQTWH4+GujEKYHaIHBHMwQoarBycgsU9t47M0bimrz08vugdIv1zYt+CAgzl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231023)(944501075)(93006095)(93004095)(6055026)(6041268)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:MWHPR02MB3390; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:MWHPR02MB3390; X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB3390; 4:M0/fVkMQk6El05h83MCxM3x+qTMc/n1mB8nY/Sq3lWAbIqiJ15gNe6RwK8r2102cKrjIcrAzUjhrSnbp9RdnBAUdMK1MsbvbTDTxs0wsr1ahnF+EYEi5lB7zqMdVIhExt4Tk0Kwdin5F8gebC7a/yO58kHL+ega9Fn93G3mw0+iYYmfwTC1PSaBsVFS4AXTrIveXr0mO9r6OEdEykWKSgG7oMFgYF3XmPFf7VMMt1c4D8tmz+tyR/NyXVXUYFj1ln7azPEJRQ7WuGZTpFXY0QTrW2BE3i0QH1piqKEy7aV6+RcNCIe9fGiVH6vUGjloP X-Forefront-PRVS: 054231DC40 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR02MB3390; 23:pNrgYNcgYKR8M3KZdQ32lnEmxwY3YwZMs3V6FBz0H?= W3nZ50rT73tZjEx6JqelYB3FlLWEooikSZ40UeTD3XGNLaFtFl0kwP0gIHy32sOncZttDKW9B61wMr7Vh4ryRGOUF24KmfA7pSu6gaXS6RC30khkNb2Ik3rw/CL+QmMJJviH7k1nK86q6vSv16BKibVdfgVQatxImZcjxm/V/h9zkySrQVmznHFhD0d+Hlto6U5NPb+aBIGdO3GzY1OaAnRzICYcfbIqFRHn7+hEjH8LOd+MbFPdc8d/rKiNloJZf7rE9PgjHc1+MDBE2t1SCgwPXcH9KUnRpGiNKRKCS0muB8y0xF4HQiCQ02Sz+pY4tqi4ptvSCPmW/IHdA3r3N7yHOvz/EVgJTs3BCM7ujhfBo/k6OtmFNyi+yMoOaQjPCaqPThFfe6vTO1tzfu10QANtAk8k3gcUOxPEnNG1C8dplqzOd84r9Z5cutYHishdjbSX7KEiKc29jrjDK2FSUgTNmfxf2mT10c36r7jjh+4ZecbkcF2rO+yA5vgrhISX2vqSPqimIUalNLlHQR19F4wHaii1Z11UNd6UHgt27y0pv0HKMMQDQEZI9EQkyMLZUP5m5JT3dPFV5Y9IuZ6e0Ld1/JgbOb4gpqhLiZXQddhUe025AWdUaa9X1k0y0kUlmUGLuetJxFEAQBgSbMeYmmYgx/PDpWwviQztVK2rmUWJ6l3d1Nfojkhdaoteyv7HvXsKBO/UtfWU6rVno3FuE/0tVjUULbPYaZP+8yWOb6YU4pAj+IXgMm+Hzu/3oxsRPEv2f3pulElqnOYC5Z6n+PU7oZmUH24JllcXPb/VFoePWBwKh0Naj4gB3Msvk3uF7u58j5fyb+2nFIuEpcFpQrj+rbesV4LMTdUtRGouaXvfmh3SdcBRPB4qetI7ytC3grUFpGj+Vx183znWhxQFrMBWYsf5o5cqoS1m3iFdozy0g== X-Microsoft-Exchange-Diagnostics: 1; MWHPR02MB3390; 6:8pwoH19ILtVaMZTDMEBoXq3GyaKBazwwuGslSx+eXkFCp4hZ3x1JENv8J7EJBO9RlndDAAQajc5/PsR6q9QxbBL0PfJ4Ya3cKMHZYu9KQzw4/lY/1r5CJBSPANLV7ixWzFBt8PF4NfLg95lnMgsYjYPVb11zpa0jFHtCkBEBcC4arDpSegGeODMgs9Q7aJus0zww6r9b9XmpNZeGz624Tc0SXmaBZqBP3CGZhuglrV9qepZ0JvKc8th6In4JXRwMwraNQFv/LpfB98ueXn6SUoJ2mOi/MluYlnXqq8NHT2X5JR4A2fXF14oMg5/W8q69RA6yRo1ihySuE4Umi3GAqb2oKGpS6d3ChoGSDeMd9M0=; 5:PR+lP2DzQI2nliuDvrxvmE/BRyXogyJMPYdLAG5FOd9Kn5F36z/DMUlGf4t4tgPDNgwCga6jMSRTJCwbgokYpi5ZrepZE+fbLvf8xXdD/+8gwpmcbdH4OlSOi8dBCKSeVAbTZiJx8G8UtKcK57PabXwpYVp0KIu7Fkh6u8Tqj3g=; 24:wtszKUNTzIXfWe0YDUcTw8J+fImh+Fp5ZmXr5MuHK0gL2OlO68cZRf/+eW+UOoHQCztwbe+Two6J0vjUCZ/Sccx3x2QzNeAtsDQJtv/SdW4=; 7:PM8wS4KqEqVygO54fI9xjeCL1oQLL2laiMRkWIOtfI+PUKTPtuI6HsTmuJDOAr4mtr8eOucPGe3g+B53jkbSvudmtiNtFj20qFy/EDuPN98DgfKb5J220JXcY+Wt52/fctHh1nISML1AcmXivjJxwqqFaGDhoFeHAu3ayYcyVkFqP9utsTLKvyJhN4oi7PM3T3DxiIGY0biJAdqQdntfAmSvR7pYFFK46SDyGIcghd1PaFqCJngSAHlIUR/9ZKO+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 10:32:46.2940 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86e6fe5d-f45c-4199-155c-08d5535e7ef5 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB3390 Cc: oss@buserror.net, michal.simek@xilinx.com, Siva Durga Prasad Paladugu Subject: [U-Boot] [PATCH 1/3] nand: arasan_nfc: Move common ecc struct initialization init routine X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Siva Durga Prasad Paladugu Move common part of ecc structure initialization to arasan_nand_init() routine. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- drivers/mtd/nand/arasan_nfc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/mtd/nand/arasan_nfc.c b/drivers/mtd/nand/arasan_nfc.c index 14b2733..dc956f8 100644 --- a/drivers/mtd/nand/arasan_nfc.c +++ b/drivers/mtd/nand/arasan_nfc.c @@ -1038,13 +1038,6 @@ static int arasan_nand_ecc_init(struct mtd_info *mtd) u32 regval, eccpos_start, i; struct nand_chip *nand_chip = mtd_to_nand(mtd); - nand_chip->ecc.mode = NAND_ECC_HW; - nand_chip->ecc.hwctl = NULL; - nand_chip->ecc.read_page = arasan_nand_read_page_hwecc; - nand_chip->ecc.write_page = arasan_nand_write_page_hwecc; - nand_chip->ecc.read_oob = arasan_nand_read_oob; - nand_chip->ecc.write_oob = arasan_nand_write_oob; - for (i = 0; i < ARRAY_SIZE(ecc_matrix); i++) { if ((ecc_matrix[i].pagesize == mtd->writesize) && (ecc_matrix[i].ecc_codeword_size >= @@ -1126,6 +1119,13 @@ static int arasan_nand_init(struct nand_chip *nand_chip, int devnum) goto fail; } + nand_chip->ecc.mode = NAND_ECC_HW; + nand_chip->ecc.hwctl = NULL; + nand_chip->ecc.read_page = arasan_nand_read_page_hwecc; + nand_chip->ecc.write_page = arasan_nand_write_page_hwecc; + nand_chip->ecc.read_oob = arasan_nand_read_oob; + nand_chip->ecc.write_oob = arasan_nand_write_oob; + if (arasan_nand_ecc_init(mtd)) { printf("%s: nand_ecc_init failed\n", __func__); goto fail; From patchwork Thu Jan 4 10:34:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siva Durga Prasad Paladugu X-Patchwork-Id: 855538 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="UVbBbNtE"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zC41618Myz9sNx for ; Thu, 4 Jan 2018 21:34:33 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id A4BC5C21DDF; Thu, 4 Jan 2018 10:33:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id EAE23C21C8F; Thu, 4 Jan 2018 10:33:21 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 94295C21DD9; Thu, 4 Jan 2018 10:33:05 +0000 (UTC) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0080.outbound.protection.outlook.com [104.47.41.80]) by lists.denx.de (Postfix) with ESMTPS id A18DBC21DB5 for ; Thu, 4 Jan 2018 10:33:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Fng1XLIcaGfiHAK4BVxdOzKLXfucO81yElHMbPzED20=; b=UVbBbNtEt7c+oi5DH+fTmf2D5DjIueDYeFP5BUyO/L2A//2xL+qHCJz9lzrGHQlazF2L7/5OTP6BOcoLDa+kcE7C2O5epsXPJjw50mzI1SlL5VgZpQ5f1BGaTVPijVa+clNb8mUgofDcuMiIId5CljvZy5RLZ0bFKuZ5Cr9NZP4= Received: from MWHPR02CA0027.namprd02.prod.outlook.com (10.164.133.16) by CY4PR02MB3383.namprd02.prod.outlook.com (10.165.89.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Thu, 4 Jan 2018 10:32:57 +0000 Received: from CY1NAM02FT041.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::204) by MWHPR02CA0027.outlook.office365.com (2603:10b6:301:60::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Thu, 4 Jan 2018 10:32:57 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT041.mail.protection.outlook.com (10.152.74.156) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Thu, 4 Jan 2018 10:32:57 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:35842 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pU-0007qV-3Q; Thu, 04 Jan 2018 02:32:56 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eX2pU-0000tQ-1O; Thu, 04 Jan 2018 02:32:56 -0800 Received: from [172.23.37.99] (helo=xhdsivadur40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pJ-0000sI-4a; Thu, 04 Jan 2018 02:32:45 -0800 From: Siva Durga Prasad Paladugu To: Date: Thu, 4 Jan 2018 16:04:21 +0530 Message-ID: <1515062062-24291-2-git-send-email-sivadur@xilinx.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515062062-24291-1-git-send-email-sivadur@xilinx.com> References: <1515062062-24291-1-git-send-email-sivadur@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23572.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39860400002)(376002)(39380400002)(346002)(396003)(2980300002)(438002)(189003)(199004)(16586007)(63266004)(51416003)(81166006)(4326008)(7696005)(2351001)(106466001)(6916009)(2950100002)(305945005)(50226002)(48376002)(6666003)(8936002)(5660300001)(77096006)(478600001)(50466002)(36756003)(2906002)(356003)(9786002)(106002)(316002)(54906003)(76176011)(47776003)(36386004)(81156014)(59450400001)(8676002)(107886003)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR02MB3383; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT041; 1:xxzXUPfNUFql5LdG247VmL20Q108NC80dfY72Fz+O357Io3oFst/+mBi4kQVqFufxtjfAwLSE8a9KPWK1I3uIAhwQGRUPUNMC8clFdwftVDBtvrLU/xqEiBA+8IQzeAk MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c8dcda4c-4b52-4a69-6cd4-08d5535e8562 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:CY4PR02MB3383; X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3383; 3:AF9XvKmmUQNwn7zzks3vMoRppod/sd9VyB5BshD2lX1U+NR7eHE54CcXgYSE8NMKomWijjBtQKSFVb8+biHqQocBUowBF1uv6+h7Yi/BssNUfzxRB7fOUhvoB6QdD3k/QwHAGrcvB70w4IWHt7FLKLUbTdii1MXwH0ab2SVph/K7kY6p1eOdsmWrRqEToTMQ21Zv/46PzWsvT+VD9SR9xa1tViIV9dfu9BLwlS0c+piTvj4+3jG8hCvLl4IBMgigPnR6VxaocMSKJlFimYvKgTVTED/qj05q6DJZa5cO9A8R1lzo8g1KDw7REu4t2aRtEropleOLI7647Tp21S3Ju307vleThzqQtDLtZDKouIE=; 25:Xsh5EDVBrvinebYg25Xx6tDIMs76lA0S5yONOVxXEu2enGCwVILS3lRBlKhl1/z7dLmgvIZNzp7qnbhv1y92a47gkW2uqxss9P6QPwihmXsOlGQC6U0aJTrdOkBWKd88NeqsGzGuB8kjN3tH58Fizper2RzupvrQCcsEUYUdfW6KNeHL/T+HcWe+VSM8IXdEzEnudUop5R6nUMFN7QeaJxEy2WPNkmW3+/5WWdNulHSCUJWZ2zxdMxQlpQufI+BSS5QQuHXSwY8YRZz6iOwJkMUQwX8QV+VcSDZ1/xuIbpdqU15igi2+25NNn2clxralO/O8PWxgt4FpsCBq4BHgEg== X-MS-TrafficTypeDiagnostic: CY4PR02MB3383: X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3383; 31:CRquH2RiuHY60PDnNasZSDBmjwqRerdEYppI1txlUh51hr96qwete/z35W6kFHTIKvHDIn5y/J+z7Sfn+72AikwjCjkGNorZtM3PNRJH7f6NWjd0PpJeDfbm9IlwIdd8dz6Wwa7Wy1s9EowwpuwMpNiqN/uHT+a6DPxntpDGaZ2RN0kgZwOcGb8kb5dFJaAkqISb1v4ZWKn1HDztLlyzphEVkYuoxXkn4ZKEPVbEqNE=; 20:S3cPIujRkoYjtoeZs7XNGoyDLtPD12LHUgOb3NJiX9h2K4x71V/DviB29SGbuTqP6QlywM6Uct2zuYTLxYVq0Jm9B3q8AluGgZOOvHGO4KHexfOZMoVShJCcYIiB2kqII3KjXh2bc492D22BXUm6jnQf/p7Qw90sWC/bwgQjOG0Rjp/USXS//u60GHixxNHJvqhn4VKvh6a1q4jxqSDC4tAxbu/Io4LwzelT7piT1FTGy0ChT+vc/QAo4/oA7XPqvoOYsTq9Fo9KsAkEKs/OpBp5RMPrfkzV20/hw2O4atYtsedH1U5eVKmkvbCdnfxmfqdeo+OJ0/xYRg9QN/sAl4lY8ZcD96eUoTTfUn3I8rmpoLUE9Tp8BZw2SYhKsTfCKQEJtd4j1fNPembZCHVXLgJPRVSFs+aJPIAete6BiyMW6E3bwaMjl5pzPYL2v3B/9QnoQjsbjyFy1PjUTm/GOwrkatSPS7qWXDfGubkC+ePM5liuXZOKfujTbhDrAJhp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501075)(93006095)(93004095)(10201501046)(3002001)(6055026)(6041268)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(6072148)(201708071742011); SRVR:CY4PR02MB3383; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY4PR02MB3383; X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3383; 4:Vi5uq9uqh8OgD82OSyAV5jC52OcsQJdzOeiiWnuOduj1lhyIK6XQ+PCboyzELA5fQBxarCDFnPCDrdA7hOw64k1lzYIS/1CqATNOGYnb6B9LrEz9B7i987XMDSlCJvLXdow0NTWcTuS/QahjsMCcGuEjRcEVNaW0N/eS1qgM/odr90gCga60Kr/IgVZ+7trEOKy1g7kvdhv1egfpEv3KK9CJlzclKVZtQL955hbLu2HSo1PRHXVXITV32v1Knd8uVxAErtKykbQCEJ1kb8zaAyK2PvqVHVCM0JngL0c6FxB4I2MfQ03hG3Z/lTkaOO6F X-Forefront-PRVS: 054231DC40 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR02MB3383; 23:beK2waueypSbc03vW8ovT7FnVTo4w0etgDMsJc1BP?= DK5lUfaJZG9oRPuevCdd9uNw1aF/+0O91/t8hBgcmcQr02ua12UplzpwGDJzlAgn5VZy68H1R2f1cMyFvc98zKVGvy5St6SpzIP1s8CjG+ouVc6ZPGobksyxo2t766XwwmWcp+88ZZHeVuyV0Vhr9Xbed3Y5PNDTKUMKWAnjhYIOa9exGXpIsPxC2ftlhfsBNQm7Zqp7Mu+fCYz59RnFpQjqiSgYO1RCRoOMQ3Ih/fVTY5k+xU0I3d0BRospcrjQzNyeVtkB+cVubhNJniLcc73zBKtx2JNVP9I4rY4RVJO+4LyjISeU8MLStbyc7z9GjIkZnaNDxT8RLR2GnQzIhjddnvVFFFcaj801vig9+ajmXtdkEPr2UozVkFoIjyL+zt0FYzzuJRxDrr3MFtcnbJehebogc3lKB/43OsZoTMR2ElZ50pWmzouhHn/s2pWmQ/cOywHQbHwJSoUwVn7buXR9BrMlQeK70YC5/+U9BnYHgELX49gm4llZeOP6r/zlhyan4o7yM7Lv3L+I4wz8bxp/mUDVjwk6m7BgTVmQV2BJQjHhIqqy9WEBkK03BDtZ0WMDYAkwuBaBEYku+jhUFii+coEenr0WTghk4HesYfRFjE9JJWAZgTIuykb7dLeP24b2ZUipuLDIk5stCYEPz0bB46bTVc21yaydHH5lYGh0FbSLK6VfKsR41MVK8o8ZsV11QzTvi2ZGMDaume6Vch6qEnxBq4wioTQT6y2rVNRgm6RfEnw2LSkucwhlwX67lNRym6gJj1Bwhw5G6PNB358tW6ZWo4pt/EZJjA/0z5Ky/PFLdt5cSEEpE6IdpKuZTDwzWyeAIrpHOeAN0+aYXr9LGwVWbgNXk/dUvZHUKRo00JAHYALmOa2+KTZBFBHKPf8Yotqr9w6dE+2TpAa5mbMeLUh1nnHEaKV6djdw5SbctZxwZ1EULawbxoFaIhPZjMqDb8U81wJ6h3enYVfE7OUbvpN0sRYqxxzKWGicBfNEx/EB/lyv6ln6/z3Yyx9ez4= X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3383; 6:VW+nZd2YaI8e+GKIwNAyuXcijJDKnl+7W45HQZ+hSBQRy1nNyyaAj0f/4jygry0yurbIpyrKQyTHFcQ89L57mjrSh2GmFuKP8fhZipCOIATeYyhvptGGZ3vqxH7BmOIiK3TOuAVyMdqBy+5XaD4J7wct2V7JmmZelfPr050DSx9Kh41GzNlb/d9aTdoSD6BaymGSJlCIG0m4O+Awk2kaqgT/BBbhrz1WbEq/YGtS9kGb8kD/FjSfnHi5F9xJXFmsVwlORp5vpitrbqtwBP7PzX1B+tVBWyF94QUx+aMWfvJWGRAhJptPbEyDJqPWy/Tc5sE6F44zRYbwhHxULTIP8oMNjXXOzAaz7mPH5ROJGN8=; 5:VD+LsyXMy0SVsvcgeT8UozubEG7r7XiOO46SdTk9D6sF0d8NGBfAf96Cn2TFsnJAG2RkD16oq1Pyn5Mv86iwNOKshOjumHYhuSqE26F3BzxTIVtl3qD6LCsPFlsuBT63C3GM9ZtO6lNHwufPe1Ltoyg8mgXAZ3sennprlgiKaRM=; 24:vrKMOVUJ0AhBrS+zEMd/+aWLRv73fHxQc+0EH5Xpwdk1mvwJeN4qSMhy7X+/OEbYG26eE8XjyD49ZrVhSpTyl4d0Op3hetW35UYLMC05mbw=; 7:PIO7/LBeKr+s+in7gug71pq24mzxePoVnmuNPN0nJK87Aso/sY6Z1dm0xzWeeeX+GJcyGUZka66gznxAl5KO2irtrfpFFCOv7c1e7JV0RmlL+6mVOAK3pkf7GJH8kQsctLJyV5PMnhaR3V7+acX4xEhxSAAcCtFcLlfMxPJR23NIBxr2VO4FPXE0tg3qWSJ/5YgOCLHfnompBM2FmbgoyzmBHxNV5xrStGxPKXTD/wqb90PuuShqysyNjHY4SQQJ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 10:32:57.0144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c8dcda4c-4b52-4a69-6cd4-08d5535e8562 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR02MB3383 Cc: oss@buserror.net, michal.simek@xilinx.com, Siva Durga Prasad Paladugu Subject: [U-Boot] [PATCH 2/3] nand: arasan_nfc: Add support for ondie ecc X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Siva Durga Prasad Paladugu This patch adds support for ondie ecc. As of now this adds support for micron parts which supports ondie ecc. Didnt found any better way to detect ondie ecc support by a device except sorting out with manufacture and device id's. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- drivers/mtd/nand/arasan_nfc.c | 165 +++++++++++++++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 27 deletions(-) diff --git a/drivers/mtd/nand/arasan_nfc.c b/drivers/mtd/nand/arasan_nfc.c index dc956f8..70cb00e 100644 --- a/drivers/mtd/nand/arasan_nfc.c +++ b/drivers/mtd/nand/arasan_nfc.c @@ -21,6 +21,7 @@ struct arasan_nand_info { void __iomem *nand_base; u32 page; + bool on_die_ecc_enabled; }; struct nand_regs { @@ -64,6 +65,7 @@ struct arasan_nand_command_format { }; #define ONDIE_ECC_FEATURE_ADDR 0x90 +#define ENABLE_ONDIE_ECC 0x08 #define ARASAN_PROG_RD_MASK 0x00000001 #define ARASAN_PROG_BLK_ERS_MASK 0x00000004 @@ -206,6 +208,51 @@ static const struct arasan_ecc_matrix ecc_matrix[] = { {16384, 1024, 24, 1, 4, 0x4220, 0x2A0} }; +static struct nand_ecclayout ondie_nand_oob_64 = { + .eccbytes = 32, + + .eccpos = { + 8, 9, 10, 11, 12, 13, 14, 15, + 24, 25, 26, 27, 28, 29, 30, 31, + 40, 41, 42, 43, 44, 45, 46, 47, + 56, 57, 58, 59, 60, 61, 62, 63 + }, + + .oobfree = { + { .offset = 4, .length = 4 }, + { .offset = 20, .length = 4 }, + { .offset = 36, .length = 4 }, + { .offset = 52, .length = 4 } + } +}; + +/* + * bbt decriptors for chips with on-die ECC and + * chips with 64-byte OOB + */ +static u8 bbt_pattern[] = {'B', 'b', 't', '0' }; +static u8 mirror_pattern[] = {'1', 't', 'b', 'B' }; + +static struct nand_bbt_descr bbt_main_descr = { + .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE | + NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP, + .offs = 4, + .len = 4, + .veroffs = 20, + .maxblocks = 4, + .pattern = bbt_pattern +}; + +static struct nand_bbt_descr bbt_mirror_descr = { + .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE | + NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP, + .offs = 4, + .len = 4, + .veroffs = 20, + .maxblocks = 4, + .pattern = mirror_pattern +}; + static u8 buf_data[READ_BUFF_SIZE]; static u32 buf_index; @@ -265,6 +312,7 @@ static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd) static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size) { struct nand_chip *chip = mtd_to_nand(mtd); + struct arasan_nand_info *nand = nand_get_controller_data(chip); u32 reg_val, i, pktsize, pktnum; u32 *bufptr = (u32 *)buf; u32 timeout; @@ -293,15 +341,17 @@ static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size) pktsize; writel(reg_val, &arasan_nand_base->pkt_reg); - arasan_nand_enable_ecc(); - addr_cycles = arasan_nand_get_addrcycle(mtd); - if (addr_cycles == ARASAN_NAND_INVALID_ADDR_CYCL) - return ERR_ADDR_CYCLE; + if (!nand->on_die_ecc_enabled) { + arasan_nand_enable_ecc(); + addr_cycles = arasan_nand_get_addrcycle(mtd); + if (addr_cycles == ARASAN_NAND_INVALID_ADDR_CYCL) + return ERR_ADDR_CYCLE; - writel((NAND_CMD_RNDOUTSTART << ARASAN_NAND_CMD_CMD2_SHIFT) | - NAND_CMD_RNDOUT | (addr_cycles << - ARASAN_NAND_CMD_ADDR_CYCL_SHIFT), - &arasan_nand_base->ecc_sprcmd_reg); + writel((NAND_CMD_RNDOUTSTART << ARASAN_NAND_CMD_CMD2_SHIFT) | + NAND_CMD_RNDOUT | (addr_cycles << + ARASAN_NAND_CMD_ADDR_CYCL_SHIFT), + &arasan_nand_base->ecc_sprcmd_reg); + } writel(curr_cmd->pgm, &arasan_nand_base->pgm_reg); while (rdcount < pktnum) { @@ -363,17 +413,19 @@ static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size) writel(reg_val | ARASAN_NAND_INT_STS_XFR_CMPLT_MASK, &arasan_nand_base->intsts_reg); - if (readl(&arasan_nand_base->intsts_reg) & - ARASAN_NAND_INT_STS_MUL_BIT_ERR_MASK) { - printf("arasan rd_page:sbiterror\n"); - return -1; - } + if (!nand->on_die_ecc_enabled) { + if (readl(&arasan_nand_base->intsts_reg) & + ARASAN_NAND_INT_STS_MUL_BIT_ERR_MASK) { + printf("arasan rd_page:sbiterror\n"); + return -1; + } - if (readl(&arasan_nand_base->intsts_reg) & - ARASAN_NAND_INT_STS_ERR_EN_MASK) { - mtd->ecc_stats.failed++; - printf("arasan rd_page:multibiterror\n"); - return -1; + if (readl(&arasan_nand_base->intsts_reg) & + ARASAN_NAND_INT_STS_ERR_EN_MASK) { + mtd->ecc_stats.failed++; + printf("arasan rd_page:multibiterror\n"); + return -1; + } } return 0; @@ -460,12 +512,14 @@ static int arasan_nand_write_page_hwecc(struct mtd_info *mtd, reg_val |= (pktnum << ARASAN_NAND_PKT_REG_PKT_CNT_SHFT) | pktsize; writel(reg_val, &arasan_nand_base->pkt_reg); - arasan_nand_enable_ecc(); - column_addr_cycles = (chip->onfi_params.addr_cycles & - ARASAN_NAND_COL_ADDR_CYCL_MASK) >> - ARASAN_NAND_COL_ADDR_CYCL_SHIFT; - writel((NAND_CMD_RNDIN | (column_addr_cycles << 28)), - &arasan_nand_base->ecc_sprcmd_reg); + if (!nand->on_die_ecc_enabled) { + arasan_nand_enable_ecc(); + column_addr_cycles = (chip->onfi_params.addr_cycles & + ARASAN_NAND_COL_ADDR_CYCL_MASK) >> + ARASAN_NAND_COL_ADDR_CYCL_SHIFT; + writel((NAND_CMD_RNDIN | (column_addr_cycles << 28)), + &arasan_nand_base->ecc_sprcmd_reg); + } writel(curr_cmd->pgm, &arasan_nand_base->pgm_reg); while (rdcount < pktnum) { @@ -1032,6 +1086,50 @@ static void arasan_nand_cmd_function(struct mtd_info *mtd, unsigned int command, printf("ERROR:%s:command:0x%x\n", __func__, curr_cmd->cmd1); } +static void arasan_check_ondie(struct mtd_info *mtd) +{ + struct nand_chip *nand_chip = mtd_to_nand(mtd); + struct arasan_nand_info *nand = nand_get_controller_data(nand_chip); + u8 maf_id, dev_id; + u8 get_feature[4]; + u8 set_feature[4] = {ENABLE_ONDIE_ECC, 0x00, 0x00, 0x00}; + u32 i; + + /* Send the command for reading device ID */ + nand_chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1); + nand_chip->cmdfunc(mtd, NAND_CMD_READID, 0, -1); + + /* Read manufacturer and device IDs */ + maf_id = nand_chip->read_byte(mtd); + dev_id = nand_chip->read_byte(mtd); + + if ((maf_id == NAND_MFR_MICRON) && + ((dev_id == 0xf1) || (dev_id == 0xa1) || (dev_id == 0xb1) || + (dev_id == 0xaa) || (dev_id == 0xba) || (dev_id == 0xda) || + (dev_id == 0xca) || (dev_id == 0xac) || (dev_id == 0xbc) || + (dev_id == 0xdc) || (dev_id == 0xcc) || (dev_id == 0xa3) || + (dev_id == 0xb3) || (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[0], 4); + nand_chip->cmdfunc(mtd, NAND_CMD_GET_FEATURES, + ONDIE_ECC_FEATURE_ADDR, -1); + + for (i = 0; i < 4; i++) + get_feature[i] = nand_chip->read_byte(mtd); + + if (get_feature[0] & ENABLE_ONDIE_ECC) + nand->on_die_ecc_enabled = true; + else + printf("%s: Unable to enable OnDie ECC\n", __func__); + + /* Use the BBT pattern descriptors */ + nand_chip->bbt_td = &bbt_main_descr; + nand_chip->bbt_md = &bbt_mirror_descr; + } +} + static int arasan_nand_ecc_init(struct mtd_info *mtd) { int found = -1; @@ -1126,9 +1224,22 @@ static int arasan_nand_init(struct nand_chip *nand_chip, int devnum) nand_chip->ecc.read_oob = arasan_nand_read_oob; nand_chip->ecc.write_oob = arasan_nand_write_oob; - if (arasan_nand_ecc_init(mtd)) { - printf("%s: nand_ecc_init failed\n", __func__); - goto fail; + arasan_check_ondie(mtd); + + /* + * If on die supported, then give priority to on-die ecc and use + * it instead of controller ecc. + */ + if (nand->on_die_ecc_enabled) { + nand_chip->ecc.strength = 1; + nand_chip->ecc.size = mtd->writesize; + nand_chip->ecc.bytes = 0; + nand_chip->ecc.layout = &ondie_nand_oob_64; + } else { + if (arasan_nand_ecc_init(mtd)) { + printf("%s: nand_ecc_init failed\n", __func__); + goto fail; + } } if (nand_scan_tail(mtd)) { From patchwork Thu Jan 4 10:34:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siva Durga Prasad Paladugu X-Patchwork-Id: 855536 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="hdyc/bA5"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zC3zn1gBJz9sNx for ; Thu, 4 Jan 2018 21:33:25 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C9C6CC21C2B; Thu, 4 Jan 2018 10:33:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8689BC21DA9; Thu, 4 Jan 2018 10:33:19 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4BDC9C21C2B; Thu, 4 Jan 2018 10:33:04 +0000 (UTC) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0056.outbound.protection.outlook.com [104.47.38.56]) by lists.denx.de (Postfix) with ESMTPS id 70E80C21DBA for ; Thu, 4 Jan 2018 10:33:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=2kuWlMvYYM8Ua5Te4FSfhJrd8dgLvNnP3zlJgBeNMT8=; b=hdyc/bA5DaS2r4rCALSH65YNxq0ZNjNqcqJPB9jH20vRwq4DbhlVZiaIccIKUWwzE6v0bMrP8AdBEaqywW1nB8XE0u3HcBdKBqyBiLOThmP5wgzUbRy/fy0bi3henphtf+VxVPcWwb4ttajvc96JfUtRwVFa+AExRm9WQFfv1iA= Received: from SN4PR0201CA0071.namprd02.prod.outlook.com (10.171.31.161) by CY4PR02MB3381.namprd02.prod.outlook.com (10.165.89.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Thu, 4 Jan 2018 10:32:58 +0000 Received: from CY1NAM02FT038.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::202) by SN4PR0201CA0071.outlook.office365.com (2603:10b6:803:20::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.366.8 via Frontend Transport; Thu, 4 Jan 2018 10:32:57 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT038.mail.protection.outlook.com (10.152.74.217) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Thu, 4 Jan 2018 10:32:56 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:35839 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pU-0007qT-1k; Thu, 04 Jan 2018 02:32:56 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eX2pT-0000tQ-W5; Thu, 04 Jan 2018 02:32:56 -0800 Received: from [172.23.37.99] (helo=xhdsivadur40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eX2pL-0000sI-6s; Thu, 04 Jan 2018 02:32:47 -0800 From: Siva Durga Prasad Paladugu To: Date: Thu, 4 Jan 2018 16:04:22 +0530 Message-ID: <1515062062-24291-3-git-send-email-sivadur@xilinx.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515062062-24291-1-git-send-email-sivadur@xilinx.com> References: <1515062062-24291-1-git-send-email-sivadur@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23572.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(376002)(39860400002)(39380400002)(396003)(346002)(2980300002)(438002)(199004)(189003)(107886003)(5660300001)(305945005)(478600001)(4326008)(77096006)(2906002)(36756003)(106002)(54906003)(36386004)(356003)(81166006)(316002)(8676002)(81156014)(16586007)(63266004)(6666003)(6916009)(9786002)(2351001)(106466001)(7696005)(2950100002)(47776003)(48376002)(50226002)(51416003)(8936002)(76176011)(50466002)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR02MB3381; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT038; 1:mev5a8B6xgyLZdvk8inN5JYTH9C4GTLkbTBAVViXZqA5hw6BjF1p5W1M5RovcxvnE/eUp6r34LD9tODTCAX/P2jB4voMhhjQ+NyLsqz+ymKKGG9XbHzM2x24SJOb/4Yj MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5defc9b0-25b4-4a6d-7c74-08d5535e8532 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:CY4PR02MB3381; X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3381; 3:T1vZOGwzCRYWGoPQUHuWMKurJky6/rjS2uYE/Ja1BCgIMsFRH1KhRdFiy1RJdU1mpF3T4HFjOj01eSluJ3q6BRrvlS9J6XZoELrVfg+WjLz82SJa6x45OqQ54tO4qNbTA4iFaO+4ZMXFD5bfwntsV28PAGceufJRqw8tJta/l10hJpgJPnwzyaombqBCXv1OVESg8PgGsll3koBT6XEVY36j1hZY8Qm3W7XgnteDXTrepw/3E0QG5OsT1RWAq9LVYD+OtzvBU5p4VgVgOYJkjGwbSN5xn9shCvEVF2AdwKmrZ2c56hj67TYtq8S6FvsZibitwwFxbJn9XSUG8heK960wT06+npxy+WWhLV0t4lk=; 25:gOB4Ugkd/cHuiTntf3Y2aKqECJtQBluRhsOHIgN6kQPqZvN03Eu9KGwXh9AqyfFC/NJ3aVZj1s6NZGjYzB4DOQGxWlsb1/UCtGQBIKQANOCcZEP8Z+b4+8H+7cm2kZcTiaIq6TgyP0dEvTdWPMckyEF63Z3rsAvI3T+Zu9oafa+vQmQ7Z3AAhgGHNJunoS+tnXyNCybsCNJbayhJXB/mIvgbLiauqIbP4DjFy+VH6XZw2RNBqiOq5gbI7ZZig7SsXFGRvg2BcPMkb5op0E+K4IhqErabjppGieftRf6RW4Gpcq9QG2hTh4dG7YFd3X/9JCUNTnjdFi4NJKZYlwo5hw== X-MS-TrafficTypeDiagnostic: CY4PR02MB3381: X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3381; 31:vP6AQXEUpyVmOjxRzGLcUQshh9gAV5a4fgHxhSZ2nZ0rl0yr1+mi1I/Kf4p58v/HIVWKcfKDd70gPtp6J11MVXPYIFe3cHxD8BgKC1I8q1MidObv/QwSbpBBCeaKYkY2M3Zwl5O91lJixM1VBoOriAEm/TUyGxGiuSd3hTUQGrkfyccHvj8m7myw3aYb182dVLx4gCvxsVtd5g7hcV7uEnDo7J03nehYqN9GeXDShYQ=; 20:OAD7u1XtodpHgDuD9oebz9blPUmhAQqyGFsS0f8GjW0HesLHRp1NTHD/FcDAOUCY6p3zlDwD1OFSAm3+NMnjR7Dyixy83a8TwamnTw1uObb4GKSghdj/XuJkeR2KIcZ5DT3oCN7zOinSlqhceKeLX7jhR678VAIO0ZEEFk7ymJn0F6/GfqYpPyENxEpE9sQS9+HA16grbdxwuREnWaRn1g8I/5i4UaC7pKu9M5E6tciwjro1vlDnuiQI1E90TCuWtYa3hpAZlATeJK8fkCs43JQxOO8uqLKiVElOHB4PmT5LofTwkyndCilB08FcdPq4CmuNOGu8/DskzlvHMkBkSH0fGSLKbG/evjZY65JCIm11Yjn1IoLq6Ur50XI2MwOUsPI1RvB+vG9LRdxHZd9+l4rlpbilaNPELn/Gf8Mz5z5n1bY7dnCG2eiziWwInq/bRbcmIDiNtdPumYKqpZFDgmJO7ldI9iIoAxke2tqrk6N/IjHh2+/BGCGwlvoevjqM X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(3231023)(944501075)(93006095)(93004095)(10201501046)(6055026)(6041268)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:CY4PR02MB3381; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY4PR02MB3381; X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3381; 4:T3DBfpFx4y1AfTSTXTnvkLx2VY1Wa1BuLESY7JwlFBFYcbfFP1sQTsgnjZc8CiwGjhxfU5f3wRzRKqkG3fY80vJJqdlnVx9boOWfJ8SeemgPFeCcE1xsSZAnT9HDVLhKNy79X/0QJuT4jQIa2wbEYa/J5c+I0UpxhSNROF8JJbvwqQLDz9UuNmWTBLEYd9upXitPFHnwiMXnX8KU/NQ/WzBvgCWGKgejg4ejywE3+h/WEeGhmGRw491SUcAgMIHCfaeKlXKPn1Cpuv26hLhh8DYz0IWQeNL1bTCexQJvfxhDig34xHEevkMXQKU63bHy X-Forefront-PRVS: 054231DC40 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR02MB3381; 23:wc5mwijPhw7wUeXOFad8R+2C6XfK55mB+wJK7fQzN?= ZpIPgn1nc0d98xSixgZd5JC3WnrCeFwK6jtNhjhHYoho7Sx8vvSGV51TEPp/9iq7iJ8gQZK5CnEMrMyWiQIzkK5jKRM3f9AJlSPIdtbDMKHdgP2+EzCou02ifcG1zUw36tKx4Sy7Dwi/zdmYUPeJOlCPShXiEccwI/A5Fb5GvmxrytG0qFm/osfvcAakMU2ommDXVrHTfdikk05mOeMJytjVGPMHTkCDtRrcgWu10fUpdPINhFkRfONIHFB1DlO7aza1ZY6V1txFHbpDLel7bODZWcydAYAuvFZPBHg1Sc4pOgR2x18h6rb3EdQMJlX92bKgKURe0mNjw0ugdpX1QiKzD7UUnsXLT83DxwyvePecbS+OO+LoBxHe0eFjh48gvFC1NXa2vmb6MjC6jUmGesoOVSOzffkQZFN2/Rf1/PzjDmkjpScutPwKmg8cr2ab8+vaSbfLXn7cByEu5jfmZeKxYrUAkqwOJbbE5TYObldPRCG3HWch++lrUTaBq64nCl++wM55uawD59Wi9ZOxUvV3zOlEXAS8lft6yRbCIpVeKGk5v7GNzpGBPGWhzxeYP9kbUPhpHzFlbK0pnU7bWXNpmaaWfZZ3pioZWz9td6FVPfp1Kfx2KxBWrzZFrw3UhoND4mo5gnAcnqlgxNB/8cICFyYYFP2s5yGr1giJz9tqgQjY4xkirTty7yJoPr0Tbzaidu2zXDho7MXVwiUIK/X3SzhDxhgcYQ/tS4oCyROE7pL4qjt+p/0spGeLSHD4e9E7qI3JKiBI2AUwYA2t2IzBuM4xZD71sW7wQz1xhVdDEe0uuWbVxQoNs0Yu21vAWyY9bnxqPMte1mhuKnKXAVyyIKURc75p+IvFyNaz6j8h6FH0ePop+vmagLvKq7/yLZsh0se0qd7i6d9FLKYe1479ZebhzrNPB1jKos8xGfs+tIVZRSRGbErPrv0C7BRH3ErzixiZQRPqjkXxBfSFXiJUrJwc/EWqLQEUI0SrXpVOQ== X-Microsoft-Exchange-Diagnostics: 1; CY4PR02MB3381; 6:K8F2I1tqhlOnm4wBdRxarELcBpjdlK2wJCecHLbfU0m0u1XBzLRuMCnjz1475IF9yD7Bz+dvL3iXof1trCw9hSxwOVy3UfQBoTksAZ1r4KBQHFAFXPQYMvLIfEqLNm+itiTQrV4ql9LA9AOU2VAfPMbauiCE1S5u6jCi3VVNko06qRrqmAod7DyDfet0083TKJv0+PnCf91TdOKDLkWOKkl3YJxQNek4fm6OWIXiweFhNLn+aVdsG7WMT3BWfLPHH4ubi2/Jmo1dEPW5Ep9UKnR5/6Co9RKPQOyjzQk2p9JCAIE3hQnK40c9idUunRi5wISaDlQ3ajIIyTXxe8D7H4mqSfqFLHBxj+jKaJfRrqs=; 5:vDzKRggANXsk8LWZFnc6kx4WrSa/MQ/4A1I6OjImUURCnF3MdZPFlPjwXHustTRZI7SgX/+was8QrReEPy1vGRtiqWQqq24MQQc522Mr+2wASrrcMeRzO0Rj1F3OdF4Q//HnUk4GsftWKjszK84EnMpKmncE9SEmKa56DONV+u8=; 24:wwhNvJ1dL6fe/ZakCrXCdKSM6YgT6hImdFtD8nr8PB34Qzq3xTLpkYyBfkPV6WDxmGfnviM3enJthRLM05Xwh+orxY6Dv0rWQrtpykUdlhk=; 7:LTZpO6CLdE0m2+0q9gH74Y/Mh4dEdxc4pRmNCTvH7ZVlnBGUVqC34nq1cO2rLDz5PZpYs7RUE2CRvNL3tkj6XbCJIJTqkWRZHbAI70XhJ0GjDwPdo1lCQiJKNJA5+TWPoTWZ0zD4xxXt/C8vKpoPAbHSQh6USEdinloB0kuhDwbicuSJJGz5jYueUmMUD7s6N6BTUI8DCbyw8h0QsEYI+iB8P2/KU5oa0KQUjwBYG4zM4C0M6phh9LwgJH6ehDla SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 10:32:56.7627 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5defc9b0-25b4-4a6d-7c74-08d5535e8532 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR02MB3381 Cc: oss@buserror.net, michal.simek@xilinx.com, Siva Durga Prasad Paladugu Subject: [U-Boot] [PATCH 3/3] nand: arasan_nfc: Use the calculated ecc address for updating ecc register X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Siva Durga Prasad Paladugu This patch corrects the ecc address calculation before updating to ecc register. The ecc address has to be calculated based on page, oob and ecc sizes of the device. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- drivers/mtd/nand/arasan_nfc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/arasan_nfc.c b/drivers/mtd/nand/arasan_nfc.c index 70cb00e..3c9a021 100644 --- a/drivers/mtd/nand/arasan_nfc.c +++ b/drivers/mtd/nand/arasan_nfc.c @@ -1133,7 +1133,7 @@ static void arasan_check_ondie(struct mtd_info *mtd) static int arasan_nand_ecc_init(struct mtd_info *mtd) { int found = -1; - u32 regval, eccpos_start, i; + u32 regval, eccpos_start, i, eccaddr; struct nand_chip *nand_chip = mtd_to_nand(mtd); for (i = 0; i < ARRAY_SIZE(ecc_matrix); i++) { @@ -1152,7 +1152,10 @@ static int arasan_nand_ecc_init(struct mtd_info *mtd) if (found < 0) return 1; - regval = ecc_matrix[found].eccaddr | + eccaddr = mtd->writesize + mtd->oobsize - + ecc_matrix[found].eccsize; + + regval = eccaddr | (ecc_matrix[found].eccsize << ARASAN_NAND_ECC_SIZE_SHIFT) | (ecc_matrix[found].bch << ARASAN_NAND_ECC_BCH_SHIFT); writel(regval, &arasan_nand_base->ecc_reg);