[U-Boot] [PATCH v9 00/21] dm: Generic MTD Subsystem/SPI-NOR

Simon Glass sjg at chromium.org
Sat Nov 5 17:07:15 CET 2016


Hi Jagan,

On 30 October 2016 at 12:23, Jagan Teki <jagan at openedev.com> wrote:
> The previous series [1] [2] are added SPI-NOR on top of
> mtd/spi where it bypassing DM_SPI_FLASH and use the existing
> mtd core (which is non-dm), I feel this is moving in a reverse
> direction where adding new feature with the help of non-dm mtd
> core support and also few of the spi drivers are not fully dm-driven.
>
> Previous design series[3]: keep the mtd/spi as it is and start adding
> spi-nor features separately. The idea here is to add the dm features
> to MTD first and then add UCLASS_MTD spi-nor drivers so-that the commands
> are interfacing to spi-nor through dm-driven MTD core to spi-nor.
>
> This series adding a new command 'mtd.c' which is common for all MTD devices
> SPI-NOR, SPI-NOR(master) and Parallel NOR with dm-driven.
>
> SPI-NOR and Parallel NOR:
> ------------------------
>
> ------------------------------------
>               mtd.c
> ------------------------------------
>             mtd-uclass
> ------------------------------------
>        SPI-NOR Core        CFI FLASH
> ------------------------------------
> m25p80.c        zynq_qspi
> -----------------------------------
> spi-uclass      SPI NOR chip
> -----------------------------------
> spi drivers
> -----------------------------------
> SPI NOR chip
> -----------------------------------
>
> drivers/mtd/spi-nor/
>
> - Add dm mtd operations
> - spi-nor.c:   Add basic SPI-NOR core like erase/read/write ops and lock's will add later
> - m25p80.c:    spi-nor to spi divers interface layer drivers/spi-nor
> - zynq_qspi.c: zynq qspi spi-nor controller driver.
>
> Current Status:
> --------------
> - SPI-NOR Controller design flow working, see Log
>
> TODO:
> ----
> - SPI-NOR with SPI bus
> - Parallel NOR.
>
> Log:
> ----
> Zynq> mtd
> mtd - MTD Sub-system
>
> Usage:
> mtd list                        - show list of MTD devices
> mtd info                        - show current MTD device info
> mtd probe devnum                - probe the 'devnum' MTD device
> mtd erase offset len            - erase 'len' bytes from 'offset'
> mtd write addr to len           - write 'len' bytes to 'to' from 'addr'
> mtd read addr from len          - read 'len' bytes from 'from' to 'addr'
> Zynq> mtd list
> MTD 1:  spi-nor at e000d000
> Zynq>
> MTD 1:  spi-nor at e000d000
> Zynq> mtd list
> MTD 1:  spi-nor at e000d000
> Zynq> mtd probe 0
> failing to set MTD device 0
> Zynq> mtd probe 1
> SPI-NOR: detected s25fl128s_64k with page size 256 Bytes, erase size 64 KiB, total 16 MiB
> Zynq> mtd info
> MTD Device 1: s25fl128s_64k
>  Page size:     256 B
>  Erase size:    64 KiB
>  Size:          16 MiB
> Zynq> mtd list
> MTD 1:  spi-nor at e000d000  (active 1)
> Zynq> mtd erase 0xE00000 0x100000
> MTD: 1048576 bytes @ 0xe00000 Erased: OK
> Zynq> mw.b 0x100 0xaa 0x100000
> Zynq> mtd write 0x100 0xE00000 0x100000
> device 0 offset 0xe00000, size 0x100000
> MTD: 1048576 bytes @ 0xe00000 Written: OK
> Zynq> mtd read 0x3000000 0xE00000 0x100000
> device 0 offset 0xe00000, size 0x100000
> MTD: 1048576 bytes @ 0xe00000 Read: OK
> Zynq> cmp.b 0x3000000 0x100 0x100000
> Total of 1048576 byte(s) were the same
>
> Testing:
> -------
> $ git clone git://git.denx.de/u-boot-spi.git
> $ cd u-boot-spi
> $ git checkout -b mtd origin/mtd-working
>
> [1] http://lists.denx.de/pipermail/u-boot/2016-March/249286.html
> [2] http://lists.denx.de/pipermail/u-boot/2016-February/245418.html
> [3] [PATCH RFC v8 00/16]  SPI-NOR/MTD addition
>
> Jagan Teki (21):
>   dm: mtd: Add dm mtd core ops
>   mtd: Add SPI-NOR core support
>   mtd: spi-nor: Kconfig: Add MTD_SPI_NOR entry
>   mtd: spi-nor: Kconfig: Add MTD_SPI_NOR_USE_4K_SECTORS
>   mtd: spi-nor: Kconfig: Add SPI_NOR_MISC entry
>   mtd: spi-nor: Kconfig: Add SPI_NOR_MACRONIX entry
>   mtd: spi-nor: Kconfig: Add SPI_NOR_SPANSION entry
>   mtd: spi-nor: Kconfig: Add SPI_NOR_STMICRO entry
>   mtd: spi-nor: Kconfig: Add SPI_NOR_SST entry
>   mtd: spi-nor: Kconfig: Add SPI_NOR_WINBOND entry
>   spi: Add spi_write_then_read
>   mtd: spi-nor: Add m25p80 driver
>   mtd: spi-nor: Kconfig: Add MTD_M25P80 entry
>   mtd: spi-nor: Add zynq qspinor driver
>   mtd: spi-nor: zynq_qspi: Kconfig: Add MTD_ZYNQ
>   mtd: spi-nor: Add 4-byte addresswidth support
>   dm: mtd: Add uclass_driver.flags
>   dm: mtd: Add post_bind
>   cmd: Add mtd command support
>   arm: dts: zynq: Add zynq-qspinor node
>   dm: zynq: microzed: Enable MTD/SPI-NOR
>
>  Makefile                           |   1 +
>  arch/arm/dts/zynq-7000.dtsi        |  12 +
>  arch/arm/dts/zynq-microzed.dts     |   6 +
>  cmd/Kconfig                        |   6 +
>  cmd/Makefile                       |   1 +
>  cmd/mtd.c                          | 285 ++++++++++++++++
>  configs/zynq_microzed_defconfig    |  14 +-
>  drivers/mtd/Kconfig                |   2 +
>  drivers/mtd/Makefile               |   2 +-
>  drivers/mtd/mtd-uclass.c           |  93 +++++
>  drivers/mtd/spi-nor/Kconfig        |  89 +++++
>  drivers/mtd/spi-nor/Makefile       |  15 +
>  drivers/mtd/spi-nor/m25p80.c       | 218 ++++++++++++
>  drivers/mtd/spi-nor/spi-nor-ids.c  | 176 ++++++++++
>  drivers/mtd/spi-nor/spi-nor.c      | 684 +++++++++++++++++++++++++++++++++++++
>  drivers/mtd/spi-nor/zynq_qspinor.c | 641 ++++++++++++++++++++++++++++++++++
>  drivers/spi/spi-uclass.c           |  24 ++
>  include/linux/err.h                |   5 +
>  include/linux/mtd/spi-nor.h        | 211 ++++++++++++
>  include/mtd.h                      |  63 ++++
>  include/spi.h                      |  20 ++
>  21 files changed, 2562 insertions(+), 6 deletions(-)
>  create mode 100644 cmd/mtd.c
>  create mode 100644 drivers/mtd/spi-nor/Kconfig
>  create mode 100644 drivers/mtd/spi-nor/Makefile
>  create mode 100644 drivers/mtd/spi-nor/m25p80.c
>  create mode 100644 drivers/mtd/spi-nor/spi-nor-ids.c
>  create mode 100644 drivers/mtd/spi-nor/spi-nor.c
>  create mode 100644 drivers/mtd/spi-nor/zynq_qspinor.c
>  create mode 100644 include/linux/mtd/spi-nor.h
>
> --
> 2.7.4
>

To me this series is much easier to understand than previously.

Is there a sandbox MTD driver for use in tests?

Regards,
Simon


More information about the U-Boot mailing list