1# SPDX-License-Identifier: GPL-2.0-only 2# 3# SPI driver configuration 4# 5menuconfig SPI 6 bool "SPI support" 7 depends on HAS_IOMEM 8 help 9 The "Serial Peripheral Interface" is a low level synchronous 10 protocol. Chips that support SPI can have data transfer rates 11 up to several tens of Mbit/sec. Chips are addressed with a 12 controller and a chipselect. Most SPI slaves don't support 13 dynamic device discovery; some are even write-only or read-only. 14 15 SPI is widely used by microcontrollers to talk with sensors, 16 eeprom and flash memory, codecs and various other controller 17 chips, analog to digital (and d-to-a) converters, and more. 18 MMC and SD cards can be accessed using SPI protocol; and for 19 DataFlash cards used in MMC sockets, SPI must always be used. 20 21 SPI is one of a family of similar protocols using a four wire 22 interface (select, clock, data in, data out) including Microwire 23 (half duplex), SSP, SSI, and PSP. This driver framework should 24 work with most such devices and controllers. 25 26if SPI 27 28config SPI_DEBUG 29 bool "Debug support for SPI drivers" 30 depends on DEBUG_KERNEL 31 help 32 Say "yes" to enable debug messaging (like dev_dbg and pr_debug), 33 sysfs, and debugfs support in SPI controller and protocol drivers. 34 35# 36# MASTER side ... talking to discrete SPI slave chips including microcontrollers 37# 38 39config SPI_MASTER 40# bool "SPI Master Support" 41 bool 42 default SPI 43 help 44 If your system has an master-capable SPI controller (which 45 provides the clock and chipselect), you can enable that 46 controller and the protocol drivers for the SPI slave chips 47 that are connected. 48 49if SPI_MASTER 50 51config SPI_MEM 52 bool "SPI memory extension" 53 help 54 Enable this option if you want to enable the SPI memory extension. 55 This extension is meant to simplify interaction with SPI memories 56 by providing a high-level interface to send memory-like commands. 57 58comment "SPI Master Controller Drivers" 59 60config SPI_ALTERA 61 tristate "Altera SPI Controller platform driver" 62 select SPI_ALTERA_CORE 63 select REGMAP_MMIO 64 help 65 This is the driver for the Altera SPI Controller. 66 67config SPI_ALTERA_CORE 68 tristate "Altera SPI Controller core code" if COMPILE_TEST 69 select REGMAP 70 help 71 "The core code for the Altera SPI Controller" 72 73config SPI_ALTERA_DFL 74 tristate "DFL bus driver for Altera SPI Controller" 75 depends on FPGA_DFL 76 select SPI_ALTERA_CORE 77 help 78 This is a Device Feature List (DFL) bus driver for the 79 Altera SPI master controller. The SPI master is connected 80 to a SPI slave to Avalon bridge in a Intel MAX BMC. 81 82config SPI_AR934X 83 tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver" 84 depends on ATH79 || COMPILE_TEST 85 help 86 This enables support for the SPI controller present on the 87 Qualcomm Atheros AR934X/QCA95XX SoCs. 88 89config SPI_ATH79 90 tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver" 91 depends on ATH79 || COMPILE_TEST 92 select SPI_BITBANG 93 help 94 This enables support for the SPI controller present on the 95 Atheros AR71XX/AR724X/AR913X SoCs. 96 97config SPI_ARMADA_3700 98 tristate "Marvell Armada 3700 SPI Controller" 99 depends on (ARCH_MVEBU && OF) || COMPILE_TEST 100 help 101 This enables support for the SPI controller present on the 102 Marvell Armada 3700 SoCs. 103 104config SPI_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 112config 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 120config 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 129config 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 137config 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 145config 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 157config 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 167config 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 173config 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 180config 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 191config 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 204config 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 214config 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 220config 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 231config 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 243config 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 250config 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 257config 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 264config 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 270if SPI_DESIGNWARE 271 272config SPI_DW_DMA 273 bool "DMA support for DW SPI controller" 274 275config SPI_DW_PCI 276 tristate "PCI interface driver for DW SPI core" 277 depends on PCI 278 279config SPI_DW_MMIO 280 tristate "Memory-mapped io interface driver for DW SPI core" 281 depends on HAS_IOMEM 282 283config 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 298config 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 311endif 312 313config 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 323config 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 330config 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 339config 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 346config 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 352config 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 363config 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 373config 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 381config 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 391config 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 407config 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 414config 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 421config 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 430config SPI_INTEL 431 tristate 432 433config 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 451config 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 469config 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 476config 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 485config 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 495config 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 502config 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 509config 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 516config SPI_FSL_LIB 517 tristate 518 depends on OF 519 520config SPI_FSL_CPM 521 tristate 522 depends on FSL_SOC 523 524config 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 536config 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 544config 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 552config 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 560config 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 568config 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 577config 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 583config 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 593config 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 603config 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 610config 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 618config 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 625config 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 632config 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 639config 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 647config 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 655config 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 661config 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 668config 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 674config 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 680config 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 691config 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 698config 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 707config SPI_PXA2XX_PCI 708 def_tristate SPI_PXA2XX && PCI && COMMON_CLK 709 710config 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 721config 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 733config 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 739config 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 745config 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 751config 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 757config 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 770config 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 782config 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 789config 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 800config 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 807config 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 813config 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 820config SPI_SH 821 tristate "SuperH SPI controller" 822 depends on SUPERH || COMPILE_TEST 823 help 824 SPI driver for SuperH SPI blocks. 825 826config 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 833config 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 839config SPI_SIFIVE 840 tristate "SiFive SPI controller" 841 depends on HAS_IOMEM 842 help 843 This exposes the SPI controller IP from SiFive. 844 845config 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 855config SPI_SPRD 856 tristate "Spreadtrum SPI controller" 857 depends on ARCH_SPRD || COMPILE_TEST 858 help 859 SPI driver for Spreadtrum SoCs. 860 861config 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 868config 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 878config 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 888config 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 895config 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 901config 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 908config 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 919config 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 929config SPI_MXIC 930 tristate "Macronix MX25F0A SPI controller" 931 depends on SPI_MASTER 932 help 933 This selects the Macronix MX25F0A SPI controller driver. 934 935config SPI_MXS 936 tristate "Freescale MXS SPI controller" 937 depends on ARCH_MXS 938 select STMP_DEVICE 939 help 940 SPI driver for Freescale MXS devices. 941 942config SPI_TEGRA210_QUAD 943 tristate "NVIDIA Tegra QSPI Controller" 944 depends on ARCH_TEGRA || COMPILE_TEST 945 depends on RESET_CONTROLLER 946 help 947 QSPI driver for NVIDIA Tegra QSPI Controller interface. This 948 controller is different from the SPI controller and is available 949 on Tegra SoCs starting from Tegra210. 950 951config SPI_TEGRA114 952 tristate "NVIDIA Tegra114 SPI Controller" 953 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 954 depends on RESET_CONTROLLER 955 help 956 SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller 957 is different than the older SoCs SPI controller and also register interface 958 get changed with this controller. 959 960config SPI_TEGRA20_SFLASH 961 tristate "Nvidia Tegra20 Serial flash Controller" 962 depends on ARCH_TEGRA || COMPILE_TEST 963 depends on RESET_CONTROLLER 964 help 965 SPI driver for Nvidia Tegra20 Serial flash Controller interface. 966 The main usecase of this controller is to use spi flash as boot 967 device. 968 969config SPI_TEGRA20_SLINK 970 tristate "Nvidia Tegra20/Tegra30 SLINK Controller" 971 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 972 depends on RESET_CONTROLLER 973 help 974 SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface. 975 976config SPI_THUNDERX 977 tristate "Cavium ThunderX SPI controller" 978 depends on PCI && 64BIT && (ARM64 || COMPILE_TEST) 979 help 980 SPI host driver for the hardware found on Cavium ThunderX 981 SOCs. 982 983config SPI_TOPCLIFF_PCH 984 tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI" 985 depends on PCI && (X86_32 || MIPS || COMPILE_TEST) 986 help 987 SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus 988 used in some x86 embedded processors. 989 990 This driver also supports the ML7213/ML7223/ML7831, a companion chip 991 for the Atom E6xx series and compatible with the Intel EG20T PCH. 992 993config SPI_UNIPHIER 994 tristate "Socionext UniPhier SPI Controller" 995 depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF 996 depends on HAS_IOMEM 997 help 998 This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller. 999 1000 UniPhier SoCs have SCSSI and MCSSI SPI controllers. 1001 Every UniPhier SoC has SCSSI which supports single channel. 1002 Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels. 1003 This driver supports SCSSI only. 1004 1005 If your SoC supports SCSSI, say Y here. 1006 1007config SPI_XCOMM 1008 tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver" 1009 depends on I2C 1010 help 1011 Support for the SPI-I2C bridge found on the Analog Devices 1012 AD-FMCOMMS1-EBZ board. 1013 1014config SPI_XILINX 1015 tristate "Xilinx SPI controller common module" 1016 depends on HAS_IOMEM 1017 select SPI_BITBANG 1018 help 1019 This exposes the SPI controller IP from the Xilinx EDK. 1020 1021 See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 1022 Product Specification document (DS464) for hardware details. 1023 1024 Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)" 1025 1026config SPI_XLP 1027 tristate "Cavium ThunderX2 SPI controller driver" 1028 depends on ARCH_THUNDER2 || COMPILE_TEST 1029 help 1030 Enable support for the SPI controller on the Cavium ThunderX2. 1031 (Originally on Netlogic XLP SoCs.) 1032 1033 If you have a Cavium ThunderX2 platform say Y here. 1034 If unsure, say N. 1035 1036config SPI_XTENSA_XTFPGA 1037 tristate "Xtensa SPI controller for xtfpga" 1038 depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST 1039 select SPI_BITBANG 1040 help 1041 SPI driver for xtfpga SPI master controller. 1042 1043 This simple SPI master controller is built into xtfpga bitstreams 1044 and is used to control daughterboard audio codec. It always transfers 1045 16 bit words in SPI mode 0, automatically asserting CS on transfer 1046 start and deasserting on end. 1047 1048config SPI_ZYNQ_QSPI 1049 tristate "Xilinx Zynq QSPI controller" 1050 depends on ARCH_ZYNQ || COMPILE_TEST 1051 help 1052 This enables support for the Zynq Quad SPI controller 1053 in master mode. 1054 This controller only supports SPI memory interface. 1055 1056config SPI_ZYNQMP_GQSPI 1057 tristate "Xilinx ZynqMP GQSPI controller" 1058 depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST 1059 help 1060 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC. 1061 1062config SPI_AMD 1063 tristate "AMD SPI controller" 1064 depends on SPI_MASTER || COMPILE_TEST 1065 help 1066 Enables SPI controller driver for AMD SoC. 1067 1068# 1069# Add new SPI master controllers in alphabetical order above this line 1070# 1071 1072comment "SPI Multiplexer support" 1073 1074config SPI_MUX 1075 tristate "SPI multiplexer support" 1076 select MULTIPLEXER 1077 help 1078 This adds support for SPI multiplexers. Each SPI mux will be 1079 accessible as a SPI controller, the devices behind the mux will appear 1080 to be chip selects on this controller. It is still necessary to 1081 select one or more specific mux-controller drivers. 1082 1083# 1084# There are lots of SPI device types, with sensors and memory 1085# being probably the most widely used ones. 1086# 1087comment "SPI Protocol Masters" 1088 1089config SPI_SPIDEV 1090 tristate "User mode SPI device driver support" 1091 help 1092 This supports user mode SPI protocol drivers. 1093 1094 Note that this application programming interface is EXPERIMENTAL 1095 and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 1096 1097config SPI_LOOPBACK_TEST 1098 tristate "spi loopback test framework support" 1099 depends on m 1100 help 1101 This enables the SPI loopback testing framework driver 1102 1103 primarily used for development of spi_master drivers 1104 and to detect regressions 1105 1106config SPI_TLE62X0 1107 tristate "Infineon TLE62X0 (for power switching)" 1108 depends on SYSFS 1109 help 1110 SPI driver for Infineon TLE62X0 series line driver chips, 1111 such as the TLE6220, TLE6230 and TLE6240. This provides a 1112 sysfs interface, with each line presented as a kind of GPIO 1113 exposing both switch control and diagnostic feedback. 1114 1115# 1116# Add new SPI protocol masters in alphabetical order above this line 1117# 1118 1119endif # SPI_MASTER 1120 1121# 1122# SLAVE side ... listening to other SPI masters 1123# 1124 1125config SPI_SLAVE 1126 bool "SPI slave protocol handlers" 1127 help 1128 If your system has a slave-capable SPI controller, you can enable 1129 slave protocol handlers. 1130 1131if SPI_SLAVE 1132 1133config SPI_SLAVE_TIME 1134 tristate "SPI slave handler reporting boot up time" 1135 help 1136 SPI slave handler responding with the time of reception of the last 1137 SPI message. 1138 1139config SPI_SLAVE_SYSTEM_CONTROL 1140 tristate "SPI slave handler controlling system state" 1141 help 1142 SPI slave handler to allow remote control of system reboot, power 1143 off, halt, and suspend. 1144 1145endif # SPI_SLAVE 1146 1147config SPI_DYNAMIC 1148 def_bool ACPI || OF_DYNAMIC || SPI_SLAVE 1149 1150endif # SPI 1151