mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-19 11:18:28 +00:00
fd6e0b0525
This patch add a new SPI driver for MSCC SOCs that does not sport the designware SPI hardware controller. Performance gain: 7.664 seconds vs. 17.633 for 1 Mbyte write. Signed-off-by: Lars Povlsen <lars.povlsen@microchip.com> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
383 lines
11 KiB
Text
383 lines
11 KiB
Text
menuconfig SPI
|
|
bool "SPI Support"
|
|
|
|
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.
|
|
|
|
if DM_SPI
|
|
|
|
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.
|
|
|
|
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_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
|
|
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 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 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 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 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 MT7621_SPI
|
|
bool "MediaTek MT7621 SPI driver"
|
|
depends on ARCH_MT7620
|
|
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_QSPI
|
|
bool "Mediatek QSPI driver"
|
|
help
|
|
Enable the Mediatek QSPI driver. This driver can be
|
|
used to access the SPI NOR flash on platforms embedding this
|
|
Mediatek QSPI IP core.
|
|
|
|
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 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 RENESAS_RPC_SPI
|
|
bool "Renesas RPC SPI driver"
|
|
depends on RCAR_GEN3
|
|
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", "sandbox,spi-flash";
|
|
spi-max-frequency = <40000000>;
|
|
sandbox,filename = "spi.bin";
|
|
};
|
|
};
|
|
|
|
config STM32_QSPI
|
|
bool "STM32F7 QSPI driver"
|
|
depends on STM32F7
|
|
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 SUN4I_SPI
|
|
bool "Allwinner A10 SoCs SPI controller"
|
|
help
|
|
SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
|
|
|
|
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 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"
|
|
depends on ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
|
|
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"
|
|
depends on ARCH_ZYNQ
|
|
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"
|
|
depends on ARCH_ZYNQMP || ARCH_VERSAL
|
|
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 SOFT_SPI
|
|
bool "Soft SPI driver"
|
|
help
|
|
Enable Soft SPI driver. This driver is to use GPIO simulate
|
|
the SPI protocol.
|
|
|
|
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 CF_SPI
|
|
bool "ColdFire SPI driver"
|
|
help
|
|
Enable the ColdFire SPI driver. This driver can be used on
|
|
some m68k SoCs.
|
|
|
|
config FSL_ESPI
|
|
bool "Freescale eSPI driver"
|
|
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 FSL_QSPI
|
|
bool "Freescale QSPI driver"
|
|
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 DAVINCI_SPI
|
|
bool "Davinci & Keystone SPI driver"
|
|
depends on ARCH_DAVINCI || ARCH_KEYSTONE
|
|
help
|
|
Enable the Davinci SPI driver
|
|
|
|
config SH_SPI
|
|
bool "SuperH SPI driver"
|
|
help
|
|
Enable the SuperH SPI controller driver. This driver can be used
|
|
on various SuperH SoCs, such as SH7757.
|
|
|
|
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 TI_QSPI
|
|
bool "TI QSPI driver"
|
|
help
|
|
Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
|
|
This driver support spi flash single, quad and memory reads.
|
|
|
|
config KIRKWOOD_SPI
|
|
bool "Marvell Kirkwood SPI Driver"
|
|
help
|
|
Enable support for SPI on various Marvell SoCs, such as
|
|
Kirkwood and Armada 375.
|
|
|
|
config LPC32XX_SSP
|
|
bool "LPC32XX SPI Driver"
|
|
help
|
|
Enable support for SPI on LPC32xx
|
|
|
|
config MPC8XXX_SPI
|
|
bool "MPC8XXX SPI Driver"
|
|
help
|
|
Enable support for SPI on the MPC8XXX PowerPC 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.
|
|
|
|
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 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.
|
|
|
|
endif # menu "SPI Support"
|