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