xref: /kernel/linux/linux-6.6/drivers/spi/Kconfig (revision 62306a36)
162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# SPI driver configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_cimenuconfig SPI
662306a36Sopenharmony_ci	bool "SPI support"
762306a36Sopenharmony_ci	depends on HAS_IOMEM
862306a36Sopenharmony_ci	help
962306a36Sopenharmony_ci	  The "Serial Peripheral Interface" is a low level synchronous
1062306a36Sopenharmony_ci	  protocol.  Chips that support SPI can have data transfer rates
1162306a36Sopenharmony_ci	  up to several tens of Mbit/sec.  Chips are addressed with a
1262306a36Sopenharmony_ci	  controller and a chipselect.  Most SPI slaves don't support
1362306a36Sopenharmony_ci	  dynamic device discovery; some are even write-only or read-only.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	  SPI is widely used by microcontrollers to talk with sensors,
1662306a36Sopenharmony_ci	  eeprom and flash memory, codecs and various other controller
1762306a36Sopenharmony_ci	  chips, analog to digital (and d-to-a) converters, and more.
1862306a36Sopenharmony_ci	  MMC and SD cards can be accessed using SPI protocol; and for
1962306a36Sopenharmony_ci	  DataFlash cards used in MMC sockets, SPI must always be used.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	  SPI is one of a family of similar protocols using a four wire
2262306a36Sopenharmony_ci	  interface (select, clock, data in, data out) including Microwire
2362306a36Sopenharmony_ci	  (half duplex), SSP, SSI, and PSP.  This driver framework should
2462306a36Sopenharmony_ci	  work with most such devices and controllers.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciif SPI
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciconfig SPI_DEBUG
2962306a36Sopenharmony_ci	bool "Debug support for SPI drivers"
3062306a36Sopenharmony_ci	depends on DEBUG_KERNEL
3162306a36Sopenharmony_ci	help
3262306a36Sopenharmony_ci	  Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
3362306a36Sopenharmony_ci	  sysfs, and debugfs support in SPI controller and protocol drivers.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci#
3662306a36Sopenharmony_ci# MASTER side ... talking to discrete SPI slave chips including microcontrollers
3762306a36Sopenharmony_ci#
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciconfig SPI_MASTER
4062306a36Sopenharmony_ci#	bool "SPI Master Support"
4162306a36Sopenharmony_ci	bool
4262306a36Sopenharmony_ci	default SPI
4362306a36Sopenharmony_ci	help
4462306a36Sopenharmony_ci	  If your system has an master-capable SPI controller (which
4562306a36Sopenharmony_ci	  provides the clock and chipselect), you can enable that
4662306a36Sopenharmony_ci	  controller and the protocol drivers for the SPI slave chips
4762306a36Sopenharmony_ci	  that are connected.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciif SPI_MASTER
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciconfig SPI_MEM
5262306a36Sopenharmony_ci	bool "SPI memory extension"
5362306a36Sopenharmony_ci	help
5462306a36Sopenharmony_ci	  Enable this option if you want to enable the SPI memory extension.
5562306a36Sopenharmony_ci	  This extension is meant to simplify interaction with SPI memories
5662306a36Sopenharmony_ci	  by providing a high-level interface to send memory-like commands.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_cicomment "SPI Master Controller Drivers"
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig SPI_ALTERA
6162306a36Sopenharmony_ci	tristate "Altera SPI Controller platform driver"
6262306a36Sopenharmony_ci	select SPI_ALTERA_CORE
6362306a36Sopenharmony_ci	select REGMAP_MMIO
6462306a36Sopenharmony_ci	help
6562306a36Sopenharmony_ci	  This is the driver for the Altera SPI Controller.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciconfig SPI_ALTERA_CORE
6862306a36Sopenharmony_ci	tristate "Altera SPI Controller core code" if COMPILE_TEST
6962306a36Sopenharmony_ci	select REGMAP
7062306a36Sopenharmony_ci	help
7162306a36Sopenharmony_ci	  "The core code for the Altera SPI Controller"
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig SPI_ALTERA_DFL
7462306a36Sopenharmony_ci	tristate "DFL bus driver for Altera SPI Controller"
7562306a36Sopenharmony_ci	depends on FPGA_DFL
7662306a36Sopenharmony_ci	select SPI_ALTERA_CORE
7762306a36Sopenharmony_ci	help
7862306a36Sopenharmony_ci	  This is a Device Feature List (DFL) bus driver for the
7962306a36Sopenharmony_ci	  Altera SPI master controller.  The SPI master is connected
8062306a36Sopenharmony_ci	  to a SPI slave to Avalon bridge in a Intel MAX BMC.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciconfig SPI_AMLOGIC_SPIFC_A1
8362306a36Sopenharmony_ci	tristate "Amlogic A1 SPIFC controller"
8462306a36Sopenharmony_ci	depends on ARCH_MESON || COMPILE_TEST
8562306a36Sopenharmony_ci	help
8662306a36Sopenharmony_ci	  This enables master mode support for the SPIFC (SPI flash
8762306a36Sopenharmony_ci	  controller) available in Amlogic A1 (A113L SoC).
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciconfig SPI_AR934X
9062306a36Sopenharmony_ci	tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
9162306a36Sopenharmony_ci	depends on ATH79 || COMPILE_TEST
9262306a36Sopenharmony_ci	help
9362306a36Sopenharmony_ci	  This enables support for the SPI controller present on the
9462306a36Sopenharmony_ci	  Qualcomm Atheros AR934X/QCA95XX SoCs.
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciconfig SPI_ATH79
9762306a36Sopenharmony_ci	tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
9862306a36Sopenharmony_ci	depends on ATH79 || COMPILE_TEST
9962306a36Sopenharmony_ci	select SPI_BITBANG
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  This enables support for the SPI controller present on the
10262306a36Sopenharmony_ci	  Atheros AR71XX/AR724X/AR913X SoCs.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciconfig SPI_ARMADA_3700
10562306a36Sopenharmony_ci	tristate "Marvell Armada 3700 SPI Controller"
10662306a36Sopenharmony_ci	depends on (ARCH_MVEBU && OF) || COMPILE_TEST
10762306a36Sopenharmony_ci	help
10862306a36Sopenharmony_ci	  This enables support for the SPI controller present on the
10962306a36Sopenharmony_ci	  Marvell Armada 3700 SoCs.
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciconfig SPI_ASPEED_SMC
11262306a36Sopenharmony_ci	tristate "Aspeed flash controllers in SPI mode"
11362306a36Sopenharmony_ci	depends on ARCH_ASPEED || COMPILE_TEST
11462306a36Sopenharmony_ci	depends on OF
11562306a36Sopenharmony_ci	help
11662306a36Sopenharmony_ci	  This enables support for the Firmware Memory controller (FMC)
11762306a36Sopenharmony_ci	  in the Aspeed AST2600, AST2500 and AST2400 SoCs when attached
11862306a36Sopenharmony_ci	  to SPI NOR chips, and support for the SPI flash memory
11962306a36Sopenharmony_ci	  controller (SPI) for the host firmware. The implementation
12062306a36Sopenharmony_ci	  only supports SPI NOR.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciconfig SPI_ATMEL
12362306a36Sopenharmony_ci	tristate "Atmel SPI Controller"
12462306a36Sopenharmony_ci	depends on ARCH_AT91 || COMPILE_TEST
12562306a36Sopenharmony_ci	depends on OF
12662306a36Sopenharmony_ci	help
12762306a36Sopenharmony_ci	  This selects a driver for the Atmel SPI Controller, present on
12862306a36Sopenharmony_ci	  many AT91 ARM chips.
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ciconfig SPI_AT91_USART
13162306a36Sopenharmony_ci	tristate "Atmel USART Controller SPI driver"
13262306a36Sopenharmony_ci	depends on (ARCH_AT91 || COMPILE_TEST)
13362306a36Sopenharmony_ci	depends on MFD_AT91_USART
13462306a36Sopenharmony_ci	help
13562306a36Sopenharmony_ci	  This selects a driver for the AT91 USART Controller as SPI Master,
13662306a36Sopenharmony_ci	  present on AT91 and SAMA5 SoC series.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciconfig SPI_ATMEL_QUADSPI
13962306a36Sopenharmony_ci	tristate "Atmel Quad SPI Controller"
14062306a36Sopenharmony_ci	depends on ARCH_AT91 || COMPILE_TEST
14162306a36Sopenharmony_ci	depends on OF && HAS_IOMEM
14262306a36Sopenharmony_ci	help
14362306a36Sopenharmony_ci	  This enables support for the Quad SPI controller in master mode.
14462306a36Sopenharmony_ci	  This driver does not support generic SPI. The implementation only
14562306a36Sopenharmony_ci	  supports spi-mem interface.
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciconfig SPI_AU1550
14862306a36Sopenharmony_ci	tristate "Au1550/Au1200/Au1300 SPI Controller"
14962306a36Sopenharmony_ci	depends on MIPS_ALCHEMY
15062306a36Sopenharmony_ci	select SPI_BITBANG
15162306a36Sopenharmony_ci	help
15262306a36Sopenharmony_ci	  If you say yes to this option, support will be included for the
15362306a36Sopenharmony_ci	  PSC SPI controller found on Au1550, Au1200 and Au1300 series.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ciconfig SPI_AXI_SPI_ENGINE
15662306a36Sopenharmony_ci	tristate "Analog Devices AXI SPI Engine controller"
15762306a36Sopenharmony_ci	depends on HAS_IOMEM
15862306a36Sopenharmony_ci	help
15962306a36Sopenharmony_ci	  This enables support for the Analog Devices AXI SPI Engine SPI controller.
16062306a36Sopenharmony_ci	  It is part of the SPI Engine framework that is used in some Analog Devices
16162306a36Sopenharmony_ci	  reference designs for FPGAs.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciconfig SPI_BCM2835
16462306a36Sopenharmony_ci	tristate "BCM2835 SPI controller"
16562306a36Sopenharmony_ci	depends on GPIOLIB
16662306a36Sopenharmony_ci	depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
16762306a36Sopenharmony_ci	help
16862306a36Sopenharmony_ci	  This selects a driver for the Broadcom BCM2835 SPI master.
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	  The BCM2835 contains two types of SPI master controller; the
17162306a36Sopenharmony_ci	  "universal SPI master", and the regular SPI controller. This driver
17262306a36Sopenharmony_ci	  is for the regular SPI controller. Slave mode operation is not also
17362306a36Sopenharmony_ci	  not supported.
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciconfig SPI_BCM2835AUX
17662306a36Sopenharmony_ci	tristate "BCM2835 SPI auxiliary controller"
17762306a36Sopenharmony_ci	depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
17862306a36Sopenharmony_ci	help
17962306a36Sopenharmony_ci	  This selects a driver for the Broadcom BCM2835 SPI aux master.
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci	  The BCM2835 contains two types of SPI master controller; the
18262306a36Sopenharmony_ci	  "universal SPI master", and the regular SPI controller.
18362306a36Sopenharmony_ci	  This driver is for the universal/auxiliary SPI controller.
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ciconfig SPI_BCM63XX
18662306a36Sopenharmony_ci	tristate "Broadcom BCM63xx SPI controller"
18762306a36Sopenharmony_ci	depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
18862306a36Sopenharmony_ci	help
18962306a36Sopenharmony_ci	  Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ciconfig SPI_BCM63XX_HSSPI
19262306a36Sopenharmony_ci	tristate "Broadcom BCM63XX HS SPI controller driver"
19362306a36Sopenharmony_ci	depends on BCM63XX || BMIPS_GENERIC || ARCH_BCMBCA || COMPILE_TEST
19462306a36Sopenharmony_ci	help
19562306a36Sopenharmony_ci	  This enables support for the High Speed SPI controller present on
19662306a36Sopenharmony_ci	  newer Broadcom BCM63XX SoCs.
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciconfig SPI_BCM_QSPI
19962306a36Sopenharmony_ci	tristate "Broadcom BSPI and MSPI controller support"
20062306a36Sopenharmony_ci	depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
20162306a36Sopenharmony_ci			BMIPS_GENERIC || COMPILE_TEST
20262306a36Sopenharmony_ci	default ARCH_BCM_IPROC
20362306a36Sopenharmony_ci	help
20462306a36Sopenharmony_ci	  Enables support for the Broadcom SPI flash and MSPI controller.
20562306a36Sopenharmony_ci	  Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
20662306a36Sopenharmony_ci	  based platforms. This driver works for both SPI master for SPI NOR
20762306a36Sopenharmony_ci	  flash device as well as MSPI device.
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ciconfig SPI_BCMBCA_HSSPI
21062306a36Sopenharmony_ci	tristate "Broadcom BCMBCA HS SPI controller driver"
21162306a36Sopenharmony_ci	depends on ARCH_BCMBCA || COMPILE_TEST
21262306a36Sopenharmony_ci	help
21362306a36Sopenharmony_ci	  This enables support for the High Speed SPI controller present on
21462306a36Sopenharmony_ci	  newer Broadcom BCMBCA SoCs. These SoCs include an updated SPI controller
21562306a36Sopenharmony_ci	  that adds the capability to allow the driver to control chip select
21662306a36Sopenharmony_ci	  explicitly.
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciconfig SPI_BITBANG
21962306a36Sopenharmony_ci	tristate "Utilities for Bitbanging SPI masters"
22062306a36Sopenharmony_ci	help
22162306a36Sopenharmony_ci	  With a few GPIO pins, your system can bitbang the SPI protocol.
22262306a36Sopenharmony_ci	  Select this to get SPI support through I/O pins (GPIO, parallel
22362306a36Sopenharmony_ci	  port, etc).  Or, some systems' SPI master controller drivers use
22462306a36Sopenharmony_ci	  this code to manage the per-word or per-transfer accesses to the
22562306a36Sopenharmony_ci	  hardware shift registers.
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci	  This is library code, and is automatically selected by drivers that
22862306a36Sopenharmony_ci	  need it.  You only need to select this explicitly to support driver
22962306a36Sopenharmony_ci	  modules that aren't part of this kernel tree.
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ciconfig SPI_BUTTERFLY
23262306a36Sopenharmony_ci	tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
23362306a36Sopenharmony_ci	depends on PARPORT
23462306a36Sopenharmony_ci	select SPI_BITBANG
23562306a36Sopenharmony_ci	help
23662306a36Sopenharmony_ci	  This uses a custom parallel port cable to connect to an AVR
23762306a36Sopenharmony_ci	  Butterfly <http://www.atmel.com/products/avr/butterfly>, an
23862306a36Sopenharmony_ci	  inexpensive battery powered microcontroller evaluation board.
23962306a36Sopenharmony_ci	  This same cable can be used to flash new firmware.
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciconfig SPI_CADENCE
24262306a36Sopenharmony_ci	tristate "Cadence SPI controller"
24362306a36Sopenharmony_ci	help
24462306a36Sopenharmony_ci	  This selects the Cadence SPI controller master driver
24562306a36Sopenharmony_ci	  used by Xilinx Zynq and ZynqMP.
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ciconfig SPI_CADENCE_QUADSPI
24862306a36Sopenharmony_ci	tristate "Cadence Quad SPI controller"
24962306a36Sopenharmony_ci	depends on OF && (ARM || ARM64 || X86 || RISCV || COMPILE_TEST)
25062306a36Sopenharmony_ci	help
25162306a36Sopenharmony_ci	  Enable support for the Cadence Quad SPI Flash controller.
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci	  Cadence QSPI is a specialized controller for connecting an SPI
25462306a36Sopenharmony_ci	  Flash over 1/2/4-bit wide bus. Enable this option if you have a
25562306a36Sopenharmony_ci	  device with a Cadence QSPI controller and want to access the
25662306a36Sopenharmony_ci	  Flash as an MTD device.
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ciconfig SPI_CADENCE_XSPI
25962306a36Sopenharmony_ci	tristate "Cadence XSPI controller"
26062306a36Sopenharmony_ci	depends on OF && HAS_IOMEM
26162306a36Sopenharmony_ci	depends on SPI_MEM
26262306a36Sopenharmony_ci	help
26362306a36Sopenharmony_ci	  Enable support for the Cadence XSPI Flash controller.
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ci	  Cadence XSPI is a specialized controller for connecting an SPI
26662306a36Sopenharmony_ci	  Flash over up to 8-bit wide bus. Enable this option if you have a
26762306a36Sopenharmony_ci	  device with a Cadence XSPI controller and want to access the
26862306a36Sopenharmony_ci	  Flash as an MTD device.
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ciconfig SPI_CLPS711X
27162306a36Sopenharmony_ci	tristate "CLPS711X host SPI controller"
27262306a36Sopenharmony_ci	depends on ARCH_CLPS711X || COMPILE_TEST
27362306a36Sopenharmony_ci	help
27462306a36Sopenharmony_ci	  This enables dedicated general purpose SPI/Microwire1-compatible
27562306a36Sopenharmony_ci	  master mode interface (SSI1) for CLPS711X-based CPUs.
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ciconfig SPI_COLDFIRE_QSPI
27862306a36Sopenharmony_ci	tristate "Freescale Coldfire QSPI controller"
27962306a36Sopenharmony_ci	depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
28062306a36Sopenharmony_ci	help
28162306a36Sopenharmony_ci	  This enables support for the Coldfire QSPI controller in master
28262306a36Sopenharmony_ci	  mode.
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ciconfig SPI_CS42L43
28562306a36Sopenharmony_ci	tristate "Cirrus Logic CS42L43 SPI controller"
28662306a36Sopenharmony_ci	depends on MFD_CS42L43 && PINCTRL_CS42L43
28762306a36Sopenharmony_ci	help
28862306a36Sopenharmony_ci	  This enables support for the SPI controller inside the Cirrus Logic
28962306a36Sopenharmony_ci	  CS42L43 audio codec.
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ciconfig SPI_DAVINCI
29262306a36Sopenharmony_ci	tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
29362306a36Sopenharmony_ci	depends on ARCH_DAVINCI || ARCH_KEYSTONE || COMPILE_TEST
29462306a36Sopenharmony_ci	select SPI_BITBANG
29562306a36Sopenharmony_ci	help
29662306a36Sopenharmony_ci	  SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ciconfig SPI_DESIGNWARE
29962306a36Sopenharmony_ci	tristate "DesignWare SPI controller core support"
30062306a36Sopenharmony_ci	imply SPI_MEM
30162306a36Sopenharmony_ci	help
30262306a36Sopenharmony_ci	  general driver for SPI controller core from DesignWare
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ciif SPI_DESIGNWARE
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ciconfig SPI_DW_DMA
30762306a36Sopenharmony_ci	bool "DMA support for DW SPI controller"
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ciconfig SPI_DW_PCI
31062306a36Sopenharmony_ci	tristate "PCI interface driver for DW SPI core"
31162306a36Sopenharmony_ci	depends on PCI
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ciconfig SPI_DW_MMIO
31462306a36Sopenharmony_ci	tristate "Memory-mapped io interface driver for DW SPI core"
31562306a36Sopenharmony_ci	depends on HAS_IOMEM
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ciconfig SPI_DW_BT1
31862306a36Sopenharmony_ci	tristate "Baikal-T1 SPI driver for DW SPI core"
31962306a36Sopenharmony_ci	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
32062306a36Sopenharmony_ci	select MULTIPLEXER
32162306a36Sopenharmony_ci	help
32262306a36Sopenharmony_ci	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
32362306a36Sopenharmony_ci	  controllers. Two of them are pretty much normal: with IRQ, DMA,
32462306a36Sopenharmony_ci	  FIFOs of 64 words depth, 4x CSs, but the third one as being a
32562306a36Sopenharmony_ci	  part of the Baikal-T1 System Boot Controller has got a very
32662306a36Sopenharmony_ci	  limited resources: no IRQ, no DMA, only a single native
32762306a36Sopenharmony_ci	  chip-select and Tx/Rx FIFO with just 8 words depth available.
32862306a36Sopenharmony_ci	  The later one is normally connected to an external SPI-nor flash
32962306a36Sopenharmony_ci	  of 128Mb (in general can be of bigger size).
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ciconfig SPI_DW_BT1_DIRMAP
33262306a36Sopenharmony_ci	bool "Directly mapped Baikal-T1 Boot SPI flash support"
33362306a36Sopenharmony_ci	depends on SPI_DW_BT1
33462306a36Sopenharmony_ci	help
33562306a36Sopenharmony_ci	  Directly mapped SPI flash memory is an interface specific to the
33662306a36Sopenharmony_ci	  Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
33762306a36Sopenharmony_ci	  can be used to access a peripheral memory device just by
33862306a36Sopenharmony_ci	  reading/writing data from/to it. Note that the system APB bus
33962306a36Sopenharmony_ci	  will stall during each IO from/to the dirmap region until the
34062306a36Sopenharmony_ci	  operation is finished. So try not to use it concurrently with
34162306a36Sopenharmony_ci	  time-critical tasks (like the SPI memory operations implemented
34262306a36Sopenharmony_ci	  in this driver).
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ciendif
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ciconfig SPI_DLN2
34762306a36Sopenharmony_ci       tristate "Diolan DLN-2 USB SPI adapter"
34862306a36Sopenharmony_ci       depends on MFD_DLN2
34962306a36Sopenharmony_ci       help
35062306a36Sopenharmony_ci	 If you say yes to this option, support will be included for Diolan
35162306a36Sopenharmony_ci	 DLN2, a USB to SPI interface.
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci	 This driver can also be built as a module.  If so, the module
35462306a36Sopenharmony_ci	 will be called spi-dln2.
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ciconfig SPI_EP93XX
35762306a36Sopenharmony_ci	tristate "Cirrus Logic EP93xx SPI controller"
35862306a36Sopenharmony_ci	depends on ARCH_EP93XX || COMPILE_TEST
35962306a36Sopenharmony_ci	help
36062306a36Sopenharmony_ci	  This enables using the Cirrus EP93xx SPI controller in master
36162306a36Sopenharmony_ci	  mode.
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ciconfig SPI_FALCON
36462306a36Sopenharmony_ci	bool "Falcon SPI controller support"
36562306a36Sopenharmony_ci	depends on SOC_FALCON
36662306a36Sopenharmony_ci	help
36762306a36Sopenharmony_ci	  The external bus unit (EBU) found on the FALC-ON SoC has SPI
36862306a36Sopenharmony_ci	  emulation that is designed for serial flash access. This driver
36962306a36Sopenharmony_ci	  has only been tested with m25p80 type chips. The hardware has no
37062306a36Sopenharmony_ci	  support for other types of SPI peripherals.
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ciconfig SPI_FSI
37362306a36Sopenharmony_ci	tristate "FSI SPI driver"
37462306a36Sopenharmony_ci	depends on FSI
37562306a36Sopenharmony_ci	help
37662306a36Sopenharmony_ci	  This enables support for the driver for FSI bus attached SPI
37762306a36Sopenharmony_ci	  controllers.
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ciconfig SPI_FSL_LPSPI
38062306a36Sopenharmony_ci	tristate "Freescale i.MX LPSPI controller"
38162306a36Sopenharmony_ci	depends on ARCH_MXC || COMPILE_TEST
38262306a36Sopenharmony_ci	help
38362306a36Sopenharmony_ci	  This enables Freescale i.MX LPSPI controllers in master mode.
38462306a36Sopenharmony_ci
38562306a36Sopenharmony_ciconfig SPI_FSL_QUADSPI
38662306a36Sopenharmony_ci	tristate "Freescale QSPI controller"
38762306a36Sopenharmony_ci	depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
38862306a36Sopenharmony_ci	depends on HAS_IOMEM
38962306a36Sopenharmony_ci	help
39062306a36Sopenharmony_ci	  This enables support for the Quad SPI controller in master mode.
39162306a36Sopenharmony_ci	  Up to four flash chips can be connected on two buses with two
39262306a36Sopenharmony_ci	  chipselects each.
39362306a36Sopenharmony_ci	  This controller does not support generic SPI messages. It only
39462306a36Sopenharmony_ci	  supports the high-level SPI memory interface.
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ciconfig SPI_GXP
39762306a36Sopenharmony_ci	tristate "GXP SPI driver"
39862306a36Sopenharmony_ci	depends on ARCH_HPE || COMPILE_TEST
39962306a36Sopenharmony_ci	help
40062306a36Sopenharmony_ci	  This enables support for the driver for GXP bus attached SPI
40162306a36Sopenharmony_ci	  controllers.
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ciconfig SPI_HISI_KUNPENG
40462306a36Sopenharmony_ci	tristate "HiSilicon SPI Controller for Kunpeng SoCs"
40562306a36Sopenharmony_ci	depends on (ARM64 && ACPI) || COMPILE_TEST
40662306a36Sopenharmony_ci	help
40762306a36Sopenharmony_ci	  This enables support for HiSilicon SPI controller found on
40862306a36Sopenharmony_ci	  Kunpeng SoCs.
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci	  This driver can also be built as a module. If so, the module
41162306a36Sopenharmony_ci	  will be called hisi-kunpeng-spi.
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ciconfig SPI_HISI_SFC_V3XX
41462306a36Sopenharmony_ci	tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
41562306a36Sopenharmony_ci	depends on (ARM64 && ACPI) || COMPILE_TEST
41662306a36Sopenharmony_ci	depends on HAS_IOMEM
41762306a36Sopenharmony_ci	help
41862306a36Sopenharmony_ci	  This enables support for HiSilicon v3xx SPI NOR flash controller
41962306a36Sopenharmony_ci	  found in hi16xx chipsets.
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ciconfig SPI_NXP_FLEXSPI
42262306a36Sopenharmony_ci	tristate "NXP Flex SPI controller"
42362306a36Sopenharmony_ci	depends on ARCH_LAYERSCAPE || ARCH_MXC || COMPILE_TEST
42462306a36Sopenharmony_ci	depends on HAS_IOMEM
42562306a36Sopenharmony_ci	help
42662306a36Sopenharmony_ci	  This enables support for the Flex SPI controller in master mode.
42762306a36Sopenharmony_ci	  Up to four slave devices can be connected on two buses with two
42862306a36Sopenharmony_ci	  chipselects each.
42962306a36Sopenharmony_ci	  This controller does not support generic SPI messages and only
43062306a36Sopenharmony_ci	  supports the high-level SPI memory interface.
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ciconfig SPI_GPIO
43362306a36Sopenharmony_ci	tristate "GPIO-based bitbanging SPI Master"
43462306a36Sopenharmony_ci	depends on GPIOLIB || COMPILE_TEST
43562306a36Sopenharmony_ci	select SPI_BITBANG
43662306a36Sopenharmony_ci	help
43762306a36Sopenharmony_ci	  This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
43862306a36Sopenharmony_ci	  interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
43962306a36Sopenharmony_ci	  slaves connected to a bus using this driver are configured as usual,
44062306a36Sopenharmony_ci	  except that the spi_board_info.controller_data holds the GPIO number
44162306a36Sopenharmony_ci	  for the chipselect used by this controller driver.
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci	  Note that this driver often won't achieve even 1 Mbit/sec speeds,
44462306a36Sopenharmony_ci	  making it unusually slow for SPI.  If your platform can inline
44562306a36Sopenharmony_ci	  GPIO operations, you should be able to leverage that for better
44662306a36Sopenharmony_ci	  speed with a custom version of this driver; see the source code.
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ciconfig SPI_IMG_SPFI
44962306a36Sopenharmony_ci	tristate "IMG SPFI controller"
45062306a36Sopenharmony_ci	depends on MIPS || COMPILE_TEST
45162306a36Sopenharmony_ci	help
45262306a36Sopenharmony_ci	  This enables support for the SPFI master controller found on
45362306a36Sopenharmony_ci	  IMG SoCs.
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ciconfig SPI_IMX
45662306a36Sopenharmony_ci	tristate "Freescale i.MX SPI controllers"
45762306a36Sopenharmony_ci	depends on ARCH_MXC || COMPILE_TEST
45862306a36Sopenharmony_ci	help
45962306a36Sopenharmony_ci	  This enables support for the Freescale i.MX SPI controllers.
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ciconfig SPI_INGENIC
46262306a36Sopenharmony_ci	tristate "Ingenic SoCs SPI controller"
46362306a36Sopenharmony_ci	depends on MACH_INGENIC || COMPILE_TEST
46462306a36Sopenharmony_ci	help
46562306a36Sopenharmony_ci	  This enables support for the Ingenic SoCs SPI controller.
46662306a36Sopenharmony_ci
46762306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
46862306a36Sopenharmony_ci	  will be called spi-ingenic.
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_ciconfig SPI_INTEL
47162306a36Sopenharmony_ci	tristate
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciconfig SPI_INTEL_PCI
47462306a36Sopenharmony_ci	tristate "Intel PCH/PCU SPI flash PCI driver"
47562306a36Sopenharmony_ci	depends on PCI
47662306a36Sopenharmony_ci	depends on X86 || COMPILE_TEST
47762306a36Sopenharmony_ci	depends on SPI_MEM
47862306a36Sopenharmony_ci	select SPI_INTEL
47962306a36Sopenharmony_ci	help
48062306a36Sopenharmony_ci	  This enables PCI support for the Intel PCH/PCU SPI controller in
48162306a36Sopenharmony_ci	  master mode. This controller is used to hold BIOS and other
48262306a36Sopenharmony_ci	  persistent settings. Controllers present in modern Intel hardware
48362306a36Sopenharmony_ci	  only work in hardware sequencing mode, this means that the
48462306a36Sopenharmony_ci	  controller exposes a subset of operations that makes it safer to
48562306a36Sopenharmony_ci	  use. Using this driver it is possible to upgrade BIOS directly
48662306a36Sopenharmony_ci	  from Linux.
48762306a36Sopenharmony_ci
48862306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
48962306a36Sopenharmony_ci	  will be called spi-intel-pci.
49062306a36Sopenharmony_ci
49162306a36Sopenharmony_ciconfig SPI_INTEL_PLATFORM
49262306a36Sopenharmony_ci	tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
49362306a36Sopenharmony_ci	depends on X86 || COMPILE_TEST
49462306a36Sopenharmony_ci	depends on SPI_MEM
49562306a36Sopenharmony_ci	select SPI_INTEL
49662306a36Sopenharmony_ci	help
49762306a36Sopenharmony_ci	  This enables platform support for the Intel PCH/PCU SPI
49862306a36Sopenharmony_ci	  controller in master mode that is used to hold BIOS and other
49962306a36Sopenharmony_ci	  persistent settings. Most of these controllers work in
50062306a36Sopenharmony_ci	  software sequencing mode, which means that the controller
50162306a36Sopenharmony_ci	  exposes the low level SPI-NOR opcodes to the software. Using
50262306a36Sopenharmony_ci	  this driver it is possible to upgrade BIOS directly from Linux.
50362306a36Sopenharmony_ci
50462306a36Sopenharmony_ci	  Say N here unless you know what you are doing. Overwriting the
50562306a36Sopenharmony_ci	  SPI flash may render the system unbootable.
50662306a36Sopenharmony_ci
50762306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
50862306a36Sopenharmony_ci	  will be called spi-intel-platform.
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ciconfig SPI_JCORE
51162306a36Sopenharmony_ci	tristate "J-Core SPI Master"
51262306a36Sopenharmony_ci	depends on OF && (SUPERH || COMPILE_TEST)
51362306a36Sopenharmony_ci	help
51462306a36Sopenharmony_ci	  This enables support for the SPI master controller in the J-Core
51562306a36Sopenharmony_ci	  synthesizable, open source SoC.
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ciconfig SPI_LM70_LLP
51862306a36Sopenharmony_ci	tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
51962306a36Sopenharmony_ci	depends on PARPORT
52062306a36Sopenharmony_ci	select SPI_BITBANG
52162306a36Sopenharmony_ci	help
52262306a36Sopenharmony_ci	  This driver supports the NS LM70 LLP Evaluation Board,
52362306a36Sopenharmony_ci	  which interfaces to an LM70 temperature sensor using
52462306a36Sopenharmony_ci	  a parallel port.
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_ciconfig SPI_LOONGSON_CORE
52762306a36Sopenharmony_ci	tristate
52862306a36Sopenharmony_ci	depends on LOONGARCH || COMPILE_TEST
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ciconfig SPI_LOONGSON_PCI
53162306a36Sopenharmony_ci	tristate "Loongson SPI Controller PCI Driver Support"
53262306a36Sopenharmony_ci	select SPI_LOONGSON_CORE
53362306a36Sopenharmony_ci	depends on PCI && (LOONGARCH || COMPILE_TEST)
53462306a36Sopenharmony_ci	help
53562306a36Sopenharmony_ci	  This bus driver supports the Loongson SPI hardware controller in
53662306a36Sopenharmony_ci	  the Loongson platforms and supports to use PCI framework to
53762306a36Sopenharmony_ci	  register SPI device resources.
53862306a36Sopenharmony_ci	  Say Y or M here if you want to use the SPI controller on
53962306a36Sopenharmony_ci	  Loongson platform.
54062306a36Sopenharmony_ci
54162306a36Sopenharmony_ciconfig SPI_LOONGSON_PLATFORM
54262306a36Sopenharmony_ci	tristate "Loongson SPI Controller Platform Driver Support"
54362306a36Sopenharmony_ci	select SPI_LOONGSON_CORE
54462306a36Sopenharmony_ci	depends on OF && (LOONGARCH || COMPILE_TEST)
54562306a36Sopenharmony_ci	help
54662306a36Sopenharmony_ci	  This bus driver supports the Loongson SPI hardware controller in
54762306a36Sopenharmony_ci	  the Loongson platforms and supports to use DTS framework to
54862306a36Sopenharmony_ci	  register SPI device resources.
54962306a36Sopenharmony_ci	  Say Y or M here if you want to use the SPI controller on
55062306a36Sopenharmony_ci	  Loongson platform.
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ciconfig SPI_LP8841_RTC
55362306a36Sopenharmony_ci	tristate "ICP DAS LP-8841 SPI Controller for RTC"
55462306a36Sopenharmony_ci	depends on MACH_PXA27X_DT || COMPILE_TEST
55562306a36Sopenharmony_ci	help
55662306a36Sopenharmony_ci	  This driver provides an SPI master device to drive Maxim
55762306a36Sopenharmony_ci	  DS-1302 real time clock.
55862306a36Sopenharmony_ci
55962306a36Sopenharmony_ci	  Say N here unless you plan to run the kernel on an ICP DAS
56062306a36Sopenharmony_ci	  LP-8x4x industrial computer.
56162306a36Sopenharmony_ci
56262306a36Sopenharmony_ciconfig SPI_MPC52xx
56362306a36Sopenharmony_ci	tristate "Freescale MPC52xx SPI (non-PSC) controller support"
56462306a36Sopenharmony_ci	depends on PPC_MPC52xx
56562306a36Sopenharmony_ci	help
56662306a36Sopenharmony_ci	  This drivers supports the MPC52xx SPI controller in master SPI
56762306a36Sopenharmony_ci	  mode.
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ciconfig SPI_MPC52xx_PSC
57062306a36Sopenharmony_ci	tristate "Freescale MPC52xx PSC SPI controller"
57162306a36Sopenharmony_ci	depends on PPC_MPC52xx
57262306a36Sopenharmony_ci	help
57362306a36Sopenharmony_ci	  This enables using the Freescale MPC52xx Programmable Serial
57462306a36Sopenharmony_ci	  Controller in master SPI mode.
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ciconfig SPI_MPC512x_PSC
57762306a36Sopenharmony_ci	tristate "Freescale MPC512x PSC SPI controller"
57862306a36Sopenharmony_ci	depends on PPC_MPC512x
57962306a36Sopenharmony_ci	help
58062306a36Sopenharmony_ci	  This enables using the Freescale MPC5121 Programmable Serial
58162306a36Sopenharmony_ci	  Controller in SPI master mode.
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ciconfig SPI_FSL_LIB
58462306a36Sopenharmony_ci	tristate
58562306a36Sopenharmony_ci	depends on OF
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ciconfig SPI_FSL_CPM
58862306a36Sopenharmony_ci	tristate
58962306a36Sopenharmony_ci	depends on FSL_SOC
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ciconfig SPI_FSL_SPI
59262306a36Sopenharmony_ci	tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
59362306a36Sopenharmony_ci	depends on OF
59462306a36Sopenharmony_ci	select SPI_FSL_LIB
59562306a36Sopenharmony_ci	select SPI_FSL_CPM if FSL_SOC
59662306a36Sopenharmony_ci	help
59762306a36Sopenharmony_ci	  This enables using the Freescale SPI controllers in master mode.
59862306a36Sopenharmony_ci	  MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
59962306a36Sopenharmony_ci	  MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
60062306a36Sopenharmony_ci	  This also enables using the Aeroflex Gaisler GRLIB SPI controller in
60162306a36Sopenharmony_ci	  master mode.
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ciconfig SPI_FSL_DSPI
60462306a36Sopenharmony_ci	tristate "Freescale DSPI controller"
60562306a36Sopenharmony_ci	select REGMAP_MMIO
60662306a36Sopenharmony_ci	depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
60762306a36Sopenharmony_ci	help
60862306a36Sopenharmony_ci	  This enables support for the Freescale DSPI controller in master
60962306a36Sopenharmony_ci	  mode. VF610, LS1021A and ColdFire platforms uses the controller.
61062306a36Sopenharmony_ci
61162306a36Sopenharmony_ciconfig SPI_FSL_ESPI
61262306a36Sopenharmony_ci	tristate "Freescale eSPI controller"
61362306a36Sopenharmony_ci	depends on FSL_SOC
61462306a36Sopenharmony_ci	help
61562306a36Sopenharmony_ci	  This enables using the Freescale eSPI controllers in master mode.
61662306a36Sopenharmony_ci	  From MPC8536, 85xx platform uses the controller, and all P10xx,
61762306a36Sopenharmony_ci	  P20xx, P30xx,P40xx, P50xx uses this controller.
61862306a36Sopenharmony_ci
61962306a36Sopenharmony_ciconfig SPI_MESON_SPICC
62062306a36Sopenharmony_ci	tristate "Amlogic Meson SPICC controller"
62162306a36Sopenharmony_ci	depends on COMMON_CLK
62262306a36Sopenharmony_ci	depends on ARCH_MESON || COMPILE_TEST
62362306a36Sopenharmony_ci	help
62462306a36Sopenharmony_ci	  This enables master mode support for the SPICC (SPI communication
62562306a36Sopenharmony_ci	  controller) available in Amlogic Meson SoCs.
62662306a36Sopenharmony_ci
62762306a36Sopenharmony_ciconfig SPI_MESON_SPIFC
62862306a36Sopenharmony_ci	tristate "Amlogic Meson SPIFC controller"
62962306a36Sopenharmony_ci	depends on ARCH_MESON || COMPILE_TEST
63062306a36Sopenharmony_ci	select REGMAP_MMIO
63162306a36Sopenharmony_ci	help
63262306a36Sopenharmony_ci	  This enables master mode support for the SPIFC (SPI flash
63362306a36Sopenharmony_ci	  controller) available in Amlogic Meson SoCs.
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_ciconfig SPI_MICROCHIP_CORE
63662306a36Sopenharmony_ci	tristate "Microchip FPGA SPI controllers"
63762306a36Sopenharmony_ci	depends on SPI_MASTER
63862306a36Sopenharmony_ci	help
63962306a36Sopenharmony_ci	  This enables the SPI driver for Microchip FPGA SPI controllers.
64062306a36Sopenharmony_ci	  Say Y or M here if you want to use the "hard" controllers on
64162306a36Sopenharmony_ci	  PolarFire SoC.
64262306a36Sopenharmony_ci	  If built as a module, it will be called spi-microchip-core.
64362306a36Sopenharmony_ci
64462306a36Sopenharmony_ciconfig SPI_MICROCHIP_CORE_QSPI
64562306a36Sopenharmony_ci	tristate "Microchip FPGA QSPI controllers"
64662306a36Sopenharmony_ci	depends on SPI_MASTER
64762306a36Sopenharmony_ci	help
64862306a36Sopenharmony_ci	  This enables the QSPI driver for Microchip FPGA QSPI controllers.
64962306a36Sopenharmony_ci	  Say Y or M here if you want to use the QSPI controllers on
65062306a36Sopenharmony_ci	  PolarFire SoC.
65162306a36Sopenharmony_ci	  If built as a module, it will be called spi-microchip-core-qspi.
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ciconfig SPI_MT65XX
65462306a36Sopenharmony_ci	tristate "MediaTek SPI controller"
65562306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
65662306a36Sopenharmony_ci	help
65762306a36Sopenharmony_ci	  This selects the MediaTek(R) SPI bus driver.
65862306a36Sopenharmony_ci	  If you want to use MediaTek(R) SPI interface,
65962306a36Sopenharmony_ci	  say Y or M here.If you are not sure, say N.
66062306a36Sopenharmony_ci	  SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_ciconfig SPI_MT7621
66362306a36Sopenharmony_ci	tristate "MediaTek MT7621 SPI Controller"
66462306a36Sopenharmony_ci	depends on RALINK || COMPILE_TEST
66562306a36Sopenharmony_ci	help
66662306a36Sopenharmony_ci	  This selects a driver for the MediaTek MT7621 SPI Controller.
66762306a36Sopenharmony_ci
66862306a36Sopenharmony_ciconfig SPI_MTK_NOR
66962306a36Sopenharmony_ci	tristate "MediaTek SPI NOR controller"
67062306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
67162306a36Sopenharmony_ci	help
67262306a36Sopenharmony_ci	  This enables support for SPI NOR controller found on MediaTek
67362306a36Sopenharmony_ci	  ARM SoCs. This is a controller specifically for SPI NOR flash.
67462306a36Sopenharmony_ci	  It can perform generic SPI transfers up to 6 bytes via generic
67562306a36Sopenharmony_ci	  SPI interface as well as several SPI NOR specific instructions
67662306a36Sopenharmony_ci	  via SPI MEM interface.
67762306a36Sopenharmony_ci
67862306a36Sopenharmony_ciconfig SPI_MTK_SNFI
67962306a36Sopenharmony_ci	tristate "MediaTek SPI NAND Flash Interface"
68062306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
68162306a36Sopenharmony_ci	depends on MTD_NAND_ECC_MEDIATEK
68262306a36Sopenharmony_ci	help
68362306a36Sopenharmony_ci	  This enables support for SPI-NAND mode on the MediaTek NAND
68462306a36Sopenharmony_ci	  Flash Interface found on MediaTek ARM SoCs. This controller
68562306a36Sopenharmony_ci	  is implemented as a SPI-MEM controller with pipelined ECC
68662306a36Sopenharmony_ci	  capcability.
68762306a36Sopenharmony_ci
68862306a36Sopenharmony_ciconfig SPI_WPCM_FIU
68962306a36Sopenharmony_ci	tristate "Nuvoton WPCM450 Flash Interface Unit"
69062306a36Sopenharmony_ci	depends on ARCH_NPCM || COMPILE_TEST
69162306a36Sopenharmony_ci	select REGMAP
69262306a36Sopenharmony_ci	help
69362306a36Sopenharmony_ci	  This enables support got the Flash Interface Unit SPI controller
69462306a36Sopenharmony_ci	  present in the Nuvoton WPCM450 SoC.
69562306a36Sopenharmony_ci
69662306a36Sopenharmony_ci	  This driver does not support generic SPI. The implementation only
69762306a36Sopenharmony_ci	  supports the spi-mem interface.
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ciconfig SPI_NPCM_FIU
70062306a36Sopenharmony_ci	tristate "Nuvoton NPCM FLASH Interface Unit"
70162306a36Sopenharmony_ci	depends on ARCH_NPCM || COMPILE_TEST
70262306a36Sopenharmony_ci	depends on OF && HAS_IOMEM
70362306a36Sopenharmony_ci	help
70462306a36Sopenharmony_ci	  This enables support for the Flash Interface Unit SPI controller
70562306a36Sopenharmony_ci	  in master mode.
70662306a36Sopenharmony_ci	  This driver does not support generic SPI. The implementation only
70762306a36Sopenharmony_ci	  supports spi-mem interface.
70862306a36Sopenharmony_ci
70962306a36Sopenharmony_ciconfig SPI_NPCM_PSPI
71062306a36Sopenharmony_ci	tristate "Nuvoton NPCM PSPI Controller"
71162306a36Sopenharmony_ci	depends on ARCH_NPCM || COMPILE_TEST
71262306a36Sopenharmony_ci	help
71362306a36Sopenharmony_ci	  This driver provides support for Nuvoton NPCM BMC
71462306a36Sopenharmony_ci	  Peripheral SPI controller in master mode.
71562306a36Sopenharmony_ci
71662306a36Sopenharmony_ciconfig SPI_LANTIQ_SSC
71762306a36Sopenharmony_ci	tristate "Lantiq SSC SPI controller"
71862306a36Sopenharmony_ci	depends on LANTIQ || X86 || COMPILE_TEST
71962306a36Sopenharmony_ci	help
72062306a36Sopenharmony_ci	  This driver supports the Lantiq SSC SPI controller in master
72162306a36Sopenharmony_ci	  mode. This controller is found on Intel (former Lantiq) SoCs like
72262306a36Sopenharmony_ci	  the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ciconfig SPI_OC_TINY
72562306a36Sopenharmony_ci	tristate "OpenCores tiny SPI"
72662306a36Sopenharmony_ci	depends on GPIOLIB || COMPILE_TEST
72762306a36Sopenharmony_ci	select SPI_BITBANG
72862306a36Sopenharmony_ci	help
72962306a36Sopenharmony_ci	  This is the driver for OpenCores tiny SPI master controller.
73062306a36Sopenharmony_ci
73162306a36Sopenharmony_ciconfig SPI_OCTEON
73262306a36Sopenharmony_ci	tristate "Cavium OCTEON SPI controller"
73362306a36Sopenharmony_ci	depends on CAVIUM_OCTEON_SOC
73462306a36Sopenharmony_ci	help
73562306a36Sopenharmony_ci	  SPI host driver for the hardware found on some Cavium OCTEON
73662306a36Sopenharmony_ci	  SOCs.
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_ciconfig SPI_OMAP_UWIRE
73962306a36Sopenharmony_ci	tristate "OMAP1 MicroWire"
74062306a36Sopenharmony_ci	depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
74162306a36Sopenharmony_ci	select SPI_BITBANG
74262306a36Sopenharmony_ci	help
74362306a36Sopenharmony_ci	  This hooks up to the MicroWire controller on OMAP1 chips.
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_ciconfig SPI_OMAP24XX
74662306a36Sopenharmony_ci	tristate "McSPI driver for OMAP"
74762306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
74862306a36Sopenharmony_ci	select SG_SPLIT
74962306a36Sopenharmony_ci	help
75062306a36Sopenharmony_ci	  SPI master controller for OMAP24XX and later Multichannel SPI
75162306a36Sopenharmony_ci	  (McSPI) modules.
75262306a36Sopenharmony_ci
75362306a36Sopenharmony_ciconfig SPI_TI_QSPI
75462306a36Sopenharmony_ci	tristate "DRA7xxx QSPI controller support"
75562306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS || COMPILE_TEST
75662306a36Sopenharmony_ci	help
75762306a36Sopenharmony_ci	  QSPI master controller for DRA7xxx used for flash devices.
75862306a36Sopenharmony_ci	  This device supports single, dual and quad read support, while
75962306a36Sopenharmony_ci	  it only supports single write mode.
76062306a36Sopenharmony_ci
76162306a36Sopenharmony_ciconfig SPI_ORION
76262306a36Sopenharmony_ci	tristate "Orion SPI master"
76362306a36Sopenharmony_ci	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
76462306a36Sopenharmony_ci	help
76562306a36Sopenharmony_ci	  This enables using the SPI master controller on the Orion
76662306a36Sopenharmony_ci	  and MVEBU chips.
76762306a36Sopenharmony_ci
76862306a36Sopenharmony_ciconfig SPI_PCI1XXXX
76962306a36Sopenharmony_ci	tristate "PCI1XXXX SPI Bus support"
77062306a36Sopenharmony_ci	depends on PCI
77162306a36Sopenharmony_ci	help
77262306a36Sopenharmony_ci	  Say "yes" to Enable the SPI Bus support for the PCI1xxxx card
77362306a36Sopenharmony_ci	  This is a PCI to SPI Bus driver
77462306a36Sopenharmony_ci	  This driver can be built as module. If so, the module will be
77562306a36Sopenharmony_ci	  called as spi-pci1xxxx.
77662306a36Sopenharmony_ci
77762306a36Sopenharmony_ciconfig SPI_PIC32
77862306a36Sopenharmony_ci	tristate "Microchip PIC32 series SPI"
77962306a36Sopenharmony_ci	depends on MACH_PIC32 || COMPILE_TEST
78062306a36Sopenharmony_ci	help
78162306a36Sopenharmony_ci	  SPI driver for Microchip PIC32 SPI master controller.
78262306a36Sopenharmony_ci
78362306a36Sopenharmony_ciconfig SPI_PIC32_SQI
78462306a36Sopenharmony_ci	tristate "Microchip PIC32 Quad SPI driver"
78562306a36Sopenharmony_ci	depends on MACH_PIC32 || COMPILE_TEST
78662306a36Sopenharmony_ci	help
78762306a36Sopenharmony_ci	  SPI driver for PIC32 Quad SPI controller.
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ciconfig SPI_PL022
79062306a36Sopenharmony_ci	tristate "ARM AMBA PL022 SSP controller"
79162306a36Sopenharmony_ci	depends on ARM_AMBA
79262306a36Sopenharmony_ci	default y if ARCH_REALVIEW
79362306a36Sopenharmony_ci	default y if INTEGRATOR_IMPD1
79462306a36Sopenharmony_ci	default y if ARCH_VERSATILE
79562306a36Sopenharmony_ci	help
79662306a36Sopenharmony_ci	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
79762306a36Sopenharmony_ci	  controller. If you have an embedded system with an AMBA(R)
79862306a36Sopenharmony_ci	  bus and a PL022 controller, say Y or M here.
79962306a36Sopenharmony_ci
80062306a36Sopenharmony_ciconfig SPI_PPC4xx
80162306a36Sopenharmony_ci	tristate "PPC4xx SPI Controller"
80262306a36Sopenharmony_ci	depends on PPC32 && 4xx
80362306a36Sopenharmony_ci	select SPI_BITBANG
80462306a36Sopenharmony_ci	help
80562306a36Sopenharmony_ci	  This selects a driver for the PPC4xx SPI Controller.
80662306a36Sopenharmony_ci
80762306a36Sopenharmony_ciconfig SPI_PXA2XX
80862306a36Sopenharmony_ci	tristate "PXA2xx SSP SPI master"
80962306a36Sopenharmony_ci	depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
81062306a36Sopenharmony_ci	select PXA_SSP if ARCH_PXA || ARCH_MMP
81162306a36Sopenharmony_ci	help
81262306a36Sopenharmony_ci	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
81362306a36Sopenharmony_ci	  controller. The driver can be configured to use any SSP port and
81462306a36Sopenharmony_ci	  additional documentation can be found a Documentation/spi/pxa2xx.rst.
81562306a36Sopenharmony_ci
81662306a36Sopenharmony_ciconfig SPI_PXA2XX_PCI
81762306a36Sopenharmony_ci	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
81862306a36Sopenharmony_ci
81962306a36Sopenharmony_ciconfig SPI_ROCKCHIP
82062306a36Sopenharmony_ci	tristate "Rockchip SPI controller driver"
82162306a36Sopenharmony_ci	depends on ARCH_ROCKCHIP || COMPILE_TEST
82262306a36Sopenharmony_ci	help
82362306a36Sopenharmony_ci	  This selects a driver for Rockchip SPI controller.
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci	  If you say yes to this option, support will be included for
82662306a36Sopenharmony_ci	  RK3066, RK3188 and RK3288 families of SPI controller.
82762306a36Sopenharmony_ci	  Rockchip SPI controller support DMA transport and PIO mode.
82862306a36Sopenharmony_ci	  The main usecase of this controller is to use spi flash as boot
82962306a36Sopenharmony_ci	  device.
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_ciconfig SPI_ROCKCHIP_SFC
83262306a36Sopenharmony_ci	tristate "Rockchip Serial Flash Controller (SFC)"
83362306a36Sopenharmony_ci	depends on ARCH_ROCKCHIP || COMPILE_TEST
83462306a36Sopenharmony_ci	depends on HAS_IOMEM && HAS_DMA
83562306a36Sopenharmony_ci	help
83662306a36Sopenharmony_ci	  This enables support for Rockchip serial flash controller. This
83762306a36Sopenharmony_ci	  is a specialized controller used to access SPI flash on some
83862306a36Sopenharmony_ci	  Rockchip SOCs.
83962306a36Sopenharmony_ci
84062306a36Sopenharmony_ci	  ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
84162306a36Sopenharmony_ci	  the driver automatically falls back to PIO mode.
84262306a36Sopenharmony_ci
84362306a36Sopenharmony_ciconfig SPI_RB4XX
84462306a36Sopenharmony_ci	tristate "Mikrotik RB4XX SPI master"
84562306a36Sopenharmony_ci	depends on SPI_MASTER && ATH79
84662306a36Sopenharmony_ci	help
84762306a36Sopenharmony_ci	  SPI controller driver for the Mikrotik RB4xx series boards.
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_ciconfig SPI_RPCIF
85062306a36Sopenharmony_ci	tristate "Renesas RPC-IF SPI driver"
85162306a36Sopenharmony_ci	depends on RENESAS_RPCIF
85262306a36Sopenharmony_ci	help
85362306a36Sopenharmony_ci	  SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
85462306a36Sopenharmony_ci
85562306a36Sopenharmony_ciconfig SPI_RSPI
85662306a36Sopenharmony_ci	tristate "Renesas RSPI/QSPI controller"
85762306a36Sopenharmony_ci	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
85862306a36Sopenharmony_ci	help
85962306a36Sopenharmony_ci	  SPI driver for Renesas RSPI and QSPI blocks.
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ciconfig SPI_RZV2M_CSI
86262306a36Sopenharmony_ci	tristate "Renesas RZ/V2M CSI controller"
86362306a36Sopenharmony_ci	depends on ARCH_RENESAS || COMPILE_TEST
86462306a36Sopenharmony_ci	help
86562306a36Sopenharmony_ci	  SPI driver for Renesas RZ/V2M Clocked Serial Interface (CSI)
86662306a36Sopenharmony_ci
86762306a36Sopenharmony_ciconfig SPI_QCOM_QSPI
86862306a36Sopenharmony_ci	tristate "QTI QSPI controller"
86962306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
87062306a36Sopenharmony_ci	help
87162306a36Sopenharmony_ci	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ciconfig SPI_QUP
87462306a36Sopenharmony_ci	tristate "Qualcomm SPI controller with QUP interface"
87562306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
87662306a36Sopenharmony_ci	help
87762306a36Sopenharmony_ci	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
87862306a36Sopenharmony_ci	  provides a common data path (an output FIFO and an input FIFO)
87962306a36Sopenharmony_ci	  for serial peripheral interface (SPI) mini-core. SPI in master
88062306a36Sopenharmony_ci	  mode supports up to 50MHz, up to four chip selects, programmable
88162306a36Sopenharmony_ci	  data path from 4 bits to 32 bits and numerous protocol variants.
88262306a36Sopenharmony_ci
88362306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
88462306a36Sopenharmony_ci	  will be called spi_qup.
88562306a36Sopenharmony_ci
88662306a36Sopenharmony_ciconfig SPI_QCOM_GENI
88762306a36Sopenharmony_ci	tristate "Qualcomm GENI based SPI controller"
88862306a36Sopenharmony_ci	depends on QCOM_GENI_SE
88962306a36Sopenharmony_ci	help
89062306a36Sopenharmony_ci	  This driver supports GENI serial engine based SPI controller in
89162306a36Sopenharmony_ci	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
89262306a36Sopenharmony_ci	  yes to this option, support will be included for the built-in SPI
89362306a36Sopenharmony_ci	  interface on the Qualcomm Technologies Inc.'s SoCs.
89462306a36Sopenharmony_ci
89562306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
89662306a36Sopenharmony_ci	  will be called spi-geni-qcom.
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_ciconfig SPI_S3C64XX
89962306a36Sopenharmony_ci	tristate "Samsung S3C64XX/Exynos SoC series type SPI"
90062306a36Sopenharmony_ci	depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
90162306a36Sopenharmony_ci	help
90262306a36Sopenharmony_ci	  SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
90362306a36Sopenharmony_ci	  Choose Y/M here only if you build for such Samsung SoC.
90462306a36Sopenharmony_ci
90562306a36Sopenharmony_ciconfig SPI_SC18IS602
90662306a36Sopenharmony_ci	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
90762306a36Sopenharmony_ci	depends on I2C
90862306a36Sopenharmony_ci	help
90962306a36Sopenharmony_ci	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
91062306a36Sopenharmony_ci
91162306a36Sopenharmony_ciconfig SPI_SH_MSIOF
91262306a36Sopenharmony_ci	tristate "SuperH MSIOF SPI controller"
91362306a36Sopenharmony_ci	depends on HAVE_CLK
91462306a36Sopenharmony_ci	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
91562306a36Sopenharmony_ci	help
91662306a36Sopenharmony_ci	  SPI driver for SuperH and SH Mobile MSIOF blocks.
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_ciconfig SPI_SH
91962306a36Sopenharmony_ci	tristate "SuperH SPI controller"
92062306a36Sopenharmony_ci	depends on SUPERH || COMPILE_TEST
92162306a36Sopenharmony_ci	help
92262306a36Sopenharmony_ci	  SPI driver for SuperH SPI blocks.
92362306a36Sopenharmony_ci
92462306a36Sopenharmony_ciconfig SPI_SH_SCI
92562306a36Sopenharmony_ci	tristate "SuperH SCI SPI controller"
92662306a36Sopenharmony_ci	depends on SUPERH
92762306a36Sopenharmony_ci	select SPI_BITBANG
92862306a36Sopenharmony_ci	help
92962306a36Sopenharmony_ci	  SPI driver for SuperH SCI blocks.
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ciconfig SPI_SH_HSPI
93262306a36Sopenharmony_ci	tristate "SuperH HSPI controller"
93362306a36Sopenharmony_ci	depends on ARCH_RENESAS || COMPILE_TEST
93462306a36Sopenharmony_ci	help
93562306a36Sopenharmony_ci	  SPI driver for SuperH HSPI blocks.
93662306a36Sopenharmony_ci
93762306a36Sopenharmony_ciconfig SPI_SIFIVE
93862306a36Sopenharmony_ci	tristate "SiFive SPI controller"
93962306a36Sopenharmony_ci	depends on HAS_IOMEM
94062306a36Sopenharmony_ci	help
94162306a36Sopenharmony_ci	  This exposes the SPI controller IP from SiFive.
94262306a36Sopenharmony_ci
94362306a36Sopenharmony_ciconfig SPI_SLAVE_MT27XX
94462306a36Sopenharmony_ci	tristate "MediaTek SPI slave device"
94562306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
94662306a36Sopenharmony_ci	depends on SPI_SLAVE
94762306a36Sopenharmony_ci	help
94862306a36Sopenharmony_ci	  This selects the MediaTek(R) SPI slave device driver.
94962306a36Sopenharmony_ci	  If you want to use MediaTek(R) SPI slave interface,
95062306a36Sopenharmony_ci	  say Y or M here.If you are not sure, say N.
95162306a36Sopenharmony_ci	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
95262306a36Sopenharmony_ci
95362306a36Sopenharmony_ciconfig SPI_SN_F_OSPI
95462306a36Sopenharmony_ci	tristate "Socionext F_OSPI SPI flash controller"
95562306a36Sopenharmony_ci	depends on OF && HAS_IOMEM
95662306a36Sopenharmony_ci	depends on SPI_MEM
95762306a36Sopenharmony_ci	help
95862306a36Sopenharmony_ci	  This enables support for the Socionext F_OSPI controller
95962306a36Sopenharmony_ci	  for connecting an SPI Flash memory over up to 8-bit wide bus.
96062306a36Sopenharmony_ci	  It supports indirect access mode only.
96162306a36Sopenharmony_ci
96262306a36Sopenharmony_ciconfig SPI_SPRD
96362306a36Sopenharmony_ci	tristate "Spreadtrum SPI controller"
96462306a36Sopenharmony_ci	depends on ARCH_SPRD || COMPILE_TEST
96562306a36Sopenharmony_ci	help
96662306a36Sopenharmony_ci	  SPI driver for Spreadtrum SoCs.
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_ciconfig SPI_SPRD_ADI
96962306a36Sopenharmony_ci	tristate "Spreadtrum ADI controller"
97062306a36Sopenharmony_ci	depends on ARCH_SPRD || COMPILE_TEST
97162306a36Sopenharmony_ci	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
97262306a36Sopenharmony_ci	help
97362306a36Sopenharmony_ci	  ADI driver based on SPI for Spreadtrum SoCs.
97462306a36Sopenharmony_ci
97562306a36Sopenharmony_ciconfig SPI_STM32
97662306a36Sopenharmony_ci	tristate "STMicroelectronics STM32 SPI controller"
97762306a36Sopenharmony_ci	depends on ARCH_STM32 || COMPILE_TEST
97862306a36Sopenharmony_ci	select SPI_SLAVE
97962306a36Sopenharmony_ci	help
98062306a36Sopenharmony_ci	  SPI driver for STMicroelectronics STM32 SoCs.
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_ci	  STM32 SPI controller supports DMA and PIO modes. When DMA
98362306a36Sopenharmony_ci	  is not available, the driver automatically falls back to
98462306a36Sopenharmony_ci	  PIO mode.
98562306a36Sopenharmony_ci
98662306a36Sopenharmony_ciconfig SPI_STM32_QSPI
98762306a36Sopenharmony_ci	tristate "STMicroelectronics STM32 QUAD SPI controller"
98862306a36Sopenharmony_ci	depends on ARCH_STM32 || COMPILE_TEST
98962306a36Sopenharmony_ci	depends on OF
99062306a36Sopenharmony_ci	depends on SPI_MEM
99162306a36Sopenharmony_ci	help
99262306a36Sopenharmony_ci	  This enables support for the Quad SPI controller in master mode.
99362306a36Sopenharmony_ci	  This driver does not support generic SPI. The implementation only
99462306a36Sopenharmony_ci	  supports spi-mem interface.
99562306a36Sopenharmony_ci
99662306a36Sopenharmony_ciconfig SPI_ST_SSC4
99762306a36Sopenharmony_ci	tristate "STMicroelectronics SPI SSC-based driver"
99862306a36Sopenharmony_ci	depends on ARCH_STI || COMPILE_TEST
99962306a36Sopenharmony_ci	help
100062306a36Sopenharmony_ci	  STMicroelectronics SoCs support for SPI. If you say yes to
100162306a36Sopenharmony_ci	  this option, support will be included for the SSC driven SPI.
100262306a36Sopenharmony_ci
100362306a36Sopenharmony_ciconfig SPI_SUN4I
100462306a36Sopenharmony_ci	tristate "Allwinner A10 SoCs SPI controller"
100562306a36Sopenharmony_ci	depends on ARCH_SUNXI || COMPILE_TEST
100662306a36Sopenharmony_ci	help
100762306a36Sopenharmony_ci	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
100862306a36Sopenharmony_ci
100962306a36Sopenharmony_ciconfig SPI_SUN6I
101062306a36Sopenharmony_ci	tristate "Allwinner A31 SPI controller"
101162306a36Sopenharmony_ci	depends on ARCH_SUNXI || COMPILE_TEST
101262306a36Sopenharmony_ci	depends on RESET_CONTROLLER
101362306a36Sopenharmony_ci	help
101462306a36Sopenharmony_ci	  This enables using the SPI controller on the Allwinner A31 SoCs.
101562306a36Sopenharmony_ci
101662306a36Sopenharmony_ciconfig SPI_SUNPLUS_SP7021
101762306a36Sopenharmony_ci	tristate "Sunplus SP7021 SPI controller"
101862306a36Sopenharmony_ci	depends on SOC_SP7021 || COMPILE_TEST
101962306a36Sopenharmony_ci	help
102062306a36Sopenharmony_ci	  This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
102162306a36Sopenharmony_ci	  This driver can also be built as a module. If so, the module will be
102262306a36Sopenharmony_ci	  called as spi-sunplus-sp7021.
102362306a36Sopenharmony_ci
102462306a36Sopenharmony_ci	  If you have a  Sunplus SP7021 platform say Y here.
102562306a36Sopenharmony_ci	  If unsure, say N.
102662306a36Sopenharmony_ci
102762306a36Sopenharmony_ciconfig SPI_SYNQUACER
102862306a36Sopenharmony_ci	tristate "Socionext's SynQuacer HighSpeed SPI controller"
102962306a36Sopenharmony_ci	depends on ARCH_SYNQUACER || COMPILE_TEST
103062306a36Sopenharmony_ci	help
103162306a36Sopenharmony_ci	  SPI driver for Socionext's High speed SPI controller which provides
103262306a36Sopenharmony_ci	  various operating modes for interfacing to serial peripheral devices
103362306a36Sopenharmony_ci	  that use the de-facto standard SPI protocol.
103462306a36Sopenharmony_ci
103562306a36Sopenharmony_ci	  It also supports the new dual-bit and quad-bit SPI protocol.
103662306a36Sopenharmony_ci
103762306a36Sopenharmony_ciconfig SPI_MXIC
103862306a36Sopenharmony_ci	tristate "Macronix MX25F0A SPI controller"
103962306a36Sopenharmony_ci	depends on SPI_MASTER
104062306a36Sopenharmony_ci	imply MTD_NAND_ECC_MXIC
104162306a36Sopenharmony_ci	help
104262306a36Sopenharmony_ci	  This selects the Macronix MX25F0A SPI controller driver.
104362306a36Sopenharmony_ci
104462306a36Sopenharmony_ciconfig SPI_MXS
104562306a36Sopenharmony_ci	tristate "Freescale MXS SPI controller"
104662306a36Sopenharmony_ci	depends on ARCH_MXS
104762306a36Sopenharmony_ci	select STMP_DEVICE
104862306a36Sopenharmony_ci	help
104962306a36Sopenharmony_ci	  SPI driver for Freescale MXS devices.
105062306a36Sopenharmony_ci
105162306a36Sopenharmony_ciconfig SPI_TEGRA210_QUAD
105262306a36Sopenharmony_ci	tristate "NVIDIA Tegra QSPI Controller"
105362306a36Sopenharmony_ci	depends on ARCH_TEGRA || COMPILE_TEST
105462306a36Sopenharmony_ci	depends on RESET_CONTROLLER
105562306a36Sopenharmony_ci	help
105662306a36Sopenharmony_ci	  QSPI driver for NVIDIA Tegra QSPI Controller interface. This
105762306a36Sopenharmony_ci	  controller is different from the SPI controller and is available
105862306a36Sopenharmony_ci	  on Tegra SoCs starting from Tegra210.
105962306a36Sopenharmony_ci
106062306a36Sopenharmony_ciconfig SPI_TEGRA114
106162306a36Sopenharmony_ci	tristate "NVIDIA Tegra114 SPI Controller"
106262306a36Sopenharmony_ci	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
106362306a36Sopenharmony_ci	depends on RESET_CONTROLLER
106462306a36Sopenharmony_ci	help
106562306a36Sopenharmony_ci	  SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
106662306a36Sopenharmony_ci	  is different than the older SoCs SPI controller and also register interface
106762306a36Sopenharmony_ci	  get changed with this controller.
106862306a36Sopenharmony_ci
106962306a36Sopenharmony_ciconfig SPI_TEGRA20_SFLASH
107062306a36Sopenharmony_ci	tristate "Nvidia Tegra20 Serial flash Controller"
107162306a36Sopenharmony_ci	depends on ARCH_TEGRA || COMPILE_TEST
107262306a36Sopenharmony_ci	depends on RESET_CONTROLLER
107362306a36Sopenharmony_ci	help
107462306a36Sopenharmony_ci	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
107562306a36Sopenharmony_ci	  The main usecase of this controller is to use spi flash as boot
107662306a36Sopenharmony_ci	  device.
107762306a36Sopenharmony_ci
107862306a36Sopenharmony_ciconfig SPI_TEGRA20_SLINK
107962306a36Sopenharmony_ci	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
108062306a36Sopenharmony_ci	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
108162306a36Sopenharmony_ci	depends on RESET_CONTROLLER
108262306a36Sopenharmony_ci	help
108362306a36Sopenharmony_ci	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
108462306a36Sopenharmony_ci
108562306a36Sopenharmony_ciconfig SPI_THUNDERX
108662306a36Sopenharmony_ci	tristate "Cavium ThunderX SPI controller"
108762306a36Sopenharmony_ci	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
108862306a36Sopenharmony_ci	help
108962306a36Sopenharmony_ci	  SPI host driver for the hardware found on Cavium ThunderX
109062306a36Sopenharmony_ci	  SOCs.
109162306a36Sopenharmony_ci
109262306a36Sopenharmony_ciconfig SPI_TOPCLIFF_PCH
109362306a36Sopenharmony_ci	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
109462306a36Sopenharmony_ci	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
109562306a36Sopenharmony_ci	help
109662306a36Sopenharmony_ci	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
109762306a36Sopenharmony_ci	  used in some x86 embedded processors.
109862306a36Sopenharmony_ci
109962306a36Sopenharmony_ci	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
110062306a36Sopenharmony_ci	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
110162306a36Sopenharmony_ci
110262306a36Sopenharmony_ciconfig SPI_UNIPHIER
110362306a36Sopenharmony_ci	tristate "Socionext UniPhier SPI Controller"
110462306a36Sopenharmony_ci	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
110562306a36Sopenharmony_ci	depends on HAS_IOMEM
110662306a36Sopenharmony_ci	help
110762306a36Sopenharmony_ci	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
110862306a36Sopenharmony_ci
110962306a36Sopenharmony_ci	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
111062306a36Sopenharmony_ci	  Every UniPhier SoC has SCSSI which supports single channel.
111162306a36Sopenharmony_ci	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
111262306a36Sopenharmony_ci	  This driver supports SCSSI only.
111362306a36Sopenharmony_ci
111462306a36Sopenharmony_ci	  If your SoC supports SCSSI, say Y here.
111562306a36Sopenharmony_ci
111662306a36Sopenharmony_ciconfig SPI_XCOMM
111762306a36Sopenharmony_ci	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
111862306a36Sopenharmony_ci	depends on I2C
111962306a36Sopenharmony_ci	help
112062306a36Sopenharmony_ci	  Support for the SPI-I2C bridge found on the Analog Devices
112162306a36Sopenharmony_ci	  AD-FMCOMMS1-EBZ board.
112262306a36Sopenharmony_ci
112362306a36Sopenharmony_ciconfig SPI_XILINX
112462306a36Sopenharmony_ci	tristate "Xilinx SPI controller common module"
112562306a36Sopenharmony_ci	depends on HAS_IOMEM
112662306a36Sopenharmony_ci	select SPI_BITBANG
112762306a36Sopenharmony_ci	help
112862306a36Sopenharmony_ci	  This exposes the SPI controller IP from the Xilinx EDK.
112962306a36Sopenharmony_ci
113062306a36Sopenharmony_ci	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
113162306a36Sopenharmony_ci	  Product Specification document (DS464) for hardware details.
113262306a36Sopenharmony_ci
113362306a36Sopenharmony_ci	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
113462306a36Sopenharmony_ci
113562306a36Sopenharmony_ciconfig SPI_XLP
113662306a36Sopenharmony_ci	tristate "Cavium ThunderX2 SPI controller driver"
113762306a36Sopenharmony_ci	depends on ARCH_THUNDER2 || COMPILE_TEST
113862306a36Sopenharmony_ci	help
113962306a36Sopenharmony_ci	  Enable support for the SPI controller on the Cavium ThunderX2.
114062306a36Sopenharmony_ci	  (Originally on Netlogic XLP SoCs.)
114162306a36Sopenharmony_ci
114262306a36Sopenharmony_ci	  If you have a Cavium ThunderX2 platform say Y here.
114362306a36Sopenharmony_ci	  If unsure, say N.
114462306a36Sopenharmony_ci
114562306a36Sopenharmony_ciconfig SPI_XTENSA_XTFPGA
114662306a36Sopenharmony_ci	tristate "Xtensa SPI controller for xtfpga"
114762306a36Sopenharmony_ci	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
114862306a36Sopenharmony_ci	select SPI_BITBANG
114962306a36Sopenharmony_ci	help
115062306a36Sopenharmony_ci	  SPI driver for xtfpga SPI master controller.
115162306a36Sopenharmony_ci
115262306a36Sopenharmony_ci	  This simple SPI master controller is built into xtfpga bitstreams
115362306a36Sopenharmony_ci	  and is used to control daughterboard audio codec. It always transfers
115462306a36Sopenharmony_ci	  16 bit words in SPI mode 0, automatically asserting CS on transfer
115562306a36Sopenharmony_ci	  start and deasserting on end.
115662306a36Sopenharmony_ci
115762306a36Sopenharmony_ciconfig SPI_ZYNQ_QSPI
115862306a36Sopenharmony_ci	tristate "Xilinx Zynq QSPI controller"
115962306a36Sopenharmony_ci	depends on ARCH_ZYNQ || COMPILE_TEST
116062306a36Sopenharmony_ci	depends on SPI_MEM
116162306a36Sopenharmony_ci	help
116262306a36Sopenharmony_ci	  This enables support for the Zynq Quad SPI controller
116362306a36Sopenharmony_ci	  in master mode.
116462306a36Sopenharmony_ci	  This controller only supports SPI memory interface.
116562306a36Sopenharmony_ci
116662306a36Sopenharmony_ciconfig SPI_ZYNQMP_GQSPI
116762306a36Sopenharmony_ci	tristate "Xilinx ZynqMP GQSPI controller"
116862306a36Sopenharmony_ci	depends on (SPI_MEM && HAS_DMA) || COMPILE_TEST
116962306a36Sopenharmony_ci	help
117062306a36Sopenharmony_ci	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
117162306a36Sopenharmony_ci	  This controller only supports SPI memory interface.
117262306a36Sopenharmony_ci
117362306a36Sopenharmony_ciconfig SPI_AMD
117462306a36Sopenharmony_ci	tristate "AMD SPI controller"
117562306a36Sopenharmony_ci	depends on SPI_MASTER || COMPILE_TEST
117662306a36Sopenharmony_ci	help
117762306a36Sopenharmony_ci	  Enables SPI controller driver for AMD SoC.
117862306a36Sopenharmony_ci
117962306a36Sopenharmony_ci#
118062306a36Sopenharmony_ci# Add new SPI master controllers in alphabetical order above this line
118162306a36Sopenharmony_ci#
118262306a36Sopenharmony_ci
118362306a36Sopenharmony_cicomment "SPI Multiplexer support"
118462306a36Sopenharmony_ci
118562306a36Sopenharmony_ciconfig SPI_MUX
118662306a36Sopenharmony_ci	tristate "SPI multiplexer support"
118762306a36Sopenharmony_ci	select MULTIPLEXER
118862306a36Sopenharmony_ci	help
118962306a36Sopenharmony_ci	  This adds support for SPI multiplexers. Each SPI mux will be
119062306a36Sopenharmony_ci	  accessible as a SPI controller, the devices behind the mux will appear
119162306a36Sopenharmony_ci	  to be chip selects on this controller. It is still necessary to
119262306a36Sopenharmony_ci	  select one or more specific mux-controller drivers.
119362306a36Sopenharmony_ci
119462306a36Sopenharmony_ci#
119562306a36Sopenharmony_ci# There are lots of SPI device types, with sensors and memory
119662306a36Sopenharmony_ci# being probably the most widely used ones.
119762306a36Sopenharmony_ci#
119862306a36Sopenharmony_cicomment "SPI Protocol Masters"
119962306a36Sopenharmony_ci
120062306a36Sopenharmony_ciconfig SPI_SPIDEV
120162306a36Sopenharmony_ci	tristate "User mode SPI device driver support"
120262306a36Sopenharmony_ci	help
120362306a36Sopenharmony_ci	  This supports user mode SPI protocol drivers.
120462306a36Sopenharmony_ci
120562306a36Sopenharmony_ciconfig SPI_LOOPBACK_TEST
120662306a36Sopenharmony_ci	tristate "spi loopback test framework support"
120762306a36Sopenharmony_ci	depends on m
120862306a36Sopenharmony_ci	help
120962306a36Sopenharmony_ci	  This enables the SPI loopback testing framework driver
121062306a36Sopenharmony_ci
121162306a36Sopenharmony_ci	  primarily used for development of spi_master drivers
121262306a36Sopenharmony_ci	  and to detect regressions
121362306a36Sopenharmony_ci
121462306a36Sopenharmony_ciconfig SPI_TLE62X0
121562306a36Sopenharmony_ci	tristate "Infineon TLE62X0 (for power switching)"
121662306a36Sopenharmony_ci	depends on SYSFS
121762306a36Sopenharmony_ci	help
121862306a36Sopenharmony_ci	  SPI driver for Infineon TLE62X0 series line driver chips,
121962306a36Sopenharmony_ci	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
122062306a36Sopenharmony_ci	  sysfs interface, with each line presented as a kind of GPIO
122162306a36Sopenharmony_ci	  exposing both switch control and diagnostic feedback.
122262306a36Sopenharmony_ci
122362306a36Sopenharmony_ci#
122462306a36Sopenharmony_ci# Add new SPI protocol masters in alphabetical order above this line
122562306a36Sopenharmony_ci#
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_ciendif # SPI_MASTER
122862306a36Sopenharmony_ci
122962306a36Sopenharmony_ci#
123062306a36Sopenharmony_ci# SLAVE side ... listening to other SPI masters
123162306a36Sopenharmony_ci#
123262306a36Sopenharmony_ci
123362306a36Sopenharmony_ciconfig SPI_SLAVE
123462306a36Sopenharmony_ci	bool "SPI slave protocol handlers"
123562306a36Sopenharmony_ci	help
123662306a36Sopenharmony_ci	  If your system has a slave-capable SPI controller, you can enable
123762306a36Sopenharmony_ci	  slave protocol handlers.
123862306a36Sopenharmony_ci
123962306a36Sopenharmony_ciif SPI_SLAVE
124062306a36Sopenharmony_ci
124162306a36Sopenharmony_ciconfig SPI_SLAVE_TIME
124262306a36Sopenharmony_ci	tristate "SPI slave handler reporting boot up time"
124362306a36Sopenharmony_ci	help
124462306a36Sopenharmony_ci	  SPI slave handler responding with the time of reception of the last
124562306a36Sopenharmony_ci	  SPI message.
124662306a36Sopenharmony_ci
124762306a36Sopenharmony_ciconfig SPI_SLAVE_SYSTEM_CONTROL
124862306a36Sopenharmony_ci	tristate "SPI slave handler controlling system state"
124962306a36Sopenharmony_ci	help
125062306a36Sopenharmony_ci	  SPI slave handler to allow remote control of system reboot, power
125162306a36Sopenharmony_ci	  off, halt, and suspend.
125262306a36Sopenharmony_ci
125362306a36Sopenharmony_ciendif # SPI_SLAVE
125462306a36Sopenharmony_ci
125562306a36Sopenharmony_ciconfig SPI_DYNAMIC
125662306a36Sopenharmony_ci	def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
125762306a36Sopenharmony_ci
125862306a36Sopenharmony_ciendif # SPI
1259