{"id":807026,"url":"http://patchwork.ozlabs.org/api/1.0/patches/807026/?format=json","project":{"id":3,"url":"http://patchwork.ozlabs.org/api/1.0/projects/3/?format=json","name":"Linux MTD development","link_name":"linux-mtd","list_id":"linux-mtd.lists.infradead.org","list_email":"linux-mtd@lists.infradead.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<1504001833-18097-2-git-send-email-LW@KARO-electronics.de>","date":"2017-08-29T10:17:12","name":"[1/2] mtd: nand: make Samsung SLC NAND usable again","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"81812ae3a4bf0251c08be88b8cbac98c425ea0c1","submitter":{"id":2554,"url":"http://patchwork.ozlabs.org/api/1.0/people/2554/?format=json","name":"Lothar Waßmann","email":"LW@KARO-electronics.de"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-mtd/patch/1504001833-18097-2-git-send-email-LW@KARO-electronics.de/mbox/","series":[{"id":341,"url":"http://patchwork.ozlabs.org/api/1.0/series/341/?format=json","date":"2017-08-29T10:17:11","name":"mtd: nand: fix regression introduced by splitting off manufacturer dependent code","version":1,"mbox":"http://patchwork.ozlabs.org/series/341/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/807026/checks/","tags":{},"headers":{"Return-Path":"<linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org; spf=none (mailfrom)\n\tsmtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133;\n\thelo=bombadil.infradead.org;\n\tenvelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"GKE5r1nu\"; \n\tdkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhPlc5Wmcz9sNc\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 20:20:12 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmdca-0003Ty-5V; Tue, 29 Aug 2017 10:19:48 +0000","from smtprelay06.ispgateway.de ([80.67.18.29])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmday-00027R-2n\n\tfor linux-mtd@lists.infradead.org; Tue, 29 Aug 2017 10:18:11 +0000","from [89.1.81.74] (helo=ipc1.ka-ro)\n\tby smtprelay06.ispgateway.de with esmtpsa\n\t(TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.89)\n\t(envelope-from <LW@KARO-electronics.de>)\n\tid 1dmdaU-0008HL-LV; Tue, 29 Aug 2017 12:17:38 +0200","from lothar by ipc1.ka-ro with local (Exim 4.84_2 #2 (Debian))\n\tid 1dmdaU-0004ii-97; Tue, 29 Aug 2017 12:17:38 +0200"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=LxtvYLumLM0vtF8gVeluAV4JvCsPcWM/N5Vvsv5GQ2w=;\n\tb=GKE5r1nuqCuTac\n\tM9pcGUCK9ZnUWNC53ODHjGUgu2MrK8M/6ddwouINpt2bOtP+g3oQszOGyBsi6/37ywRE34iyVvbuX\n\tewSBD5EpeKib2UZyNcReDnGl7v0Jc42gD2V4bfkknd5u9gXPGz1IrMxwa5aFpqPCgAErQSDr6MVHo\n\tRVCpv2N+dVXi+396esOybd42HEeJQPw9hj9YtchXx7mvPj0UQosF8T07DWzl5c6GPN89YEpyfMRwG\n\t/FkpzA/qxBpH5MrSvaeNU9hkqqYAGjCRmJanYQwEatgEyOjQXIur+XSa5J44LvEBrL/H9PP+o7Bbm\n\t2bCsy+TMmEyzA0QJfkhw==;","From":"=?utf-8?q?Lothar_Wa=C3=9Fmann?= <LW@KARO-electronics.de>","To":"Boris Brezillon <boris.brezillon@free-electrons.com>,\n\tBrian Norris <computersforpeace@gmail.com>,\n\tCyrille Pitchen <cyrille.pitchen@wedev4u.fr>,\n\tDavid Woodhouse <dwmw2@infradead.org>,\n\tMarek Vasut <marek.vasut@gmail.com>, \n\tRichard Weinberger <richard@nod.at>, linux-kernel@vger.kernel.org,\n\tlinux-mtd@lists.infradead.org","Subject":"[PATCH 1/2] mtd: nand: make Samsung SLC NAND usable again","Date":"Tue, 29 Aug 2017 12:17:12 +0200","Message-Id":"<1504001833-18097-2-git-send-email-LW@KARO-electronics.de>","X-Mailer":"git-send-email 2.1.4","In-Reply-To":"<1504001833-18097-1-git-send-email-LW@KARO-electronics.de>","References":"<1504001833-18097-1-git-send-email-LW@KARO-electronics.de>","MIME-Version":"1.0","X-Df-Sender":"bHdAa2Fyby1lbGVjdHJvbmljcy5kZQ==","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170829_031809_205174_00C541DD ","X-CRM114-Status":"GOOD (  11.84  )","X-Spam-Score":"-2.6 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.6 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/,\n\tlow trust [80.67.18.29 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-mtd@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"Linux MTD discussion mailing list <linux-mtd.lists.infradead.org>","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-mtd>,\n\t<mailto:linux-mtd-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-mtd/>","List-Post":"<mailto:linux-mtd@lists.infradead.org>","List-Help":"<mailto:linux-mtd-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-mtd>,\n\t<mailto:linux-mtd-request@lists.infradead.org?subject=subscribe>","Cc":"=?utf-8?q?Lothar_Wa=C3=9Fmann?= <LW@KARO-electronics.de>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-mtd\" <linux-mtd-bounces@lists.infradead.org>","Errors-To":"linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"},"content":"commit c51d0ac59f24 (\"mtd: nand: Move Samsung specific init/detection\nlogic in nand_samsung.c\") introduced a regression for Samsung SLC NAND\nchips. Prior to this commit chip->bits_per_cell was initialized by calling\nnand_get_bits_per_cell() before using nand_is_slc().\nWith the offending commit this call is skipped, leaving\nchip->bits_per_cell cleared to zero when the manufacturer specific\n'.detect' function calls nand_is_slc() which in turn interprets\nbits_per_cell != 1 as indication for an MLC chip.\nThe effect is that e.g. a K9F1G08U0F NAND chip is falsely detected as\nMLC NAND with 4KiB page size rather than SLC with 2KiB page size.\n\nAdd a call to nand_get_bits_per_cell() before calling the .detect hook\nfunction in nand_manufacturer_detect(), so that the nand_is_slc()\ncalls in the manufacturer specific code will return correct results.\n\nSigned-off-by: Lothar Waßmann <LW@KARO-electronics.de>\n---\n drivers/mtd/nand/nand_base.c | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c\nindex 9900476..bcc8cef1 100644\n--- a/drivers/mtd/nand/nand_base.c\n+++ b/drivers/mtd/nand/nand_base.c\n@@ -3820,10 +3820,13 @@ static void nand_manufacturer_detect(struct nand_chip *chip)\n \t * nand_decode_ext_id() otherwise.\n \t */\n \tif (chip->manufacturer.desc && chip->manufacturer.desc->ops &&\n-\t    chip->manufacturer.desc->ops->detect)\n+\t    chip->manufacturer.desc->ops->detect) {\n+\t\t/* The 3rd id byte holds MLC / multichip data */\n+\t\tchip->bits_per_cell = nand_get_bits_per_cell(chip->id.data[2]);\n \t\tchip->manufacturer.desc->ops->detect(chip);\n-\telse\n+\t} else {\n \t\tnand_decode_ext_id(chip);\n+\t}\n }\n \n /*\n","prefixes":["1/2"]}