[U-Boot] [PATCH v9 00/21] dm: Generic MTD Subsystem/SPI-NOR
Jagan Teki
jagan at openedev.com
Sun Oct 30 19:23:32 CET 2016
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
More information about the U-Boot
mailing list