From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp2-g21.free.fr ([212.27.42.2]:22355 "EHLO smtp2-g21.free.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932103AbbG1Nkx (ORCPT ); Tue, 28 Jul 2015 09:40:53 -0400 Message-ID: <55B7865E.1040707@free.fr> Date: Tue, 28 Jul 2015 15:40:46 +0200 From: Mason MIME-Version: 1.0 To: stable@vger.kernel.org CC: LKML , Brian Norris , Uwe Kleine-Konig , Boris Brezillon Subject: Requesting inclusion of mtd/nand patches in linux-3.14.y Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: Hello everyone, This is my second time requesting inclusion of a patch, please point out any breach of protocol :-) I have cherry-picked two mtd/nand patches on my local branch of linux-3.14.y and I realized that these fixes might benefit other users. (As far as I can tell, they landed in 3.15) bd9c6e99b582 mtd: nand: don't use read_buf for 8-bit ONFI transfers 60c3bc1fd6f1 mtd: nand: fix erroneous read_buf call in nand_write_page_raw_syndrome commit 60c3bc1fd6f1fa40b415ef5b83e2948a89a3d79c Author: Boris BREZILLON Date: Sat Feb 1 19:10:28 2014 +0100 mtd: nand: fix erroneous read_buf call in nand_write_page_raw_syndrome read_buf is called in place of write_buf in the nand_write_page_raw_syndrome function. Signed-off-by: Boris BREZILLON Signed-off-by: Brian Norris diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 79ed8ccf5065..3cb1cefcd926 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2002,7 +2002,7 @@ static int nand_write_page_raw_syndrome(struct mtd_info *mtd, oob += chip->ecc.prepad; } - chip->read_buf(mtd, oob, eccbytes); + chip->write_buf(mtd, oob, eccbytes); oob += eccbytes; if (chip->ecc.postpad) { commit bd9c6e99b58255b9de1982711ac9487c9a2f18be Author: Brian Norris Date: Fri Nov 29 22:04:28 2013 -0800 mtd: nand: don't use read_buf for 8-bit ONFI transfers Use a repeated read_byte() instead of read_buf(), since for x16 buswidth devices, we need to avoid the upper I/O[16:9] bits. See the following commit for reference: commit 05f7835975dad6b3b517f9e23415985e648fb875 Author: Uwe Kleine-K�nig Date: Thu Dec 5 22:22:04 2013 +0100 mtd: nand: don't use {read,write}_buf for 8-bit transfers Now, I think that all barriers to probing ONFI on x16 devices are removed, so remove the check from nand_flash_detect_onfi(). Tested on 8-bit ONFI NAND (Micron MT29F32G08CBADAWP). Signed-off-by: Brian Norris Tested-by: Ezequiel Garcia Tested-By: Pekon Gupta diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 6281151e4cb7..79ed8ccf5065 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -3065,7 +3065,7 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip, int *busw) { struct nand_onfi_params *p = &chip->onfi_params; - int i; + int i, j; int val; /* Try ONFI for unknown chip or LP */ @@ -3074,18 +3074,10 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip, chip->read_byte(mtd) != 'F' || chip->read_byte(mtd) != 'I') return 0; - /* - * ONFI must be probed in 8-bit mode or with NAND_BUSWIDTH_AUTO, not - * with NAND_BUSWIDTH_16 - */ - if (chip->options & NAND_BUSWIDTH_16) { - pr_err("ONFI cannot be probed in 16-bit mode; aborting\n"); - return 0; - } - chip->cmdfunc(mtd, NAND_CMD_PARAM, 0, -1); for (i = 0; i < 3; i++) { - chip->read_buf(mtd, (uint8_t *)p, sizeof(*p)); + for (j = 0; j < sizeof(*p); j++) + ((uint8_t *)p)[j] = chip->read_byte(mtd); if (onfi_crc16(ONFI_CRC_BASE, (uint8_t *)p, 254) == le16_to_cpu(p->crc)) { break; Regards.