diff options
| author | Marek Vasut <marex@denx.de> | 2012-08-30 13:39:38 +0000 | 
|---|---|---|
| committer | Scott Wood <scottwood@freescale.com> | 2012-09-17 18:54:43 -0500 | 
| commit | 9c790a748f6b61e36f7aaf0c8d5ed35c9b09f454 (patch) | |
| tree | 918986d51e2675d7977e4399040ad50c0730dd41 /drivers/mtd/nand/nand_base.c | |
| parent | e70bfa2986f9c028e3c21e0995285047a9baec27 (diff) | |
| download | olio-uboot-2014.01-9c790a748f6b61e36f7aaf0c8d5ed35c9b09f454.tar.xz olio-uboot-2014.01-9c790a748f6b61e36f7aaf0c8d5ed35c9b09f454.zip | |
mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver
This is based on Linux kernel -next:
commit 14f44abf1dafc20ba42ce8616a8fc8fbd1b3712b
Author: Brian Norris <computersforpeace@gmail.com>
Date:   Fri Jul 13 09:28:24 2012 -0700
    mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver
    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.
    Note, this patch fixes some major gpmi-nand breakage.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Brian Norris <computersforpeace@gmail.com>
Cc: Eric Nelson <eric.nelson@boundarydevices.com>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Cc: Scott Wood <scottwood@freescale.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 7 | 
1 files changed, 2 insertions, 5 deletions
| diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 50bfb65f7..390ff9021 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2579,9 +2579,7 @@ 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; -	chip->options |= (NAND_NO_READRDY | -			NAND_NO_AUTOINCR) & NAND_CHIPOPTIONS_MSK; +	chip->options |= NAND_NO_READRDY | NAND_NO_AUTOINCR;  	return 1;  } @@ -2753,8 +2751,7 @@ static const struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,  		}  	}  	/* Get chip options, preserve non chip based options */ -	chip->options &= ~NAND_CHIPOPTIONS_MSK; -	chip->options |= type->options & NAND_CHIPOPTIONS_MSK; +	chip->options |= type->options;  	/* Check if chip is a not a samsung device. Do not clear the  	 * options for chips which are not having an extended id. |