mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-05 20:54:31 +00:00
575caf4500
On probe, the SPI NOR core will put a flash in 8D-8D-8D mode if it supports it. But Linux as of now expects to get the flash in 1S-1S-1S mode. Handing the flash to Linux in Octal DTR mode means the kernel will fail to detect the flash. So, we need to reset to Power-on-Reset (POR) state before handing off the flash. A Software Reset command can be used to do this. One limitation of the soft reset is that it will restore state from non-volatile registers in some flashes. This means that if the flash was set to 8D mode in a non-volatile configuration, a soft reset won't help. This commit assumes that we don't set any non-volatile bits anywhere, and the flash doesn't have any non-volatile Octal DTR mode configuration. Since spi-nor-tiny doesn't (and likely shouldn't) have spi_nor_soft_reset(), add a dummy spi_nor_remove() for it that does nothing. Signed-off-by: Pratyush Yadav <p.yadav@ti.com> Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
233 lines
7.5 KiB
Text
233 lines
7.5 KiB
Text
menu "SPI Flash Support"
|
||
|
||
config DM_SPI_FLASH
|
||
bool "Enable Driver Model for SPI flash"
|
||
depends on DM && DM_SPI
|
||
imply SPI_FLASH
|
||
help
|
||
Enable driver model for SPI flash. This SPI flash interface
|
||
(spi_flash_probe(), spi_flash_write(), etc.) is then
|
||
implemented by the SPI flash uclass. There is one standard
|
||
SPI flash driver which knows how to probe most chips
|
||
supported by U-Boot. The uclass interface is defined in
|
||
include/spi_flash.h, but is currently fully compatible
|
||
with the old interface to avoid confusion and duplication
|
||
during the transition parent. SPI and SPI flash must be
|
||
enabled together (it is not possible to use driver model
|
||
for one and not the other).
|
||
|
||
config SPI_FLASH_SANDBOX
|
||
bool "Support sandbox SPI flash device"
|
||
depends on SANDBOX && DM_SPI_FLASH
|
||
help
|
||
Since sandbox cannot access real devices, an emulation mechanism is
|
||
provided instead. Drivers can be connected up to the sandbox SPI
|
||
bus (see CONFIG_SANDBOX_SPI) and SPI traffic will be routed to this
|
||
device. Typically the contents of the emulated SPI flash device is
|
||
stored in a file on the host filesystem.
|
||
|
||
config SPI_FLASH
|
||
bool "SPI Flash Core Interface support"
|
||
select SPI_MEM
|
||
help
|
||
Enable the SPI flash Core support. This will include basic
|
||
standard support for things like probing, read / write, and
|
||
erasing through cmd_sf interface.
|
||
|
||
If unsure, say N
|
||
|
||
config SF_DEFAULT_BUS
|
||
int "SPI Flash default bus identifier"
|
||
depends on SPI_FLASH || DM_SPI_FLASH
|
||
default 0
|
||
help
|
||
The default bus may be provided by the platform
|
||
to handle the common case when only a single serial
|
||
flash is present on the system.
|
||
|
||
config SF_DEFAULT_CS
|
||
int "SPI Flash default Chip-select"
|
||
depends on SPI_FLASH || DM_SPI_FLASH
|
||
default 0
|
||
help
|
||
The default chip select may be provided by the platform
|
||
to handle the common case when only a single serial
|
||
flash is present on the system.
|
||
|
||
config SF_DEFAULT_MODE
|
||
hex "SPI Flash default mode (see include/spi.h)"
|
||
depends on SPI_FLASH || DM_SPI_FLASH
|
||
default 3
|
||
help
|
||
The default mode may be provided by the platform
|
||
to handle the common case when only a single serial
|
||
flash is present on the system.
|
||
Not used for boot with device tree; the SPI driver reads
|
||
speed and mode from plat values computed from
|
||
available node.
|
||
|
||
config SF_DEFAULT_SPEED
|
||
int "SPI Flash default speed in Hz"
|
||
depends on SPI_FLASH || DM_SPI_FLASH
|
||
default 1000000
|
||
help
|
||
The default speed may be provided by the platform
|
||
to handle the common case when only a single serial
|
||
flash is present on the system.
|
||
Not used for boot with device tree; the SPI driver reads
|
||
speed and mode from plat values computed from
|
||
available node.
|
||
|
||
if SPI_FLASH
|
||
|
||
config SPI_FLASH_SFDP_SUPPORT
|
||
bool "SFDP table parsing support for SPI NOR flashes"
|
||
depends on !SPI_FLASH_BAR
|
||
help
|
||
Enable support for parsing and auto discovery of parameters for
|
||
SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
|
||
tables as per JESD216 standard.
|
||
|
||
config SPI_FLASH_SMART_HWCAPS
|
||
bool "Smart hardware capability detection based on SPI MEM supports_op() hook"
|
||
default y
|
||
help
|
||
Enable support for smart hardware capability detection based on SPI
|
||
MEM supports_op() hook that lets controllers express whether they
|
||
can support a type of operation in a much more refined way compared
|
||
to using flags like SPI_RX_DUAL, SPI_TX_QUAD, etc.
|
||
|
||
config SPI_FLASH_SOFT_RESET
|
||
bool "Software Reset support for SPI NOR flashes"
|
||
default n
|
||
help
|
||
Enable support for xSPI Software Reset. It will be used to switch from
|
||
Octal DTR mode to legacy mode on shutdown and boot (if enabled).
|
||
|
||
config SPI_FLASH_BAR
|
||
bool "SPI flash Bank/Extended address register support"
|
||
help
|
||
Enable the SPI flash Bank/Extended address register support.
|
||
Bank/Extended address registers are used to access the flash
|
||
which has size > 16MiB in 3-byte addressing.
|
||
|
||
config SPI_FLASH_UNLOCK_ALL
|
||
bool "Unlock the entire SPI flash on u-boot startup"
|
||
default y
|
||
help
|
||
Some flashes tend to power up with the software write protection
|
||
bits set. If this option is set, the whole flash will be unlocked.
|
||
|
||
For legacy reasons, this option default to y. But if you intend to
|
||
actually use the software protection bits you should say n here.
|
||
|
||
config SF_DUAL_FLASH
|
||
bool "SPI DUAL flash memory support"
|
||
help
|
||
Enable this option to support two flash memories connected to a single
|
||
controller. Currently Xilinx Zynq qspi supports this.
|
||
|
||
config SPI_FLASH_ATMEL
|
||
bool "Atmel SPI flash support"
|
||
help
|
||
Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx)
|
||
|
||
config SPI_FLASH_EON
|
||
bool "EON SPI flash support"
|
||
help
|
||
Add support for various EON SPI flash chips (EN25xxx)
|
||
|
||
config SPI_FLASH_GIGADEVICE
|
||
bool "GigaDevice SPI flash support"
|
||
help
|
||
Add support for various GigaDevice SPI flash chips (GD25xxx)
|
||
|
||
config SPI_FLASH_ISSI
|
||
bool "ISSI SPI flash support"
|
||
help
|
||
Add support for various ISSI SPI flash chips (ISxxx)
|
||
|
||
config SPI_FLASH_MACRONIX
|
||
bool "Macronix SPI flash support"
|
||
help
|
||
Add support for various Macronix SPI flash chips (MX25Lxxx)
|
||
|
||
config SPI_FLASH_SPANSION
|
||
bool "Spansion SPI flash support"
|
||
help
|
||
Add support for various Spansion SPI flash chips (S25FLxxx)
|
||
|
||
config SPI_FLASH_STMICRO
|
||
bool "STMicro SPI flash support"
|
||
help
|
||
Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)
|
||
|
||
config SPI_FLASH_SST
|
||
bool "SST SPI flash support"
|
||
help
|
||
Add support for various SST SPI flash chips (SST25xxx)
|
||
|
||
config SPI_FLASH_WINBOND
|
||
bool "Winbond SPI flash support"
|
||
help
|
||
Add support for various Winbond SPI flash chips (W25xxx)
|
||
|
||
config SPI_FLASH_XMC
|
||
bool "XMC SPI flash support"
|
||
help
|
||
Add support for various XMC (Wuhan Xinxin Semiconductor
|
||
Manufacturing Corp.) SPI flash chips (XM25xxx)
|
||
|
||
endif
|
||
|
||
config SPI_FLASH_USE_4K_SECTORS
|
||
bool "Use small 4096 B erase sectors"
|
||
depends on SPI_FLASH
|
||
default y
|
||
help
|
||
Many flash memories support erasing small (4096 B) sectors. Depending
|
||
on the usage this feature may provide performance gain in comparison
|
||
to erasing whole blocks (32/64 KiB).
|
||
Changing a small part of the flash's contents is usually faster with
|
||
small sectors. On the other hand erasing should be faster when using
|
||
64 KiB block instead of 16 × 4 KiB sectors.
|
||
|
||
Please note that some tools/drivers/filesystems may not work with
|
||
4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
|
||
|
||
config SPI_FLASH_DATAFLASH
|
||
bool "AT45xxx DataFlash support"
|
||
depends on SPI_FLASH && DM_SPI_FLASH
|
||
help
|
||
Enable the access for SPI-flash-based AT45xxx DataFlash chips.
|
||
DataFlash is a kind of SPI flash. Most AT45 chips have two buffers
|
||
in each chip, which may be used for double buffered I/O; but this
|
||
driver doesn't (yet) use these for any kind of i/o overlap or prefetching.
|
||
|
||
Sometimes DataFlash is packaged in MMC-format cards, although the
|
||
MMC stack can't (yet?) distinguish between MMC and DataFlash
|
||
protocols during enumeration.
|
||
|
||
If unsure, say N
|
||
|
||
config SPI_FLASH_MTD
|
||
bool "SPI Flash MTD support"
|
||
depends on SPI_FLASH && MTD
|
||
help
|
||
Enable the MTD support for spi flash layer, this adapter is for
|
||
translating mtd_read/mtd_write commands into spi_flash_read/write
|
||
commands. It is not intended to use it within sf_cmd or the SPI
|
||
flash subsystem. Such an adapter is needed for subsystems like
|
||
UBI which can only operate on top of the MTD layer.
|
||
|
||
If unsure, say N
|
||
|
||
config SPL_SPI_FLASH_MTD
|
||
bool "SPI flash MTD support for SPL"
|
||
depends on SPI_FLASH
|
||
help
|
||
Enable the MTD support for the SPI flash layer in SPL.
|
||
|
||
If unsure, say N
|
||
|
||
endmenu # menu "SPI Flash Support"
|