All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Frieder Schrempf <frieder.schrempf@exceet.de>
Cc: "Peter Pan 潘栋 (peterpandong)" <peterpandong@micron.com>,
	"Peter Pan" <peterpansjtu@gmail.com>,
	"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>
Subject: Re: [PATCH v6 00/15] A SPI NAND framework under generic NAND framework
Date: Wed, 13 Dec 2017 22:27:10 +0100	[thread overview]
Message-ID: <20171213222710.32d12514@bbrezillon> (raw)
In-Reply-To: <256b4ab6-c104-4580-87cd-527178bde460@exceet.de>

Hi Frieder,

On Tue, 12 Dec 2017 10:58:10 +0100
Frieder Schrempf <frieder.schrempf@exceet.de> wrote:

> Hi Boris,
> 
> I spent some time looking at and working with your latest SPI NAND code.
> In my previous mail I said, that we have some working code for our 3.14 
> kernel based on the "mt29f_spinand" staging driver, but that was wrong 
> as I got things mixed up in my head.
> Actually our codebase was an early version of Peter's code, so the 
> effort to port it to the latest framework code was not that big.
> 
> I forked your repo and you can find my working tree at [1].

Great, I'll try to have a look.

> 
> What I did so far:
> 
> * Rebase your patches on latest Linux 4.14.5

Cool, rebasing on 4.15-rc1 would be even better, but I can do that if
you don't have the time.

> 
> * Add a driver for the Winbond W25M02GV SPI NAND chip, that we have on 
> some of our boards.

Okay, that's actually a good thing to have tested with another chip,
This way we can make sure the framework is generic enough.

> 
> * Add a driver for the Freescale QSPI controller, derived from the 
> existing QSPI-NOR driver at drivers/mtd/spi-nor/fsl-quadspi.c.

That's an interesting case as well, the generic NAND controller is
probably the easiest implementation, and that's a good thing to have
another controller.

> 
> * Add a setup and setup_late op to the controller layer (see [3]). I 
> don't know if that makes sense, but at least the setup_late is needed 
> for the FSL QSPI driver, as it needs to know the size of the flash to 
> setup the memory mapping for the QSPI read operations.

Hm, not sure what ->setup_late() is for, but I'll have a look.

> 
> * A bit of testing and fixing two small bugs, which look like copy and 
> paste mistakes. See [2].

Thanks, I'll squash the fixes in the original commit.

> 
> * Running nandtest successfully on our hardware (i.MX6UL -> FSL-QSPI -> 
> W25M02GV)
> 
> I hope this is of use while moving on.

Definitely. I'd also like to have a review on the framework code if
possible, but that can be done when posted on the ML.

> I guess you would like to have the basic framework with Micron support 
> and generic SPI tested and stabilized first, before adding more code, 
> but to be able to test with our hardware I need Micron and FSL QSPI.

I guess you mean Winbond not Micron. That's okay if those patches are
posted after the initial series. All I need is reviews and tests from
different parties, so that I'm less confident in merging the code.

> 
> Some questions/flaws that occurred to me:
> 
> * The W25M02GV chip has two dies of 128M each. My current driver only 
> makes use of the first die. The chip expects a die-select command to 
> switch between the two dies.
> What would be the place to implement this?
> Can I just add the command and issue it in 
> winbond_spinand_adjust_cache_op if luns_per_target > 1?

It really depends when the die selection happens. I guess it happens in
2 places: when preparing a program/read operation and when doing the
transfer to the in-chip cache. Anyway, the die information is already
passed in the nand_pos object, so all you'll have to do is create a new
hook to customize the SPI command when needed.

> 
> * The FSL QSPI controller has a lookup table that needs to be filled 
> with command sequences at the time of setup. Therefore the number of 
> dummy bytes for each command is fixed and in my current implementation 
> op->dummy_bytes is ignored.
> That's not a problem if all chips need the same number of dummy bytes 
> for each command, but I guess that's not the case, as there is a 
> _spinand_get_dummy function.

We should definitely expose that in a generic way, and on a
per-operation basis, so that, after the detection step, the NAND
controller can query this information.

> 
> * What is your plan for ECC and BBT? At least enabling the onchip ECC 
> will be necessary to be able to use the flash properly (e.g. with UBI), 
> or am I wrong?

Well, if all SPI NAND chips are supporting ECC the same way and
on-die ECC support is mandatory for SPI NANDs, then supporting that
directly in the core is probably the best option. If, on the other
hand, you have various implementations, and some SPI controllers have
their own ECC engine that you can use with SPI NANDs, then it's
probably a better idea to abstract ECC engine in the generic NAND layer.

For BBTs, I'd like to have a clean version of the nand_bbt logic that
uses all of the helpers exposed by the generic NAND layer. I'd also
like to simplify the code if possible.

> 
> * Do you have any special test cases? What do you usually do to test the 
> code?

Well, make sure all the mtd tests are passing (drivers/mtd/tests), and
then, the next step is to test it with UBI+UBIFS. But honestly, I'm not
so worried, this is new code, and we've isolated from the raw NAND
layer, so if it's buggy or instable at the beginning it's not a big
deal, it will be noticed and fixed for the next few releases.

> 
> Thanks for your patience and best regards,

