From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Abhishek Sahu <absahu@codeaurora.org>,
Boris Brezillon <boris.brezillon@free-electrons.com>,
Archit Taneja <architt@codeaurora.org>,
Richard Weinberger <richard@nod.at>,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
Marek Vasut <marek.vasut@gmail.com>,
linux-mtd@lists.infradead.org,
Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>,
Andy Gross <andy.gross@linaro.org>,
Brian Norris <computersforpeace@gmail.com>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH 1/9] mtd: nand: qcom: use the ecc strength from device parameter
Date: Tue, 10 Apr 2018 10:07:45 +0200 [thread overview]
Message-ID: <20180410100745.625d66f8@bbrezillon> (raw)
In-Reply-To: <20180410095558.34c4d91f@xps13>
On Tue, 10 Apr 2018 09:55:58 +0200
Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> > Hi Abhishek,
> >
> > On Tue, 10 Apr 2018 11:39:35 +0530, Abhishek Sahu
> > <absahu@codeaurora.org> wrote:
> >
> > > On 2018-04-06 18:01, Miquel Raynal wrote:
> > > > Hi Abhishek,
> > > >
> > > > On Wed, 4 Apr 2018 18:12:17 +0530, Abhishek Sahu
> > > > <absahu@codeaurora.org> wrote:
> > > >
> > > >> Currently the driver uses the ECC strength specified in
> > > >> device tree. The ONFI or JEDEC device parameter page
> > > >> contains the ‘ECC correctability’ field which indicates the
> > > >> number of bits that the host should be able to correct per
> > > >> 512 bytes of data.
> > > >
> > > > This is misleading. This field is not about the controller but rather
> > > > the chip requirements in terms of minimal strength for nominal use.
> > > >
> > >
> > > Thanks Miquel.
> > >
> > > Yes. Its NAND chip requirement. I have used the description for
> > > NAND ONFI param page
> > >
> > > 5.6.1.24. Byte 112: Number of bits ECC correctability
> > > This field indicates the number of bits that the host should be
> > > able to correct per 512 bytes of data.
> > >
> > > >> The ecc correctability is assigned in
> > > >> chip parameter during device probe time. QPIC/EBI2 NAND
> > > >> supports 4/8-bit ecc correction. The Same kind of board
> > > >> can have different NAND parts so use the ecc strength
> > > >> from device parameter (if its non zero) instead of
> > > >> device tree.
> > > >
> > > > That is not what you do.
> > > >
> > > > What you do is forcing the strength to be 8-bit per ECC chunk if the
> > > > NAND chip requires at least 8-bit/chunk strength.
> > > >
> > > > The DT property is here to force a strength. Otherwise, Linux will
> > > > propose to the NAND controller to use the minimum strength required by
> > > > the chip (from either the ONFI/JEDEC parameter page or from a static
> > > > table).
> > > >
> > >
> > > The main problem is that the same kind of boards can have different
> > > NAND parts.
> > >
> > > Lets assume, we have following 2 cases.
> > >
> > > 1. Non ONFI/JEDEC device for which chip->ecc_strength_ds
> > > will be zero. In this case, the ecc->strength from DT
> > > will be used
> >
> > No, the strength from DT will always be used if the property is
> > present, no matter the type of chip.
> >
> > > 2. ONFI/JEDEC device for which chip->ecc_strength_ds > 8.
> > > Since QCOM nand controller can not support
> > > ECC correction greater than 8 bits so we can use 8 bit ECC
> > > itself instead of failing NAND boot completely.
> >
> > I understand that. But this is still not what you do.
> >
> > >
> > > > IMHO, you have two solutions:
> > > > 1/ Remove these properties from the board DT (breaks DT backward
> > > > compatibility though);
> > >
> > > - nand-ecc-strength: This is optional property in nand.txt and
> > > Required property in qcom_nandc.txt.
> >
> > Well, this property is not controller specific but chip specific. The
> > controller driver does not rely on it, so this property should not be
> > required.
> >
> > > We can't remove since
> > > if the device is Non ONFI/JEDEC, then ecc strength will come
> > > from DT only.
> >
> > We can remove it and let the core handle this (as this is generic to
> > all raw NANDs and not specific to this controller driver). Try it out!
> >
> > However if the defaults value do not match your expectations, I think
> > you can add your non-ONFI/JEDEC chip in 'nand_ids.c', this should fill
> > your strength_ds field and let you avoid using these properties.
>
> Actually nand_ids.c should not be filled anymore, instead you can
> implement this detection thanks to the part full name in the vendor
> code nand_samsung.c, nand_micron.c, nand_macronix.c, nand_hynix.c, etc.
Usually you don't have to go that far, and the ECC requirements are
encoded somewhere in the ID (after byte 2). When that's not the
case, you may have to check the full ID.
> Depending on what part you are using, it might already work.
Yep.
next prev parent reply other threads:[~2018-04-10 8:07 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-04 12:42 [PATCH 0/9] Update for QCOM NAND driver Abhishek Sahu
2018-04-04 12:42 ` [PATCH 1/9] mtd: nand: qcom: use the ecc strength from device parameter Abhishek Sahu
2018-04-06 12:31 ` Miquel Raynal
2018-04-10 6:09 ` Abhishek Sahu
2018-04-10 7:46 ` Miquel Raynal
2018-04-10 7:55 ` Miquel Raynal
2018-04-10 8:07 ` Boris Brezillon [this message]
2018-04-12 9:59 ` Abhishek Sahu
2018-04-22 16:34 ` Miquel Raynal
2018-04-23 6:44 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 2/9] mtd: nand: qcom: wait for desc completion in all BAM channels Abhishek Sahu
2018-04-04 12:42 ` [PATCH 3/9] mtd: nand: qcom: erased page detection for uncorrectable errors only Abhishek Sahu
2018-04-10 8:59 ` Miquel Raynal
2018-04-12 6:33 ` Abhishek Sahu
2018-04-12 6:49 ` Miquel Raynal
2018-04-12 6:58 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 4/9] mtd: nand: qcom: fix null pointer access for erased buffer detection Abhishek Sahu
2018-04-10 9:12 ` Miquel Raynal
2018-04-12 6:54 ` Abhishek Sahu
2018-04-22 16:25 ` Miquel Raynal
2018-04-23 6:29 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 5/9] mtd: nand: qcom: parse read errors for read oob also Abhishek Sahu
2018-04-10 10:03 ` Miquel Raynal
2018-04-12 7:10 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 6/9] mtd: nand: qcom: support for checking read errors for last codeword Abhishek Sahu
2018-04-10 10:05 ` Miquel Raynal
2018-04-04 12:42 ` [PATCH 7/9] mtd: nand: qcom: check for operation errors in case of raw read Abhishek Sahu
2018-04-10 10:12 ` Miquel Raynal
2018-04-12 7:33 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 8/9] mtd: nand: qcom: helper function for " Abhishek Sahu
2018-04-10 9:44 ` Miquel Raynal
2018-04-12 7:06 ` Abhishek Sahu
2018-04-22 16:19 ` Miquel Raynal
2018-04-23 6:28 ` Abhishek Sahu
2018-04-23 6:58 ` Miquel Raynal
2018-04-25 6:32 ` Abhishek Sahu
2018-04-25 12:59 ` Miquel Raynal
2018-04-26 5:53 ` Abhishek Sahu
2018-04-26 7:11 ` Miquel Raynal
2018-04-26 7:42 ` Abhishek Sahu
2018-04-04 12:42 ` [PATCH 9/9] mtd: nand: qcom: erased page bitflips detection Abhishek Sahu
2018-04-10 10:30 ` Miquel Raynal
2018-04-12 8:00 ` Abhishek Sahu
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=20180410100745.625d66f8@bbrezillon \
--to=boris.brezillon@bootlin.com \
--cc=absahu@codeaurora.org \
--cc=andy.gross@linaro.org \
--cc=architt@codeaurora.org \
--cc=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@wedev4u.fr \
--cc=dwmw2@infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=miquel.raynal@bootlin.com \
--cc=richard@nod.at \
/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;
as well as URLs for NNTP newsgroup(s).