All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1] mtd: nand: raw: allow to disable unneeded ECC layouts
Date: Fri, 7 Dec 2018 11:06:24 +0100	[thread overview]
Message-ID: <20181207110624.450f3b50@xps13> (raw)
In-Reply-To: <20181206135709.8518-1-stefan@agner.ch>

Hi Stefan,

Stefan Agner <stefan@agner.ch> wrote on Thu,  6 Dec 2018 14:57:09 +0100:

> From: Stefan Agner <stefan.agner@toradex.com>
> 
> Each ECC layout consumes about 2984 bytes in the .data section. Allow
> to disable the default ECC layouts if a driver is known to provide its
> own ECC layout.
> 
> Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
> ---
> 
>  drivers/mtd/nand/raw/Kconfig     | 7 +++++++
>  drivers/mtd/nand/raw/nand_base.c | 4 ++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 008f7b4b4b..b06c45788a 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -9,6 +9,12 @@ config SYS_NAND_SELF_INIT
>  	  This option, if enabled, provides more flexible and linux-like
>  	  NAND initialization process.
>  
> +config SYS_NAND_DRIVER_ECC_LAYOUT
> +	bool
> +	help
> +	  Omit standard ECC layouts to safe space. Select this if your driver

s/safe/save/

> +	  is known to provide its own ECC layout.

layout*s*?

> +
>  config NAND_ATMEL
>  	bool "Support Atmel NAND controller"
>  	imply SYS_NAND_USE_FLASH_BBT
> @@ -81,6 +87,7 @@ config NAND_OMAP_ELM
>  config NAND_VF610_NFC
>  	bool "Support for Freescale NFC for VF610"
>  	select SYS_NAND_SELF_INIT
> +	select SYS_NAND_DRIVER_ECC_LAYOUT
>  	imply CMD_NAND
>  	help
>  	  Enables support for NAND Flash Controller on some Freescale
> diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
> index 92daebe120..6d2ff58d86 100644
> --- a/drivers/mtd/nand/raw/nand_base.c
> +++ b/drivers/mtd/nand/raw/nand_base.c
> @@ -47,6 +47,7 @@
>  #include <linux/errno.h>
>  
>  /* Define default oob placement schemes for large and small page devices */
> +#ifdef CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT
>  static struct nand_ecclayout nand_oob_8 = {
>  	.eccbytes = 3,
>  	.eccpos = {0, 1, 2},
> @@ -89,6 +90,7 @@ static struct nand_ecclayout nand_oob_128 = {
>  		{.offset = 2,
>  		 .length = 78} }
>  };
> +#endif
>  
>  static int nand_get_device(struct mtd_info *mtd, int new_state);
>  
> @@ -4339,6 +4341,7 @@ int nand_scan_tail(struct mtd_info *mtd)
>  	 */
>  	if (!ecc->layout && (ecc->mode != NAND_ECC_SOFT_BCH)) {
>  		switch (mtd->oobsize) {
> +#ifdef CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT
>  		case 8:
>  			ecc->layout = &nand_oob_8;
>  			break;
> @@ -4351,6 +4354,7 @@ int nand_scan_tail(struct mtd_info *mtd)
>  		case 128:
>  			ecc->layout = &nand_oob_128;
>  			break;
> +#endif
>  		default:
>  			pr_warn("No oob scheme defined for oobsize %d\n",
>  				   mtd->oobsize);

I don't like very much the #ifdef approach to compile-out zones in the
code. I don't have an alternative for now (maybe have the layouts in a
different file?). I would also like to hear Boris' point of view.


Thanks,
Miquèl

  parent reply	other threads:[~2018-12-07 10:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-06 13:57 [U-Boot] [PATCH v1] mtd: nand: raw: allow to disable unneeded ECC layouts Stefan Agner
2018-12-06 14:42 ` Lukasz Majewski
2018-12-07 10:06 ` Miquel Raynal [this message]
2018-12-07 10:31   ` Miquel Raynal
2019-01-17 22:44 ` [U-Boot] [U-Boot, " Tom Rini

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=20181207110624.450f3b50@xps13 \
    --to=miquel.raynal@bootlin.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.