cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Kconfig (37377B)


      1# SPDX-License-Identifier: GPL-2.0-only
      2#
      3# SPI driver configuration
      4#
      5menuconfig SPI
      6	bool "SPI support"
      7	depends on HAS_IOMEM
      8	help
      9	  The "Serial Peripheral Interface" is a low level synchronous
     10	  protocol.  Chips that support SPI can have data transfer rates
     11	  up to several tens of Mbit/sec.  Chips are addressed with a
     12	  controller and a chipselect.  Most SPI slaves don't support
     13	  dynamic device discovery; some are even write-only or read-only.
     14
     15	  SPI is widely used by microcontrollers to talk with sensors,
     16	  eeprom and flash memory, codecs and various other controller
     17	  chips, analog to digital (and d-to-a) converters, and more.
     18	  MMC and SD cards can be accessed using SPI protocol; and for
     19	  DataFlash cards used in MMC sockets, SPI must always be used.
     20
     21	  SPI is one of a family of similar protocols using a four wire
     22	  interface (select, clock, data in, data out) including Microwire
     23	  (half duplex), SSP, SSI, and PSP.  This driver framework should
     24	  work with most such devices and controllers.
     25
     26if SPI
     27
     28config SPI_DEBUG
     29	bool "Debug support for SPI drivers"
     30	depends on DEBUG_KERNEL
     31	help
     32	  Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
     33	  sysfs, and debugfs support in SPI controller and protocol drivers.
     34
     35#
     36# MASTER side ... talking to discrete SPI slave chips including microcontrollers
     37#
     38
     39config SPI_MASTER
     40#	bool "SPI Master Support"
     41	bool
     42	default SPI
     43	help
     44	  If your system has an master-capable SPI controller (which
     45	  provides the clock and chipselect), you can enable that
     46	  controller and the protocol drivers for the SPI slave chips
     47	  that are connected.
     48
     49if SPI_MASTER
     50
     51config SPI_MEM
     52	bool "SPI memory extension"
     53	help
     54	  Enable this option if you want to enable the SPI memory extension.
     55	  This extension is meant to simplify interaction with SPI memories
     56	  by providing a high-level interface to send memory-like commands.
     57
     58comment "SPI Master Controller Drivers"
     59
     60config SPI_ALTERA
     61	tristate "Altera SPI Controller platform driver"
     62	select SPI_ALTERA_CORE
     63	select REGMAP_MMIO
     64	help
     65	  This is the driver for the Altera SPI Controller.
     66
     67config SPI_ALTERA_CORE
     68	tristate "Altera SPI Controller core code" if COMPILE_TEST
     69	select REGMAP
     70	help
     71	  "The core code for the Altera SPI Controller"
     72
     73config SPI_ALTERA_DFL
     74	tristate "DFL bus driver for Altera SPI Controller"
     75	depends on FPGA_DFL
     76	select SPI_ALTERA_CORE
     77	help
     78	  This is a Device Feature List (DFL) bus driver for the
     79	  Altera SPI master controller.  The SPI master is connected
     80	  to a SPI slave to Avalon bridge in a Intel MAX BMC.
     81
     82config SPI_AR934X
     83	tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
     84	depends on ATH79 || COMPILE_TEST
     85	help
     86	  This enables support for the SPI controller present on the
     87	  Qualcomm Atheros AR934X/QCA95XX SoCs.
     88
     89config SPI_ATH79
     90	tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
     91	depends on ATH79 || COMPILE_TEST
     92	select SPI_BITBANG
     93	help
     94	  This enables support for the SPI controller present on the
     95	  Atheros AR71XX/AR724X/AR913X SoCs.
     96
     97config SPI_ARMADA_3700
     98	tristate "Marvell Armada 3700 SPI Controller"
     99	depends on (ARCH_MVEBU && OF) || COMPILE_TEST
    100	help
    101	  This enables support for the SPI controller present on the
    102	  Marvell Armada 3700 SoCs.
    103
    104config SPI_ASPEED_SMC
    105	tristate "Aspeed flash controllers in SPI mode"
    106	depends on ARCH_ASPEED || COMPILE_TEST
    107	depends on OF
    108	help
    109	  This enables support for the Firmware Memory controller (FMC)
    110	  in the Aspeed AST2600, AST2500 and AST2400 SoCs when attached
    111	  to SPI NOR chips, and support for the SPI flash memory
    112	  controller (SPI) for the host firmware. The implementation
    113	  only supports SPI NOR.
    114
    115config SPI_ATMEL
    116	tristate "Atmel SPI Controller"
    117	depends on ARCH_AT91 || COMPILE_TEST
    118	depends on OF
    119	help
    120	  This selects a driver for the Atmel SPI Controller, present on
    121	  many AT91 ARM chips.
    122
    123config SPI_AT91_USART
    124	tristate "Atmel USART Controller SPI driver"
    125	depends on (ARCH_AT91 || COMPILE_TEST)
    126	depends on MFD_AT91_USART
    127	help
    128	  This selects a driver for the AT91 USART Controller as SPI Master,
    129	  present on AT91 and SAMA5 SoC series.
    130
    131config SPI_ATMEL_QUADSPI
    132	tristate "Atmel Quad SPI Controller"
    133	depends on ARCH_AT91 || COMPILE_TEST
    134	depends on OF && HAS_IOMEM
    135	help
    136	  This enables support for the Quad SPI controller in master mode.
    137	  This driver does not support generic SPI. The implementation only
    138	  supports spi-mem interface.
    139
    140config SPI_AU1550
    141	tristate "Au1550/Au1200/Au1300 SPI Controller"
    142	depends on MIPS_ALCHEMY
    143	select SPI_BITBANG
    144	help
    145	  If you say yes to this option, support will be included for the
    146	  PSC SPI controller found on Au1550, Au1200 and Au1300 series.
    147
    148config SPI_AXI_SPI_ENGINE
    149	tristate "Analog Devices AXI SPI Engine controller"
    150	depends on HAS_IOMEM
    151	help
    152	  This enables support for the Analog Devices AXI SPI Engine SPI controller.
    153	  It is part of the SPI Engine framework that is used in some Analog Devices
    154	  reference designs for FPGAs.
    155
    156config SPI_BCM2835
    157	tristate "BCM2835 SPI controller"
    158	depends on GPIOLIB
    159	depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
    160	help
    161	  This selects a driver for the Broadcom BCM2835 SPI master.
    162
    163	  The BCM2835 contains two types of SPI master controller; the
    164	  "universal SPI master", and the regular SPI controller. This driver
    165	  is for the regular SPI controller. Slave mode operation is not also
    166	  not supported.
    167
    168config SPI_BCM2835AUX
    169	tristate "BCM2835 SPI auxiliary controller"
    170	depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
    171	help
    172	  This selects a driver for the Broadcom BCM2835 SPI aux master.
    173
    174	  The BCM2835 contains two types of SPI master controller; the
    175	  "universal SPI master", and the regular SPI controller.
    176	  This driver is for the universal/auxiliary SPI controller.
    177
    178config SPI_BCM63XX
    179	tristate "Broadcom BCM63xx SPI controller"
    180	depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
    181	help
    182	  Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
    183
    184config SPI_BCM63XX_HSSPI
    185	tristate "Broadcom BCM63XX HS SPI controller driver"
    186	depends on BCM63XX || BMIPS_GENERIC || ARCH_BCM_63XX || COMPILE_TEST
    187	help
    188	  This enables support for the High Speed SPI controller present on
    189	  newer Broadcom BCM63XX SoCs.
    190
    191config SPI_BCM_QSPI
    192	tristate "Broadcom BSPI and MSPI controller support"
    193	depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
    194			BMIPS_GENERIC || COMPILE_TEST
    195	default ARCH_BCM_IPROC
    196	help
    197	  Enables support for the Broadcom SPI flash and MSPI controller.
    198	  Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
    199	  based platforms. This driver works for both SPI master for SPI NOR
    200	  flash device as well as MSPI device.
    201
    202config SPI_BITBANG
    203	tristate "Utilities for Bitbanging SPI masters"
    204	help
    205	  With a few GPIO pins, your system can bitbang the SPI protocol.
    206	  Select this to get SPI support through I/O pins (GPIO, parallel
    207	  port, etc).  Or, some systems' SPI master controller drivers use
    208	  this code to manage the per-word or per-transfer accesses to the
    209	  hardware shift registers.
    210
    211	  This is library code, and is automatically selected by drivers that
    212	  need it.  You only need to select this explicitly to support driver
    213	  modules that aren't part of this kernel tree.
    214
    215config SPI_BUTTERFLY
    216	tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
    217	depends on PARPORT
    218	select SPI_BITBANG
    219	help
    220	  This uses a custom parallel port cable to connect to an AVR
    221	  Butterfly <http://www.atmel.com/products/avr/butterfly>, an
    222	  inexpensive battery powered microcontroller evaluation board.
    223	  This same cable can be used to flash new firmware.
    224
    225config SPI_CADENCE
    226	tristate "Cadence SPI controller"
    227	help
    228	  This selects the Cadence SPI controller master driver
    229	  used by Xilinx Zynq and ZynqMP.
    230
    231config SPI_CADENCE_QUADSPI
    232	tristate "Cadence Quad SPI controller"
    233	depends on OF && (ARM || ARM64 || X86 || COMPILE_TEST)
    234	help
    235	  Enable support for the Cadence Quad SPI Flash controller.
    236
    237	  Cadence QSPI is a specialized controller for connecting an SPI
    238	  Flash over 1/2/4-bit wide bus. Enable this option if you have a
    239	  device with a Cadence QSPI controller and want to access the
    240	  Flash as an MTD device.
    241
    242config SPI_CADENCE_XSPI
    243	tristate "Cadence XSPI controller"
    244	depends on (OF || COMPILE_TEST) && HAS_IOMEM
    245	depends on SPI_MEM
    246	help
    247	  Enable support for the Cadence XSPI Flash controller.
    248
    249	  Cadence XSPI is a specialized controller for connecting an SPI
    250	  Flash over upto 8bit wide bus. Enable this option if you have a
    251	  device with a Cadence XSPI controller and want to access the
    252	  Flash as an MTD device.
    253
    254config SPI_CLPS711X
    255	tristate "CLPS711X host SPI controller"
    256	depends on ARCH_CLPS711X || COMPILE_TEST
    257	help
    258	  This enables dedicated general purpose SPI/Microwire1-compatible
    259	  master mode interface (SSI1) for CLPS711X-based CPUs.
    260
    261config SPI_COLDFIRE_QSPI
    262	tristate "Freescale Coldfire QSPI controller"
    263	depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
    264	help
    265	  This enables support for the Coldfire QSPI controller in master
    266	  mode.
    267
    268config SPI_DAVINCI
    269	tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
    270	depends on ARCH_DAVINCI || ARCH_KEYSTONE
    271	select SPI_BITBANG
    272	help
    273	  SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
    274
    275config SPI_DESIGNWARE
    276	tristate "DesignWare SPI controller core support"
    277	imply SPI_MEM
    278	help
    279	  general driver for SPI controller core from DesignWare
    280
    281if SPI_DESIGNWARE
    282
    283config SPI_DW_DMA
    284	bool "DMA support for DW SPI controller"
    285
    286config SPI_DW_PCI
    287	tristate "PCI interface driver for DW SPI core"
    288	depends on PCI
    289
    290config SPI_DW_MMIO
    291	tristate "Memory-mapped io interface driver for DW SPI core"
    292	depends on HAS_IOMEM
    293
    294config SPI_DW_BT1
    295	tristate "Baikal-T1 SPI driver for DW SPI core"
    296	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
    297	select MULTIPLEXER
    298	select MUX_MMIO
    299	help
    300	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
    301	  controllers. Two of them are pretty much normal: with IRQ, DMA,
    302	  FIFOs of 64 words depth, 4x CSs, but the third one as being a
    303	  part of the Baikal-T1 System Boot Controller has got a very
    304	  limited resources: no IRQ, no DMA, only a single native
    305	  chip-select and Tx/Rx FIFO with just 8 words depth available.
    306	  The later one is normally connected to an external SPI-nor flash
    307	  of 128Mb (in general can be of bigger size).
    308
    309config SPI_DW_BT1_DIRMAP
    310	bool "Directly mapped Baikal-T1 Boot SPI flash support"
    311	depends on SPI_DW_BT1
    312	help
    313	  Directly mapped SPI flash memory is an interface specific to the
    314	  Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
    315	  can be used to access a peripheral memory device just by
    316	  reading/writing data from/to it. Note that the system APB bus
    317	  will stall during each IO from/to the dirmap region until the
    318	  operation is finished. So try not to use it concurrently with
    319	  time-critical tasks (like the SPI memory operations implemented
    320	  in this driver).
    321
    322endif
    323
    324config SPI_DLN2
    325       tristate "Diolan DLN-2 USB SPI adapter"
    326       depends on MFD_DLN2
    327       help
    328	 If you say yes to this option, support will be included for Diolan
    329	 DLN2, a USB to SPI interface.
    330
    331	 This driver can also be built as a module.  If so, the module
    332	 will be called spi-dln2.
    333
    334config SPI_EP93XX
    335	tristate "Cirrus Logic EP93xx SPI controller"
    336	depends on ARCH_EP93XX || COMPILE_TEST
    337	help
    338	  This enables using the Cirrus EP93xx SPI controller in master
    339	  mode.
    340
    341config SPI_FALCON
    342	bool "Falcon SPI controller support"
    343	depends on SOC_FALCON
    344	help
    345	  The external bus unit (EBU) found on the FALC-ON SoC has SPI
    346	  emulation that is designed for serial flash access. This driver
    347	  has only been tested with m25p80 type chips. The hardware has no
    348	  support for other types of SPI peripherals.
    349
    350config SPI_FSI
    351	tristate "FSI SPI driver"
    352	depends on FSI
    353	help
    354	  This enables support for the driver for FSI bus attached SPI
    355	  controllers.
    356
    357config SPI_FSL_LPSPI
    358	tristate "Freescale i.MX LPSPI controller"
    359	depends on ARCH_MXC || COMPILE_TEST
    360	help
    361	  This enables Freescale i.MX LPSPI controllers in master mode.
    362
    363config SPI_FSL_QUADSPI
    364	tristate "Freescale QSPI controller"
    365	depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
    366	depends on HAS_IOMEM
    367	help
    368	  This enables support for the Quad SPI controller in master mode.
    369	  Up to four flash chips can be connected on two buses with two
    370	  chipselects each.
    371	  This controller does not support generic SPI messages. It only
    372	  supports the high-level SPI memory interface.
    373
    374config SPI_HISI_KUNPENG
    375	tristate "HiSilicon SPI Controller for Kunpeng SoCs"
    376	depends on (ARM64 && ACPI) || COMPILE_TEST
    377	help
    378	  This enables support for HiSilicon SPI controller found on
    379	  Kunpeng SoCs.
    380
    381	  This driver can also be built as a module. If so, the module
    382	  will be called hisi-kunpeng-spi.
    383
    384config SPI_HISI_SFC_V3XX
    385	tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
    386	depends on (ARM64 && ACPI) || COMPILE_TEST
    387	depends on HAS_IOMEM
    388	help
    389	  This enables support for HiSilicon v3xx SPI NOR flash controller
    390	  found in hi16xx chipsets.
    391
    392config SPI_NXP_FLEXSPI
    393	tristate "NXP Flex SPI controller"
    394	depends on ARCH_LAYERSCAPE || HAS_IOMEM
    395	help
    396	  This enables support for the Flex SPI controller in master mode.
    397	  Up to four slave devices can be connected on two buses with two
    398	  chipselects each.
    399	  This controller does not support generic SPI messages and only
    400	  supports the high-level SPI memory interface.
    401
    402config SPI_GPIO
    403	tristate "GPIO-based bitbanging SPI Master"
    404	depends on GPIOLIB || COMPILE_TEST
    405	select SPI_BITBANG
    406	help
    407	  This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
    408	  interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
    409	  slaves connected to a bus using this driver are configured as usual,
    410	  except that the spi_board_info.controller_data holds the GPIO number
    411	  for the chipselect used by this controller driver.
    412
    413	  Note that this driver often won't achieve even 1 Mbit/sec speeds,
    414	  making it unusually slow for SPI.  If your platform can inline
    415	  GPIO operations, you should be able to leverage that for better
    416	  speed with a custom version of this driver; see the source code.
    417
    418config SPI_IMG_SPFI
    419	tristate "IMG SPFI controller"
    420	depends on MIPS || COMPILE_TEST
    421	help
    422	  This enables support for the SPFI master controller found on
    423	  IMG SoCs.
    424
    425config SPI_IMX
    426	tristate "Freescale i.MX SPI controllers"
    427	depends on ARCH_MXC || COMPILE_TEST
    428	help
    429	  This enables support for the Freescale i.MX SPI controllers.
    430
    431config SPI_INGENIC
    432	tristate "Ingenic SoCs SPI controller"
    433	depends on MACH_INGENIC || COMPILE_TEST
    434	help
    435	  This enables support for the Ingenic SoCs SPI controller.
    436
    437	  To compile this driver as a module, choose M here: the module
    438	  will be called spi-ingenic.
    439
    440config SPI_INTEL
    441	tristate
    442
    443config SPI_INTEL_PCI
    444	tristate "Intel PCH/PCU SPI flash PCI driver (DANGEROUS)"
    445	depends on PCI
    446	depends on X86 || COMPILE_TEST
    447	depends on SPI_MEM
    448	select SPI_INTEL
    449	help
    450	  This enables PCI support for the Intel PCH/PCU SPI controller in
    451	  master mode. This controller is present in modern Intel hardware
    452	  and is used to hold BIOS and other persistent settings. Using
    453	  this driver it is possible to upgrade BIOS directly from Linux.
    454
    455	  Say N here unless you know what you are doing. Overwriting the
    456	  SPI flash may render the system unbootable.
    457
    458	  To compile this driver as a module, choose M here: the module
    459	  will be called spi-intel-pci.
    460
    461config SPI_INTEL_PLATFORM
    462	tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
    463	depends on X86 || COMPILE_TEST
    464	depends on SPI_MEM
    465	select SPI_INTEL
    466	help
    467	  This enables platform support for the Intel PCH/PCU SPI
    468	  controller in master mode. This controller is present in modern
    469	  Intel hardware and is used to hold BIOS and other persistent
    470	  settings. Using this driver it is possible to upgrade BIOS
    471	  directly from Linux.
    472
    473	  Say N here unless you know what you are doing. Overwriting the
    474	  SPI flash may render the system unbootable.
    475
    476	  To compile this driver as a module, choose M here: the module
    477	  will be called spi-intel-platform.
    478
    479config SPI_JCORE
    480	tristate "J-Core SPI Master"
    481	depends on OF && (SUPERH || COMPILE_TEST)
    482	help
    483	  This enables support for the SPI master controller in the J-Core
    484	  synthesizable, open source SoC.
    485
    486config SPI_LM70_LLP
    487	tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
    488	depends on PARPORT
    489	select SPI_BITBANG
    490	help
    491	  This driver supports the NS LM70 LLP Evaluation Board,
    492	  which interfaces to an LM70 temperature sensor using
    493	  a parallel port.
    494
    495config SPI_LP8841_RTC
    496	tristate "ICP DAS LP-8841 SPI Controller for RTC"
    497	depends on MACH_PXA27X_DT || COMPILE_TEST
    498	help
    499	  This driver provides an SPI master device to drive Maxim
    500	  DS-1302 real time clock.
    501
    502	  Say N here unless you plan to run the kernel on an ICP DAS
    503	  LP-8x4x industrial computer.
    504
    505config SPI_MPC52xx
    506	tristate "Freescale MPC52xx SPI (non-PSC) controller support"
    507	depends on PPC_MPC52xx
    508	help
    509	  This drivers supports the MPC52xx SPI controller in master SPI
    510	  mode.
    511
    512config SPI_MPC52xx_PSC
    513	tristate "Freescale MPC52xx PSC SPI controller"
    514	depends on PPC_MPC52xx
    515	help
    516	  This enables using the Freescale MPC52xx Programmable Serial
    517	  Controller in master SPI mode.
    518
    519config SPI_MPC512x_PSC
    520	tristate "Freescale MPC512x PSC SPI controller"
    521	depends on PPC_MPC512x
    522	help
    523	  This enables using the Freescale MPC5121 Programmable Serial
    524	  Controller in SPI master mode.
    525
    526config SPI_FSL_LIB
    527	tristate
    528	depends on OF
    529
    530config SPI_FSL_CPM
    531	tristate
    532	depends on FSL_SOC
    533
    534config SPI_FSL_SPI
    535	tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
    536	depends on OF
    537	select SPI_FSL_LIB
    538	select SPI_FSL_CPM if FSL_SOC
    539	help
    540	  This enables using the Freescale SPI controllers in master mode.
    541	  MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
    542	  MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
    543	  This also enables using the Aeroflex Gaisler GRLIB SPI controller in
    544	  master mode.
    545
    546config SPI_FSL_DSPI
    547	tristate "Freescale DSPI controller"
    548	select REGMAP_MMIO
    549	depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
    550	help
    551	  This enables support for the Freescale DSPI controller in master
    552	  mode. VF610, LS1021A and ColdFire platforms uses the controller.
    553
    554config SPI_FSL_ESPI
    555	tristate "Freescale eSPI controller"
    556	depends on FSL_SOC
    557	help
    558	  This enables using the Freescale eSPI controllers in master mode.
    559	  From MPC8536, 85xx platform uses the controller, and all P10xx,
    560	  P20xx, P30xx,P40xx, P50xx uses this controller.
    561
    562config SPI_MESON_SPICC
    563	tristate "Amlogic Meson SPICC controller"
    564	depends on COMMON_CLK
    565	depends on ARCH_MESON || COMPILE_TEST
    566	help
    567	  This enables master mode support for the SPICC (SPI communication
    568	  controller) available in Amlogic Meson SoCs.
    569
    570config SPI_MESON_SPIFC
    571	tristate "Amlogic Meson SPIFC controller"
    572	depends on ARCH_MESON || COMPILE_TEST
    573	select REGMAP_MMIO
    574	help
    575	  This enables master mode support for the SPIFC (SPI flash
    576	  controller) available in Amlogic Meson SoCs.
    577
    578config SPI_MT65XX
    579	tristate "MediaTek SPI controller"
    580	depends on ARCH_MEDIATEK || COMPILE_TEST
    581	help
    582	  This selects the MediaTek(R) SPI bus driver.
    583	  If you want to use MediaTek(R) SPI interface,
    584	  say Y or M here.If you are not sure, say N.
    585	  SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
    586
    587config SPI_MT7621
    588	tristate "MediaTek MT7621 SPI Controller"
    589	depends on RALINK || COMPILE_TEST
    590	help
    591	  This selects a driver for the MediaTek MT7621 SPI Controller.
    592
    593config SPI_MTK_NOR
    594	tristate "MediaTek SPI NOR controller"
    595	depends on ARCH_MEDIATEK || COMPILE_TEST
    596	help
    597	  This enables support for SPI NOR controller found on MediaTek
    598	  ARM SoCs. This is a controller specifically for SPI NOR flash.
    599	  It can perform generic SPI transfers up to 6 bytes via generic
    600	  SPI interface as well as several SPI NOR specific instructions
    601	  via SPI MEM interface.
    602
    603config SPI_MTK_SNFI
    604	tristate "MediaTek SPI NAND Flash Interface"
    605	depends on ARCH_MEDIATEK || COMPILE_TEST
    606	depends on MTD_NAND_ECC_MEDIATEK
    607	help
    608	  This enables support for SPI-NAND mode on the MediaTek NAND
    609	  Flash Interface found on MediaTek ARM SoCs. This controller
    610	  is implemented as a SPI-MEM controller with pipelined ECC
    611	  capcability.
    612
    613config SPI_NPCM_FIU
    614	tristate "Nuvoton NPCM FLASH Interface Unit"
    615	depends on ARCH_NPCM || COMPILE_TEST
    616	depends on OF && HAS_IOMEM
    617	help
    618	  This enables support for the Flash Interface Unit SPI controller
    619	  in master mode.
    620	  This driver does not support generic SPI. The implementation only
    621	  supports spi-mem interface.
    622
    623config SPI_NPCM_PSPI
    624	tristate "Nuvoton NPCM PSPI Controller"
    625	depends on ARCH_NPCM || COMPILE_TEST
    626	help
    627	  This driver provides support for Nuvoton NPCM BMC
    628	  Peripheral SPI controller in master mode.
    629
    630config SPI_LANTIQ_SSC
    631	tristate "Lantiq SSC SPI controller"
    632	depends on LANTIQ || X86 || COMPILE_TEST
    633	help
    634	  This driver supports the Lantiq SSC SPI controller in master
    635	  mode. This controller is found on Intel (former Lantiq) SoCs like
    636	  the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
    637
    638config SPI_OC_TINY
    639	tristate "OpenCores tiny SPI"
    640	depends on GPIOLIB || COMPILE_TEST
    641	select SPI_BITBANG
    642	help
    643	  This is the driver for OpenCores tiny SPI master controller.
    644
    645config SPI_OCTEON
    646	tristate "Cavium OCTEON SPI controller"
    647	depends on CAVIUM_OCTEON_SOC
    648	help
    649	  SPI host driver for the hardware found on some Cavium OCTEON
    650	  SOCs.
    651
    652config SPI_OMAP_UWIRE
    653	tristate "OMAP1 MicroWire"
    654	depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
    655	select SPI_BITBANG
    656	help
    657	  This hooks up to the MicroWire controller on OMAP1 chips.
    658
    659config SPI_OMAP24XX
    660	tristate "McSPI driver for OMAP"
    661	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
    662	select SG_SPLIT
    663	help
    664	  SPI master controller for OMAP24XX and later Multichannel SPI
    665	  (McSPI) modules.
    666
    667config SPI_TI_QSPI
    668	tristate "DRA7xxx QSPI controller support"
    669	depends on ARCH_OMAP2PLUS || COMPILE_TEST
    670	help
    671	  QSPI master controller for DRA7xxx used for flash devices.
    672	  This device supports single, dual and quad read support, while
    673	  it only supports single write mode.
    674
    675config SPI_OMAP_100K
    676	tristate "OMAP SPI 100K"
    677	depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
    678	help
    679	  OMAP SPI 100K master controller for omap7xx boards.
    680
    681config SPI_ORION
    682	tristate "Orion SPI master"
    683	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
    684	help
    685	  This enables using the SPI master controller on the Orion
    686	  and MVEBU chips.
    687
    688config SPI_PIC32
    689	tristate "Microchip PIC32 series SPI"
    690	depends on MACH_PIC32 || COMPILE_TEST
    691	help
    692	  SPI driver for Microchip PIC32 SPI master controller.
    693
    694config SPI_PIC32_SQI
    695	tristate "Microchip PIC32 Quad SPI driver"
    696	depends on MACH_PIC32 || COMPILE_TEST
    697	help
    698	  SPI driver for PIC32 Quad SPI controller.
    699
    700config SPI_PL022
    701	tristate "ARM AMBA PL022 SSP controller"
    702	depends on ARM_AMBA
    703	default y if ARCH_REALVIEW
    704	default y if INTEGRATOR_IMPD1
    705	default y if ARCH_VERSATILE
    706	help
    707	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
    708	  controller. If you have an embedded system with an AMBA(R)
    709	  bus and a PL022 controller, say Y or M here.
    710
    711config SPI_PPC4xx
    712	tristate "PPC4xx SPI Controller"
    713	depends on PPC32 && 4xx
    714	select SPI_BITBANG
    715	help
    716	  This selects a driver for the PPC4xx SPI Controller.
    717
    718config SPI_PXA2XX
    719	tristate "PXA2xx SSP SPI master"
    720	depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
    721	select PXA_SSP if ARCH_PXA || ARCH_MMP
    722	help
    723	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
    724	  controller. The driver can be configured to use any SSP port and
    725	  additional documentation can be found a Documentation/spi/pxa2xx.rst.
    726
    727config SPI_PXA2XX_PCI
    728	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
    729
    730config SPI_ROCKCHIP
    731	tristate "Rockchip SPI controller driver"
    732	help
    733	  This selects a driver for Rockchip SPI controller.
    734
    735	  If you say yes to this option, support will be included for
    736	  RK3066, RK3188 and RK3288 families of SPI controller.
    737	  Rockchip SPI controller support DMA transport and PIO mode.
    738	  The main usecase of this controller is to use spi flash as boot
    739	  device.
    740
    741config SPI_ROCKCHIP_SFC
    742	tristate "Rockchip Serial Flash Controller (SFC)"
    743	depends on ARCH_ROCKCHIP || COMPILE_TEST
    744	depends on HAS_IOMEM && HAS_DMA
    745	help
    746	  This enables support for Rockchip serial flash controller. This
    747	  is a specialized controller used to access SPI flash on some
    748	  Rockchip SOCs.
    749
    750	  ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
    751	  the driver automatically falls back to PIO mode.
    752
    753config SPI_RB4XX
    754	tristate "Mikrotik RB4XX SPI master"
    755	depends on SPI_MASTER && ATH79
    756	help
    757	  SPI controller driver for the Mikrotik RB4xx series boards.
    758
    759config SPI_RPCIF
    760	tristate "Renesas RPC-IF SPI driver"
    761	depends on RENESAS_RPCIF
    762	help
    763	  SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
    764
    765config SPI_RSPI
    766	tristate "Renesas RSPI/QSPI controller"
    767	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
    768	help
    769	  SPI driver for Renesas RSPI and QSPI blocks.
    770
    771config SPI_QCOM_QSPI
    772	tristate "QTI QSPI controller"
    773	depends on ARCH_QCOM
    774	help
    775	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
    776
    777config SPI_QUP
    778	tristate "Qualcomm SPI controller with QUP interface"
    779	depends on ARCH_QCOM || COMPILE_TEST
    780	help
    781	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
    782	  provides a common data path (an output FIFO and an input FIFO)
    783	  for serial peripheral interface (SPI) mini-core. SPI in master
    784	  mode supports up to 50MHz, up to four chip selects, programmable
    785	  data path from 4 bits to 32 bits and numerous protocol variants.
    786
    787	  This driver can also be built as a module.  If so, the module
    788	  will be called spi_qup.
    789
    790config SPI_QCOM_GENI
    791	tristate "Qualcomm GENI based SPI controller"
    792	depends on QCOM_GENI_SE
    793	help
    794	  This driver supports GENI serial engine based SPI controller in
    795	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
    796	  yes to this option, support will be included for the built-in SPI
    797	  interface on the Qualcomm Technologies Inc.'s SoCs.
    798
    799	  This driver can also be built as a module.  If so, the module
    800	  will be called spi-geni-qcom.
    801
    802config SPI_S3C24XX
    803	tristate "Samsung S3C24XX series SPI"
    804	depends on ARCH_S3C24XX
    805	select SPI_BITBANG
    806	help
    807	  SPI driver for Samsung S3C24XX series ARM SoCs
    808
    809config SPI_S3C24XX_FIQ
    810	bool "S3C24XX driver with FIQ pseudo-DMA"
    811	depends on SPI_S3C24XX
    812	select FIQ
    813	help
    814	  Enable FIQ support for the S3C24XX SPI driver to provide pseudo
    815	  DMA by using the fast-interrupt request framework, This allows
    816	  the driver to get DMA-like performance when there are either
    817	  no free DMA channels, or when doing transfers that required both
    818	  TX and RX data paths.
    819
    820config SPI_S3C64XX
    821	tristate "Samsung S3C64XX/Exynos SoC series type SPI"
    822	depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
    823	help
    824	  SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
    825	  Choose Y/M here only if you build for such Samsung SoC.
    826
    827config SPI_SC18IS602
    828	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
    829	depends on I2C
    830	help
    831	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
    832
    833config SPI_SH_MSIOF
    834	tristate "SuperH MSIOF SPI controller"
    835	depends on HAVE_CLK
    836	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
    837	help
    838	  SPI driver for SuperH and SH Mobile MSIOF blocks.
    839
    840config SPI_SH
    841	tristate "SuperH SPI controller"
    842	depends on SUPERH || COMPILE_TEST
    843	help
    844	  SPI driver for SuperH SPI blocks.
    845
    846config SPI_SH_SCI
    847	tristate "SuperH SCI SPI controller"
    848	depends on SUPERH
    849	select SPI_BITBANG
    850	help
    851	  SPI driver for SuperH SCI blocks.
    852
    853config SPI_SH_HSPI
    854	tristate "SuperH HSPI controller"
    855	depends on ARCH_RENESAS || COMPILE_TEST
    856	help
    857	  SPI driver for SuperH HSPI blocks.
    858
    859config SPI_SIFIVE
    860	tristate "SiFive SPI controller"
    861	depends on HAS_IOMEM
    862	help
    863	  This exposes the SPI controller IP from SiFive.
    864
    865config SPI_SLAVE_MT27XX
    866	tristate "MediaTek SPI slave device"
    867	depends on ARCH_MEDIATEK || COMPILE_TEST
    868	depends on SPI_SLAVE
    869	help
    870	  This selects the MediaTek(R) SPI slave device driver.
    871	  If you want to use MediaTek(R) SPI slave interface,
    872	  say Y or M here.If you are not sure, say N.
    873	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
    874
    875config SPI_SPRD
    876	tristate "Spreadtrum SPI controller"
    877	depends on ARCH_SPRD || COMPILE_TEST
    878	help
    879	  SPI driver for Spreadtrum SoCs.
    880
    881config SPI_SPRD_ADI
    882	tristate "Spreadtrum ADI controller"
    883	depends on ARCH_SPRD || COMPILE_TEST
    884	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
    885	help
    886	  ADI driver based on SPI for Spreadtrum SoCs.
    887
    888config SPI_STM32
    889	tristate "STMicroelectronics STM32 SPI controller"
    890	depends on ARCH_STM32 || COMPILE_TEST
    891	help
    892	  SPI driver for STMicroelectronics STM32 SoCs.
    893
    894	  STM32 SPI controller supports DMA and PIO modes. When DMA
    895	  is not available, the driver automatically falls back to
    896	  PIO mode.
    897
    898config SPI_STM32_QSPI
    899	tristate "STMicroelectronics STM32 QUAD SPI controller"
    900	depends on ARCH_STM32 || COMPILE_TEST
    901	depends on OF
    902	depends on SPI_MEM
    903	help
    904	  This enables support for the Quad SPI controller in master mode.
    905	  This driver does not support generic SPI. The implementation only
    906	  supports spi-mem interface.
    907
    908config SPI_ST_SSC4
    909	tristate "STMicroelectronics SPI SSC-based driver"
    910	depends on ARCH_STI || COMPILE_TEST
    911	help
    912	  STMicroelectronics SoCs support for SPI. If you say yes to
    913	  this option, support will be included for the SSC driven SPI.
    914
    915config SPI_SUN4I
    916	tristate "Allwinner A10 SoCs SPI controller"
    917	depends on ARCH_SUNXI || COMPILE_TEST
    918	help
    919	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
    920
    921config SPI_SUN6I
    922	tristate "Allwinner A31 SPI controller"
    923	depends on ARCH_SUNXI || COMPILE_TEST
    924	depends on RESET_CONTROLLER
    925	help
    926	  This enables using the SPI controller on the Allwinner A31 SoCs.
    927
    928config SPI_SUNPLUS_SP7021
    929	tristate "Sunplus SP7021 SPI controller"
    930	depends on SOC_SP7021 || COMPILE_TEST
    931	help
    932	  This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
    933	  This driver can also be built as a module. If so, the module will be
    934	  called as spi-sunplus-sp7021.
    935
    936	  If you have a  Sunplus SP7021 platform say Y here.
    937	  If unsure, say N.
    938
    939config SPI_SYNQUACER
    940	tristate "Socionext's SynQuacer HighSpeed SPI controller"
    941	depends on ARCH_SYNQUACER || COMPILE_TEST
    942	help
    943	  SPI driver for Socionext's High speed SPI controller which provides
    944	  various operating modes for interfacing to serial peripheral devices
    945	  that use the de-facto standard SPI protocol.
    946
    947	  It also supports the new dual-bit and quad-bit SPI protocol.
    948
    949config SPI_MXIC
    950	tristate "Macronix MX25F0A SPI controller"
    951	depends on SPI_MASTER
    952	imply MTD_NAND_ECC_MXIC
    953	help
    954	  This selects the Macronix MX25F0A SPI controller driver.
    955
    956config SPI_MXS
    957	tristate "Freescale MXS SPI controller"
    958	depends on ARCH_MXS
    959	select STMP_DEVICE
    960	help
    961	  SPI driver for Freescale MXS devices.
    962
    963config SPI_TEGRA210_QUAD
    964	tristate "NVIDIA Tegra QSPI Controller"
    965	depends on ARCH_TEGRA || COMPILE_TEST
    966	depends on RESET_CONTROLLER
    967	help
    968	  QSPI driver for NVIDIA Tegra QSPI Controller interface. This
    969	  controller is different from the SPI controller and is available
    970	  on Tegra SoCs starting from Tegra210.
    971
    972config SPI_TEGRA114
    973	tristate "NVIDIA Tegra114 SPI Controller"
    974	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
    975	depends on RESET_CONTROLLER
    976	help
    977	  SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
    978	  is different than the older SoCs SPI controller and also register interface
    979	  get changed with this controller.
    980
    981config SPI_TEGRA20_SFLASH
    982	tristate "Nvidia Tegra20 Serial flash Controller"
    983	depends on ARCH_TEGRA || COMPILE_TEST
    984	depends on RESET_CONTROLLER
    985	help
    986	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
    987	  The main usecase of this controller is to use spi flash as boot
    988	  device.
    989
    990config SPI_TEGRA20_SLINK
    991	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
    992	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
    993	depends on RESET_CONTROLLER
    994	help
    995	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
    996
    997config SPI_THUNDERX
    998	tristate "Cavium ThunderX SPI controller"
    999	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
   1000	help
   1001	  SPI host driver for the hardware found on Cavium ThunderX
   1002	  SOCs.
   1003
   1004config SPI_TOPCLIFF_PCH
   1005	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
   1006	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
   1007	help
   1008	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
   1009	  used in some x86 embedded processors.
   1010
   1011	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
   1012	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
   1013
   1014config SPI_UNIPHIER
   1015	tristate "Socionext UniPhier SPI Controller"
   1016	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
   1017	depends on HAS_IOMEM
   1018	help
   1019	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
   1020
   1021	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
   1022	  Every UniPhier SoC has SCSSI which supports single channel.
   1023	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
   1024	  This driver supports SCSSI only.
   1025
   1026	  If your SoC supports SCSSI, say Y here.
   1027
   1028config SPI_XCOMM
   1029	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
   1030	depends on I2C
   1031	help
   1032	  Support for the SPI-I2C bridge found on the Analog Devices
   1033	  AD-FMCOMMS1-EBZ board.
   1034
   1035config SPI_XILINX
   1036	tristate "Xilinx SPI controller common module"
   1037	depends on HAS_IOMEM
   1038	select SPI_BITBANG
   1039	help
   1040	  This exposes the SPI controller IP from the Xilinx EDK.
   1041
   1042	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
   1043	  Product Specification document (DS464) for hardware details.
   1044
   1045	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
   1046
   1047config SPI_XLP
   1048	tristate "Cavium ThunderX2 SPI controller driver"
   1049	depends on ARCH_THUNDER2 || COMPILE_TEST
   1050	help
   1051	  Enable support for the SPI controller on the Cavium ThunderX2.
   1052	  (Originally on Netlogic XLP SoCs.)
   1053
   1054	  If you have a Cavium ThunderX2 platform say Y here.
   1055	  If unsure, say N.
   1056
   1057config SPI_XTENSA_XTFPGA
   1058	tristate "Xtensa SPI controller for xtfpga"
   1059	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
   1060	select SPI_BITBANG
   1061	help
   1062	  SPI driver for xtfpga SPI master controller.
   1063
   1064	  This simple SPI master controller is built into xtfpga bitstreams
   1065	  and is used to control daughterboard audio codec. It always transfers
   1066	  16 bit words in SPI mode 0, automatically asserting CS on transfer
   1067	  start and deasserting on end.
   1068
   1069config SPI_ZYNQ_QSPI
   1070	tristate "Xilinx Zynq QSPI controller"
   1071	depends on ARCH_ZYNQ || COMPILE_TEST
   1072	help
   1073	  This enables support for the Zynq Quad SPI controller
   1074	  in master mode.
   1075	  This controller only supports SPI memory interface.
   1076
   1077config SPI_ZYNQMP_GQSPI
   1078	tristate "Xilinx ZynqMP GQSPI controller"
   1079	depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
   1080	help
   1081	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
   1082
   1083config SPI_AMD
   1084	tristate "AMD SPI controller"
   1085	depends on SPI_MASTER || COMPILE_TEST
   1086	help
   1087	  Enables SPI controller driver for AMD SoC.
   1088
   1089#
   1090# Add new SPI master controllers in alphabetical order above this line
   1091#
   1092
   1093comment "SPI Multiplexer support"
   1094
   1095config SPI_MUX
   1096	tristate "SPI multiplexer support"
   1097	select MULTIPLEXER
   1098	help
   1099	  This adds support for SPI multiplexers. Each SPI mux will be
   1100	  accessible as a SPI controller, the devices behind the mux will appear
   1101	  to be chip selects on this controller. It is still necessary to
   1102	  select one or more specific mux-controller drivers.
   1103
   1104#
   1105# There are lots of SPI device types, with sensors and memory
   1106# being probably the most widely used ones.
   1107#
   1108comment "SPI Protocol Masters"
   1109
   1110config SPI_SPIDEV
   1111	tristate "User mode SPI device driver support"
   1112	help
   1113	  This supports user mode SPI protocol drivers.
   1114
   1115	  Note that this application programming interface is EXPERIMENTAL
   1116	  and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
   1117
   1118config SPI_LOOPBACK_TEST
   1119	tristate "spi loopback test framework support"
   1120	depends on m
   1121	help
   1122	  This enables the SPI loopback testing framework driver
   1123
   1124	  primarily used for development of spi_master drivers
   1125	  and to detect regressions
   1126
   1127config SPI_TLE62X0
   1128	tristate "Infineon TLE62X0 (for power switching)"
   1129	depends on SYSFS
   1130	help
   1131	  SPI driver for Infineon TLE62X0 series line driver chips,
   1132	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
   1133	  sysfs interface, with each line presented as a kind of GPIO
   1134	  exposing both switch control and diagnostic feedback.
   1135
   1136#
   1137# Add new SPI protocol masters in alphabetical order above this line
   1138#
   1139
   1140endif # SPI_MASTER
   1141
   1142#
   1143# SLAVE side ... listening to other SPI masters
   1144#
   1145
   1146config SPI_SLAVE
   1147	bool "SPI slave protocol handlers"
   1148	help
   1149	  If your system has a slave-capable SPI controller, you can enable
   1150	  slave protocol handlers.
   1151
   1152if SPI_SLAVE
   1153
   1154config SPI_SLAVE_TIME
   1155	tristate "SPI slave handler reporting boot up time"
   1156	help
   1157	  SPI slave handler responding with the time of reception of the last
   1158	  SPI message.
   1159
   1160config SPI_SLAVE_SYSTEM_CONTROL
   1161	tristate "SPI slave handler controlling system state"
   1162	help
   1163	  SPI slave handler to allow remote control of system reboot, power
   1164	  off, halt, and suspend.
   1165
   1166endif # SPI_SLAVE
   1167
   1168config SPI_DYNAMIC
   1169	def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
   1170
   1171endif # SPI