No problem. Thanks for your work, and I'll try to be more active on
this topic (I promised that several times, and failed it :-/).

Regards,

Boris

  reply	other threads:[~2017-12-13 21:27 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-24  7:06 [PATCH v6 00/15] A SPI NAND framework under generic NAND framework Peter Pan
2017-05-24  7:06 ` [PATCH v6 01/15] mtd: nand: Rename nand.h into rawnand.h Peter Pan
2017-05-24  7:06 ` [PATCH v6 02/15] mtd: nand: move raw NAND related code to the raw/ subdir Peter Pan
2017-05-24  7:06 ` [PATCH v6 03/15] mtd: nand: add a nand.h file to expose basic NAND stuff Peter Pan
2017-05-29 20:14   ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 04/15] mtd: nand: raw: prefix conflicting names with nandcchip instead of nand Peter Pan
2017-05-29 20:22   ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 05/15] mtd: nand: raw: create struct rawnand_device Peter Pan
2017-05-29 21:05   ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 06/15] mtd: nand: raw: make BBT code more generic Peter Pan
2017-05-24  7:07 ` [PATCH v6 07/15] mtd: nand: move BBT code to drivers/mtd/nand/ Peter Pan
2017-05-24  7:07 ` [PATCH v6 08/15] mtd: nand: Add the page iterator concept Peter Pan
2017-05-29 21:12   ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 09/15] mtd: nand: make sure mtd_oob_ops consistent in bbt Peter Pan
2017-05-29 21:06   ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 10/15] nand: spi: add basic blocks for infrastructure Peter Pan
2017-05-29 21:51   ` Boris Brezillon
2017-05-31  7:02     ` Peter Pan 潘栋 (peterpandong)
2017-05-31 21:45   ` Cyrille Pitchen
2017-06-01  7:24     ` Boris Brezillon
2017-05-24  7:07 ` [PATCH v6 11/15] nand: spi: add basic operations support Peter Pan
2017-05-29 22:11   ` Boris Brezillon
2017-05-31  6:51     ` Peter Pan 潘栋 (peterpandong)
2017-05-31 10:02       ` Boris Brezillon
2017-06-27 20:15       ` Boris Brezillon
2017-06-28  9:41         ` Arnaud Mouiche
2017-06-28 11:32           ` Boris Brezillon
2017-06-29  5:45           ` Peter Pan 潘栋 (peterpandong)
2017-06-29  6:07         ` Peter Pan 潘栋 (peterpandong)
2017-06-29  7:05           ` Arnaud Mouiche
2017-10-11 13:35   ` Boris Brezillon
2017-10-12  1:28     ` Peter Pan
2017-05-24  7:07 ` [PATCH v6 12/15] nand: spi: Add bad block support Peter Pan
2017-05-24  7:07 ` [PATCH v6 13/15] nand: spi: add Micron spi nand support Peter Pan
2017-05-24  7:07 ` [PATCH v6 14/15] nand: spi: Add generic SPI controller support Peter Pan
2017-05-24  7:07 ` [PATCH v6 15/15] MAINTAINERS: Add SPI NAND entry Peter Pan
2017-05-29 20:59 ` [PATCH v6 00/15] A SPI NAND framework under generic NAND framework Boris Brezillon
2017-12-04 13:32   ` Frieder Schrempf
2017-12-04 14:05     ` Boris Brezillon
2017-12-05  1:35       ` Peter Pan 潘栋 (peterpandong)
2017-12-05 12:58         ` Boris Brezillon
2017-12-05 13:03           ` Boris Brezillon
2017-12-12  9:58             ` Frieder Schrempf
2017-12-13 21:27               ` Boris Brezillon [this message]
2017-12-14  6:15                 ` Peter Pan
2017-12-14  7:50                   ` Boris Brezillon
2017-12-14  8:06                     ` Peter Pan
2017-12-14 14:39                       ` Frieder Schrempf
2017-12-14 14:43                         ` Frieder Schrempf
2017-12-14 15:38                         ` Boris Brezillon
2017-12-15  1:08                           ` Peter Pan
2017-12-15  1:21                             ` Peter Pan
2017-12-21 11:48                               ` Frieder Schrempf
2017-12-21 13:01                                 ` Boris Brezillon
2017-12-21 13:54                                   ` Frieder Schrempf
2017-12-22  0:49                                 ` Peter Pan
2017-12-22  6:37                                   ` Peter Pan
2017-12-22  8:28                                     ` Boris Brezillon
2017-12-22 13:51                                     ` Boris Brezillon
2018-01-02  2:51                                       ` Peter Pan
2018-01-03 16:46                                         ` Boris Brezillon
2018-01-04  2:01                                           ` Peter Pan
2018-01-08 22:07                                             ` Boris Brezillon
2017-12-15  2:35                     ` Peter Pan
2017-12-15 12:41                       ` Boris Brezillon
     [not found] <74cb9a07bd3247fd86002ef97509828f@SIWEX4H.sing.micron.com>
2017-05-31  6:20 ` Boris Brezillon
2017-05-31  6:34   ` Peter Pan 潘栋 (peterpandong)

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=20171213222710.32d12514@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=frieder.schrempf@exceet.de \
    --cc=linux-mtd@lists.infradead.org \
    --cc=peterpandong@micron.com \
    --cc=peterpansjtu@gmail.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.