From patchwork Fri Jul 13 16:28:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Norris X-Patchwork-Id: 170929 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 B81F22C02C3 for ; Sat, 14 Jul 2012 02:29:50 +1000 (EST) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SpiiE-00085E-Jr; Fri, 13 Jul 2012 16:27:26 +0000 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 1SpiiB-00084Q-6x for linux-mtd@lists.infradead.org; Fri, 13 Jul 2012 16:27:24 +0000 Received: by pbbrq13 with SMTP id rq13so6457994pbb.36 for ; Fri, 13 Jul 2012 09:27:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=5KgDIHxONPK3B00mx5UUIjvwhJ7qaiVXelU3hXtuuAQ=; b=YIqNXYlmjwSwCi1BzQf1hO9IQiUQbc62QqfDFclvw9p64tWZp20T2K1egQVBf+rZcv 6yEdAAFshsj1//1hvlqeP+CpRnHmSdxnPl+7XYxpbbFtD0UuG/rUvB7Cfn0XP0ReF735 W9seoOi1cmARLEq/8VygI7tTGn9QnuvYsEzfBNx6sKxdYK5JfyDtWR+vBNdbWwvSMpZy bg70HsG22n2oHGCavdX3PBhU3/Cj4KXLWLHJqrYvSHMChNt/qv8DyaVG3ywKOA2Gu5Dw b66NW0uPDTYK3ZdtulkS5BQMCJUzAf0tlj0+OuOpbC3f1fv6mim8d9XC3Chpy46Qi7zx kLWw== Received: by 10.68.227.40 with SMTP id rx8mr4921209pbc.6.1342196824164; Fri, 13 Jul 2012 09:27:04 -0700 (PDT) Received: from ld-irv-0074.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by mx.google.com with ESMTPS id to1sm6294371pbc.27.2012.07.13.09.27.02 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 13 Jul 2012 09:27:03 -0700 (PDT) From: Brian Norris To: Artem Bityutskiy Subject: [PATCH] mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver Date: Fri, 13 Jul 2012 09:28:24 -0700 Message-Id: <1342196904-13850-1-git-send-email-computersforpeace@gmail.com> X-Mailer: git-send-email 1.7.11.1 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (computersforpeace[at]gmail.com) -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [209.85.160.49 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Cc: Marek Vasut , Huang Shijie , linux-mtd@lists.infradead.org, Scott Wood , Brian Norris , David Woodhouse 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: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The NAND_CHIPOPTIONS_MSK has limited utility and is causing real bugs. It silently masks off at least one flag that might be set by the driver (NAND_NO_SUBPAGE_WRITE). This breaks the GPMI NAND driver and possibly others. Really, as long as driver writers exercise a small amount of care with NAND_* options, this mask is not necessary at all; it was only here to prevent certain options from accidentally being set by the driver. But the original thought turns out to be a bad idea occasionally. Thus, kill it. Signed-off-by: Brian Norris Cc: Huang Shijie Cc: Marek Vasut Tested-by: Huang Shijie --- Huang, please test this with your driver. Artem, If this is acceptable, should it go to -stable, since it fixes some major gpmi-nand breakage? It probably won't apply directly, since I've touched some code around it recently. drivers/mtd/nand/nand_base.c | 7 ++----- include/linux/mtd/nand.h | 3 --- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 98ba46e..6652d1f 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2909,8 +2909,6 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip, if (le16_to_cpu(p->features) & 1) *busw = NAND_BUSWIDTH_16; - chip->options &= ~NAND_CHIPOPTIONS_MSK; - pr_info("ONFI flash detected\n"); return 1; } @@ -3074,9 +3072,8 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, mtd->erasesize <<= ((id_data[3] & 0x03) << 1); } } - /* Get chip options, preserve non chip based options */ - chip->options &= ~NAND_CHIPOPTIONS_MSK; - chip->options |= type->options & NAND_CHIPOPTIONS_MSK; + /* Get chip options */ + chip->options |= type->options; /* * Check if chip is not a Samsung device. Do not clear the diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 6dce5a7..eeb7015 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -206,9 +206,6 @@ typedef enum { #define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT) \ && (chip->page_shift > 9)) -/* Mask to zero out the chip options, which come from the id table */ -#define NAND_CHIPOPTIONS_MSK 0x0000ffff - /* Non chip related options */ /* This option skips the bbt scan during initialization. */ #define NAND_SKIP_BBTSCAN 0x00010000