mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-21 02:33:07 +00:00
7a49d61742
This patch adds support for MTK SPI NOR controller, which you can see on mt7622 & mt7629. 1. This controller is designed only for SPI NOR. We can't adjust its bus clock dynamically. Set clock in dts instead. 2. This controller only supports 1-1-1 write mode. 3. Remove mtk_snor_match_read() since upper SPI-MEM layer already handles command. 4. sf read/write/update commands are tested with this driver. Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
484 lines
15 KiB
Text
484 lines
15 KiB
Text
menuconfig SPI
|
|
bool "SPI Support"
|
|
help
|
|
The "Serial Peripheral Interface" is a low level synchronous
|
|
protocol. Chips that support SPI can have data transfer rates
|
|
up to several tens of Mbit/sec. Chips are addressed with a
|
|
controller and a chipselect. Most SPI slaves don't support
|
|
dynamic device discovery; some are even write-only or read-only.
|
|
|
|
SPI is widely used by microcontrollers to talk with sensors,
|
|
eeprom and flash memory, codecs and various other controller
|
|
chips, analog to digital (and d-to-a) converters, and more.
|
|
MMC and SD cards can be accessed using SPI protocol; and for
|
|
DataFlash cards used in MMC sockets, SPI must always be used.
|
|
|
|
SPI is one of a family of similar protocols using a four wire
|
|
interface (select, clock, data in, data out) including Microwire
|
|
(half duplex), SSP, SSI, and PSP. This driver framework should
|
|
work with most such devices and controllers.
|
|
|
|
if SPI
|
|
|
|
config DM_SPI
|
|
bool "Enable Driver Model for SPI drivers"
|
|
depends on DM
|
|
help
|
|
Enable driver model for SPI. The SPI slave interface
|
|
(spi_setup_slave(), spi_xfer(), etc.) is then implemented by
|
|
the SPI uclass. Drivers provide methods to access the SPI
|
|
buses that they control. The uclass interface is defined in
|
|
include/spi.h. The existing spi_slave structure is attached
|
|
as 'parent data' to every slave on each bus. Slaves
|
|
typically use driver-private data instead of extending the
|
|
spi_slave structure.
|
|
|
|
config SPI_MEM
|
|
bool "SPI memory extension"
|
|
help
|
|
Enable this option if you want to enable the SPI memory extension.
|
|
This extension is meant to simplify interaction with SPI memories
|
|
by providing an high-level interface to send memory-like commands.
|
|
|
|
if DM_SPI
|
|
|
|
config ALTERA_SPI
|
|
bool "Altera SPI driver"
|
|
help
|
|
Enable the Altera SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Altera
|
|
IP core. Please find details on the "Embedded Peripherals IP
|
|
User Guide" of Altera.
|
|
|
|
config ATCSPI200_SPI
|
|
bool "Andestech ATCSPI200 SPI driver"
|
|
help
|
|
Enable the Andestech ATCSPI200 SPI driver. This driver can be
|
|
used to access the SPI flash on AE3XX and AE250 platforms embedding
|
|
this Andestech IP core.
|
|
|
|
config ATH79_SPI
|
|
bool "Atheros SPI driver"
|
|
depends on ARCH_ATH79
|
|
help
|
|
Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
|
|
to access SPI NOR flash and other SPI peripherals. This driver
|
|
uses driver model and requires a device tree binding to operate.
|
|
please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
|
|
|
|
config ATMEL_QSPI
|
|
bool "Atmel Quad SPI Controller"
|
|
depends on ARCH_AT91
|
|
help
|
|
Enable the Atmel Quad SPI controller in master mode. This driver
|
|
does not support generic SPI. The implementation supports only the
|
|
spi-mem interface.
|
|
|
|
config ATMEL_SPI
|
|
bool "Atmel SPI driver"
|
|
default y if ARCH_AT91
|
|
help
|
|
This enables driver for the Atmel SPI Controller, present on
|
|
many AT91 (ARM) chips. This driver can be used to access
|
|
the SPI Flash, such as AT25DF321.
|
|
|
|
config BCM63XX_HSSPI
|
|
bool "BCM63XX HSSPI driver"
|
|
depends on (ARCH_BMIPS || ARCH_BCM68360 || \
|
|
ARCH_BCM6858 || ARCH_BCM63158)
|
|
help
|
|
Enable the BCM6328 HSSPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Broadcom
|
|
SPI core.
|
|
|
|
config BCM63XX_SPI
|
|
bool "BCM6348 SPI driver"
|
|
depends on ARCH_BMIPS
|
|
help
|
|
Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding these Broadcom
|
|
SPI cores.
|
|
|
|
config BCMSTB_SPI
|
|
bool "BCMSTB SPI driver"
|
|
help
|
|
Enable the Broadcom set-top box SPI driver. This driver can
|
|
be used to access the SPI flash on platforms embedding this
|
|
Broadcom SPI core.
|
|
|
|
config CORTINA_SFLASH
|
|
bool "Cortina-Access Serial Flash controller driver"
|
|
depends on DM_SPI && SPI_MEM
|
|
help
|
|
Enable the Cortina-Access Serial Flash controller driver. This driver
|
|
can be used to access the SPI NOR/NAND flash on platforms embedding this
|
|
Cortina-Access IP core.
|
|
|
|
config CADENCE_QSPI
|
|
bool "Cadence QSPI driver"
|
|
help
|
|
Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
|
|
used to access the SPI NOR flash on platforms embedding this
|
|
Cadence IP core.
|
|
|
|
config CF_SPI
|
|
bool "ColdFire SPI driver"
|
|
help
|
|
Enable the ColdFire SPI driver. This driver can be used on
|
|
some m68k SoCs.
|
|
|
|
config DAVINCI_SPI
|
|
bool "Davinci & Keystone SPI driver"
|
|
depends on ARCH_DAVINCI || ARCH_KEYSTONE
|
|
help
|
|
Enable the Davinci SPI driver
|
|
|
|
config DESIGNWARE_SPI
|
|
bool "Designware SPI driver"
|
|
help
|
|
Enable the Designware SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Designware
|
|
IP core.
|
|
|
|
config EXYNOS_SPI
|
|
bool "Samsung Exynos SPI driver"
|
|
help
|
|
Enable the Samsung Exynos SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Samsung
|
|
Exynos IP core.
|
|
|
|
config FSL_DSPI
|
|
bool "Freescale DSPI driver"
|
|
help
|
|
Enable the Freescale DSPI driver. This driver can be used to
|
|
access the SPI NOR flash and SPI Data flash on platforms embedding
|
|
this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
|
|
use this driver.
|
|
|
|
config FSL_QSPI
|
|
bool "Freescale QSPI driver"
|
|
imply SPI_FLASH_BAR
|
|
help
|
|
Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
|
|
used to access the SPI NOR flash on platforms embedding this
|
|
Freescale IP core.
|
|
|
|
config FSL_QSPI_AHB_FULL_MAP
|
|
bool "Use full AHB memory map space"
|
|
depends on FSL_QSPI
|
|
default y if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M
|
|
help
|
|
Enable the Freescale QSPI driver to use full AHB memory map space for
|
|
flash access.
|
|
|
|
config ICH_SPI
|
|
bool "Intel ICH SPI driver"
|
|
help
|
|
Enable the Intel ICH SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Intel
|
|
ICH IP core.
|
|
|
|
config KIRKWOOD_SPI
|
|
bool "Marvell Kirkwood SPI Driver"
|
|
help
|
|
Enable support for SPI on various Marvell SoCs, such as
|
|
Kirkwood and Armada 375.
|
|
|
|
config MESON_SPIFC
|
|
bool "Amlogic Meson SPI Flash Controller driver"
|
|
depends on ARCH_MESON
|
|
help
|
|
Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
|
|
This driver can be used to access the SPI NOR flash chips on
|
|
Amlogic Meson SoCs.
|
|
|
|
config MPC8XX_SPI
|
|
bool "MPC8XX SPI Driver"
|
|
depends on MPC8xx
|
|
help
|
|
Enable support for SPI on MPC8XX
|
|
|
|
config MPC8XXX_SPI
|
|
bool "MPC8XXX SPI Driver"
|
|
help
|
|
Enable support for SPI on the MPC8XXX PowerPC SoCs.
|
|
|
|
config MSCC_BB_SPI
|
|
bool "MSCC bitbang SPI driver"
|
|
depends on SOC_VCOREIII
|
|
help
|
|
Enable MSCC bitbang SPI driver. This driver can be used on
|
|
MSCC SOCs.
|
|
|
|
config MT7620_SPI
|
|
bool "MediaTek MT7620 SPI driver"
|
|
depends on SOC_MT7620
|
|
help
|
|
Enable the MT7620 SPI driver. This driver can be used to access
|
|
generic SPI devices on MediaTek MT7620 SoC.
|
|
|
|
config MT7621_SPI
|
|
bool "MediaTek MT7621 SPI driver"
|
|
depends on SOC_MT7628
|
|
help
|
|
Enable the MT7621 SPI driver. This driver can be used to access
|
|
the SPI NOR flash on platforms embedding this Ralink / MediaTek
|
|
SPI core, like MT7621/7628/7688.
|
|
|
|
config MTK_SNOR
|
|
bool "Mediatek SPI-NOR controller driver"
|
|
depends on SPI_MEM
|
|
help
|
|
Enable the Mediatek SPINOR controller driver. This driver has
|
|
better read/write performance with NOR.
|
|
|
|
config MTK_SNFI_SPI
|
|
bool "Mediatek SPI memory controller driver"
|
|
depends on SPI_MEM
|
|
help
|
|
Enable the Mediatek SPI memory controller driver. This driver is
|
|
originally based on the MediaTek SNFI IP core. It can only be
|
|
used to access SPI memory devices like SPI-NOR or SPI-NAND on
|
|
platforms embedding this IP core, like MT7622/M7629.
|
|
|
|
config MVEBU_A3700_SPI
|
|
bool "Marvell Armada 3700 SPI driver"
|
|
select CLK_ARMADA_3720
|
|
help
|
|
Enable the Marvell Armada 3700 SPI driver. This driver can be
|
|
used to access the SPI NOR flash on platforms embedding this
|
|
Marvell IP core.
|
|
|
|
config MXS_SPI
|
|
bool "MXS SPI Driver"
|
|
help
|
|
Enable the MXS SPI controller driver. This driver can be used
|
|
on the i.MX23 and i.MX28 SoCs.
|
|
|
|
config NXP_FSPI
|
|
bool "NXP FlexSPI driver"
|
|
depends on SPI_MEM
|
|
help
|
|
Enable the NXP FlexSPI (FSPI) driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this NXP IP core.
|
|
|
|
config OCTEON_SPI
|
|
bool "Octeon SPI driver"
|
|
depends on DM_PCI && (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2)
|
|
help
|
|
Enable the Octeon SPI driver. This driver can be used to
|
|
access the SPI NOR flash on Octeon II/III and OcteonTX/TX2
|
|
SoC platforms.
|
|
|
|
config OMAP3_SPI
|
|
bool "McSPI driver for OMAP"
|
|
help
|
|
SPI master controller for OMAP24XX and later Multichannel SPI
|
|
(McSPI). This driver be used to access SPI chips on platforms
|
|
embedding this OMAP3 McSPI IP core.
|
|
|
|
config PIC32_SPI
|
|
bool "Microchip PIC32 SPI driver"
|
|
depends on MACH_PIC32
|
|
help
|
|
Enable the Microchip PIC32 SPI driver. This driver can be used
|
|
to access the SPI NOR flash, MMC-over-SPI on platforms based on
|
|
Microchip PIC32 family devices.
|
|
|
|
config PL022_SPI
|
|
bool "ARM AMBA PL022 SSP controller driver"
|
|
depends on ARM
|
|
help
|
|
This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
|
|
controller. If you have an embedded system with an AMBA(R)
|
|
bus and a PL022 controller, say Y or M here.
|
|
|
|
config SPI_QUP
|
|
bool "Qualcomm SPI controller with QUP interface"
|
|
depends on ARCH_IPQ40XX
|
|
help
|
|
Qualcomm Universal Peripheral (QUP) core is an AHB slave that
|
|
provides a common data path (an output FIFO and an input FIFO)
|
|
for serial peripheral interface (SPI) mini-core. SPI in master
|
|
mode supports up to 50MHz, up to four chip selects, programmable
|
|
data path from 4 bits to 32 bits and numerous protocol variants.
|
|
|
|
config RENESAS_RPC_SPI
|
|
bool "Renesas RPC SPI driver"
|
|
depends on RCAR_GEN3 || RZA1
|
|
imply SPI_FLASH_BAR
|
|
help
|
|
Enable the Renesas RPC SPI driver, used to access SPI NOR flash
|
|
on Renesas RCar Gen3 SoCs. This uses driver model and requires a
|
|
device tree binding to operate.
|
|
|
|
config ROCKCHIP_SPI
|
|
bool "Rockchip SPI driver"
|
|
help
|
|
Enable the Rockchip SPI driver, used to access SPI NOR flash and
|
|
other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
|
|
This uses driver model and requires a device tree binding to
|
|
operate.
|
|
|
|
config SANDBOX_SPI
|
|
bool "Sandbox SPI driver"
|
|
depends on SANDBOX && DM
|
|
help
|
|
Enable SPI support for sandbox. This is an emulation of a real SPI
|
|
bus. Devices can be attached to the bus using the device tree
|
|
which specifies the driver to use. As an example, see this device
|
|
tree fragment from sandbox.dts. It shows that the SPI bus has a
|
|
single flash device on chip select 0 which is emulated by the driver
|
|
for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.
|
|
|
|
spi@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0>;
|
|
compatible = "sandbox,spi";
|
|
cs-gpios = <0>, <&gpio_a 0>;
|
|
flash@0 {
|
|
reg = <0>;
|
|
compatible = "spansion,m25p16", "jedec,spi-nor";
|
|
spi-max-frequency = <40000000>;
|
|
sandbox,filename = "spi.bin";
|
|
};
|
|
};
|
|
|
|
config SPI_SIFIVE
|
|
bool "SiFive SPI driver"
|
|
help
|
|
This driver supports the SiFive SPI IP. If unsure say N.
|
|
Enable the SiFive SPI controller driver.
|
|
|
|
The SiFive SPI controller driver is found on various SiFive SoCs.
|
|
|
|
config SOFT_SPI
|
|
bool "Soft SPI driver"
|
|
help
|
|
Enable Soft SPI driver. This driver is to use GPIO simulate
|
|
the SPI protocol.
|
|
|
|
config SPI_SUNXI
|
|
bool "Allwinner SoC SPI controllers"
|
|
default ARCH_SUNXI
|
|
help
|
|
Enable the Allwinner SoC SPi controller driver.
|
|
|
|
Same controller driver can reuse in all Allwinner SoC variants.
|
|
|
|
config STM32_QSPI
|
|
bool "STM32F7 QSPI driver"
|
|
depends on STM32F4 || STM32F7 || ARCH_STM32MP
|
|
help
|
|
Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
|
|
used to access the SPI NOR flash chips on platforms embedding
|
|
this ST IP core.
|
|
|
|
config STM32_SPI
|
|
bool "STM32 SPI driver"
|
|
depends on ARCH_STM32MP
|
|
help
|
|
Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP
|
|
SoCs. This uses driver model and requires a device tree binding to
|
|
operate.
|
|
|
|
config TEGRA114_SPI
|
|
bool "nVidia Tegra114 SPI driver"
|
|
help
|
|
Enable the nVidia Tegra114 SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this nVidia Tegra114
|
|
IP core.
|
|
|
|
This controller is different than the older SoCs SPI controller and
|
|
also register interface get changed with this controller.
|
|
|
|
config TEGRA20_SFLASH
|
|
bool "nVidia Tegra20 Serial Flash controller driver"
|
|
help
|
|
Enable the nVidia Tegra20 Serial Flash controller driver. This driver
|
|
can be used to access the SPI NOR flash on platforms embedding this
|
|
nVidia Tegra20 IP core.
|
|
|
|
config TEGRA20_SLINK
|
|
bool "nVidia Tegra20/Tegra30 SLINK driver"
|
|
help
|
|
Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
|
|
be used to access the SPI NOR flash on platforms embedding this
|
|
nVidia Tegra20/Tegra30 IP cores.
|
|
|
|
config TEGRA210_QSPI
|
|
bool "nVidia Tegra210 QSPI driver"
|
|
help
|
|
Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
|
|
be used to access SPI chips on platforms embedding this
|
|
NVIDIA Tegra210 IP core.
|
|
|
|
config TI_QSPI
|
|
bool "TI QSPI driver"
|
|
imply TI_EDMA3
|
|
help
|
|
Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
|
|
This driver support spi flash single, quad and memory reads.
|
|
|
|
config UNIPHIER_SPI
|
|
bool "Socionext UniPhier SPI driver"
|
|
depends on ARCH_UNIPHIER
|
|
help
|
|
Enable the Socionext UniPhier SPI driver. This driver can
|
|
be used to access SPI chips on platforms embedding this
|
|
UniPhier IP core.
|
|
|
|
config XILINX_SPI
|
|
bool "Xilinx SPI driver"
|
|
help
|
|
Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
|
|
controller support 8 bit SPI transfers only, with or w/o FIFO.
|
|
For more info on Xilinx SPI Register Definitions and Overview
|
|
see driver file - drivers/spi/xilinx_spi.c
|
|
|
|
config ZYNQ_SPI
|
|
bool "Zynq SPI driver"
|
|
help
|
|
Enable the Zynq SPI driver. This driver can be used to
|
|
access the SPI NOR flash on platforms embedding this Zynq
|
|
SPI IP core.
|
|
|
|
config ZYNQ_QSPI
|
|
bool "Zynq QSPI driver"
|
|
imply SPI_FLASH_BAR
|
|
help
|
|
Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
|
|
used to access the SPI NOR flash on platforms embedding this
|
|
Zynq QSPI IP core. This IP is used to connect the flash in
|
|
4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
|
|
|
|
config ZYNQMP_GQSPI
|
|
bool "Configure ZynqMP Generic QSPI"
|
|
help
|
|
This option is used to enable ZynqMP QSPI controller driver which
|
|
is used to communicate with qspi flash devices.
|
|
|
|
endif # if DM_SPI
|
|
|
|
config FSL_ESPI
|
|
bool "Freescale eSPI driver"
|
|
imply SPI_FLASH_BAR
|
|
help
|
|
Enable the Freescale eSPI driver. This driver can be used to
|
|
access the SPI interface and SPI NOR flash on platforms embedding
|
|
this Freescale eSPI IP core.
|
|
|
|
config SH_QSPI
|
|
bool "Renesas Quad SPI driver"
|
|
help
|
|
Enable the Renesas Quad SPI controller driver. This driver can be
|
|
used on Renesas SoCs.
|
|
|
|
config MXC_SPI
|
|
bool "MXC SPI Driver"
|
|
help
|
|
Enable the MXC SPI controller driver. This driver can be used
|
|
on various i.MX SoCs such as i.MX31/35/51/6/7.
|
|
|
|
endif # menu "SPI Support"
|