From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: linux-mtd@lists.infradead.org,
David Woodhouse <dwmw2@infradead.org>,
Marek Vasut <marek.vasut@gmail.com>,
Brian Norris <computersforpeace@gmail.com>,
thorsten.christiansson@idquantique.com,
laurent.monat@idquantique.com, Dinh Nguyen <dinguyen@kernel.org>,
Artem Bityutskiy <artem.bityutskiy@linux.intel.com>,
Graham Moore <grmoore@opensource.altera.com>,
Enrico Jorns <ejo@pengutronix.de>,
Chuanxiao Dong <chuanxiao.dong@intel.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Jassi Brar <jaswinder.singh@linaro.org>,
Rob Herring <robh@kernel.org>
Subject: Re: [RESEND PATCH v2 28/53] mtd: nand: denali: support "nand-ecc-strength" DT property
Date: Thu, 23 Mar 2017 09:43:47 +0100 [thread overview]
Message-ID: <20170323094347.27866d26@bbrezillon> (raw)
In-Reply-To: <1490228282-10805-2-git-send-email-yamada.masahiro@socionext.com>
On Thu, 23 Mar 2017 09:17:37 +0900
Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
> Historically, this driver tried to choose as big ECC strength as
> possible, but it would be reasonable to allow DT to set a particular
> ECC strength with "nand-ecc-strength" property.
>
> Going forward, DT platforms should specify "nand-ecc-strength" or
> "nand-ecc-maximize" to show the ECC strength strategy explicitly.
>
> If nothing is specified in DT, "nand-ecc-maximize" is implied since
> this was the original behavior.
I would expect the ->ecc_xxx_ds information to be taken into account
when nand-ecc-strength and nand-ecc-maximize are missing (see my reply
to patch 26).
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>
> Changes in v2:
> - Add available values in the binding document
>
> Documentation/devicetree/bindings/mtd/denali-nand.txt | 6 ++++++
> drivers/mtd/nand/denali.c | 18 ++++++++++++++++--
> drivers/mtd/nand/denali_pci.c | 1 +
> 3 files changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/mtd/denali-nand.txt b/Documentation/devicetree/bindings/mtd/denali-nand.txt
> index 25313c7..647618e 100644
> --- a/Documentation/devicetree/bindings/mtd/denali-nand.txt
> +++ b/Documentation/devicetree/bindings/mtd/denali-nand.txt
> @@ -11,6 +11,12 @@ Optional properties:
> - nand-ecc-step-size: must be 512 or 1024. If not specified, default to:
> 512 for "altr,socfpga-denali-nand"
> see nand.txt for details.
> + - nand-ecc-strength: see nand.txt for details. Available values are:
> + 8, 15 for "altr,socfpga-denali-nand"
> + - nand-ecc-maximize: see nand.txt for details
> +
> +Note:
> +Either nand-ecc-strength or nand-ecc-maximize should be specified.
>
> The device tree may optionally contain sub-nodes describing partitions of the
> address space. See partition.txt for more detail.
> diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
> index 96074b8..70e9f06 100644
> --- a/drivers/mtd/nand/denali.c
> +++ b/drivers/mtd/nand/denali.c
> @@ -1627,9 +1627,23 @@ int denali_init(struct denali_nand_info *denali)
> goto failed_req_irq;
> }
>
> - ret = denali_set_max_ecc_strength(denali);
> - if (ret)
> + if (!chip->ecc.strength && !(chip->ecc.options & NAND_ECC_MAXIMIZE)) {
> + dev_info(denali->dev,
> + "No ECC strength strategy is specified. Maximizing ECC strength\n");
> + chip->ecc.options |= NAND_ECC_MAXIMIZE;
> + }
> +
> + if (chip->ecc.options & NAND_ECC_MAXIMIZE) {
> + ret = denali_set_max_ecc_strength(denali);
> + if (ret)
> + goto failed_req_irq;
> + } else if (!(denali->ecc_strength_avail & BIT(chip->ecc.strength))) {
> + dev_err(denali->dev,
> + "Specified ECC strength (%d) is not supported for this controller.\n",
> + chip->ecc.strength);
> + ret = -EINVAL;
> goto failed_req_irq;
> + }
>
> chip->ecc.bytes = denali_calc_ecc_bytes(chip->ecc.size,
> chip->ecc.strength);
> diff --git a/drivers/mtd/nand/denali_pci.c b/drivers/mtd/nand/denali_pci.c
> index a1ee9f8..a39682a5 100644
> --- a/drivers/mtd/nand/denali_pci.c
> +++ b/drivers/mtd/nand/denali_pci.c
> @@ -87,6 +87,7 @@ static int denali_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
>
> denali->ecc_strength_avail = BIT(15) | BIT(8);
> denali->caps |= DENALI_CAP_ECC_SIZE_512;
> + denali->nand.ecc.options |= NAND_ECC_MAXIMIZE;
>
> ret = denali_init(denali);
> if (ret)
next prev parent reply other threads:[~2017-03-23 8:44 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-23 0:17 [RESEND PATCH v2 27/53] mtd: nand: denali: avoid hard-coding ecc.strength and ecc.bytes Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 28/53] mtd: nand: denali: support "nand-ecc-strength" DT property Masahiro Yamada
2017-03-23 8:43 ` Boris Brezillon [this message]
2017-03-23 0:17 ` [RESEND PATCH v2 29/53] mtd: nand: denali: remove Toshiba and Hynix specific fixup code Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 30/53] mtd: nand: denali_dt: add compatible strings for UniPhier SoC variants Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 31/53] mtd: nand: denali: set NAND_ECC_CUSTOM_PAGE_ACCESS Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 32/53] mtd: nand: denali: do not propagate NAND_STATUS_FAIL to waitfunc() Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 33/53] mtd: nand: denali: use BIT() and GENMASK() for register macros Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 34/53] mtd: nand: denali: remove unneeded find_valid_banks() Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 35/53] mtd: nand: denali: handle timing parameters by setup_data_interface() Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 36/53] mtd: nand: denali: remove meaningless pipeline read-ahead operation Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 37/53] mtd: nand: denali: rework interrupt handling Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 38/53] mtd: nand: denali: fix NAND_CMD_STATUS handling Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 39/53] mtd: nand: denali: fix NAND_CMD_PARAM handling Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 40/53] mtd: nand: do not check R/B# for CMD_READID in nand_command(_lp) Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 41/53] mtd: nand: do not check R/B# for CMD_SET_FEATURES " Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 42/53] mtd: nand: denali: switch over to cmd_ctrl instead of cmdfunc Masahiro Yamada
2017-03-23 8:52 ` Boris Brezillon
2017-03-23 0:17 ` [RESEND PATCH v2 43/53] mtd: nand: denali: fix bank reset function Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 44/53] mtd: nand: denali: use interrupt instead of polling for bank reset Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 45/53] mtd: nand: denali: propagate page to helpers via function argument Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 46/53] mtd: nand: denali: merge struct nand_buf into struct denali_nand_info Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 47/53] mtd: nand: denali: use flag instead of register macro for direction Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 48/53] mtd: nand: denali: fix raw and oob accessors for syndrome page layout Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 49/53] mtd: nand: denali: support hardware-assisted erased page detection Masahiro Yamada
2017-03-23 0:17 ` [RESEND PATCH v2 50/53] mtd: nand: allocate aligned buffers if NAND_OWN_BUFFERS is unset Masahiro Yamada
2017-03-27 8:00 ` Boris Brezillon
2017-03-28 1:13 ` yamada.masahiro
2017-03-28 7:59 ` Boris Brezillon
2017-03-28 8:07 ` Boris Brezillon
2017-03-28 10:22 ` Russell King - ARM Linux
2017-03-28 10:17 ` Russell King - ARM Linux
2017-03-28 12:13 ` Boris Brezillon
2017-03-29 3:22 ` yamada.masahiro
2017-03-29 7:03 ` Boris Brezillon
2017-03-23 0:18 ` [RESEND PATCH v2 51/53] mtd: nand: denali: skip driver internal bounce buffer when possible Masahiro Yamada
2017-03-23 0:18 ` [RESEND PATCH v2 52/53] mtd: nand: denali: use non-managed kmalloc() for DMA buffer Masahiro Yamada
2017-03-23 11:33 ` Robin Murphy
2017-03-24 1:41 ` yamada.masahiro
2017-03-24 17:09 ` Robin Murphy
2017-03-23 0:18 ` [RESEND PATCH v2 53/53] mtd: nand: denali: enable bad block table scan Masahiro Yamada
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=20170323094347.27866d26@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=artem.bityutskiy@linux.intel.com \
--cc=chuanxiao.dong@intel.com \
--cc=computersforpeace@gmail.com \
--cc=dinguyen@kernel.org \
--cc=dwmw2@infradead.org \
--cc=ejo@pengutronix.de \
--cc=grmoore@opensource.altera.com \
--cc=jaswinder.singh@linaro.org \
--cc=laurent.monat@idquantique.com \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=mhiramat@kernel.org \
--cc=robh@kernel.org \
--cc=thorsten.christiansson@idquantique.com \
--cc=yamada.masahiro@socionext.com \
/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.