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 imply MTD_NAND_ECC_MXIC 933 help 934 This selects the Macronix MX25F0A SPI controller driver. 935 936config SPI_MXS 937 tristate "Freescale MXS SPI controller" 938 depends on ARCH_MXS 939 select STMP_DEVICE 940 help 941 SPI driver for Freescale MXS devices. 942 943config SPI_TEGRA210_QUAD 944 tristate "NVIDIA Tegra QSPI Controller" 945 depends on ARCH_TEGRA || COMPILE_TEST 946 depends on RESET_CONTROLLER 947 help 948 QSPI driver for NVIDIA Tegra QSPI Controller interface. This 949 controller is different from the SPI controller and is available 950 on Tegra SoCs starting from Tegra210. 951 952config SPI_TEGRA114 953 tristate "NVIDIA Tegra114 SPI Controller" 954 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 955 depends on RESET_CONTROLLER 956 help 957 SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller 958 is different than the older SoCs SPI controller and also register interface 959 get changed with this controller. 960 961config SPI_TEGRA20_SFLASH 962 tristate "Nvidia Tegra20 Serial flash Controller" 963 depends on ARCH_TEGRA || COMPILE_TEST 964 depends on RESET_CONTROLLER 965 help 966 SPI driver for Nvidia Tegra20 Serial flash Controller interface. 967 The main usecase of this controller is to use spi flash as boot 968 device. 969 970config SPI_TEGRA20_SLINK 971 tristate "Nvidia Tegra20/Tegra30 SLINK Controller" 972 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 973 depends on RESET_CONTROLLER 974 help 975 SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface. 976 977config SPI_THUNDERX 978 tristate "Cavium ThunderX SPI controller" 979 depends on PCI && 64BIT && (ARM64 || COMPILE_TEST) 980 help 981 SPI host driver for the hardware found on Cavium ThunderX 982 SOCs. 983 984config SPI_TOPCLIFF_PCH 985 tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI" 986 depends on PCI && (X86_32 || MIPS || COMPILE_TEST) 987 help 988 SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus 989 used in some x86 embedded processors. 990 991 This driver also supports the ML7213/ML7223/ML7831, a companion chip 992 for the Atom E6xx series and compatible with the Intel EG20T PCH. 993 994config SPI_UNIPHIER 995 tristate "Socionext UniPhier SPI Controller" 996 depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF 997 depends on HAS_IOMEM 998 help 999 This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller. 1000 1001 UniPhier SoCs have SCSSI and MCSSI SPI controllers. 1002 Every UniPhier SoC has SCSSI which supports single channel. 1003 Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels. 1004 This driver supports SCSSI only. 1005 1006 If your SoC supports SCSSI, say Y here. 1007 1008config SPI_XCOMM 1009 tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver" 1010 depends on I2C 1011 help 1012 Support for the SPI-I2C bridge found on the Analog Devices 1013 AD-FMCOMMS1-EBZ board. 1014 1015config SPI_XILINX 1016 tristate "Xilinx SPI controller common module" 1017 depends on HAS_IOMEM 1018 select SPI_BITBANG 1019 help 1020 This exposes the SPI controller IP from the Xilinx EDK. 1021 1022 See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 1023 Product Specification document (DS464) for hardware details. 1024 1025 Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)" 1026 1027config SPI_XLP 1028 tristate "Cavium ThunderX2 SPI controller driver" 1029 depends on ARCH_THUNDER2 || COMPILE_TEST 1030 help 1031 Enable support for the SPI controller on the Cavium ThunderX2. 1032 (Originally on Netlogic XLP SoCs.) 1033 1034 If you have a Cavium ThunderX2 platform say Y here. 1035 If unsure, say N. 1036 1037config SPI_XTENSA_XTFPGA 1038 tristate "Xtensa SPI controller for xtfpga" 1039 depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST 1040 select SPI_BITBANG 1041 help 1042 SPI driver for xtfpga SPI master controller. 1043 1044 This simple SPI master controller is built into xtfpga bitstreams 1045 and is used to control daughterboard audio codec. It always transfers 1046 16 bit words in SPI mode 0, automatically asserting CS on transfer 1047 start and deasserting on end. 1048 1049config SPI_ZYNQ_QSPI 1050 tristate "Xilinx Zynq QSPI controller" 1051 depends on ARCH_ZYNQ || COMPILE_TEST 1052 help 1053 This enables support for the Zynq Quad SPI controller 1054 in master mode. 1055 This controller only supports SPI memory interface. 1056 1057config SPI_ZYNQMP_GQSPI 1058 tristate "Xilinx ZynqMP GQSPI controller" 1059 depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST 1060 help 1061 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC. 1062 1063config SPI_AMD 1064 tristate "AMD SPI controller" 1065 depends on SPI_MASTER || COMPILE_TEST 1066 help 1067 Enables SPI controller driver for AMD SoC. 1068 1069# 1070# Add new SPI master controllers in alphabetical order above this line 1071# 1072 1073comment "SPI Multiplexer support" 1074 1075config SPI_MUX 1076 tristate "SPI multiplexer support" 1077 select MULTIPLEXER 1078 help 1079 This adds support for SPI multiplexers. Each SPI mux will be 1080 accessible as a SPI controller, the devices behind the mux will appear 1081 to be chip selects on this controller. It is still necessary to 1082 select one or more specific mux-controller drivers. 1083 1084# 1085# There are lots of SPI device types, with sensors and memory 1086# being probably the most widely used ones. 1087# 1088comment "SPI Protocol Masters" 1089 1090config SPI_SPIDEV 1091 tristate "User mode SPI device driver support" 1092 help 1093 This supports user mode SPI protocol drivers. 1094 1095 Note that this application programming interface is EXPERIMENTAL 1096 and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 1097 1098config SPI_LOOPBACK_TEST 1099 tristate "spi loopback test framework support" 1100 depends on m 1101 help 1102 This enables the SPI loopback testing framework driver 1103 1104 primarily used for development of spi_master drivers 1105 and to detect regressions 1106 1107config SPI_TLE62X0 1108 tristate "Infineon TLE62X0 (for power switching)" 1109 depends on SYSFS 1110 help 1111 SPI driver for Infineon TLE62X0 series line driver chips, 1112 such as the TLE6220, TLE6230 and TLE6240. This provides a 1113 sysfs interface, with each line presented as a kind of GPIO 1114 exposing both switch control and diagnostic feedback. 1115 1116# 1117# Add new SPI protocol masters in alphabetical order above this line 1118# 1119 1120endif # SPI_MASTER 1121 1122# 1123# SLAVE side ... listening to other SPI masters 1124# 1125 1126config SPI_SLAVE 1127 bool "SPI slave protocol handlers" 1128 help 1129 If your system has a slave-capable SPI controller, you can enable 1130 slave protocol handlers. 1131 1132if SPI_SLAVE 1133 1134config SPI_SLAVE_TIME 1135 tristate "SPI slave handler reporting boot up time" 1136 help 1137 SPI slave handler responding with the time of reception of the last 1138 SPI message. 1139 1140config SPI_SLAVE_SYSTEM_CONTROL 1141 tristate "SPI slave handler controlling system state" 1142 help 1143 SPI slave handler to allow remote control of system reboot, power 1144 off, halt, and suspend. 1145 1146endif # SPI_SLAVE 1147 1148config SPI_DYNAMIC 1149 def_bool ACPI || OF_DYNAMIC || SPI_SLAVE 1150 1151endif # SPI 1152