public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver
Date: Fri, 31 Aug 2012 01:45:39 +0200	[thread overview]
Message-ID: <201208310145.40026.marex@denx.de> (raw)
In-Reply-To: <1346369978-28137-1-git-send-email-marex@denx.de>

Dear Marek Vasut,

> This is based on Linux kernel -next:
> 
> commit a1256b0e087ed3cdb584c683acb966ee885f733c
> 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>
> ---
>  drivers/mtd/nand/nand_base.c |    7 ++-----
>  include/linux/mtd/nand.h     |    3 ---
>  2 files changed, 2 insertions(+), 8 deletions(-)
> 
> NOTE: Please test before applying, I'd like to know it doesn't cause
> breakage.

NOTE2: This fixes UBI on MX28, MX6Q and soon-to-be MX233 GPMI NAND. Thanks 
again, Brian!

> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index bfd668f..658b3ad 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -2578,9 +2578,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;
>  }
> @@ -2752,8 +2750,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.
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 82704de..0a5aa64 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -205,9 +205,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 & ~NAND_NO_AUTOINCR)
> -
>  /* Non chip related options */
>  /*
>   * Use a flash based bad block table. OOB identifier is saved in OOB area.

Best regards,
Marek Vasut

  reply	other threads:[~2012-08-30 23:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-30 23:39 [U-Boot] [PATCH] mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver Marek Vasut
2012-08-30 23:45 ` Marek Vasut [this message]
2012-09-01 20:24 ` Stefano Babic
2012-09-01 20:27   ` Marek Vasut
2012-09-17 23:55 ` [U-Boot] " Scott Wood
2012-09-18  0:01   ` Marek Vasut
2012-09-18  0:06     ` Scott Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201208310145.40026.marex@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox