mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-05 02:51:00 +00:00
cc89b7cf41
enable NVMXIP QSPI for sandbox 64-bit Adding two NVM XIP QSPI storage devices. Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> Reviewed-by: Simon Glass <sjg@chromium.org>
91 lines
3.3 KiB
ReStructuredText
91 lines
3.3 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0+
|
|
|
|
NVM XIP Block Storage Emulation Driver
|
|
=======================================
|
|
|
|
Summary
|
|
-------
|
|
|
|
Non-Volatile Memory devices with addressable memory (e.g: QSPI NOR flash) could
|
|
be used for block storage needs (e.g: parsing a GPT layout in a raw QSPI NOR flash).
|
|
|
|
The NVMXIP Uclass provides this functionality and can be used for any 64-bit platform.
|
|
|
|
The NVMXIP Uclass provides the following drivers:
|
|
|
|
nvmxip-blk block driver:
|
|
|
|
A generic block driver allowing to read from the XIP flash.
|
|
The driver belongs to UCLASS_BLK.
|
|
The driver implemented by drivers/mtd/nvmxip/nvmxip.c
|
|
|
|
nvmxip Uclass driver:
|
|
|
|
When a device is described in the DT and associated with UCLASS_NVMXIP,
|
|
the Uclass creates a block device and binds it with the nvmxip-blk.
|
|
The Uclass driver implemented by drivers/mtd/nvmxip/nvmxip-uclass.c
|
|
|
|
nvmxip_qspi driver :
|
|
|
|
The driver probed with the DT and is the parent of the blk#<id> device.
|
|
nvmxip_qspi can be reused by other platforms. If the platform
|
|
has custom settings to apply before using the flash, then the platform
|
|
can provide its own parent driver belonging to UCLASS_NVMXIP and reuse
|
|
nvmxip-blk. The custom driver can be implemented like nvmxip_qspi in
|
|
addition to the platform custom settings.
|
|
The nvmxip_qspi driver belongs to UCLASS_NVMXIP.
|
|
The driver implemented by drivers/mtd/nvmxip/nvmxip_qspi.c
|
|
|
|
For example, if we have two NVMXIP devices described in the DT
|
|
The devices hierarchy is as follows:
|
|
|
|
::
|
|
|
|
=> dm tree
|
|
|
|
Class Index Probed Driver Name
|
|
-----------------------------------------------------------
|
|
...
|
|
nvmxip 0 [ + ] nvmxip_qspi |-- nvmxip-qspi1@08000000
|
|
blk 3 [ + ] nvmxip-blk | `-- nvmxip-qspi1@08000000.blk#1
|
|
nvmxip 1 [ + ] nvmxip_qspi |-- nvmxip-qspi2@08200000
|
|
blk 4 [ + ] nvmxip-blk | `-- nvmxip-qspi2@08200000.blk#2
|
|
|
|
The implementation is generic and can be used by different platforms.
|
|
|
|
Supported hardware
|
|
--------------------------------
|
|
|
|
Any plaform supporting readq().
|
|
|
|
Configuration
|
|
----------------------
|
|
|
|
config NVMXIP
|
|
This option allows the emulation of a block storage device
|
|
on top of a direct access non volatile memory XIP flash devices.
|
|
This support provides the read operation.
|
|
This option provides the block storage driver nvmxip-blk which
|
|
handles the read operation. This driver is HW agnostic and can support
|
|
multiple flash devices at the same time.
|
|
|
|
config NVMXIP_QSPI
|
|
This option allows the emulation of a block storage device on top of a QSPI XIP flash.
|
|
Any platform that needs to emulate one or multiple QSPI XIP flash devices can turn this
|
|
option on to enable the functionality. NVMXIP config is selected automatically.
|
|
Platforms that need to add custom treatments before accessing to the flash, can
|
|
write their own driver (same as nvmxip_qspi in addition to the custom settings).
|
|
|
|
Device Tree nodes
|
|
--------------------
|
|
|
|
Multiple QSPI XIP flash devices can be used at the same time by describing them through DT
|
|
nodes.
|
|
|
|
Please refer to the documentation of the DT binding at:
|
|
|
|
doc/device-tree-bindings/nvmxip/nvmxip_qspi.txt
|
|
|
|
Contributors
|
|
------------
|
|
* Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|