linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: miquel.raynal@free-electrons.com (Miquel RAYNAL)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 02/12] mtd: nand: add reworked Marvell NAND controller driver
Date: Mon, 11 Dec 2017 22:02:55 +0100	[thread overview]
Message-ID: <20171211220255.0292fd8f@xps13> (raw)
In-Reply-To: <20171211180511.1d734b37@bbrezillon>

On Mon, 11 Dec 2017 18:05:11 +0100
Boris Brezillon <boris.brezillon@free-electrons.com> wrote:

> On Mon, 11 Dec 2017 17:55:06 +0100
> Miquel RAYNAL <miquel.raynal@free-electrons.com> wrote:
> 
> > On Mon, 11 Dec 2017 13:27:30 -0300
> > Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> wrote:
> >   
> > > On 7 December 2017 at 17:18, Miquel Raynal
> > > <miquel.raynal@free-electrons.com> wrote:    
> > > > Add marvell_nand driver which aims at replacing the existing
> > > > pxa3xx_nand driver.
> > > >
> > > > The new driver intends to be easier to understand and follows
> > > > the brand new NAND framework rules by implementing hooks for
> > > > every pattern the controller might support and referencing them
> > > > inside a parser object that will be given to the core at each
> > > > ->exec_op() call.
> > > >
> > > > Raw accessors are implemented, useful to test/debug
> > > > memory/filesystem corruptions. Userspace binaries contained in
> > > > the mtd-utils package may now be used and their output trusted.
> > > >
> > > > Timings may not be kept from the bootloader anymore, the timings
> > > > used for instance in U-Boot were not optimal and it supposed to
> > > > have NAND support (and initialized) in the bootloader.
> > > >
> > > > Thanks to the improved timings, implementation of ONFI mode 5
> > > > support (with EDO managed by adding a delay on data sampling),
> > > > merging the commands together and optimizing writes in the
> > > > command registers, the new driver may achieve faster
> > > > throughputs in both directions. Measurements show an
> > > > improvement of about +23% read throughput and +24% write
> > > > throughput. These measurements have been done with an
> > > > Armada-385-DB-AP (4kiB NAND pages forced in 4-bit strength BCH
> > > > ECC correction) using the userspace tool 'flash_speed' from the
> > > > MTD test suite.
> > > >
> > > > Besides these important topics, the new driver addresses several
> > > > unsolved known issues in the old driver which:
> > > > - did not work with ECC soft neither with ECC none ;
> > > > - relied on naked read/write (which is unchanged) while the
> > > > NFCv1 embedded in the pxa3xx platforms do not implement it, so
> > > > several NAND commands did not actually ever work without any
> > > > notice (like reading the ONFI PARAM_PAGE or SET/GET_FEATURES) ;
> > > > - wrote the OOB data correctly, but was not able to read it
> > > > correctly past the first OOB data chunk ;
> > > > - did not displayed ECC bytes ;
> > > > - used device tree bindings that did not allow more than one
> > > > NAND chip, and did not allow to choose the correct chip select
> > > > if not incrementing from 0. Plus, the Ready/Busy line used had
> > > > to be 0.
> > > >
> > > > Old device tree bindings are still supported but deprecated. A
> > > > more hierarchical view has to be used to keep the controller
> > > > and the NAND chip structures clearly separated both inside the
> > > > device tree and also in the driver code.
> > > >      
> > > 
> > > So, is this driver fully compatible with the current pxa3xx-nand
> > > driver?    
> > 
> > It should be!
> >   
> > > 
> > > Have you tested with U-Boot's driver (based on the pxa3xx-nand)?
> > > 
> > > I recally some subtle issues with the fact that U-Boot and Linux
> > > had to agree about the BBT format.    
> > 
> > I kept the pxa3xx_nand driver BBT format.
> > 
> > This is something I mistakenly omitted from the commit message:
> > 
> > There are 5 supported layouts in the driver (the same as withing the
> > pxa3xx_nand driver):
> >     1/ Page: 512B, strength 1b/512B (hamming)
> >     2/ Page: 2kiB, strength 4b/2kiB (hamming)
> >     3/ page: 2kiB, strength 16b/2kiB (BCH)
> >     4/ page: 4kiB, strength 16b/2kiB (BCH)
> >     5/ page: 4kiB, strength 32b/2kiB (BCH)  
> 
> Are you sure of #5? I thought the engine was only capable of modifying
> the ECC block size, not the strength. If this is the case, then mode
> #5 is actually 16b/1024kiB.

You are right, #5 you actually be:

    5/ page: 4kiB, strength 16b/1kiB (BCH)  

Thanks for pointing it,
Miqu?l

