Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # SPI driver configuration
0004 #
0005 menuconfig SPI
0006         bool "SPI support"
0007         depends on HAS_IOMEM
0008         help
0009           The "Serial Peripheral Interface" is a low level synchronous
0010           protocol.  Chips that support SPI can have data transfer rates
0011           up to several tens of Mbit/sec.  Chips are addressed with a
0012           controller and a chipselect.  Most SPI slaves don't support
0013           dynamic device discovery; some are even write-only or read-only.
0014 
0015           SPI is widely used by microcontrollers to talk with sensors,
0016           eeprom and flash memory, codecs and various other controller
0017           chips, analog to digital (and d-to-a) converters, and more.
0018           MMC and SD cards can be accessed using SPI protocol; and for
0019           DataFlash cards used in MMC sockets, SPI must always be used.
0020 
0021           SPI is one of a family of similar protocols using a four wire
0022           interface (select, clock, data in, data out) including Microwire
0023           (half duplex), SSP, SSI, and PSP.  This driver framework should
0024           work with most such devices and controllers.
0025 
0026 if SPI
0027 
0028 config SPI_DEBUG
0029         bool "Debug support for SPI drivers"
0030         depends on DEBUG_KERNEL
0031         help
0032           Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
0033           sysfs, and debugfs support in SPI controller and protocol drivers.
0034 
0035 #
0036 # MASTER side ... talking to discrete SPI slave chips including microcontrollers
0037 #
0038 
0039 config SPI_MASTER
0040 #       bool "SPI Master Support"
0041         bool
0042         default SPI
0043         help
0044           If your system has an master-capable SPI controller (which
0045           provides the clock and chipselect), you can enable that
0046           controller and the protocol drivers for the SPI slave chips
0047           that are connected.
0048 
0049 if SPI_MASTER
0050 
0051 config SPI_MEM
0052         bool "SPI memory extension"
0053         help
0054           Enable this option if you want to enable the SPI memory extension.
0055           This extension is meant to simplify interaction with SPI memories
0056           by providing a high-level interface to send memory-like commands.
0057 
0058 comment "SPI Master Controller Drivers"
0059 
0060 config SPI_ALTERA
0061         tristate "Altera SPI Controller platform driver"
0062         select SPI_ALTERA_CORE
0063         select REGMAP_MMIO
0064         help
0065           This is the driver for the Altera SPI Controller.
0066 
0067 config SPI_ALTERA_CORE
0068         tristate "Altera SPI Controller core code" if COMPILE_TEST
0069         select REGMAP
0070         help
0071           "The core code for the Altera SPI Controller"
0072 
0073 config SPI_ALTERA_DFL
0074         tristate "DFL bus driver for Altera SPI Controller"
0075         depends on FPGA_DFL
0076         select SPI_ALTERA_CORE
0077         help
0078           This is a Device Feature List (DFL) bus driver for the
0079           Altera SPI master controller.  The SPI master is connected
0080           to a SPI slave to Avalon bridge in a Intel MAX BMC.
0081 
0082 config SPI_AR934X
0083         tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
0084         depends on ATH79 || COMPILE_TEST
0085         help
0086           This enables support for the SPI controller present on the
0087           Qualcomm Atheros AR934X/QCA95XX SoCs.
0088 
0089 config SPI_ATH79
0090         tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
0091         depends on ATH79 || COMPILE_TEST
0092         select SPI_BITBANG
0093         help
0094           This enables support for the SPI controller present on the
0095           Atheros AR71XX/AR724X/AR913X SoCs.
0096 
0097 config SPI_ARMADA_3700
0098         tristate "Marvell Armada 3700 SPI Controller"
0099         depends on (ARCH_MVEBU && OF) || COMPILE_TEST
0100         help
0101           This enables support for the SPI controller present on the
0102           Marvell Armada 3700 SoCs.
0103 
0104 config SPI_ASPEED_SMC
0105         tristate "Aspeed flash controllers in SPI mode"
0106         depends on ARCH_ASPEED || COMPILE_TEST
0107         depends on OF
0108         help
0109           This enables support for the Firmware Memory controller (FMC)
0110           in the Aspeed AST2600, AST2500 and AST2400 SoCs when attached
0111           to SPI NOR chips, and support for the SPI flash memory
0112           controller (SPI) for the host firmware. The implementation
0113           only supports SPI NOR.
0114 
0115 config SPI_ATMEL
0116         tristate "Atmel SPI Controller"
0117         depends on ARCH_AT91 || COMPILE_TEST
0118         depends on OF
0119         help
0120           This selects a driver for the Atmel SPI Controller, present on
0121           many AT91 ARM chips.
0122 
0123 config SPI_AT91_USART
0124         tristate "Atmel USART Controller SPI driver"
0125         depends on (ARCH_AT91 || COMPILE_TEST)
0126         depends on MFD_AT91_USART
0127         help
0128           This selects a driver for the AT91 USART Controller as SPI Master,
0129           present on AT91 and SAMA5 SoC series.
0130 
0131 config SPI_ATMEL_QUADSPI
0132         tristate "Atmel Quad SPI Controller"
0133         depends on ARCH_AT91 || COMPILE_TEST
0134         depends on OF && HAS_IOMEM
0135         help
0136           This enables support for the Quad SPI controller in master mode.
0137           This driver does not support generic SPI. The implementation only
0138           supports spi-mem interface.
0139 
0140 config SPI_AU1550
0141         tristate "Au1550/Au1200/Au1300 SPI Controller"
0142         depends on MIPS_ALCHEMY
0143         select SPI_BITBANG
0144         help
0145           If you say yes to this option, support will be included for the
0146           PSC SPI controller found on Au1550, Au1200 and Au1300 series.
0147 
0148 config SPI_AXI_SPI_ENGINE
0149         tristate "Analog Devices AXI SPI Engine controller"
0150         depends on HAS_IOMEM
0151         help
0152           This enables support for the Analog Devices AXI SPI Engine SPI controller.
0153           It is part of the SPI Engine framework that is used in some Analog Devices
0154           reference designs for FPGAs.
0155 
0156 config SPI_BCM2835
0157         tristate "BCM2835 SPI controller"
0158         depends on GPIOLIB
0159         depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
0160         help
0161           This selects a driver for the Broadcom BCM2835 SPI master.
0162 
0163           The BCM2835 contains two types of SPI master controller; the
0164           "universal SPI master", and the regular SPI controller. This driver
0165           is for the regular SPI controller. Slave mode operation is not also
0166           not supported.
0167 
0168 config SPI_BCM2835AUX
0169         tristate "BCM2835 SPI auxiliary controller"
0170         depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
0171         help
0172           This selects a driver for the Broadcom BCM2835 SPI aux master.
0173 
0174           The BCM2835 contains two types of SPI master controller; the
0175           "universal SPI master", and the regular SPI controller.
0176           This driver is for the universal/auxiliary SPI controller.
0177 
0178 config SPI_BCM63XX
0179         tristate "Broadcom BCM63xx SPI controller"
0180         depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
0181         help
0182           Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
0183 
0184 config SPI_BCM63XX_HSSPI
0185         tristate "Broadcom BCM63XX HS SPI controller driver"
0186         depends on BCM63XX || BMIPS_GENERIC || ARCH_BCMBCA || COMPILE_TEST
0187         help
0188           This enables support for the High Speed SPI controller present on
0189           newer Broadcom BCM63XX SoCs.
0190 
0191 config SPI_BCM_QSPI
0192         tristate "Broadcom BSPI and MSPI controller support"
0193         depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
0194                         BMIPS_GENERIC || COMPILE_TEST
0195         default ARCH_BCM_IPROC
0196         help
0197           Enables support for the Broadcom SPI flash and MSPI controller.
0198           Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
0199           based platforms. This driver works for both SPI master for SPI NOR
0200           flash device as well as MSPI device.
0201 
0202 config SPI_BITBANG
0203         tristate "Utilities for Bitbanging SPI masters"
0204         help
0205           With a few GPIO pins, your system can bitbang the SPI protocol.
0206           Select this to get SPI support through I/O pins (GPIO, parallel
0207           port, etc).  Or, some systems' SPI master controller drivers use
0208           this code to manage the per-word or per-transfer accesses to the
0209           hardware shift registers.
0210 
0211           This is library code, and is automatically selected by drivers that
0212           need it.  You only need to select this explicitly to support driver
0213           modules that aren't part of this kernel tree.
0214 
0215 config SPI_BUTTERFLY
0216         tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
0217         depends on PARPORT
0218         select SPI_BITBANG
0219         help
0220           This uses a custom parallel port cable to connect to an AVR
0221           Butterfly <http://www.atmel.com/products/avr/butterfly>, an
0222           inexpensive battery powered microcontroller evaluation board.
0223           This same cable can be used to flash new firmware.
0224 
0225 config SPI_CADENCE
0226         tristate "Cadence SPI controller"
0227         help
0228           This selects the Cadence SPI controller master driver
0229           used by Xilinx Zynq and ZynqMP.
0230 
0231 config SPI_CADENCE_QUADSPI
0232         tristate "Cadence Quad SPI controller"
0233         depends on OF && (ARM || ARM64 || X86 || COMPILE_TEST)
0234         help
0235           Enable support for the Cadence Quad SPI Flash controller.
0236 
0237           Cadence QSPI is a specialized controller for connecting an SPI
0238           Flash over 1/2/4-bit wide bus. Enable this option if you have a
0239           device with a Cadence QSPI controller and want to access the
0240           Flash as an MTD device.
0241 
0242 config SPI_CADENCE_XSPI
0243         tristate "Cadence XSPI controller"
0244         depends on (OF || COMPILE_TEST) && HAS_IOMEM
0245         depends on SPI_MEM
0246         help
0247           Enable support for the Cadence XSPI Flash controller.
0248 
0249           Cadence XSPI is a specialized controller for connecting an SPI
0250           Flash over upto 8bit wide bus. Enable this option if you have a
0251           device with a Cadence XSPI controller and want to access the
0252           Flash as an MTD device.
0253 
0254 config SPI_CLPS711X
0255         tristate "CLPS711X host SPI controller"
0256         depends on ARCH_CLPS711X || COMPILE_TEST
0257         help
0258           This enables dedicated general purpose SPI/Microwire1-compatible
0259           master mode interface (SSI1) for CLPS711X-based CPUs.
0260 
0261 config SPI_COLDFIRE_QSPI
0262         tristate "Freescale Coldfire QSPI controller"
0263         depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
0264         help
0265           This enables support for the Coldfire QSPI controller in master
0266           mode.
0267 
0268 config SPI_DAVINCI
0269         tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
0270         depends on ARCH_DAVINCI || ARCH_KEYSTONE
0271         select SPI_BITBANG
0272         help
0273           SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
0274 
0275 config SPI_DESIGNWARE
0276         tristate "DesignWare SPI controller core support"
0277         imply SPI_MEM
0278         help
0279           general driver for SPI controller core from DesignWare
0280 
0281 if SPI_DESIGNWARE
0282 
0283 config SPI_DW_DMA
0284         bool "DMA support for DW SPI controller"
0285 
0286 config SPI_DW_PCI
0287         tristate "PCI interface driver for DW SPI core"
0288         depends on PCI
0289 
0290 config SPI_DW_MMIO
0291         tristate "Memory-mapped io interface driver for DW SPI core"
0292         depends on HAS_IOMEM
0293 
0294 config SPI_DW_BT1
0295         tristate "Baikal-T1 SPI driver for DW SPI core"
0296         depends on MIPS_BAIKAL_T1 || COMPILE_TEST
0297         select MULTIPLEXER
0298         select MUX_MMIO
0299         help
0300           Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
0301           controllers. Two of them are pretty much normal: with IRQ, DMA,
0302           FIFOs of 64 words depth, 4x CSs, but the third one as being a
0303           part of the Baikal-T1 System Boot Controller has got a very
0304           limited resources: no IRQ, no DMA, only a single native
0305           chip-select and Tx/Rx FIFO with just 8 words depth available.
0306           The later one is normally connected to an external SPI-nor flash
0307           of 128Mb (in general can be of bigger size).
0308 
0309 config SPI_DW_BT1_DIRMAP
0310         bool "Directly mapped Baikal-T1 Boot SPI flash support"
0311         depends on SPI_DW_BT1
0312         help
0313           Directly mapped SPI flash memory is an interface specific to the
0314           Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
0315           can be used to access a peripheral memory device just by
0316           reading/writing data from/to it. Note that the system APB bus
0317           will stall during each IO from/to the dirmap region until the
0318           operation is finished. So try not to use it concurrently with
0319           time-critical tasks (like the SPI memory operations implemented
0320           in this driver).
0321 
0322 endif
0323 
0324 config SPI_DLN2
0325        tristate "Diolan DLN-2 USB SPI adapter"
0326        depends on MFD_DLN2
0327        help
0328          If you say yes to this option, support will be included for Diolan
0329          DLN2, a USB to SPI interface.
0330 
0331          This driver can also be built as a module.  If so, the module
0332          will be called spi-dln2.
0333 
0334 config SPI_EP93XX
0335         tristate "Cirrus Logic EP93xx SPI controller"
0336         depends on ARCH_EP93XX || COMPILE_TEST
0337         help
0338           This enables using the Cirrus EP93xx SPI controller in master
0339           mode.
0340 
0341 config SPI_FALCON
0342         bool "Falcon SPI controller support"
0343         depends on SOC_FALCON
0344         help
0345           The external bus unit (EBU) found on the FALC-ON SoC has SPI
0346           emulation that is designed for serial flash access. This driver
0347           has only been tested with m25p80 type chips. The hardware has no
0348           support for other types of SPI peripherals.
0349 
0350 config SPI_FSI
0351         tristate "FSI SPI driver"
0352         depends on FSI
0353         help
0354           This enables support for the driver for FSI bus attached SPI
0355           controllers.
0356 
0357 config SPI_FSL_LPSPI
0358         tristate "Freescale i.MX LPSPI controller"
0359         depends on ARCH_MXC || COMPILE_TEST
0360         help
0361           This enables Freescale i.MX LPSPI controllers in master mode.
0362 
0363 config SPI_FSL_QUADSPI
0364         tristate "Freescale QSPI controller"
0365         depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
0366         depends on HAS_IOMEM
0367         help
0368           This enables support for the Quad SPI controller in master mode.
0369           Up to four flash chips can be connected on two buses with two
0370           chipselects each.
0371           This controller does not support generic SPI messages. It only
0372           supports the high-level SPI memory interface.
0373 
0374 config SPI_GXP
0375         tristate "GXP SPI driver"
0376         depends on ARCH_HPE || COMPILE_TEST
0377         help
0378           This enables support for the driver for GXP bus attached SPI
0379           controllers.
0380 
0381 config SPI_HISI_KUNPENG
0382         tristate "HiSilicon SPI Controller for Kunpeng SoCs"
0383         depends on (ARM64 && ACPI) || COMPILE_TEST
0384         help
0385           This enables support for HiSilicon SPI controller found on
0386           Kunpeng SoCs.
0387 
0388           This driver can also be built as a module. If so, the module
0389           will be called hisi-kunpeng-spi.
0390 
0391 config SPI_HISI_SFC_V3XX
0392         tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
0393         depends on (ARM64 && ACPI) || COMPILE_TEST
0394         depends on HAS_IOMEM
0395         help
0396           This enables support for HiSilicon v3xx SPI NOR flash controller
0397           found in hi16xx chipsets.
0398 
0399 config SPI_NXP_FLEXSPI
0400         tristate "NXP Flex SPI controller"
0401         depends on ARCH_LAYERSCAPE || HAS_IOMEM
0402         help
0403           This enables support for the Flex SPI controller in master mode.
0404           Up to four slave devices can be connected on two buses with two
0405           chipselects each.
0406           This controller does not support generic SPI messages and only
0407           supports the high-level SPI memory interface.
0408 
0409 config SPI_GPIO
0410         tristate "GPIO-based bitbanging SPI Master"
0411         depends on GPIOLIB || COMPILE_TEST
0412         select SPI_BITBANG
0413         help
0414           This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
0415           interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
0416           slaves connected to a bus using this driver are configured as usual,
0417           except that the spi_board_info.controller_data holds the GPIO number
0418           for the chipselect used by this controller driver.
0419 
0420           Note that this driver often won't achieve even 1 Mbit/sec speeds,
0421           making it unusually slow for SPI.  If your platform can inline
0422           GPIO operations, you should be able to leverage that for better
0423           speed with a custom version of this driver; see the source code.
0424 
0425 config SPI_IMG_SPFI
0426         tristate "IMG SPFI controller"
0427         depends on MIPS || COMPILE_TEST
0428         help
0429           This enables support for the SPFI master controller found on
0430           IMG SoCs.
0431 
0432 config SPI_IMX
0433         tristate "Freescale i.MX SPI controllers"
0434         depends on ARCH_MXC || COMPILE_TEST
0435         help
0436           This enables support for the Freescale i.MX SPI controllers.
0437 
0438 config SPI_INGENIC
0439         tristate "Ingenic SoCs SPI controller"
0440         depends on MACH_INGENIC || COMPILE_TEST
0441         help
0442           This enables support for the Ingenic SoCs SPI controller.
0443 
0444           To compile this driver as a module, choose M here: the module
0445           will be called spi-ingenic.
0446 
0447 config SPI_INTEL
0448         tristate
0449 
0450 config SPI_INTEL_PCI
0451         tristate "Intel PCH/PCU SPI flash PCI driver (DANGEROUS)"
0452         depends on PCI
0453         depends on X86 || COMPILE_TEST
0454         depends on SPI_MEM
0455         select SPI_INTEL
0456         help
0457           This enables PCI support for the Intel PCH/PCU SPI controller in
0458           master mode. This controller is present in modern Intel hardware
0459           and is used to hold BIOS and other persistent settings. Using
0460           this driver it is possible to upgrade BIOS directly from Linux.
0461 
0462           Say N here unless you know what you are doing. Overwriting the
0463           SPI flash may render the system unbootable.
0464 
0465           To compile this driver as a module, choose M here: the module
0466           will be called spi-intel-pci.
0467 
0468 config SPI_INTEL_PLATFORM
0469         tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
0470         depends on X86 || COMPILE_TEST
0471         depends on SPI_MEM
0472         select SPI_INTEL
0473         help
0474           This enables platform support for the Intel PCH/PCU SPI
0475           controller in master mode. This controller is present in modern
0476           Intel hardware and is used to hold BIOS and other persistent
0477           settings. Using this driver it is possible to upgrade BIOS
0478           directly from Linux.
0479 
0480           Say N here unless you know what you are doing. Overwriting the
0481           SPI flash may render the system unbootable.
0482 
0483           To compile this driver as a module, choose M here: the module
0484           will be called spi-intel-platform.
0485 
0486 config SPI_JCORE
0487         tristate "J-Core SPI Master"
0488         depends on OF && (SUPERH || COMPILE_TEST)
0489         help
0490           This enables support for the SPI master controller in the J-Core
0491           synthesizable, open source SoC.
0492 
0493 config SPI_LM70_LLP
0494         tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
0495         depends on PARPORT
0496         select SPI_BITBANG
0497         help
0498           This driver supports the NS LM70 LLP Evaluation Board,
0499           which interfaces to an LM70 temperature sensor using
0500           a parallel port.
0501 
0502 config SPI_LP8841_RTC
0503         tristate "ICP DAS LP-8841 SPI Controller for RTC"
0504         depends on MACH_PXA27X_DT || COMPILE_TEST
0505         help
0506           This driver provides an SPI master device to drive Maxim
0507           DS-1302 real time clock.
0508 
0509           Say N here unless you plan to run the kernel on an ICP DAS
0510           LP-8x4x industrial computer.
0511 
0512 config SPI_MPC52xx
0513         tristate "Freescale MPC52xx SPI (non-PSC) controller support"
0514         depends on PPC_MPC52xx
0515         help
0516           This drivers supports the MPC52xx SPI controller in master SPI
0517           mode.
0518 
0519 config SPI_MPC52xx_PSC
0520         tristate "Freescale MPC52xx PSC SPI controller"
0521         depends on PPC_MPC52xx
0522         help
0523           This enables using the Freescale MPC52xx Programmable Serial
0524           Controller in master SPI mode.
0525 
0526 config SPI_MPC512x_PSC
0527         tristate "Freescale MPC512x PSC SPI controller"
0528         depends on PPC_MPC512x
0529         help
0530           This enables using the Freescale MPC5121 Programmable Serial
0531           Controller in SPI master mode.
0532 
0533 config SPI_FSL_LIB
0534         tristate
0535         depends on OF
0536 
0537 config SPI_FSL_CPM
0538         tristate
0539         depends on FSL_SOC
0540 
0541 config SPI_FSL_SPI
0542         tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
0543         depends on OF
0544         select SPI_FSL_LIB
0545         select SPI_FSL_CPM if FSL_SOC
0546         help
0547           This enables using the Freescale SPI controllers in master mode.
0548           MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
0549           MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
0550           This also enables using the Aeroflex Gaisler GRLIB SPI controller in
0551           master mode.
0552 
0553 config SPI_FSL_DSPI
0554         tristate "Freescale DSPI controller"
0555         select REGMAP_MMIO
0556         depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
0557         help
0558           This enables support for the Freescale DSPI controller in master
0559           mode. VF610, LS1021A and ColdFire platforms uses the controller.
0560 
0561 config SPI_FSL_ESPI
0562         tristate "Freescale eSPI controller"
0563         depends on FSL_SOC
0564         help
0565           This enables using the Freescale eSPI controllers in master mode.
0566           From MPC8536, 85xx platform uses the controller, and all P10xx,
0567           P20xx, P30xx,P40xx, P50xx uses this controller.
0568 
0569 config SPI_MESON_SPICC
0570         tristate "Amlogic Meson SPICC controller"
0571         depends on COMMON_CLK
0572         depends on ARCH_MESON || COMPILE_TEST
0573         help
0574           This enables master mode support for the SPICC (SPI communication
0575           controller) available in Amlogic Meson SoCs.
0576 
0577 config SPI_MESON_SPIFC
0578         tristate "Amlogic Meson SPIFC controller"
0579         depends on ARCH_MESON || COMPILE_TEST
0580         select REGMAP_MMIO
0581         help
0582           This enables master mode support for the SPIFC (SPI flash
0583           controller) available in Amlogic Meson SoCs.
0584 
0585 config SPI_MICROCHIP_CORE
0586         tristate "Microchip FPGA SPI controllers"
0587         depends on SPI_MASTER
0588         help
0589           This enables the SPI driver for Microchip FPGA SPI controllers.
0590           Say Y or M here if you want to use the "hard" controllers on
0591           PolarFire SoC.
0592           If built as a module, it will be called spi-microchip-core.
0593 
0594 config SPI_MT65XX
0595         tristate "MediaTek SPI controller"
0596         depends on ARCH_MEDIATEK || COMPILE_TEST
0597         help
0598           This selects the MediaTek(R) SPI bus driver.
0599           If you want to use MediaTek(R) SPI interface,
0600           say Y or M here.If you are not sure, say N.
0601           SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
0602 
0603 config SPI_MT7621
0604         tristate "MediaTek MT7621 SPI Controller"
0605         depends on RALINK || COMPILE_TEST
0606         help
0607           This selects a driver for the MediaTek MT7621 SPI Controller.
0608 
0609 config SPI_MTK_NOR
0610         tristate "MediaTek SPI NOR controller"
0611         depends on ARCH_MEDIATEK || COMPILE_TEST
0612         help
0613           This enables support for SPI NOR controller found on MediaTek
0614           ARM SoCs. This is a controller specifically for SPI NOR flash.
0615           It can perform generic SPI transfers up to 6 bytes via generic
0616           SPI interface as well as several SPI NOR specific instructions
0617           via SPI MEM interface.
0618 
0619 config SPI_MTK_SNFI
0620         tristate "MediaTek SPI NAND Flash Interface"
0621         depends on ARCH_MEDIATEK || COMPILE_TEST
0622         depends on MTD_NAND_ECC_MEDIATEK
0623         help
0624           This enables support for SPI-NAND mode on the MediaTek NAND
0625           Flash Interface found on MediaTek ARM SoCs. This controller
0626           is implemented as a SPI-MEM controller with pipelined ECC
0627           capcability.
0628 
0629 config SPI_NPCM_FIU
0630         tristate "Nuvoton NPCM FLASH Interface Unit"
0631         depends on ARCH_NPCM || COMPILE_TEST
0632         depends on OF && HAS_IOMEM
0633         help
0634           This enables support for the Flash Interface Unit SPI controller
0635           in master mode.
0636           This driver does not support generic SPI. The implementation only
0637           supports spi-mem interface.
0638 
0639 config SPI_NPCM_PSPI
0640         tristate "Nuvoton NPCM PSPI Controller"
0641         depends on ARCH_NPCM || COMPILE_TEST
0642         help
0643           This driver provides support for Nuvoton NPCM BMC
0644           Peripheral SPI controller in master mode.
0645 
0646 config SPI_LANTIQ_SSC
0647         tristate "Lantiq SSC SPI controller"
0648         depends on LANTIQ || X86 || COMPILE_TEST
0649         help
0650           This driver supports the Lantiq SSC SPI controller in master
0651           mode. This controller is found on Intel (former Lantiq) SoCs like
0652           the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
0653 
0654 config SPI_OC_TINY
0655         tristate "OpenCores tiny SPI"
0656         depends on GPIOLIB || COMPILE_TEST
0657         select SPI_BITBANG
0658         help
0659           This is the driver for OpenCores tiny SPI master controller.
0660 
0661 config SPI_OCTEON
0662         tristate "Cavium OCTEON SPI controller"
0663         depends on CAVIUM_OCTEON_SOC
0664         help
0665           SPI host driver for the hardware found on some Cavium OCTEON
0666           SOCs.
0667 
0668 config SPI_OMAP_UWIRE
0669         tristate "OMAP1 MicroWire"
0670         depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
0671         select SPI_BITBANG
0672         help
0673           This hooks up to the MicroWire controller on OMAP1 chips.
0674 
0675 config SPI_OMAP24XX
0676         tristate "McSPI driver for OMAP"
0677         depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
0678         select SG_SPLIT
0679         help
0680           SPI master controller for OMAP24XX and later Multichannel SPI
0681           (McSPI) modules.
0682 
0683 config SPI_TI_QSPI
0684         tristate "DRA7xxx QSPI controller support"
0685         depends on ARCH_OMAP2PLUS || COMPILE_TEST
0686         help
0687           QSPI master controller for DRA7xxx used for flash devices.
0688           This device supports single, dual and quad read support, while
0689           it only supports single write mode.
0690 
0691 config SPI_OMAP_100K
0692         tristate "OMAP SPI 100K"
0693         depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
0694         help
0695           OMAP SPI 100K master controller for omap7xx boards.
0696 
0697 config SPI_ORION
0698         tristate "Orion SPI master"
0699         depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
0700         help
0701           This enables using the SPI master controller on the Orion
0702           and MVEBU chips.
0703 
0704 config SPI_PIC32
0705         tristate "Microchip PIC32 series SPI"
0706         depends on MACH_PIC32 || COMPILE_TEST
0707         help
0708           SPI driver for Microchip PIC32 SPI master controller.
0709 
0710 config SPI_PIC32_SQI
0711         tristate "Microchip PIC32 Quad SPI driver"
0712         depends on MACH_PIC32 || COMPILE_TEST
0713         help
0714           SPI driver for PIC32 Quad SPI controller.
0715 
0716 config SPI_PL022
0717         tristate "ARM AMBA PL022 SSP controller"
0718         depends on ARM_AMBA
0719         default y if ARCH_REALVIEW
0720         default y if INTEGRATOR_IMPD1
0721         default y if ARCH_VERSATILE
0722         help
0723           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
0724           controller. If you have an embedded system with an AMBA(R)
0725           bus and a PL022 controller, say Y or M here.
0726 
0727 config SPI_PPC4xx
0728         tristate "PPC4xx SPI Controller"
0729         depends on PPC32 && 4xx
0730         select SPI_BITBANG
0731         help
0732           This selects a driver for the PPC4xx SPI Controller.
0733 
0734 config SPI_PXA2XX
0735         tristate "PXA2xx SSP SPI master"
0736         depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
0737         select PXA_SSP if ARCH_PXA || ARCH_MMP
0738         help
0739           This enables using a PXA2xx or Sodaville SSP port as a SPI master
0740           controller. The driver can be configured to use any SSP port and
0741           additional documentation can be found a Documentation/spi/pxa2xx.rst.
0742 
0743 config SPI_PXA2XX_PCI
0744         def_tristate SPI_PXA2XX && PCI && COMMON_CLK
0745 
0746 config SPI_ROCKCHIP
0747         tristate "Rockchip SPI controller driver"
0748         help
0749           This selects a driver for Rockchip SPI controller.
0750 
0751           If you say yes to this option, support will be included for
0752           RK3066, RK3188 and RK3288 families of SPI controller.
0753           Rockchip SPI controller support DMA transport and PIO mode.
0754           The main usecase of this controller is to use spi flash as boot
0755           device.
0756 
0757 config SPI_ROCKCHIP_SFC
0758         tristate "Rockchip Serial Flash Controller (SFC)"
0759         depends on ARCH_ROCKCHIP || COMPILE_TEST
0760         depends on HAS_IOMEM && HAS_DMA
0761         help
0762           This enables support for Rockchip serial flash controller. This
0763           is a specialized controller used to access SPI flash on some
0764           Rockchip SOCs.
0765 
0766           ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
0767           the driver automatically falls back to PIO mode.
0768 
0769 config SPI_RB4XX
0770         tristate "Mikrotik RB4XX SPI master"
0771         depends on SPI_MASTER && ATH79
0772         help
0773           SPI controller driver for the Mikrotik RB4xx series boards.
0774 
0775 config SPI_RPCIF
0776         tristate "Renesas RPC-IF SPI driver"
0777         depends on RENESAS_RPCIF
0778         help
0779           SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
0780 
0781 config SPI_RSPI
0782         tristate "Renesas RSPI/QSPI controller"
0783         depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
0784         help
0785           SPI driver for Renesas RSPI and QSPI blocks.
0786 
0787 config SPI_QCOM_QSPI
0788         tristate "QTI QSPI controller"
0789         depends on ARCH_QCOM
0790         help
0791           QSPI(Quad SPI) driver for Qualcomm QSPI controller.
0792 
0793 config SPI_QUP
0794         tristate "Qualcomm SPI controller with QUP interface"
0795         depends on ARCH_QCOM || COMPILE_TEST
0796         help
0797           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
0798           provides a common data path (an output FIFO and an input FIFO)
0799           for serial peripheral interface (SPI) mini-core. SPI in master
0800           mode supports up to 50MHz, up to four chip selects, programmable
0801           data path from 4 bits to 32 bits and numerous protocol variants.
0802 
0803           This driver can also be built as a module.  If so, the module
0804           will be called spi_qup.
0805 
0806 config SPI_QCOM_GENI
0807         tristate "Qualcomm GENI based SPI controller"
0808         depends on QCOM_GENI_SE
0809         help
0810           This driver supports GENI serial engine based SPI controller in
0811           master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
0812           yes to this option, support will be included for the built-in SPI
0813           interface on the Qualcomm Technologies Inc.'s SoCs.
0814 
0815           This driver can also be built as a module.  If so, the module
0816           will be called spi-geni-qcom.
0817 
0818 config SPI_S3C24XX
0819         tristate "Samsung S3C24XX series SPI"
0820         depends on ARCH_S3C24XX
0821         select SPI_BITBANG
0822         help
0823           SPI driver for Samsung S3C24XX series ARM SoCs
0824 
0825 config SPI_S3C24XX_FIQ
0826         bool "S3C24XX driver with FIQ pseudo-DMA"
0827         depends on SPI_S3C24XX
0828         select FIQ
0829         help
0830           Enable FIQ support for the S3C24XX SPI driver to provide pseudo
0831           DMA by using the fast-interrupt request framework, This allows
0832           the driver to get DMA-like performance when there are either
0833           no free DMA channels, or when doing transfers that required both
0834           TX and RX data paths.
0835 
0836 config SPI_S3C64XX
0837         tristate "Samsung S3C64XX/Exynos SoC series type SPI"
0838         depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
0839         help
0840           SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
0841           Choose Y/M here only if you build for such Samsung SoC.
0842 
0843 config SPI_SC18IS602
0844         tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
0845         depends on I2C
0846         help
0847           SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
0848 
0849 config SPI_SH_MSIOF
0850         tristate "SuperH MSIOF SPI controller"
0851         depends on HAVE_CLK
0852         depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
0853         help
0854           SPI driver for SuperH and SH Mobile MSIOF blocks.
0855 
0856 config SPI_SH
0857         tristate "SuperH SPI controller"
0858         depends on SUPERH || COMPILE_TEST
0859         help
0860           SPI driver for SuperH SPI blocks.
0861 
0862 config SPI_SH_SCI
0863         tristate "SuperH SCI SPI controller"
0864         depends on SUPERH
0865         select SPI_BITBANG
0866         help
0867           SPI driver for SuperH SCI blocks.
0868 
0869 config SPI_SH_HSPI
0870         tristate "SuperH HSPI controller"
0871         depends on ARCH_RENESAS || COMPILE_TEST
0872         help
0873           SPI driver for SuperH HSPI blocks.
0874 
0875 config SPI_SIFIVE
0876         tristate "SiFive SPI controller"
0877         depends on HAS_IOMEM
0878         help
0879           This exposes the SPI controller IP from SiFive.
0880 
0881 config SPI_SLAVE_MT27XX
0882         tristate "MediaTek SPI slave device"
0883         depends on ARCH_MEDIATEK || COMPILE_TEST
0884         depends on SPI_SLAVE
0885         help
0886           This selects the MediaTek(R) SPI slave device driver.
0887           If you want to use MediaTek(R) SPI slave interface,
0888           say Y or M here.If you are not sure, say N.
0889           SPI slave drivers for Mediatek MT27XX series ARM SoCs.
0890 
0891 config SPI_SPRD
0892         tristate "Spreadtrum SPI controller"
0893         depends on ARCH_SPRD || COMPILE_TEST
0894         help
0895           SPI driver for Spreadtrum SoCs.
0896 
0897 config SPI_SPRD_ADI
0898         tristate "Spreadtrum ADI controller"
0899         depends on ARCH_SPRD || COMPILE_TEST
0900         depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
0901         help
0902           ADI driver based on SPI for Spreadtrum SoCs.
0903 
0904 config SPI_STM32
0905         tristate "STMicroelectronics STM32 SPI controller"
0906         depends on ARCH_STM32 || COMPILE_TEST
0907         help
0908           SPI driver for STMicroelectronics STM32 SoCs.
0909 
0910           STM32 SPI controller supports DMA and PIO modes. When DMA
0911           is not available, the driver automatically falls back to
0912           PIO mode.
0913 
0914 config SPI_STM32_QSPI
0915         tristate "STMicroelectronics STM32 QUAD SPI controller"
0916         depends on ARCH_STM32 || COMPILE_TEST
0917         depends on OF
0918         depends on SPI_MEM
0919         help
0920           This enables support for the Quad SPI controller in master mode.
0921           This driver does not support generic SPI. The implementation only
0922           supports spi-mem interface.
0923 
0924 config SPI_ST_SSC4
0925         tristate "STMicroelectronics SPI SSC-based driver"
0926         depends on ARCH_STI || COMPILE_TEST
0927         help
0928           STMicroelectronics SoCs support for SPI. If you say yes to
0929           this option, support will be included for the SSC driven SPI.
0930 
0931 config SPI_SUN4I
0932         tristate "Allwinner A10 SoCs SPI controller"
0933         depends on ARCH_SUNXI || COMPILE_TEST
0934         help
0935           SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
0936 
0937 config SPI_SUN6I
0938         tristate "Allwinner A31 SPI controller"
0939         depends on ARCH_SUNXI || COMPILE_TEST
0940         depends on RESET_CONTROLLER
0941         help
0942           This enables using the SPI controller on the Allwinner A31 SoCs.
0943 
0944 config SPI_SUNPLUS_SP7021
0945         tristate "Sunplus SP7021 SPI controller"
0946         depends on SOC_SP7021 || COMPILE_TEST
0947         help
0948           This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
0949           This driver can also be built as a module. If so, the module will be
0950           called as spi-sunplus-sp7021.
0951 
0952           If you have a  Sunplus SP7021 platform say Y here.
0953           If unsure, say N.
0954 
0955 config SPI_SYNQUACER
0956         tristate "Socionext's SynQuacer HighSpeed SPI controller"
0957         depends on ARCH_SYNQUACER || COMPILE_TEST
0958         help
0959           SPI driver for Socionext's High speed SPI controller which provides
0960           various operating modes for interfacing to serial peripheral devices
0961           that use the de-facto standard SPI protocol.
0962 
0963           It also supports the new dual-bit and quad-bit SPI protocol.
0964 
0965 config SPI_MXIC
0966         tristate "Macronix MX25F0A SPI controller"
0967         depends on SPI_MASTER
0968         imply MTD_NAND_ECC_MXIC
0969         help
0970           This selects the Macronix MX25F0A SPI controller driver.
0971 
0972 config SPI_MXS
0973         tristate "Freescale MXS SPI controller"
0974         depends on ARCH_MXS
0975         select STMP_DEVICE
0976         help
0977           SPI driver for Freescale MXS devices.
0978 
0979 config SPI_TEGRA210_QUAD
0980         tristate "NVIDIA Tegra QSPI Controller"
0981         depends on ARCH_TEGRA || COMPILE_TEST
0982         depends on RESET_CONTROLLER
0983         help
0984           QSPI driver for NVIDIA Tegra QSPI Controller interface. This
0985           controller is different from the SPI controller and is available
0986           on Tegra SoCs starting from Tegra210.
0987 
0988 config SPI_TEGRA114
0989         tristate "NVIDIA Tegra114 SPI Controller"
0990         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
0991         depends on RESET_CONTROLLER
0992         help
0993           SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
0994           is different than the older SoCs SPI controller and also register interface
0995           get changed with this controller.
0996 
0997 config SPI_TEGRA20_SFLASH
0998         tristate "Nvidia Tegra20 Serial flash Controller"
0999         depends on ARCH_TEGRA || COMPILE_TEST
1000         depends on RESET_CONTROLLER
1001         help
1002           SPI driver for Nvidia Tegra20 Serial flash Controller interface.
1003           The main usecase of this controller is to use spi flash as boot
1004           device.
1005 
1006 config SPI_TEGRA20_SLINK
1007         tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
1008         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1009         depends on RESET_CONTROLLER
1010         help
1011           SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
1012 
1013 config SPI_THUNDERX
1014         tristate "Cavium ThunderX SPI controller"
1015         depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
1016         help
1017           SPI host driver for the hardware found on Cavium ThunderX
1018           SOCs.
1019 
1020 config SPI_TOPCLIFF_PCH
1021         tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
1022         depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
1023         help
1024           SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
1025           used in some x86 embedded processors.
1026 
1027           This driver also supports the ML7213/ML7223/ML7831, a companion chip
1028           for the Atom E6xx series and compatible with the Intel EG20T PCH.
1029 
1030 config SPI_UNIPHIER
1031         tristate "Socionext UniPhier SPI Controller"
1032         depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
1033         depends on HAS_IOMEM
1034         help
1035           This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
1036 
1037           UniPhier SoCs have SCSSI and MCSSI SPI controllers.
1038           Every UniPhier SoC has SCSSI which supports single channel.
1039           Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
1040           This driver supports SCSSI only.
1041 
1042           If your SoC supports SCSSI, say Y here.
1043 
1044 config SPI_XCOMM
1045         tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
1046         depends on I2C
1047         help
1048           Support for the SPI-I2C bridge found on the Analog Devices
1049           AD-FMCOMMS1-EBZ board.
1050 
1051 config SPI_XILINX
1052         tristate "Xilinx SPI controller common module"
1053         depends on HAS_IOMEM
1054         select SPI_BITBANG
1055         help
1056           This exposes the SPI controller IP from the Xilinx EDK.
1057 
1058           See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
1059           Product Specification document (DS464) for hardware details.
1060 
1061           Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
1062 
1063 config SPI_XLP
1064         tristate "Cavium ThunderX2 SPI controller driver"
1065         depends on ARCH_THUNDER2 || COMPILE_TEST
1066         help
1067           Enable support for the SPI controller on the Cavium ThunderX2.
1068           (Originally on Netlogic XLP SoCs.)
1069 
1070           If you have a Cavium ThunderX2 platform say Y here.
1071           If unsure, say N.
1072 
1073 config SPI_XTENSA_XTFPGA
1074         tristate "Xtensa SPI controller for xtfpga"
1075         depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
1076         select SPI_BITBANG
1077         help
1078           SPI driver for xtfpga SPI master controller.
1079 
1080           This simple SPI master controller is built into xtfpga bitstreams
1081           and is used to control daughterboard audio codec. It always transfers
1082           16 bit words in SPI mode 0, automatically asserting CS on transfer
1083           start and deasserting on end.
1084 
1085 config SPI_ZYNQ_QSPI
1086         tristate "Xilinx Zynq QSPI controller"
1087         depends on ARCH_ZYNQ || COMPILE_TEST
1088         help
1089           This enables support for the Zynq Quad SPI controller
1090           in master mode.
1091           This controller only supports SPI memory interface.
1092 
1093 config SPI_ZYNQMP_GQSPI
1094         tristate "Xilinx ZynqMP GQSPI controller"
1095         depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
1096         help
1097           Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
1098 
1099 config SPI_AMD
1100         tristate "AMD SPI controller"
1101         depends on SPI_MASTER || COMPILE_TEST
1102         help
1103           Enables SPI controller driver for AMD SoC.
1104 
1105 #
1106 # Add new SPI master controllers in alphabetical order above this line
1107 #
1108 
1109 comment "SPI Multiplexer support"
1110 
1111 config SPI_MUX
1112         tristate "SPI multiplexer support"
1113         select MULTIPLEXER
1114         help
1115           This adds support for SPI multiplexers. Each SPI mux will be
1116           accessible as a SPI controller, the devices behind the mux will appear
1117           to be chip selects on this controller. It is still necessary to
1118           select one or more specific mux-controller drivers.
1119 
1120 #
1121 # There are lots of SPI device types, with sensors and memory
1122 # being probably the most widely used ones.
1123 #
1124 comment "SPI Protocol Masters"
1125 
1126 config SPI_SPIDEV
1127         tristate "User mode SPI device driver support"
1128         help
1129           This supports user mode SPI protocol drivers.
1130 
1131           Note that this application programming interface is EXPERIMENTAL
1132           and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
1133 
1134 config SPI_LOOPBACK_TEST
1135         tristate "spi loopback test framework support"
1136         depends on m
1137         help
1138           This enables the SPI loopback testing framework driver
1139 
1140           primarily used for development of spi_master drivers
1141           and to detect regressions
1142 
1143 config SPI_TLE62X0
1144         tristate "Infineon TLE62X0 (for power switching)"
1145         depends on SYSFS
1146         help
1147           SPI driver for Infineon TLE62X0 series line driver chips,
1148           such as the TLE6220, TLE6230 and TLE6240.  This provides a
1149           sysfs interface, with each line presented as a kind of GPIO
1150           exposing both switch control and diagnostic feedback.
1151 
1152 #
1153 # Add new SPI protocol masters in alphabetical order above this line
1154 #
1155 
1156 endif # SPI_MASTER
1157 
1158 #
1159 # SLAVE side ... listening to other SPI masters
1160 #
1161 
1162 config SPI_SLAVE
1163         bool "SPI slave protocol handlers"
1164         help
1165           If your system has a slave-capable SPI controller, you can enable
1166           slave protocol handlers.
1167 
1168 if SPI_SLAVE
1169 
1170 config SPI_SLAVE_TIME
1171         tristate "SPI slave handler reporting boot up time"
1172         help
1173           SPI slave handler responding with the time of reception of the last
1174           SPI message.
1175 
1176 config SPI_SLAVE_SYSTEM_CONTROL
1177         tristate "SPI slave handler controlling system state"
1178         help
1179           SPI slave handler to allow remote control of system reboot, power
1180           off, halt, and suspend.
1181 
1182 endif # SPI_SLAVE
1183 
1184 config SPI_DYNAMIC
1185         def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
1186 
1187 endif # SPI