mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-05 20:54:31 +00:00
b81ce79df0
Before e2e95e5e25
("spi: Update speed/mode on change") most systems
silently defaulted to SF bus mode 0. Now the mode is always updated,
which causes breakage. It seems most SF which are used as boot media
operate in bus mode 0, so switch that as the default.
This should fix booting at least on Altera SoCFPGA, ST STM32, Xilinx
ZynqMP, NXP iMX and Rockchip SoCs, which recently ran into trouble
with mode 3. Marvell Kirkwood and Xilinx microblaze need to be checked
as those might need mode 3.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Aleksandar Gerasimovski <aleksandar.gerasimovski@hitachi-powergrids.com>
Cc: Andreas Biessmann <andreas@biessmann.org>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Patrice Chotard <patrice.chotard@foss.st.com>
Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Siew Chin Lim <elly.siew.chin.lim@intel.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Valentin Longchamp <valentin.longchamp@hitachi-powergrids.com>
Cc: Vignesh Raghavendra <vigneshr@ti.com>
265 lines
8.6 KiB
Text
265 lines
8.6 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 0
|
||
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_SOFT_RESET_ON_BOOT
|
||
bool "Perform a Software Reset on boot on flashes that boot in stateful mode"
|
||
depends on SPI_FLASH_SOFT_RESET
|
||
default n
|
||
help
|
||
Perform a Software Reset on boot to allow detecting flashes that are
|
||
handed to us in Octal DTR mode. Do not enable this config on flashes
|
||
that are not supposed to be handed to U-Boot in Octal DTR mode, even
|
||
if they _do_ support the Soft Reset sequence.
|
||
|
||
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_S28HS512T
|
||
bool "Cypress S28HS512T chip support"
|
||
depends on SPI_FLASH_SPANSION
|
||
help
|
||
Add support for the Cypress S28HS512T chip. This is a separate config
|
||
because the fixup hooks for this flash add extra size overhead. Boards
|
||
that don't use the flash can disable this to save space.
|
||
|
||
config SPI_FLASH_STMICRO
|
||
bool "STMicro SPI flash support"
|
||
help
|
||
Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)
|
||
|
||
config SPI_FLASH_MT35XU
|
||
bool "Micron MT35XU chip support"
|
||
depends on SPI_FLASH_STMICRO
|
||
help
|
||
Add support for the Micron MT35XU chip. This is a separate config
|
||
because the fixup hooks for this flash add extra size overhead. Boards
|
||
that don't use the flash can disable this to save space.
|
||
|
||
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)
|
||
|
||
config SPI_FLASH_XTX
|
||
bool "XTX SPI flash support"
|
||
help
|
||
Add support for various XTX (XTX Technology Limited)
|
||
SPI flash chips (XT25xxx).
|
||
|
||
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"
|