> 
> > 
> > Layout 2 has been tested with CM_X300 compulab module (PXA SoC) with
> > and without DMA.
> > Layout 4 has been tested with an Armada 385 db, an Armada 7040 DB
> > and an Armada 8040 DB.
> > Layout 5 has been tested with an Armada 398 db.
> > 
> > Layout 1 has been tested with the Armada 385 db with some hacks.
> > Layout 3 has been tested with the Armada 385 db with some other
> > hacks, that is why I am concerned about the other thread on the MTD
> > mailing list "wait timeout when scanning for BB" where a 2kiB page
> > with 16b/2048B strength is in use.
> > 
> > Regards,
> > Miqu?l  
> 



-- 
Miquel Raynal, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2017-12-11 21:02 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07 20:18 [PATCH 00/12] Marvell NAND controller rework with ->exec_op() Miquel Raynal
2017-12-07 20:18 ` [PATCH 01/12] dt-bindings: mtd: add Marvell NAND controller documentation Miquel Raynal
2017-12-08 20:56   ` Boris Brezillon
2017-12-07 20:18 ` [PATCH 02/12] mtd: nand: add reworked Marvell NAND controller driver Miquel Raynal
     [not found]   ` <CAAEAJfC89bRugBsK8jrK=6fdq76yzjThA74UCAhAaVuonLLNvg@mail.gmail.com>
2017-12-11 16:55     ` Miquel RAYNAL
2017-12-11 17:05       ` Boris Brezillon
2017-12-11 21:02         ` Miquel RAYNAL [this message]
2017-12-07 20:18 ` [PATCH 03/12] mtd: nand: replace pxa3xx_nand driver by its rework called marvell_nand Miquel Raynal
2017-12-07 20:18 ` [PATCH 04/12] dt-bindings: mtd: remove pxa3xx NAND controller documentation Miquel Raynal
2017-12-07 20:18 ` [PATCH 05/12] mtd: nand: remove useless fields from pxa3xx NAND platform data Miquel Raynal
2017-12-07 20:18 ` [PATCH 06/12] ARM: dts: armada-370-xp: use reworked NAND controller driver Miquel Raynal
2017-12-07 20:18 ` [PATCH 07/12] ARM: dts: armada-375: " Miquel Raynal
2017-12-07 20:18 ` [PATCH 08/12] ARM: dts: armada-38x: " Miquel Raynal
2017-12-07 20:18 ` [PATCH 09/12] ARM: dts: armada-39x: " Miquel Raynal
2017-12-07 20:18 ` [PATCH 10/12] ARM: dts: pxa: " Miquel Raynal
2017-12-07 20:18 ` [PATCH 11/12] ARM64: dts: marvell: use reworked NAND controller driver on Armada 7K Miquel Raynal
2017-12-15 10:29   ` Gregory CLEMENT
2017-12-15 10:44     ` Gregory CLEMENT
2017-12-07 20:18 ` [PATCH 12/12] ARM64: dts: marvell: use reworked NAND controller driver on Armada 8K Miquel Raynal
2017-12-15 10:29   ` Gregory CLEMENT
2017-12-15 10:44     ` Gregory CLEMENT
2017-12-09 23:27 ` [PATCH 00/12] Marvell NAND controller rework with ->exec_op() Ezequiel Garcia
2017-12-14  6:09 ` Boris Brezillon
2017-12-18  7:11   ` Robert Jarzmik
2017-12-18  8:25     ` Miquel RAYNAL
2017-12-20 21:26       ` Robert Jarzmik
2017-12-20 21:41         ` Boris Brezillon
2017-12-22 20:11           ` Robert Jarzmik
2017-12-22 21:24             ` Boris Brezillon
2017-12-22 22:37               ` Miquel RAYNAL
2017-12-22 22:50                 ` Miquel RAYNAL
2017-12-23 13:42                 ` Robert Jarzmik
2017-12-23 14:57                   ` Miquel RAYNAL
2017-12-23 17:14                     ` Robert Jarzmik
2017-12-23 22:42                       ` Miquel RAYNAL
2018-01-02 11:03                       ` Miquel RAYNAL
     [not found]                         ` <87d12scbiy.fsf@belgarion.home>
2018-01-03  7:40                           ` Miquel RAYNAL
2018-01-03 19:58                             ` Robert Jarzmik
2018-01-03 20:10                               ` Boris Brezillon
2018-01-03 20:52                                 ` Boris Brezillon
2018-01-07 20:55                                   ` Robert Jarzmik
2018-01-07 21:09                                     ` Miquel RAYNAL
2018-01-07 21:19                                       ` Boris Brezillon
2018-01-07 21:26                                         ` Boris Brezillon
2018-01-09  7:57                                   ` Robert Jarzmik
2018-01-09 11:06                                     ` Miquel RAYNAL

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=20171211220255.0292fd8f@xps13 \
    --to=miquel.raynal@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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).