From: Boris Brezillon <boris.brezillon@bootlin.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH 00/20] SPI-NAND support
Date: Mon, 25 Jun 2018 11:09:41 +0200 [thread overview]
Message-ID: <20180625110941.5fdd4045@bbrezillon> (raw)
In-Reply-To: <CAD6G_RQTi=ZnDQ2jyvBQu-QKDJ8w3wajpgZK76FowaM9O+-X1g@mail.gmail.com>
+Richard to comment on the MTD abstraction stuff and how uboot port
of UBI might be impacted by some changes requested here.
Hi Jagan,
On Mon, 25 Jun 2018 13:59:37 +0530
Jagan Teki <jagannadh.teki@gmail.com> wrote:
>
> I've looked the code on the respective patches, look like most of the
> code copy from Linux by adding __UBOOT__. I have no issue with Linux
> copy but we need to structure the code according to U-Boot in the form
> of driver-model (this series lack with that).
>
> Here are my suggestions, based the MTD work so-far
>
> First we need to design MTD driver-model which can capable to drive
> one driver from each interface. (not converting all interface drivers
> at once, that is taking more time and other issues)
>
> Like Linux MTD, U-Boot should have MTD dm for underlying flash devices
> like nand, parallel nor, spinor etc. So to drive this theory with
> driver model(with an example of block layer) mtd is common device
> interaction for most of memory technology flashes like nand,
> parallel nor, spinor etc, these are treated as interface types wrt
> u-boot driver model.
>
> Once the respective interface driver bind happen, the uclass driver
> will pass an 'interface type' to mtd layer to create device for it,
> for example once spinor ULASS_SPI_NOR driver bind happen, the uclass
> driver of spinor will pass MTD_IF_TYPE_SPI_NOR
> interface type to create mtd device for spinor devices.
>
> So If we add this design to SPI-NAND changes, we need to implement
> - MTD dm core that can driver all interfaces
That's already what the MTD framework provides, and Miquel even added
some stuff to integrate the MTD layer even further in the DM. It's
probably not perfect yet, but the changes are, IMHO, going in the right
direction.
Now, if you're talking about the new MTD API that creates helper
functions prefixed with dm_, sorry, but I don't see the point. We
already have plenty of MTD users in u-boot, they all manipulate MTD
objects and go through the standard MTD API to do that. What you
suggest would make things messier for several reasons:
1/ we won't be able to easily port Linux code to u-boot. Look at the
JFFS2 UBI support. They all use mtd_info objects. What's the point of
changing that except making things harder to port.
2/ Not all MTD providers will be converted to the device model at once,
so how do you plan to deal with that?
3/ What's the benefit of exposing yet another way to manipulate MTD
devices?
> - one driver for raw nand
Unfortunately, that's not how it works right now, and clearly, we
don't have time to work on this raw NAND rework right now.
> - one driver for spinand
I think that's already the case.
> - spi-mem
It's also what Miquel is doing in this series.
> - convert fsl-qspi to spi-mem
We're not targeting the fsl-qspi controller here but a simple SPI
controller that is already upstreamed. But yes, the fsl-qspi driver
will have to be patched to support the spi-mem interface at some point.
> - implement command to handle
This I don't get. What do you mean by "implement command to handle"?
Are we talking about cmd/mtd.c? I think the work Miquel has done is
already a good start, what's missing in there?
>
> For spi-nor interface design, we have an example code here[2]
>
> I've paused this [2] series because of dm conversion of spi-drivers
> otherwise I need add legacy code like mmc-legacy.c, so if we really
> move to spi-mem design and okay with above design. I will try to move
> the current spi flash to add MTD driver-model so-that we can add
> spi-mem, spi-nand on top of it or we can work together to convert them
> all.
Why can't we do things iteratively. I mean, if the long term goal is to
convert everything to the driver model, then this patchset is going in
the right direction:
- addition of DM helpers to the MTD_UCLASS
- addition of the spi-mem interface properly integrated in the DM
model of the SPI framework
- addition of a SPI NAND driver, again properly integrated in the DM
- integration of DM-ready MTD drivers and old MTD drivers in a single
view exposed by the cmd/mtd.c command set
I'd really like to limit the scope of this development to these topics,
which doesn't prevent you from converting other part of u-boot to the
spi-mem approach (SPI NOR is one example).
I hope you understand our concerns and the fact that what you're asking
us to do as a dependency of getting SPI NAND support + cmd/mtd.c merged
is way more than we can actually provide.
Regards,
Boris
next prev parent reply other threads:[~2018-06-25 9:09 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-06 15:30 [U-Boot] [RFC PATCH 00/20] SPI-NAND support Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 01/20] mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing Miquel Raynal
2018-06-27 10:52 ` Jagan Teki
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 02/20] mtd: add get/set of_node/flash_node helpers Miquel Raynal
2018-06-27 10:53 ` Jagan Teki
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 03/20] mtd: fix build issue with includes Miquel Raynal
2018-06-27 10:53 ` Jagan Teki
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 04/20] mtd: move definitions to enlarge their range Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 05/20] mtd: move all flash categories inside MTD submenu Miquel Raynal
2018-06-27 10:56 ` Jagan Teki
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 06/20] mtd: move NAND fiels into a raw/ subdirectory Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 07/20] mtd: rename nand into rawnand in Kconfig prompt Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 08/20] mtd: nand: Add core infrastructure to deal with NAND devices Miquel Raynal
2018-06-27 11:08 ` Jagan Teki
2018-06-27 12:48 ` Miquel Raynal
2018-06-27 21:35 ` Tom Rini
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 09/20] mtd: nand: Pass mode information to nand_page_io_req Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 10/20] spi: Extend the core to ease integration of SPI memory controllers Miquel Raynal
2018-07-06 11:32 ` Jagan Teki
2018-07-11 13:55 ` Miquel Raynal
2018-07-11 14:37 ` Jagan Teki
2018-07-11 15:10 ` Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 11/20] mtd: nand: Add core infrastructure to support SPI NANDs Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 12/20] mtd: spinand: Add initial support for Micron MT29F2G01ABAGD Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 13/20] mtd: spinand: Add initial support for Winbond W25M02GV Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 14/20] mtd: spinand: Add initial support for the MX35LF1GE4AB chip Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 15/20] mtd: spinand: Add initial support for the MX35LF2GE4AB chip Miquel Raynal
2018-06-22 12:03 ` Boris Brezillon
2018-06-26 7:54 ` Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 16/20] mtd: uclass: add probe function Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 17/20] cmd: mtd: add 'mtd' command Miquel Raynal
2018-06-06 19:45 ` Boris Brezillon
2018-07-11 13:51 ` Miquel Raynal
2018-07-11 14:01 ` Boris Brezillon
2018-07-11 14:17 ` Miquel Raynal
2018-07-06 11:38 ` Jagan Teki
2018-07-06 12:26 ` Miquel Raynal
2018-07-06 13:21 ` Stefan Roese
2018-07-06 13:42 ` Miquel Raynal
2018-07-06 13:51 ` Stefan Roese
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 18/20] dt-bindings: Add bindings for SPI NAND devices Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 19/20] mips: dts: ocelot: describe SPI CS pins Miquel Raynal
2018-06-06 15:30 ` [U-Boot] [RFC PATCH 20/20] mips: dts: ocelot: add the SPI NAND node Miquel Raynal
2018-06-07 5:51 ` [U-Boot] [RFC PATCH 00/20] SPI-NAND support Jagan Teki
2018-06-07 8:41 ` Miquel Raynal
2018-06-18 8:07 ` Boris Brezillon
2018-06-25 8:29 ` Jagan Teki
2018-06-25 9:09 ` Boris Brezillon [this message]
2018-06-25 12:38 ` Richard Weinberger
2018-06-25 14:27 ` Jagan Teki
2018-06-25 14:28 ` Jagan Teki
2018-06-25 14:46 ` Boris Brezillon
2018-06-25 14:55 ` Tom Rini
2018-06-25 14:59 ` Stefan Roese
2018-06-25 18:37 ` Jagan Teki
2018-06-25 19:58 ` Boris Brezillon
2018-06-25 20:01 ` Tom Rini
2018-06-27 11:43 ` Jagan Teki
2018-06-25 14:36 ` Richard Weinberger
2018-06-12 14:14 ` Stefan Roese
2018-06-18 8:13 ` Miquel Raynal
2018-07-06 11:43 ` Jagan Teki
2018-07-06 12:06 ` Miquel Raynal
2018-07-06 12:15 ` Jagan Teki
2018-07-06 17:48 ` 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=20180625110941.5fdd4045@bbrezillon \
--to=boris.brezillon@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox