[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