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_JCORE 431 tristate "J-Core SPI Master" 432 depends on OF && (SUPERH || COMPILE_TEST) 433 help 434 This enables support for the SPI master controller in the J-Core 435 synthesizable, open source SoC. 436 437config SPI_LM70_LLP 438 tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)" 439 depends on PARPORT 440 select SPI_BITBANG 441 help 442 This driver supports the NS LM70 LLP Evaluation Board, 443 which interfaces to an LM70 temperature sensor using 444 a parallel port. 445 446config SPI_LP8841_RTC 447 tristate "ICP DAS LP-8841 SPI Controller for RTC" 448 depends on MACH_PXA27X_DT || COMPILE_TEST 449 help 450 This driver provides an SPI master device to drive Maxim 451 DS-1302 real time clock. 452 453 Say N here unless you plan to run the kernel on an ICP DAS 454 LP-8x4x industrial computer. 455 456config SPI_MPC52xx 457 tristate "Freescale MPC52xx SPI (non-PSC) controller support" 458 depends on PPC_MPC52xx 459 help 460 This drivers supports the MPC52xx SPI controller in master SPI 461 mode. 462 463config SPI_MPC52xx_PSC 464 tristate "Freescale MPC52xx PSC SPI controller" 465 depends on PPC_MPC52xx 466 help 467 This enables using the Freescale MPC52xx Programmable Serial 468 Controller in master SPI mode. 469 470config SPI_MPC512x_PSC 471 tristate "Freescale MPC512x PSC SPI controller" 472 depends on PPC_MPC512x 473 help 474 This enables using the Freescale MPC5121 Programmable Serial 475 Controller in SPI master mode. 476 477config SPI_FSL_LIB 478 tristate 479 depends on OF 480 481config SPI_FSL_CPM 482 tristate 483 depends on FSL_SOC 484 485config SPI_FSL_SPI 486 tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller" 487 depends on OF 488 select SPI_FSL_LIB 489 select SPI_FSL_CPM if FSL_SOC 490 help 491 This enables using the Freescale SPI controllers in master mode. 492 MPC83xx platform uses the controller in cpu mode or CPM/QE mode. 493 MPC8569 uses the controller in QE mode, MPC8610 in cpu mode. 494 This also enables using the Aeroflex Gaisler GRLIB SPI controller in 495 master mode. 496 497config SPI_FSL_DSPI 498 tristate "Freescale DSPI controller" 499 select REGMAP_MMIO 500 depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST 501 help 502 This enables support for the Freescale DSPI controller in master 503 mode. VF610, LS1021A and ColdFire platforms uses the controller. 504 505config SPI_FSL_ESPI 506 tristate "Freescale eSPI controller" 507 depends on FSL_SOC 508 help 509 This enables using the Freescale eSPI controllers in master mode. 510 From MPC8536, 85xx platform uses the controller, and all P10xx, 511 P20xx, P30xx,P40xx, P50xx uses this controller. 512 513config SPI_MESON_SPICC 514 tristate "Amlogic Meson SPICC controller" 515 depends on COMMON_CLK 516 depends on ARCH_MESON || COMPILE_TEST 517 help 518 This enables master mode support for the SPICC (SPI communication 519 controller) available in Amlogic Meson SoCs. 520 521config SPI_MESON_SPIFC 522 tristate "Amlogic Meson SPIFC controller" 523 depends on ARCH_MESON || COMPILE_TEST 524 select REGMAP_MMIO 525 help 526 This enables master mode support for the SPIFC (SPI flash 527 controller) available in Amlogic Meson SoCs. 528 529config SPI_MT65XX 530 tristate "MediaTek SPI controller" 531 depends on ARCH_MEDIATEK || COMPILE_TEST 532 help 533 This selects the MediaTek(R) SPI bus driver. 534 If you want to use MediaTek(R) SPI interface, 535 say Y or M here.If you are not sure, say N. 536 SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs. 537 538config SPI_MT7621 539 tristate "MediaTek MT7621 SPI Controller" 540 depends on RALINK || COMPILE_TEST 541 help 542 This selects a driver for the MediaTek MT7621 SPI Controller. 543 544config SPI_MTK_NOR 545 tristate "MediaTek SPI NOR controller" 546 depends on ARCH_MEDIATEK || COMPILE_TEST 547 help 548 This enables support for SPI NOR controller found on MediaTek 549 ARM SoCs. This is a controller specifically for SPI NOR flash. 550 It can perform generic SPI transfers up to 6 bytes via generic 551 SPI interface as well as several SPI NOR specific instructions 552 via SPI MEM interface. 553 554config SPI_NPCM_FIU 555 tristate "Nuvoton NPCM FLASH Interface Unit" 556 depends on ARCH_NPCM || COMPILE_TEST 557 depends on OF && HAS_IOMEM 558 help 559 This enables support for the Flash Interface Unit SPI controller 560 in master mode. 561 This driver does not support generic SPI. The implementation only 562 supports spi-mem interface. 563 564config SPI_NPCM_PSPI 565 tristate "Nuvoton NPCM PSPI Controller" 566 depends on ARCH_NPCM || COMPILE_TEST 567 help 568 This driver provides support for Nuvoton NPCM BMC 569 Peripheral SPI controller in master mode. 570 571config SPI_LANTIQ_SSC 572 tristate "Lantiq SSC SPI controller" 573 depends on LANTIQ || X86 || COMPILE_TEST 574 help 575 This driver supports the Lantiq SSC SPI controller in master 576 mode. This controller is found on Intel (former Lantiq) SoCs like 577 the Danube, Falcon, xRX200, xRX300, Lightning Mountain. 578 579config SPI_OC_TINY 580 tristate "OpenCores tiny SPI" 581 depends on GPIOLIB || COMPILE_TEST 582 select SPI_BITBANG 583 help 584 This is the driver for OpenCores tiny SPI master controller. 585 586config SPI_OCTEON 587 tristate "Cavium OCTEON SPI controller" 588 depends on CAVIUM_OCTEON_SOC 589 help 590 SPI host driver for the hardware found on some Cavium OCTEON 591 SOCs. 592 593config SPI_OMAP_UWIRE 594 tristate "OMAP1 MicroWire" 595 depends on ARCH_OMAP1 596 select SPI_BITBANG 597 help 598 This hooks up to the MicroWire controller on OMAP1 chips. 599 600config SPI_OMAP24XX 601 tristate "McSPI driver for OMAP" 602 depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST 603 select SG_SPLIT 604 help 605 SPI master controller for OMAP24XX and later Multichannel SPI 606 (McSPI) modules. 607 608config SPI_TI_QSPI 609 tristate "DRA7xxx QSPI controller support" 610 depends on ARCH_OMAP2PLUS || COMPILE_TEST 611 help 612 QSPI master controller for DRA7xxx used for flash devices. 613 This device supports single, dual and quad read support, while 614 it only supports single write mode. 615 616config SPI_OMAP_100K 617 tristate "OMAP SPI 100K" 618 depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST 619 help 620 OMAP SPI 100K master controller for omap7xx boards. 621 622config SPI_ORION 623 tristate "Orion SPI master" 624 depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST 625 help 626 This enables using the SPI master controller on the Orion 627 and MVEBU chips. 628 629config SPI_PIC32 630 tristate "Microchip PIC32 series SPI" 631 depends on MACH_PIC32 || COMPILE_TEST 632 help 633 SPI driver for Microchip PIC32 SPI master controller. 634 635config SPI_PIC32_SQI 636 tristate "Microchip PIC32 Quad SPI driver" 637 depends on MACH_PIC32 || COMPILE_TEST 638 help 639 SPI driver for PIC32 Quad SPI controller. 640 641config SPI_PL022 642 tristate "ARM AMBA PL022 SSP controller" 643 depends on ARM_AMBA 644 default y if ARCH_REALVIEW 645 default y if INTEGRATOR_IMPD1 646 default y if ARCH_VERSATILE 647 help 648 This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP 649 controller. If you have an embedded system with an AMBA(R) 650 bus and a PL022 controller, say Y or M here. 651 652config SPI_PPC4xx 653 tristate "PPC4xx SPI Controller" 654 depends on PPC32 && 4xx 655 select SPI_BITBANG 656 help 657 This selects a driver for the PPC4xx SPI Controller. 658 659config SPI_PXA2XX 660 tristate "PXA2xx SSP SPI master" 661 depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST 662 select PXA_SSP if ARCH_PXA || ARCH_MMP 663 help 664 This enables using a PXA2xx or Sodaville SSP port as a SPI master 665 controller. The driver can be configured to use any SSP port and 666 additional documentation can be found a Documentation/spi/pxa2xx.rst. 667 668config SPI_PXA2XX_PCI 669 def_tristate SPI_PXA2XX && PCI && COMMON_CLK 670 671config SPI_ROCKCHIP 672 tristate "Rockchip SPI controller driver" 673 help 674 This selects a driver for Rockchip SPI controller. 675 676 If you say yes to this option, support will be included for 677 RK3066, RK3188 and RK3288 families of SPI controller. 678 Rockchip SPI controller support DMA transport and PIO mode. 679 The main usecase of this controller is to use spi flash as boot 680 device. 681 682config SPI_ROCKCHIP_SFC 683 tristate "Rockchip Serial Flash Controller (SFC)" 684 depends on ARCH_ROCKCHIP || COMPILE_TEST 685 depends on HAS_IOMEM && HAS_DMA 686 help 687 This enables support for Rockchip serial flash controller. This 688 is a specialized controller used to access SPI flash on some 689 Rockchip SOCs. 690 691 ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available, 692 the driver automatically falls back to PIO mode. 693 694config SPI_RB4XX 695 tristate "Mikrotik RB4XX SPI master" 696 depends on SPI_MASTER && ATH79 697 help 698 SPI controller driver for the Mikrotik RB4xx series boards. 699 700config SPI_RPCIF 701 tristate "Renesas RPC-IF SPI driver" 702 depends on RENESAS_RPCIF 703 help 704 SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF. 705 706config SPI_RSPI 707 tristate "Renesas RSPI/QSPI controller" 708 depends on SUPERH || ARCH_RENESAS || COMPILE_TEST 709 help 710 SPI driver for Renesas RSPI and QSPI blocks. 711 712config SPI_QCOM_QSPI 713 tristate "QTI QSPI controller" 714 depends on ARCH_QCOM 715 help 716 QSPI(Quad SPI) driver for Qualcomm QSPI controller. 717 718config SPI_QUP 719 tristate "Qualcomm SPI controller with QUP interface" 720 depends on ARCH_QCOM || COMPILE_TEST 721 help 722 Qualcomm Universal Peripheral (QUP) core is an AHB slave that 723 provides a common data path (an output FIFO and an input FIFO) 724 for serial peripheral interface (SPI) mini-core. SPI in master 725 mode supports up to 50MHz, up to four chip selects, programmable 726 data path from 4 bits to 32 bits and numerous protocol variants. 727 728 This driver can also be built as a module. If so, the module 729 will be called spi_qup. 730 731config SPI_QCOM_GENI 732 tristate "Qualcomm GENI based SPI controller" 733 depends on QCOM_GENI_SE 734 help 735 This driver supports GENI serial engine based SPI controller in 736 master mode on the Qualcomm Technologies Inc.'s SoCs. If you say 737 yes to this option, support will be included for the built-in SPI 738 interface on the Qualcomm Technologies Inc.'s SoCs. 739 740 This driver can also be built as a module. If so, the module 741 will be called spi-geni-qcom. 742 743config SPI_S3C24XX 744 tristate "Samsung S3C24XX series SPI" 745 depends on ARCH_S3C24XX 746 select SPI_BITBANG 747 help 748 SPI driver for Samsung S3C24XX series ARM SoCs 749 750config SPI_S3C24XX_FIQ 751 bool "S3C24XX driver with FIQ pseudo-DMA" 752 depends on SPI_S3C24XX 753 select FIQ 754 help 755 Enable FIQ support for the S3C24XX SPI driver to provide pseudo 756 DMA by using the fast-interrupt request framework, This allows 757 the driver to get DMA-like performance when there are either 758 no free DMA channels, or when doing transfers that required both 759 TX and RX data paths. 760 761config SPI_S3C64XX 762 tristate "Samsung S3C64XX/Exynos SoC series type SPI" 763 depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST) 764 help 765 SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs. 766 Choose Y/M here only if you build for such Samsung SoC. 767 768config SPI_SC18IS602 769 tristate "NXP SC18IS602/602B/603 I2C to SPI bridge" 770 depends on I2C 771 help 772 SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge. 773 774config SPI_SH_MSIOF 775 tristate "SuperH MSIOF SPI controller" 776 depends on HAVE_CLK 777 depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST 778 help 779 SPI driver for SuperH and SH Mobile MSIOF blocks. 780 781config SPI_SH 782 tristate "SuperH SPI controller" 783 depends on SUPERH || COMPILE_TEST 784 help 785 SPI driver for SuperH SPI blocks. 786 787config SPI_SH_SCI 788 tristate "SuperH SCI SPI controller" 789 depends on SUPERH 790 select SPI_BITBANG 791 help 792 SPI driver for SuperH SCI blocks. 793 794config SPI_SH_HSPI 795 tristate "SuperH HSPI controller" 796 depends on ARCH_RENESAS || COMPILE_TEST 797 help 798 SPI driver for SuperH HSPI blocks. 799 800config SPI_SIFIVE 801 tristate "SiFive SPI controller" 802 depends on HAS_IOMEM 803 help 804 This exposes the SPI controller IP from SiFive. 805 806config SPI_SLAVE_MT27XX 807 tristate "MediaTek SPI slave device" 808 depends on ARCH_MEDIATEK || COMPILE_TEST 809 depends on SPI_SLAVE 810 help 811 This selects the MediaTek(R) SPI slave device driver. 812 If you want to use MediaTek(R) SPI slave interface, 813 say Y or M here.If you are not sure, say N. 814 SPI slave drivers for Mediatek MT27XX series ARM SoCs. 815 816config SPI_SPRD 817 tristate "Spreadtrum SPI controller" 818 depends on ARCH_SPRD || COMPILE_TEST 819 help 820 SPI driver for Spreadtrum SoCs. 821 822config SPI_SPRD_ADI 823 tristate "Spreadtrum ADI controller" 824 depends on ARCH_SPRD || COMPILE_TEST 825 depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK) 826 help 827 ADI driver based on SPI for Spreadtrum SoCs. 828 829config SPI_STM32 830 tristate "STMicroelectronics STM32 SPI controller" 831 depends on ARCH_STM32 || COMPILE_TEST 832 help 833 SPI driver for STMicroelectronics STM32 SoCs. 834 835 STM32 SPI controller supports DMA and PIO modes. When DMA 836 is not available, the driver automatically falls back to 837 PIO mode. 838 839config SPI_STM32_QSPI 840 tristate "STMicroelectronics STM32 QUAD SPI controller" 841 depends on ARCH_STM32 || COMPILE_TEST 842 depends on OF 843 depends on SPI_MEM 844 help 845 This enables support for the Quad SPI controller in master mode. 846 This driver does not support generic SPI. The implementation only 847 supports spi-mem interface. 848 849config SPI_ST_SSC4 850 tristate "STMicroelectronics SPI SSC-based driver" 851 depends on ARCH_STI || COMPILE_TEST 852 help 853 STMicroelectronics SoCs support for SPI. If you say yes to 854 this option, support will be included for the SSC driven SPI. 855 856config SPI_SUN4I 857 tristate "Allwinner A10 SoCs SPI controller" 858 depends on ARCH_SUNXI || COMPILE_TEST 859 help 860 SPI driver for Allwinner sun4i, sun5i and sun7i SoCs 861 862config SPI_SUN6I 863 tristate "Allwinner A31 SPI controller" 864 depends on ARCH_SUNXI || COMPILE_TEST 865 depends on RESET_CONTROLLER 866 help 867 This enables using the SPI controller on the Allwinner A31 SoCs. 868 869config SPI_SYNQUACER 870 tristate "Socionext's SynQuacer HighSpeed SPI controller" 871 depends on ARCH_SYNQUACER || COMPILE_TEST 872 help 873 SPI driver for Socionext's High speed SPI controller which provides 874 various operating modes for interfacing to serial peripheral devices 875 that use the de-facto standard SPI protocol. 876 877 It also supports the new dual-bit and quad-bit SPI protocol. 878 879config SPI_MXIC 880 tristate "Macronix MX25F0A SPI controller" 881 depends on SPI_MASTER 882 help 883 This selects the Macronix MX25F0A SPI controller driver. 884 885config SPI_MXS 886 tristate "Freescale MXS SPI controller" 887 depends on ARCH_MXS 888 select STMP_DEVICE 889 help 890 SPI driver for Freescale MXS devices. 891 892config SPI_TEGRA210_QUAD 893 tristate "NVIDIA Tegra QSPI Controller" 894 depends on ARCH_TEGRA || COMPILE_TEST 895 depends on RESET_CONTROLLER 896 help 897 QSPI driver for NVIDIA Tegra QSPI Controller interface. This 898 controller is different from the SPI controller and is available 899 on Tegra SoCs starting from Tegra210. 900 901config SPI_TEGRA114 902 tristate "NVIDIA Tegra114 SPI Controller" 903 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 904 depends on RESET_CONTROLLER 905 help 906 SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller 907 is different than the older SoCs SPI controller and also register interface 908 get changed with this controller. 909 910config SPI_TEGRA20_SFLASH 911 tristate "Nvidia Tegra20 Serial flash Controller" 912 depends on ARCH_TEGRA || COMPILE_TEST 913 depends on RESET_CONTROLLER 914 help 915 SPI driver for Nvidia Tegra20 Serial flash Controller interface. 916 The main usecase of this controller is to use spi flash as boot 917 device. 918 919config SPI_TEGRA20_SLINK 920 tristate "Nvidia Tegra20/Tegra30 SLINK Controller" 921 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST 922 depends on RESET_CONTROLLER 923 help 924 SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface. 925 926config SPI_THUNDERX 927 tristate "Cavium ThunderX SPI controller" 928 depends on PCI && 64BIT && (ARM64 || COMPILE_TEST) 929 help 930 SPI host driver for the hardware found on Cavium ThunderX 931 SOCs. 932 933config SPI_TOPCLIFF_PCH 934 tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI" 935 depends on PCI && (X86_32 || MIPS || COMPILE_TEST) 936 help 937 SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus 938 used in some x86 embedded processors. 939 940 This driver also supports the ML7213/ML7223/ML7831, a companion chip 941 for the Atom E6xx series and compatible with the Intel EG20T PCH. 942 943config SPI_UNIPHIER 944 tristate "Socionext UniPhier SPI Controller" 945 depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF 946 depends on HAS_IOMEM 947 help 948 This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller. 949 950 UniPhier SoCs have SCSSI and MCSSI SPI controllers. 951 Every UniPhier SoC has SCSSI which supports single channel. 952 Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels. 953 This driver supports SCSSI only. 954 955 If your SoC supports SCSSI, say Y here. 956 957config SPI_XCOMM 958 tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver" 959 depends on I2C 960 help 961 Support for the SPI-I2C bridge found on the Analog Devices 962 AD-FMCOMMS1-EBZ board. 963 964config SPI_XILINX 965 tristate "Xilinx SPI controller common module" 966 depends on HAS_IOMEM 967 select SPI_BITBANG 968 help 969 This exposes the SPI controller IP from the Xilinx EDK. 970 971 See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 972 Product Specification document (DS464) for hardware details. 973 974 Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)" 975 976config SPI_XLP 977 tristate "Cavium ThunderX2 SPI controller driver" 978 depends on ARCH_THUNDER2 || COMPILE_TEST 979 help 980 Enable support for the SPI controller on the Cavium ThunderX2. 981 (Originally on Netlogic XLP SoCs.) 982 983 If you have a Cavium ThunderX2 platform say Y here. 984 If unsure, say N. 985 986config SPI_XTENSA_XTFPGA 987 tristate "Xtensa SPI controller for xtfpga" 988 depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST 989 select SPI_BITBANG 990 help 991 SPI driver for xtfpga SPI master controller. 992 993 This simple SPI master controller is built into xtfpga bitstreams 994 and is used to control daughterboard audio codec. It always transfers 995 16 bit words in SPI mode 0, automatically asserting CS on transfer 996 start and deasserting on end. 997 998config SPI_ZYNQ_QSPI 999 tristate "Xilinx Zynq QSPI controller" 1000 depends on ARCH_ZYNQ || COMPILE_TEST 1001 help 1002 This enables support for the Zynq Quad SPI controller 1003 in master mode. 1004 This controller only supports SPI memory interface. 1005 1006config SPI_ZYNQMP_GQSPI 1007 tristate "Xilinx ZynqMP GQSPI controller" 1008 depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST 1009 help 1010 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC. 1011 1012config SPI_AMD 1013 tristate "AMD SPI controller" 1014 depends on SPI_MASTER || COMPILE_TEST 1015 help 1016 Enables SPI controller driver for AMD SoC. 1017 1018# 1019# Add new SPI master controllers in alphabetical order above this line 1020# 1021 1022comment "SPI Multiplexer support" 1023 1024config SPI_MUX 1025 tristate "SPI multiplexer support" 1026 select MULTIPLEXER 1027 help 1028 This adds support for SPI multiplexers. Each SPI mux will be 1029 accessible as a SPI controller, the devices behind the mux will appear 1030 to be chip selects on this controller. It is still necessary to 1031 select one or more specific mux-controller drivers. 1032 1033# 1034# There are lots of SPI device types, with sensors and memory 1035# being probably the most widely used ones. 1036# 1037comment "SPI Protocol Masters" 1038 1039config SPI_SPIDEV 1040 tristate "User mode SPI device driver support" 1041 help 1042 This supports user mode SPI protocol drivers. 1043 1044 Note that this application programming interface is EXPERIMENTAL 1045 and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 1046 1047config SPI_LOOPBACK_TEST 1048 tristate "spi loopback test framework support" 1049 depends on m 1050 help 1051 This enables the SPI loopback testing framework driver 1052 1053 primarily used for development of spi_master drivers 1054 and to detect regressions 1055 1056config SPI_TLE62X0 1057 tristate "Infineon TLE62X0 (for power switching)" 1058 depends on SYSFS 1059 help 1060 SPI driver for Infineon TLE62X0 series line driver chips, 1061 such as the TLE6220, TLE6230 and TLE6240. This provides a 1062 sysfs interface, with each line presented as a kind of GPIO 1063 exposing both switch control and diagnostic feedback. 1064 1065# 1066# Add new SPI protocol masters in alphabetical order above this line 1067# 1068 1069endif # SPI_MASTER 1070 1071# 1072# SLAVE side ... listening to other SPI masters 1073# 1074 1075config SPI_SLAVE 1076 bool "SPI slave protocol handlers" 1077 help 1078 If your system has a slave-capable SPI controller, you can enable 1079 slave protocol handlers. 1080 1081if SPI_SLAVE 1082 1083config SPI_SLAVE_TIME 1084 tristate "SPI slave handler reporting boot up time" 1085 help 1086 SPI slave handler responding with the time of reception of the last 1087 SPI message. 1088 1089config SPI_SLAVE_SYSTEM_CONTROL 1090 tristate "SPI slave handler controlling system state" 1091 help 1092 SPI slave handler to allow remote control of system reboot, power 1093 off, halt, and suspend. 1094 1095endif # SPI_SLAVE 1096 1097config SPI_DYNAMIC 1098 def_bool ACPI || OF_DYNAMIC || SPI_SLAVE 1099 1100endif # SPI 1101