spi: spi-geni-qcom: No need for irqsave variant of spinlock calls
[linux-2.6-block.git] / drivers / spi / Kconfig
CommitLineData
ec8f24b7 1# SPDX-License-Identifier: GPL-2.0-only
8ae12a0d
DB
2#
3# SPI driver configuration
4#
79d8c7a8 5menuconfig SPI
8ae12a0d 6 bool "SPI support"
79d8c7a8 7 depends on HAS_IOMEM
8ae12a0d
DB
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
3cb2fccc 15 SPI is widely used by microcontrollers to talk with sensors,
8ae12a0d
DB
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
79d8c7a8
AG
26if SPI
27
8ae12a0d 28config SPI_DEBUG
6341e62b 29 bool "Debug support for SPI drivers"
79d8c7a8 30 depends on DEBUG_KERNEL
8ae12a0d
DB
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
6341e62b
CJ
40# bool "SPI Master Support"
41 bool
8ae12a0d
DB
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
6291fe2a
RD
49if SPI_MASTER
50
c36ff266
BB
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
29e795ca 56 by providing a high-level interface to send memory-like commands.
c36ff266 57
8ae12a0d 58comment "SPI Master Controller Drivers"
8ae12a0d 59
0b782531
TC
60config SPI_ALTERA
61 tristate "Altera SPI Controller"
0b782531
TC
62 help
63 This is the driver for the Altera SPI Controller.
64
047980c5
CG
65config SPI_AR934X
66 tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
67 depends on ATH79 || COMPILE_TEST
68 help
69 This enables support for the SPI controller present on the
70 Qualcomm Atheros AR934X/QCA95XX SoCs.
71
8efaef4d
GJ
72config SPI_ATH79
73 tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
b172fd0c 74 depends on ATH79 || COMPILE_TEST
8efaef4d
GJ
75 select SPI_BITBANG
76 help
77 This enables support for the SPI controller present on the
78 Atheros AR71XX/AR724X/AR913X SoCs.
79
5762ab71
RP
80config SPI_ARMADA_3700
81 tristate "Marvell Armada 3700 SPI Controller"
82 depends on (ARCH_MVEBU && OF) || COMPILE_TEST
83 help
84 This enables support for the SPI controller present on the
85 Marvell Armada 3700 SoCs.
86
754ce4f2
HS
87config SPI_ATMEL
88 tristate "Atmel SPI Controller"
a687a533 89 depends on ARCH_AT91 || COMPILE_TEST
1cb84b02 90 depends on OF
754ce4f2
HS
91 help
92 This selects a driver for the Atmel SPI Controller, present on
a687a533 93 many AT91 ARM chips.
754ce4f2 94
e1892546
RP
95config SPI_AT91_USART
96 tristate "Atmel USART Controller SPI driver"
97 depends on (ARCH_AT91 || COMPILE_TEST)
98 depends on MFD_AT91_USART
99 help
100 This selects a driver for the AT91 USART Controller as SPI Master,
101 present on AT91 and SAMA5 SoC series.
102
0e6aae08
PB
103config SPI_ATMEL_QUADSPI
104 tristate "Atmel Quad SPI Controller"
2a9d92fb 105 depends on ARCH_AT91 || (ARM && COMPILE_TEST && !ARCH_EBSA110)
0e6aae08
PB
106 depends on OF && HAS_IOMEM
107 help
108 This enables support for the Quad SPI controller in master mode.
109 This driver does not support generic SPI. The implementation only
110 supports spi-mem interface.
111
e32bb870
MB
112config SPI_AU1550
113 tristate "Au1550/Au1200/Au1300 SPI Controller"
114 depends on MIPS_ALCHEMY
115 select SPI_BITBANG
116 help
117 If you say yes to this option, support will be included for the
118 PSC SPI controller found on Au1550, Au1200 and Au1300 series.
119
b1353d1c
LPC
120config SPI_AXI_SPI_ENGINE
121 tristate "Analog Devices AXI SPI Engine controller"
122 depends on HAS_IOMEM
123 help
124 This enables support for the Analog Devices AXI SPI Engine SPI controller.
125 It is part of the SPI Engine framework that is used in some Analog Devices
126 reference designs for FPGAs.
127
f8043872
CB
128config SPI_BCM2835
129 tristate "BCM2835 SPI controller"
e0d58cdc 130 depends on GPIOLIB
35ceb675 131 depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
f8043872
CB
132 help
133 This selects a driver for the Broadcom BCM2835 SPI master.
134
135 The BCM2835 contains two types of SPI master controller; the
136 "universal SPI master", and the regular SPI controller. This driver
137 is for the regular SPI controller. Slave mode operation is not also
138 not supported.
139
1ea29b39
MS
140config SPI_BCM2835AUX
141 tristate "BCM2835 SPI auxiliary controller"
35ceb675 142 depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
1ea29b39
MS
143 help
144 This selects a driver for the Broadcom BCM2835 SPI aux master.
145
146 The BCM2835 contains two types of SPI master controller; the
147 "universal SPI master", and the regular SPI controller.
148 This driver is for the universal/auxiliary SPI controller.
149
b42dfed8
FF
150config SPI_BCM63XX
151 tristate "Broadcom BCM63xx SPI controller"
3a521450 152 depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
b42dfed8 153 help
554bbe72 154 Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
b42dfed8 155
142168eb
JG
156config SPI_BCM63XX_HSSPI
157 tristate "Broadcom BCM63XX HS SPI controller driver"
ba2137f3 158 depends on BCM63XX || BMIPS_GENERIC || ARCH_BCM_63XX || COMPILE_TEST
142168eb
JG
159 help
160 This enables support for the High Speed SPI controller present on
161 newer Broadcom BCM63XX SoCs.
162
fa236a7e
KD
163config SPI_BCM_QSPI
164 tristate "Broadcom BSPI and MSPI controller support"
279e4af7
JS
165 depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
166 BMIPS_GENERIC || COMPILE_TEST
fa236a7e
KD
167 default ARCH_BCM_IPROC
168 help
169 Enables support for the Broadcom SPI flash and MSPI controller.
170 Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
171 based platforms. This driver works for both SPI master for spi-nor
172 flash device as well as MSPI device.
173
9904f22a 174config SPI_BITBANG
d29389de 175 tristate "Utilities for Bitbanging SPI masters"
9904f22a
DB
176 help
177 With a few GPIO pins, your system can bitbang the SPI protocol.
178 Select this to get SPI support through I/O pins (GPIO, parallel
179 port, etc). Or, some systems' SPI master controller drivers use
180 this code to manage the per-word or per-transfer accesses to the
181 hardware shift registers.
182
183 This is library code, and is automatically selected by drivers that
184 need it. You only need to select this explicitly to support driver
185 modules that aren't part of this kernel tree.
8ae12a0d 186
7111763d
DB
187config SPI_BUTTERFLY
188 tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
6291fe2a 189 depends on PARPORT
7111763d
DB
190 select SPI_BITBANG
191 help
192 This uses a custom parallel port cable to connect to an AVR
193 Butterfly <http://www.atmel.com/products/avr/butterfly>, an
194 inexpensive battery powered microcontroller evaluation board.
195 This same cable can be used to flash new firmware.
196
c474b386
HK
197config SPI_CADENCE
198 tristate "Cadence SPI controller"
c474b386
HK
199 help
200 This selects the Cadence SPI controller master driver
38b6484e 201 used by Xilinx Zynq and ZynqMP.
c474b386 202
161b96c3
AS
203config SPI_CLPS711X
204 tristate "CLPS711X host SPI controller"
5634dd8b 205 depends on ARCH_CLPS711X || COMPILE_TEST
161b96c3
AS
206 help
207 This enables dedicated general purpose SPI/Microwire1-compatible
208 master mode interface (SSI1) for CLPS711X-based CPUs.
209
34b8c661
SK
210config SPI_COLDFIRE_QSPI
211 tristate "Freescale Coldfire QSPI controller"
bce4d12b 212 depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
34b8c661
SK
213 help
214 This enables support for the Coldfire QSPI controller in master
215 mode.
216
358934a6 217config SPI_DAVINCI
23ce17ad 218 tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
78848914 219 depends on ARCH_DAVINCI || ARCH_KEYSTONE
358934a6
SP
220 select SPI_BITBANG
221 help
23ce17ad
SN
222 SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
223
e32bb870
MB
224config SPI_DESIGNWARE
225 tristate "DesignWare SPI controller core support"
226 help
227 general driver for SPI controller core from DesignWare
228
ecb3a67e
SS
229if SPI_DESIGNWARE
230
6c710c0c
SS
231config SPI_DW_DMA
232 bool "DMA support for DW SPI controller"
6c710c0c 233
e32bb870
MB
234config SPI_DW_PCI
235 tristate "PCI interface driver for DW SPI core"
ecb3a67e 236 depends on PCI
e32bb870 237
e32bb870
MB
238config SPI_DW_MMIO
239 tristate "Memory-mapped io interface driver for DW SPI core"
ecb3a67e
SS
240 depends on HAS_IOMEM
241
242endif
e32bb870 243
3d8c0d74
LP
244config SPI_DLN2
245 tristate "Diolan DLN-2 USB SPI adapter"
246 depends on MFD_DLN2
247 help
554bbe72
KK
248 If you say yes to this option, support will be included for Diolan
249 DLN2, a USB to SPI interface.
3d8c0d74 250
554bbe72
KK
251 This driver can also be built as a module. If so, the module
252 will be called spi-dln2.
3d8c0d74 253
86f8973c
UKK
254config SPI_EFM32
255 tristate "EFM32 SPI controller"
256 depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
257 select SPI_BITBANG
258 help
259 Driver for the spi controller found on Energy Micro's EFM32 SoCs.
260
011f23a3
MW
261config SPI_EP93XX
262 tristate "Cirrus Logic EP93xx SPI controller"
dd1053a9 263 depends on ARCH_EP93XX || COMPILE_TEST
011f23a3
MW
264 help
265 This enables using the Cirrus EP93xx SPI controller in master
266 mode.
267
6cd3c7e2 268config SPI_FALCON
9c6a3af0 269 bool "Falcon SPI controller support"
6cd3c7e2
TL
270 depends on SOC_FALCON
271 help
272 The external bus unit (EBU) found on the FALC-ON SoC has SPI
273 emulation that is designed for serial flash access. This driver
274 has only been tested with m25p80 type chips. The hardware has no
275 support for other types of SPI peripherals.
276
bbb6b2f9
EJ
277config SPI_FSI
278 tristate "FSI SPI driver"
279 depends on FSI
280 help
281 This enables support for the driver for FSI bus attached SPI
282 controllers.
283
5314987d
GP
284config SPI_FSL_LPSPI
285 tristate "Freescale i.MX LPSPI controller"
286 depends on ARCH_MXC || COMPILE_TEST
287 help
288 This enables Freescale i.MX LPSPI controllers in master mode.
289
84d04318
FS
290config SPI_FSL_QUADSPI
291 tristate "Freescale QSPI controller"
292 depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
293 depends on HAS_IOMEM
294 help
295 This enables support for the Quad SPI controller in master mode.
296 Up to four flash chips can be connected on two buses with two
297 chipselects each.
298 This controller does not support generic SPI messages. It only
299 supports the high-level SPI memory interface.
300
a2ca53b5
JG
301config SPI_HISI_SFC_V3XX
302 tristate "HiSilicon SPI-NOR Flash Controller for Hi16XX chipsets"
303 depends on (ARM64 && ACPI) || COMPILE_TEST
304 depends on HAS_IOMEM
a2ca53b5
JG
305 help
306 This enables support for HiSilicon v3xx SPI-NOR flash controller
307 found in hi16xx chipsets.
308
a5356aef
YNG
309config SPI_NXP_FLEXSPI
310 tristate "NXP Flex SPI controller"
311 depends on ARCH_LAYERSCAPE || HAS_IOMEM
312 help
313 This enables support for the Flex SPI controller in master mode.
314 Up to four slave devices can be connected on two buses with two
315 chipselects each.
316 This controller does not support generic SPI messages and only
317 supports the high-level SPI memory interface.
318
d29389de
DB
319config SPI_GPIO
320 tristate "GPIO-based bitbanging SPI Master"
5c2301a9 321 depends on GPIOLIB || COMPILE_TEST
d29389de
DB
322 select SPI_BITBANG
323 help
324 This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
325 interface to manage MOSI, MISO, SCK, and chipselect signals. SPI
326 slaves connected to a bus using this driver are configured as usual,
327 except that the spi_board_info.controller_data holds the GPIO number
328 for the chipselect used by this controller driver.
329
330 Note that this driver often won't achieve even 1 Mbit/sec speeds,
331 making it unusually slow for SPI. If your platform can inline
332 GPIO operations, you should be able to leverage that for better
333 speed with a custom version of this driver; see the source code.
334
deba2580
AB
335config SPI_IMG_SPFI
336 tristate "IMG SPFI controller"
337 depends on MIPS || COMPILE_TEST
338 help
339 This enables support for the SPFI master controller found on
340 IMG SoCs.
341
b5f3294f
SH
342config SPI_IMX
343 tristate "Freescale i.MX SPI controllers"
dd1053a9 344 depends on ARCH_MXC || COMPILE_TEST
b5f3294f
SH
345 select SPI_BITBANG
346 help
2e236baf 347 This enables support for the Freescale i.MX SPI controllers.
b5f3294f 348
2cb1b3b3
RF
349config SPI_JCORE
350 tristate "J-Core SPI Master"
351 depends on OF && (SUPERH || COMPILE_TEST)
352 help
353 This enables support for the SPI master controller in the J-Core
354 synthesizable, open source SoC.
355
78961a57
KB
356config SPI_LM70_LLP
357 tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
6d1f56aa 358 depends on PARPORT
78961a57
KB
359 select SPI_BITBANG
360 help
361 This driver supports the NS LM70 LLP Evaluation Board,
362 which interfaces to an LM70 temperature sensor using
363 a parallel port.
364
7ecbfff6
SI
365config SPI_LP8841_RTC
366 tristate "ICP DAS LP-8841 SPI Controller for RTC"
367 depends on MACH_PXA27X_DT || COMPILE_TEST
368 help
369 This driver provides an SPI master device to drive Maxim
370 DS-1302 real time clock.
371
372 Say N here unless you plan to run the kernel on an ICP DAS
373 LP-8x4x industrial computer.
374
42bbb709
GL
375config SPI_MPC52xx
376 tristate "Freescale MPC52xx SPI (non-PSC) controller support"
7433f2b7 377 depends on PPC_MPC52xx
42bbb709
GL
378 help
379 This drivers supports the MPC52xx SPI controller in master SPI
380 mode.
381
00b8fd23
DC
382config SPI_MPC52xx_PSC
383 tristate "Freescale MPC52xx PSC SPI controller"
6d1f56aa 384 depends on PPC_MPC52xx
00b8fd23
DC
385 help
386 This enables using the Freescale MPC52xx Programmable Serial
387 Controller in master SPI mode.
388
6e27388f
AG
389config SPI_MPC512x_PSC
390 tristate "Freescale MPC512x PSC SPI controller"
5e8afa34 391 depends on PPC_MPC512x
6e27388f
AG
392 help
393 This enables using the Freescale MPC5121 Programmable Serial
394 Controller in SPI master mode.
395
b36ece83 396config SPI_FSL_LIB
e8beacbb
AL
397 tristate
398 depends on OF
399
400config SPI_FSL_CPM
b36ece83
MH
401 tristate
402 depends on FSL_SOC
403
3272029f 404config SPI_FSL_SPI
38455d7a 405 tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
e8beacbb 406 depends on OF
b36ece83 407 select SPI_FSL_LIB
e8beacbb 408 select SPI_FSL_CPM if FSL_SOC
ccf06998 409 help
3272029f
MH
410 This enables using the Freescale SPI controllers in master mode.
411 MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
412 MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
447b0c7b
AL
413 This also enables using the Aeroflex Gaisler GRLIB SPI controller in
414 master mode.
ccf06998 415
349ad66c
CF
416config SPI_FSL_DSPI
417 tristate "Freescale DSPI controller"
1acbdeb9 418 select REGMAP_MMIO
ec7ed770 419 depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
349ad66c
CF
420 help
421 This enables support for the Freescale DSPI controller in master
0dcdcd0e 422 mode. VF610, LS1021A and ColdFire platforms uses the controller.
349ad66c 423
8b60d6c2 424config SPI_FSL_ESPI
38455d7a 425 tristate "Freescale eSPI controller"
8b60d6c2 426 depends on FSL_SOC
8b60d6c2
MH
427 help
428 This enables using the Freescale eSPI controllers in master mode.
429 From MPC8536, 85xx platform uses the controller, and all P10xx,
430 P20xx, P30xx,P40xx, P50xx uses this controller.
431
454fa271
NA
432config SPI_MESON_SPICC
433 tristate "Amlogic Meson SPICC controller"
3e0cf4d3 434 depends on COMMON_CLK
454fa271
NA
435 depends on ARCH_MESON || COMPILE_TEST
436 help
437 This enables master mode support for the SPICC (SPI communication
438 controller) available in Amlogic Meson SoCs.
439
c3e4bc54
BG
440config SPI_MESON_SPIFC
441 tristate "Amlogic Meson SPIFC controller"
442 depends on ARCH_MESON || COMPILE_TEST
1327ecd4 443 select REGMAP_MMIO
c3e4bc54
BG
444 help
445 This enables master mode support for the SPIFC (SPI flash
446 controller) available in Amlogic Meson SoCs.
447
a568231f
LL
448config SPI_MT65XX
449 tristate "MediaTek SPI controller"
450 depends on ARCH_MEDIATEK || COMPILE_TEST
451 help
452 This selects the MediaTek(R) SPI bus driver.
453 If you want to use MediaTek(R) SPI interface,
454 say Y or M here.If you are not sure, say N.
455 SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
456
cbd66c62
SR
457config SPI_MT7621
458 tristate "MediaTek MT7621 SPI Controller"
459 depends on RALINK || COMPILE_TEST
460 help
461 This selects a driver for the MediaTek MT7621 SPI Controller.
462
881d1ee9
CG
463config SPI_MTK_NOR
464 tristate "MediaTek SPI NOR controller"
465 depends on ARCH_MEDIATEK || COMPILE_TEST
466 help
467 This enables support for SPI NOR controller found on MediaTek
468 ARM SoCs. This is a controller specifically for SPI-NOR flash.
469 It can perform generic SPI transfers up to 6 bytes via generic
470 SPI interface as well as several SPI-NOR specific instructions
471 via SPI MEM interface.
472
ace55c41
TM
473config SPI_NPCM_FIU
474 tristate "Nuvoton NPCM FLASH Interface Unit"
475 depends on ARCH_NPCM || COMPILE_TEST
476 depends on OF && HAS_IOMEM
477 help
478 This enables support for the Flash Interface Unit SPI controller
479 in master mode.
480 This driver does not support generic SPI. The implementation only
481 supports spi-mem interface.
482
2a22f1b3
TM
483config SPI_NPCM_PSPI
484 tristate "Nuvoton NPCM PSPI Controller"
485 depends on ARCH_NPCM || COMPILE_TEST
486 help
487 This driver provides support for Nuvoton NPCM BMC
488 Peripheral SPI controller in master mode.
489
17f84b79
HM
490config SPI_LANTIQ_SSC
491 tristate "Lantiq SSC SPI controller"
582c97f6 492 depends on LANTIQ || COMPILE_TEST
17f84b79
HM
493 help
494 This driver supports the Lantiq SSC SPI controller in master
495 mode. This controller is found on Intel (former Lantiq) SoCs like
496 the Danube, Falcon, xRX200, xRX300.
497
ce792580
TC
498config SPI_OC_TINY
499 tristate "OpenCores tiny SPI"
5c2301a9 500 depends on GPIOLIB || COMPILE_TEST
ce792580
TC
501 select SPI_BITBANG
502 help
503 This is the driver for OpenCores tiny SPI master controller.
504
6b52c00f
DD
505config SPI_OCTEON
506 tristate "Cavium OCTEON SPI controller"
9ddebc46 507 depends on CAVIUM_OCTEON_SOC
6b52c00f
DD
508 help
509 SPI host driver for the hardware found on some Cavium OCTEON
510 SOCs.
511
fdb3c18d
DB
512config SPI_OMAP_UWIRE
513 tristate "OMAP1 MicroWire"
6291fe2a 514 depends on ARCH_OMAP1
fdb3c18d
DB
515 select SPI_BITBANG
516 help
517 This hooks up to the MicroWire controller on OMAP1 chips.
518
ccdc7bf9 519config SPI_OMAP24XX
8ebeb545 520 tristate "McSPI driver for OMAP"
81df42d1 521 depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
2b32e987 522 select SG_SPLIT
ccdc7bf9 523 help
8ebeb545 524 SPI master controller for OMAP24XX and later Multichannel SPI
ccdc7bf9 525 (McSPI) modules.
69c202af 526
505a1495
SP
527config SPI_TI_QSPI
528 tristate "DRA7xxx QSPI controller support"
529 depends on ARCH_OMAP2PLUS || COMPILE_TEST
530 help
531 QSPI master controller for DRA7xxx used for flash devices.
532 This device supports single, dual and quad read support, while
533 it only supports single write mode.
534
35c9049b
CM
535config SPI_OMAP_100K
536 tristate "OMAP SPI 100K"
dd1053a9 537 depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
35c9049b
CM
538 help
539 OMAP SPI 100K master controller for omap7xx boards.
540
60cadec9 541config SPI_ORION
6d1f56aa 542 tristate "Orion SPI master"
710a1d54 543 depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
60cadec9 544 help
73482910
UKK
545 This enables using the SPI master controller on the Orion
546 and MVEBU chips.
60cadec9 547
1bcb9f8c
PCM
548config SPI_PIC32
549 tristate "Microchip PIC32 series SPI"
550 depends on MACH_PIC32 || COMPILE_TEST
551 help
552 SPI driver for Microchip PIC32 SPI master controller.
553
3270ac23
PCM
554config SPI_PIC32_SQI
555 tristate "Microchip PIC32 Quad SPI driver"
556 depends on MACH_PIC32 || COMPILE_TEST
557 help
558 SPI driver for PIC32 Quad SPI controller.
559
b43d65f7 560config SPI_PL022
7f9a4b97
LW
561 tristate "ARM AMBA PL022 SSP controller"
562 depends on ARM_AMBA
b43d65f7 563 default y if MACH_U300
f33b29ee 564 default y if ARCH_REALVIEW
565 default y if INTEGRATOR_IMPD1
566 default y if ARCH_VERSATILE
b43d65f7
LW
567 help
568 This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
569 controller. If you have an embedded system with an AMBA(R)
570 bus and a PL022 controller, say Y or M here.
571
44dab88e
SF
572config SPI_PPC4xx
573 tristate "PPC4xx SPI Controller"
5e8afa34 574 depends on PPC32 && 4xx
44dab88e
SF
575 select SPI_BITBANG
576 help
577 This selects a driver for the PPC4xx SPI Controller.
578
e0c9905e
SS
579config SPI_PXA2XX
580 tristate "PXA2xx SSP SPI master"
0d441644 581 depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
128345b1 582 select PXA_SSP if ARCH_PXA || ARCH_MMP
e0c9905e 583 help
d6ea3df0
SAS
584 This enables using a PXA2xx or Sodaville SSP port as a SPI master
585 controller. The driver can be configured to use any SSP port and
9cdd273e 586 additional documentation can be found a Documentation/spi/pxa2xx.rst.
d6ea3df0
SAS
587
588config SPI_PXA2XX_PCI
afa93c90 589 def_tristate SPI_PXA2XX && PCI && COMMON_CLK
e0c9905e 590
64e36824 591config SPI_ROCKCHIP
592 tristate "Rockchip SPI controller driver"
593 help
594 This selects a driver for Rockchip SPI controller.
595
596 If you say yes to this option, support will be included for
597 RK3066, RK3188 and RK3288 families of SPI controller.
598 Rockchip SPI controller support DMA transport and PIO mode.
599 The main usecase of this controller is to use spi flash as boot
600 device.
601
05aec357
BV
602config SPI_RB4XX
603 tristate "Mikrotik RB4XX SPI master"
604 depends on SPI_MASTER && ATH79
605 help
606 SPI controller driver for the Mikrotik RB4xx series boards.
607
eb8d6d46
SS
608config SPI_RPCIF
609 tristate "Renesas RPC-IF SPI driver"
610 depends on RENESAS_RPCIF
611 help
612 SPI driver for Renesas R-Car Gen3 RPC-IF.
613
0b2182dd 614config SPI_RSPI
e290c343 615 tristate "Renesas RSPI/QSPI controller"
3aec3166 616 depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
0b2182dd 617 help
e290c343 618 SPI driver for Renesas RSPI and QSPI blocks.
0b2182dd 619
04000dc6
GM
620config SPI_QCOM_QSPI
621 tristate "QTI QSPI controller"
622 depends on ARCH_QCOM
623 help
624 QSPI(Quad SPI) driver for Qualcomm QSPI controller.
625
64ff247a
II
626config SPI_QUP
627 tristate "Qualcomm SPI controller with QUP interface"
058f11c8 628 depends on ARCH_QCOM || (ARM && COMPILE_TEST)
64ff247a
II
629 help
630 Qualcomm Universal Peripheral (QUP) core is an AHB slave that
631 provides a common data path (an output FIFO and an input FIFO)
632 for serial peripheral interface (SPI) mini-core. SPI in master
633 mode supports up to 50MHz, up to four chip selects, programmable
634 data path from 4 bits to 32 bits and numerous protocol variants.
635
636 This driver can also be built as a module. If so, the module
637 will be called spi_qup.
0b2182dd 638
561de45f
GM
639config SPI_QCOM_GENI
640 tristate "Qualcomm GENI based SPI controller"
641 depends on QCOM_GENI_SE
642 help
643 This driver supports GENI serial engine based SPI controller in
644 master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
645 yes to this option, support will be included for the built-in SPI
646 interface on the Qualcomm Technologies Inc.'s SoCs.
647
648 This driver can also be built as a module. If so, the module
649 will be called spi-geni-qcom.
650
85abfaa7
DB
651config SPI_S3C24XX
652 tristate "Samsung S3C24XX series SPI"
6d1f56aa 653 depends on ARCH_S3C24XX
da0abc27 654 select SPI_BITBANG
85abfaa7
DB
655 help
656 SPI driver for Samsung S3C24XX series ARM SoCs
657
bec0806c
BD
658config SPI_S3C24XX_FIQ
659 bool "S3C24XX driver with FIQ pseudo-DMA"
660 depends on SPI_S3C24XX
661 select FIQ
662 help
663 Enable FIQ support for the S3C24XX SPI driver to provide pseudo
664 DMA by using the fast-interrupt request framework, This allows
665 the driver to get DMA-like performance when there are either
666 no free DMA channels, or when doing transfers that required both
667 TX and RX data paths.
668
230d42d4
JB
669config SPI_S3C64XX
670 tristate "Samsung S3C64XX series type SPI"
b099b131 671 depends on (PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST)
230d42d4
JB
672 help
673 SPI driver for Samsung S3C64XX and newer SoCs.
674
3ce8859e
GR
675config SPI_SC18IS602
676 tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
677 depends on I2C
678 help
679 SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
680
8051effc
MD
681config SPI_SH_MSIOF
682 tristate "SuperH MSIOF SPI controller"
e5b43ed2 683 depends on HAVE_CLK
6ffc84dd 684 depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
8051effc 685 help
746aeffd 686 SPI driver for SuperH and SH Mobile MSIOF blocks.
8051effc 687
5c05dd07
YS
688config SPI_SH
689 tristate "SuperH SPI controller"
dd1053a9 690 depends on SUPERH || COMPILE_TEST
5c05dd07
YS
691 help
692 SPI driver for SuperH SPI blocks.
693
37e46640
MD
694config SPI_SH_SCI
695 tristate "SuperH SCI SPI controller"
6291fe2a 696 depends on SUPERH
37e46640
MD
697 select SPI_BITBANG
698 help
699 SPI driver for SuperH SCI blocks.
700
d1c8bbd7
KM
701config SPI_SH_HSPI
702 tristate "SuperH HSPI controller"
3aec3166 703 depends on ARCH_RENESAS || COMPILE_TEST
d1c8bbd7
KM
704 help
705 SPI driver for SuperH HSPI blocks.
706
484a9a68
YS
707config SPI_SIFIVE
708 tristate "SiFive SPI controller"
709 depends on HAS_IOMEM
710 help
711 This exposes the SPI controller IP from SiFive.
712
1cc2df9d
ZS
713config SPI_SIRF
714 tristate "CSR SiRFprimaII SPI controller"
7668c294 715 depends on SIRF_DMA
1cc2df9d
ZS
716 select SPI_BITBANG
717 help
718 SPI driver for CSR SiRFprimaII SoCs
719
805be7dd
LL
720config SPI_SLAVE_MT27XX
721 tristate "MediaTek SPI slave device"
722 depends on ARCH_MEDIATEK || COMPILE_TEST
723 depends on SPI_SLAVE
724 help
725 This selects the MediaTek(R) SPI slave device driver.
726 If you want to use MediaTek(R) SPI slave interface,
727 say Y or M here.If you are not sure, say N.
728 SPI slave drivers for Mediatek MT27XX series ARM SoCs.
729
e7d973a3
LL
730config SPI_SPRD
731 tristate "Spreadtrum SPI controller"
732 depends on ARCH_SPRD || COMPILE_TEST
733 help
734 SPI driver for Spreadtrum SoCs.
735
7e2903cb
BW
736config SPI_SPRD_ADI
737 tristate "Spreadtrum ADI controller"
738 depends on ARCH_SPRD || COMPILE_TEST
e83f3742 739 depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
7e2903cb
BW
740 help
741 ADI driver based on SPI for Spreadtrum SoCs.
742
dcbe0d84
AD
743config SPI_STM32
744 tristate "STMicroelectronics STM32 SPI controller"
745 depends on ARCH_STM32 || COMPILE_TEST
746 help
bb35c9f9 747 SPI driver for STMicroelectronics STM32 SoCs.
dcbe0d84
AD
748
749 STM32 SPI controller supports DMA and PIO modes. When DMA
750 is not available, the driver automatically falls back to
751 PIO mode.
752
c530cd1d
LB
753config SPI_STM32_QSPI
754 tristate "STMicroelectronics STM32 QUAD SPI controller"
755 depends on ARCH_STM32 || COMPILE_TEST
756 depends on OF
757 help
758 This enables support for the Quad SPI controller in master mode.
759 This driver does not support generic SPI. The implementation only
760 supports spi-mem interface.
761
9e862375
LJ
762config SPI_ST_SSC4
763 tristate "STMicroelectronics SPI SSC-based driver"
83fefd2d 764 depends on ARCH_STI || COMPILE_TEST
9e862375
LJ
765 help
766 STMicroelectronics SoCs support for SPI. If you say yes to
767 this option, support will be included for the SSC driven SPI.
768
b5f65179
MR
769config SPI_SUN4I
770 tristate "Allwinner A10 SoCs SPI controller"
771 depends on ARCH_SUNXI || COMPILE_TEST
772 help
773 SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
774
3558fe90
MR
775config SPI_SUN6I
776 tristate "Allwinner A31 SPI controller"
777 depends on ARCH_SUNXI || COMPILE_TEST
7961656a 778 depends on RESET_CONTROLLER
3558fe90
MR
779 help
780 This enables using the SPI controller on the Allwinner A31 SoCs.
781
b0823ee3
MK
782config SPI_SYNQUACER
783 tristate "Socionext's SynQuacer HighSpeed SPI controller"
784 depends on ARCH_SYNQUACER || COMPILE_TEST
785 help
786 SPI driver for Socionext's High speed SPI controller which provides
787 various operating modes for interfacing to serial peripheral devices
788 that use the de-facto standard SPI protocol.
789
790 It also supports the new dual-bit and quad-bit SPI protocol.
791
b942d80b 792config SPI_MXIC
554bbe72
KK
793 tristate "Macronix MX25F0A SPI controller"
794 depends on SPI_MASTER
795 help
796 This selects the Macronix MX25F0A SPI controller driver.
b942d80b 797
646781d3
MV
798config SPI_MXS
799 tristate "Freescale MXS SPI controller"
800 depends on ARCH_MXS
801 select STMP_DEVICE
802 help
803 SPI driver for Freescale MXS devices.
804
f333a331
LD
805config SPI_TEGRA114
806 tristate "NVIDIA Tegra114 SPI Controller"
dd1053a9 807 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
e5b43ed2 808 depends on RESET_CONTROLLER
f333a331
LD
809 help
810 SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
811 is different than the older SoCs SPI controller and also register interface
812 get changed with this controller.
813
8528547b
LD
814config SPI_TEGRA20_SFLASH
815 tristate "Nvidia Tegra20 Serial flash Controller"
dd1053a9 816 depends on ARCH_TEGRA || COMPILE_TEST
ff2251e3 817 depends on RESET_CONTROLLER
8528547b
LD
818 help
819 SPI driver for Nvidia Tegra20 Serial flash Controller interface.
820 The main usecase of this controller is to use spi flash as boot
821 device.
822
dc4dc360
LD
823config SPI_TEGRA20_SLINK
824 tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
dd1053a9 825 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
e5b43ed2 826 depends on RESET_CONTROLLER
dc4dc360
LD
827 help
828 SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
829
7347a6c7
JG
830config SPI_THUNDERX
831 tristate "Cavium ThunderX SPI controller"
832 depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
833 help
834 SPI host driver for the hardware found on Cavium ThunderX
835 SOCs.
836
e8b17b5b 837config SPI_TOPCLIFF_PCH
92b3a5c1 838 tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
f05ca854 839 depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
e8b17b5b 840 help
cdbc8f04
GL
841 SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
842 used in some x86 embedded processors.
e8b17b5b 843
92b3a5c1
TM
844 This driver also supports the ML7213/ML7223/ML7831, a companion chip
845 for the Atom E6xx series and compatible with the Intel EG20T PCH.
f016aeb6 846
f2cac67d
AN
847config SPI_TXX9
848 tristate "Toshiba TXx9 SPI controller"
dd1053a9 849 depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
f2cac67d
AN
850 help
851 SPI driver for Toshiba TXx9 MIPS SoCs
852
5ba155a4
KH
853config SPI_UNIPHIER
854 tristate "Socionext UniPhier SPI Controller"
855 depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
6a091404 856 depends on HAS_IOMEM
5ba155a4
KH
857 help
858 This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
859
860 UniPhier SoCs have SCSSI and MCSSI SPI controllers.
861 Every UniPhier SoC has SCSSI which supports single channel.
862 Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
863 This driver supports SCSSI only.
864
865 If your SoC supports SCSSI, say Y here.
866
b3165900
LPC
867config SPI_XCOMM
868 tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
869 depends on I2C
870 help
871 Support for the SPI-I2C bridge found on the Analog Devices
872 AD-FMCOMMS1-EBZ board.
873
ae918c02 874config SPI_XILINX
c9da2e12 875 tristate "Xilinx SPI controller common module"
6d1f56aa 876 depends on HAS_IOMEM
ae918c02
AK
877 select SPI_BITBANG
878 help
879 This exposes the SPI controller IP from the Xilinx EDK.
880
881 See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
882 Product Specification document (DS464) for hardware details.
883
c9da2e12
RR
884 Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
885
d8c80d49
KP
886config SPI_XLP
887 tristate "Netlogic XLP SPI controller driver"
251831bd 888 depends on CPU_XLP || ARCH_THUNDER2 || COMPILE_TEST
d8c80d49
KP
889 help
890 Enable support for the SPI controller on the Netlogic XLP SoCs.
891 Currently supported XLP variants are XLP8XX, XLP3XX, XLP2XX, XLP9XX
892 and XLP5XX.
893
894 If you have a Netlogic XLP platform say Y here.
895 If unsure, say N.
896
6840cc29
MF
897config SPI_XTENSA_XTFPGA
898 tristate "Xtensa SPI controller for xtfpga"
be8dde46 899 depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
6840cc29
MF
900 select SPI_BITBANG
901 help
902 SPI driver for xtfpga SPI master controller.
903
904 This simple SPI master controller is built into xtfpga bitstreams
905 and is used to control daughterboard audio codec. It always transfers
906 16 bit words in SPI mode 0, automatically asserting CS on transfer
907 start and deasserting on end.
908
67dca5e5
NSR
909config SPI_ZYNQ_QSPI
910 tristate "Xilinx Zynq QSPI controller"
911 depends on ARCH_ZYNQ || COMPILE_TEST
912 help
913 This enables support for the Zynq Quad SPI controller
914 in master mode.
915 This controller only supports SPI memory interface.
916
dfe11a11
RW
917config SPI_ZYNQMP_GQSPI
918 tristate "Xilinx ZynqMP GQSPI controller"
67dca5e5 919 depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
dfe11a11
RW
920 help
921 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
922
bbb336f3
SM
923config SPI_AMD
924 tristate "AMD SPI controller"
925 depends on SPI_MASTER || COMPILE_TEST
926 help
927 Enables SPI controller driver for AMD SoC.
928
8ae12a0d
DB
929#
930# Add new SPI master controllers in alphabetical order above this line
931#
932
e9e40543
CP
933comment "SPI Multiplexer support"
934
935config SPI_MUX
936 tristate "SPI multiplexer support"
937 select MULTIPLEXER
938 help
939 This adds support for SPI multiplexers. Each SPI mux will be
940 accessible as a SPI controller, the devices behind the mux will appear
941 to be chip selects on this controller. It is still necessary to
942 select one or more specific mux-controller drivers.
943
8ae12a0d
DB
944#
945# There are lots of SPI device types, with sensors and memory
946# being probably the most widely used ones.
947#
948comment "SPI Protocol Masters"
8ae12a0d 949
814a8d50
AP
950config SPI_SPIDEV
951 tristate "User mode SPI device driver support"
814a8d50
AP
952 help
953 This supports user mode SPI protocol drivers.
954
955 Note that this application programming interface is EXPERIMENTAL
956 and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
957
97896195
MS
958config SPI_LOOPBACK_TEST
959 tristate "spi loopback test framework support"
960 depends on m
961 help
962 This enables the SPI loopback testing framework driver
963
964 primarily used for development of spi_master drivers
965 and to detect regressions
966
447aef1a
BD
967config SPI_TLE62X0
968 tristate "Infineon TLE62X0 (for power switching)"
6291fe2a 969 depends on SYSFS
447aef1a
BD
970 help
971 SPI driver for Infineon TLE62X0 series line driver chips,
972 such as the TLE6220, TLE6230 and TLE6240. This provides a
973 sysfs interface, with each line presented as a kind of GPIO
974 exposing both switch control and diagnostic feedback.
975
8ae12a0d
DB
976#
977# Add new SPI protocol masters in alphabetical order above this line
978#
979
6291fe2a
RD
980endif # SPI_MASTER
981
6c364062
GU
982#
983# SLAVE side ... listening to other SPI masters
984#
985
986config SPI_SLAVE
987 bool "SPI slave protocol handlers"
988 help
989 If your system has a slave-capable SPI controller, you can enable
990 slave protocol handlers.
991
992if SPI_SLAVE
993
29f9ffa0
GU
994config SPI_SLAVE_TIME
995 tristate "SPI slave handler reporting boot up time"
996 help
997 SPI slave handler responding with the time of reception of the last
998 SPI message.
999
ce70e06c
GU
1000config SPI_SLAVE_SYSTEM_CONTROL
1001 tristate "SPI slave handler controlling system state"
1002 help
1003 SPI slave handler to allow remote control of system reboot, power
1004 off, halt, and suspend.
1005
6c364062 1006endif # SPI_SLAVE
8ae12a0d 1007
79d8c7a8 1008endif # SPI