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