hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/spi/Kconfig
....@@ -1,3 +1,4 @@
1
+# SPDX-License-Identifier: GPL-2.0-only
12 #
23 # SPI driver configuration
34 #
....@@ -58,12 +59,20 @@
5859
5960 config SPI_ALTERA
6061 tristate "Altera SPI Controller"
62
+ select REGMAP_MMIO
6163 help
6264 This is the driver for the Altera SPI Controller.
6365
66
+config SPI_AR934X
67
+ tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
68
+ depends on ATH79 || COMPILE_TEST
69
+ help
70
+ This enables support for the SPI controller present on the
71
+ Qualcomm Atheros AR934X/QCA95XX SoCs.
72
+
6473 config SPI_ATH79
6574 tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
66
- depends on ATH79 && GPIOLIB
75
+ depends on ATH79 || COMPILE_TEST
6776 select SPI_BITBANG
6877 help
6978 This enables support for the SPI controller present on the
....@@ -79,9 +88,27 @@
7988 config SPI_ATMEL
8089 tristate "Atmel SPI Controller"
8190 depends on ARCH_AT91 || COMPILE_TEST
91
+ depends on OF
8292 help
8393 This selects a driver for the Atmel SPI Controller, present on
8494 many AT91 ARM chips.
95
+
96
+config SPI_AT91_USART
97
+ tristate "Atmel USART Controller SPI driver"
98
+ depends on (ARCH_AT91 || COMPILE_TEST)
99
+ depends on MFD_AT91_USART
100
+ help
101
+ This selects a driver for the AT91 USART Controller as SPI Master,
102
+ present on AT91 and SAMA5 SoC series.
103
+
104
+config SPI_ATMEL_QUADSPI
105
+ tristate "Atmel Quad SPI Controller"
106
+ depends on ARCH_AT91 || COMPILE_TEST
107
+ depends on OF && HAS_IOMEM
108
+ help
109
+ This enables support for the Quad SPI controller in master mode.
110
+ This driver does not support generic SPI. The implementation only
111
+ supports spi-mem interface.
85112
86113 config SPI_AU1550
87114 tristate "Au1550/Au1200/Au1300 SPI Controller"
....@@ -102,7 +129,7 @@
102129 config SPI_BCM2835
103130 tristate "BCM2835 SPI controller"
104131 depends on GPIOLIB
105
- depends on ARCH_BCM2835 || COMPILE_TEST
132
+ depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
106133 help
107134 This selects a driver for the Broadcom BCM2835 SPI master.
108135
....@@ -113,7 +140,7 @@
113140
114141 config SPI_BCM2835AUX
115142 tristate "BCM2835 SPI auxiliary controller"
116
- depends on (ARCH_BCM2835 && GPIOLIB) || COMPILE_TEST
143
+ depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
117144 help
118145 This selects a driver for the Broadcom BCM2835 SPI aux master.
119146
....@@ -123,13 +150,13 @@
123150
124151 config SPI_BCM63XX
125152 tristate "Broadcom BCM63xx SPI controller"
126
- depends on BCM63XX || COMPILE_TEST
153
+ depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
127154 help
128
- Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
155
+ Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
129156
130157 config SPI_BCM63XX_HSSPI
131158 tristate "Broadcom BCM63XX HS SPI controller driver"
132
- depends on BCM63XX || COMPILE_TEST
159
+ depends on BCM63XX || BMIPS_GENERIC || ARCH_BCM_63XX || COMPILE_TEST
133160 help
134161 This enables support for the High Speed SPI controller present on
135162 newer Broadcom BCM63XX SoCs.
....@@ -142,7 +169,7 @@
142169 help
143170 Enables support for the Broadcom SPI flash and MSPI controller.
144171 Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
145
- based platforms. This driver works for both SPI master for spi-nor
172
+ based platforms. This driver works for both SPI master for SPI NOR
146173 flash device as well as MSPI device.
147174
148175 config SPI_BITBANG
....@@ -174,6 +201,17 @@
174201 This selects the Cadence SPI controller master driver
175202 used by Xilinx Zynq and ZynqMP.
176203
204
+config SPI_CADENCE_QUADSPI
205
+ tristate "Cadence Quad SPI controller"
206
+ depends on OF && (ARM || ARM64 || COMPILE_TEST)
207
+ help
208
+ Enable support for the Cadence Quad SPI Flash controller.
209
+
210
+ Cadence QSPI is a specialized controller for connecting an SPI
211
+ Flash over 1/2/4-bit wide bus. Enable this option if you have a
212
+ device with a Cadence QSPI controller and want to access the
213
+ Flash as an MTD device.
214
+
177215 config SPI_CLPS711X
178216 tristate "CLPS711X host SPI controller"
179217 depends on ARCH_CLPS711X || COMPILE_TEST
....@@ -197,30 +235,62 @@
197235
198236 config SPI_DESIGNWARE
199237 tristate "DesignWare SPI controller core support"
238
+ imply SPI_MEM
200239 help
201240 general driver for SPI controller core from DesignWare
202241
242
+if SPI_DESIGNWARE
243
+
244
+config SPI_DW_DMA
245
+ bool "DMA support for DW SPI controller"
246
+
203247 config SPI_DW_PCI
204248 tristate "PCI interface driver for DW SPI core"
205
- depends on SPI_DESIGNWARE && PCI
206
-
207
-config SPI_DW_MID_DMA
208
- bool "DMA support for DW SPI controller on Intel MID platform"
209
- depends on SPI_DW_PCI && DW_DMAC_PCI
249
+ depends on PCI
210250
211251 config SPI_DW_MMIO
212252 tristate "Memory-mapped io interface driver for DW SPI core"
213
- depends on SPI_DESIGNWARE
253
+ depends on HAS_IOMEM
254
+
255
+config SPI_DW_BT1
256
+ tristate "Baikal-T1 SPI driver for DW SPI core"
257
+ depends on MIPS_BAIKAL_T1 || COMPILE_TEST
258
+ select MULTIPLEXER
259
+ select MUX_MMIO
260
+ help
261
+ Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
262
+ controllers. Two of them are pretty much normal: with IRQ, DMA,
263
+ FIFOs of 64 words depth, 4x CSs, but the third one as being a
264
+ part of the Baikal-T1 System Boot Controller has got a very
265
+ limited resources: no IRQ, no DMA, only a single native
266
+ chip-select and Tx/Rx FIFO with just 8 words depth available.
267
+ The later one is normally connected to an external SPI-nor flash
268
+ of 128Mb (in general can be of bigger size).
269
+
270
+config SPI_DW_BT1_DIRMAP
271
+ bool "Directly mapped Baikal-T1 Boot SPI flash support"
272
+ depends on SPI_DW_BT1
273
+ help
274
+ Directly mapped SPI flash memory is an interface specific to the
275
+ Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
276
+ can be used to access a peripheral memory device just by
277
+ reading/writing data from/to it. Note that the system APB bus
278
+ will stall during each IO from/to the dirmap region until the
279
+ operation is finished. So try not to use it concurrently with
280
+ time-critical tasks (like the SPI memory operations implemented
281
+ in this driver).
282
+
283
+endif
214284
215285 config SPI_DLN2
216286 tristate "Diolan DLN-2 USB SPI adapter"
217287 depends on MFD_DLN2
218288 help
219
- If you say yes to this option, support will be included for Diolan
220
- DLN2, a USB to SPI interface.
289
+ If you say yes to this option, support will be included for Diolan
290
+ DLN2, a USB to SPI interface.
221291
222
- This driver can also be built as a module. If so, the module
223
- will be called spi-dln2.
292
+ This driver can also be built as a module. If so, the module
293
+ will be called spi-dln2.
224294
225295 config SPI_EFM32
226296 tristate "EFM32 SPI controller"
....@@ -245,11 +315,47 @@
245315 has only been tested with m25p80 type chips. The hardware has no
246316 support for other types of SPI peripherals.
247317
318
+config SPI_FSI
319
+ tristate "FSI SPI driver"
320
+ depends on FSI
321
+ help
322
+ This enables support for the driver for FSI bus attached SPI
323
+ controllers.
324
+
248325 config SPI_FSL_LPSPI
249326 tristate "Freescale i.MX LPSPI controller"
250327 depends on ARCH_MXC || COMPILE_TEST
251328 help
252329 This enables Freescale i.MX LPSPI controllers in master mode.
330
+
331
+config SPI_FSL_QUADSPI
332
+ tristate "Freescale QSPI controller"
333
+ depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
334
+ depends on HAS_IOMEM
335
+ help
336
+ This enables support for the Quad SPI controller in master mode.
337
+ Up to four flash chips can be connected on two buses with two
338
+ chipselects each.
339
+ This controller does not support generic SPI messages. It only
340
+ supports the high-level SPI memory interface.
341
+
342
+config SPI_HISI_SFC_V3XX
343
+ tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
344
+ depends on (ARM64 && ACPI) || COMPILE_TEST
345
+ depends on HAS_IOMEM
346
+ help
347
+ This enables support for HiSilicon v3xx SPI NOR flash controller
348
+ found in hi16xx chipsets.
349
+
350
+config SPI_NXP_FLEXSPI
351
+ tristate "NXP Flex SPI controller"
352
+ depends on ARCH_LAYERSCAPE || HAS_IOMEM
353
+ help
354
+ This enables support for the Flex SPI controller in master mode.
355
+ Up to four slave devices can be connected on two buses with two
356
+ chipselects each.
357
+ This controller does not support generic SPI messages and only
358
+ supports the high-level SPI memory interface.
253359
254360 config SPI_GPIO
255361 tristate "GPIO-based bitbanging SPI Master"
....@@ -279,8 +385,7 @@
279385 depends on ARCH_MXC || COMPILE_TEST
280386 select SPI_BITBANG
281387 help
282
- This enables using the Freescale i.MX SPI controllers in master
283
- mode.
388
+ This enables support for the Freescale i.MX SPI controllers.
284389
285390 config SPI_JCORE
286391 tristate "J-Core SPI Master"
....@@ -355,7 +460,7 @@
355460 depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
356461 help
357462 This enables support for the Freescale DSPI controller in master
358
- mode. VF610 platform uses the controller.
463
+ mode. VF610, LS1021A and ColdFire platforms uses the controller.
359464
360465 config SPI_FSL_ESPI
361466 tristate "Freescale eSPI controller"
....@@ -367,6 +472,7 @@
367472
368473 config SPI_MESON_SPICC
369474 tristate "Amlogic Meson SPICC controller"
475
+ depends on COMMON_CLK
370476 depends on ARCH_MESON || COMPILE_TEST
371477 help
372478 This enables master mode support for the SPICC (SPI communication
....@@ -389,20 +495,46 @@
389495 say Y or M here.If you are not sure, say N.
390496 SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
391497
392
-config SPI_NUC900
393
- tristate "Nuvoton NUC900 series SPI"
394
- depends on ARCH_W90X900
395
- select SPI_BITBANG
498
+config SPI_MT7621
499
+ tristate "MediaTek MT7621 SPI Controller"
500
+ depends on RALINK || COMPILE_TEST
396501 help
397
- SPI driver for Nuvoton NUC900 series ARM SoCs
502
+ This selects a driver for the MediaTek MT7621 SPI Controller.
503
+
504
+config SPI_MTK_NOR
505
+ tristate "MediaTek SPI NOR controller"
506
+ depends on ARCH_MEDIATEK || COMPILE_TEST
507
+ help
508
+ This enables support for SPI NOR controller found on MediaTek
509
+ ARM SoCs. This is a controller specifically for SPI NOR flash.
510
+ It can perform generic SPI transfers up to 6 bytes via generic
511
+ SPI interface as well as several SPI NOR specific instructions
512
+ via SPI MEM interface.
513
+
514
+config SPI_NPCM_FIU
515
+ tristate "Nuvoton NPCM FLASH Interface Unit"
516
+ depends on ARCH_NPCM || COMPILE_TEST
517
+ depends on OF && HAS_IOMEM
518
+ help
519
+ This enables support for the Flash Interface Unit SPI controller
520
+ in master mode.
521
+ This driver does not support generic SPI. The implementation only
522
+ supports spi-mem interface.
523
+
524
+config SPI_NPCM_PSPI
525
+ tristate "Nuvoton NPCM PSPI Controller"
526
+ depends on ARCH_NPCM || COMPILE_TEST
527
+ help
528
+ This driver provides support for Nuvoton NPCM BMC
529
+ Peripheral SPI controller in master mode.
398530
399531 config SPI_LANTIQ_SSC
400532 tristate "Lantiq SSC SPI controller"
401
- depends on LANTIQ || COMPILE_TEST
533
+ depends on LANTIQ || X86 || COMPILE_TEST
402534 help
403535 This driver supports the Lantiq SSC SPI controller in master
404536 mode. This controller is found on Intel (former Lantiq) SoCs like
405
- the Danube, Falcon, xRX200, xRX300.
537
+ the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
406538
407539 config SPI_OC_TINY
408540 tristate "OpenCores tiny SPI"
....@@ -427,7 +559,7 @@
427559
428560 config SPI_OMAP24XX
429561 tristate "McSPI driver for OMAP"
430
- depends on ARCH_OMAP2PLUS || COMPILE_TEST
562
+ depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
431563 select SG_SPLIT
432564 help
433565 SPI master controller for OMAP24XX and later Multichannel SPI
....@@ -487,12 +619,12 @@
487619
488620 config SPI_PXA2XX
489621 tristate "PXA2xx SSP SPI master"
490
- depends on (ARCH_PXA || ARCH_MMP || PCI || ACPI)
622
+ depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
491623 select PXA_SSP if ARCH_PXA || ARCH_MMP
492624 help
493625 This enables using a PXA2xx or Sodaville SSP port as a SPI master
494626 controller. The driver can be configured to use any SSP port and
495
- additional documentation can be found a Documentation/spi/pxa2xx.
627
+ additional documentation can be found a Documentation/spi/pxa2xx.rst.
496628
497629 config SPI_PXA2XX_PCI
498630 def_tristate SPI_PXA2XX && PCI && COMMON_CLK
....@@ -518,11 +650,30 @@
518650 for each spi controller and support to get the controller register
519651 resource by calling mmap.
520652
653
+config SPI_ROCKCHIP_SFC
654
+ tristate "Rockchip Serial Flash Controller (SFC)"
655
+ imply ROCKCHIP_MTD_VENDOR_STORAGE
656
+ depends on ARCH_ROCKCHIP || COMPILE_TEST
657
+ depends on HAS_IOMEM && HAS_DMA
658
+ help
659
+ This enables support for Rockchip serial flash controller. This
660
+ is a specialized controller used to access SPI flash on some
661
+ Rockchip SOCs.
662
+
663
+ ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
664
+ the driver automatically falls back to PIO mode.
665
+
521666 config SPI_RB4XX
522667 tristate "Mikrotik RB4XX SPI master"
523668 depends on SPI_MASTER && ATH79
524669 help
525670 SPI controller driver for the Mikrotik RB4xx series boards.
671
+
672
+config SPI_RPCIF
673
+ tristate "Renesas RPC-IF SPI driver"
674
+ depends on RENESAS_RPCIF
675
+ help
676
+ SPI driver for Renesas R-Car Gen3 RPC-IF.
526677
527678 config SPI_RSPI
528679 tristate "Renesas RSPI/QSPI controller"
....@@ -530,9 +681,15 @@
530681 help
531682 SPI driver for Renesas RSPI and QSPI blocks.
532683
684
+config SPI_QCOM_QSPI
685
+ tristate "QTI QSPI controller"
686
+ depends on ARCH_QCOM
687
+ help
688
+ QSPI(Quad SPI) driver for Qualcomm QSPI controller.
689
+
533690 config SPI_QUP
534691 tristate "Qualcomm SPI controller with QUP interface"
535
- depends on ARCH_QCOM || (ARM && COMPILE_TEST)
692
+ depends on ARCH_QCOM || COMPILE_TEST
536693 help
537694 Qualcomm Universal Peripheral (QUP) core is an AHB slave that
538695 provides a common data path (an output FIFO and an input FIFO)
....@@ -542,6 +699,18 @@
542699
543700 This driver can also be built as a module. If so, the module
544701 will be called spi_qup.
702
+
703
+config SPI_QCOM_GENI
704
+ tristate "Qualcomm GENI based SPI controller"
705
+ depends on QCOM_GENI_SE
706
+ help
707
+ This driver supports GENI serial engine based SPI controller in
708
+ master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
709
+ yes to this option, support will be included for the built-in SPI
710
+ interface on the Qualcomm Technologies Inc.'s SoCs.
711
+
712
+ This driver can also be built as a module. If so, the module
713
+ will be called spi-geni-qcom.
545714
546715 config SPI_S3C24XX
547716 tristate "Samsung S3C24XX series SPI"
....@@ -563,7 +732,7 @@
563732
564733 config SPI_S3C64XX
565734 tristate "Samsung S3C64XX series type SPI"
566
- depends on (PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST)
735
+ depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
567736 help
568737 SPI driver for Samsung S3C64XX and newer SoCs.
569738
....@@ -599,12 +768,34 @@
599768 help
600769 SPI driver for SuperH HSPI blocks.
601770
771
+config SPI_SIFIVE
772
+ tristate "SiFive SPI controller"
773
+ depends on HAS_IOMEM
774
+ help
775
+ This exposes the SPI controller IP from SiFive.
776
+
602777 config SPI_SIRF
603778 tristate "CSR SiRFprimaII SPI controller"
604779 depends on SIRF_DMA
605780 select SPI_BITBANG
606781 help
607782 SPI driver for CSR SiRFprimaII SoCs
783
+
784
+config SPI_SLAVE_MT27XX
785
+ tristate "MediaTek SPI slave device"
786
+ depends on ARCH_MEDIATEK || COMPILE_TEST
787
+ depends on SPI_SLAVE
788
+ help
789
+ This selects the MediaTek(R) SPI slave device driver.
790
+ If you want to use MediaTek(R) SPI slave interface,
791
+ say Y or M here.If you are not sure, say N.
792
+ SPI slave drivers for Mediatek MT27XX series ARM SoCs.
793
+
794
+config SPI_SPRD
795
+ tristate "Spreadtrum SPI controller"
796
+ depends on ARCH_SPRD || COMPILE_TEST
797
+ help
798
+ SPI driver for Spreadtrum SoCs.
608799
609800 config SPI_SPRD_ADI
610801 tristate "Spreadtrum ADI controller"
....@@ -617,11 +808,20 @@
617808 tristate "STMicroelectronics STM32 SPI controller"
618809 depends on ARCH_STM32 || COMPILE_TEST
619810 help
620
- SPI driver for STMicroelectonics STM32 SoCs.
811
+ SPI driver for STMicroelectronics STM32 SoCs.
621812
622813 STM32 SPI controller supports DMA and PIO modes. When DMA
623814 is not available, the driver automatically falls back to
624815 PIO mode.
816
+
817
+config SPI_STM32_QSPI
818
+ tristate "STMicroelectronics STM32 QUAD SPI controller"
819
+ depends on ARCH_STM32 || COMPILE_TEST
820
+ depends on OF
821
+ help
822
+ This enables support for the Quad SPI controller in master mode.
823
+ This driver does not support generic SPI. The implementation only
824
+ supports spi-mem interface.
625825
626826 config SPI_ST_SSC4
627827 tristate "STMicroelectronics SPI SSC-based driver"
....@@ -642,6 +842,22 @@
642842 depends on RESET_CONTROLLER
643843 help
644844 This enables using the SPI controller on the Allwinner A31 SoCs.
845
+
846
+config SPI_SYNQUACER
847
+ tristate "Socionext's SynQuacer HighSpeed SPI controller"
848
+ depends on ARCH_SYNQUACER || COMPILE_TEST
849
+ help
850
+ SPI driver for Socionext's High speed SPI controller which provides
851
+ various operating modes for interfacing to serial peripheral devices
852
+ that use the de-facto standard SPI protocol.
853
+
854
+ It also supports the new dual-bit and quad-bit SPI protocol.
855
+
856
+config SPI_MXIC
857
+ tristate "Macronix MX25F0A SPI controller"
858
+ depends on SPI_MASTER
859
+ help
860
+ This selects the Macronix MX25F0A SPI controller driver.
645861
646862 config SPI_MXS
647863 tristate "Freescale MXS SPI controller"
....@@ -701,6 +917,7 @@
701917 config SPI_UNIPHIER
702918 tristate "Socionext UniPhier SPI Controller"
703919 depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
920
+ depends on HAS_IOMEM
704921 help
705922 This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
706923
....@@ -753,16 +970,41 @@
753970 16 bit words in SPI mode 0, automatically asserting CS on transfer
754971 start and deasserting on end.
755972
973
+config SPI_ZYNQ_QSPI
974
+ tristate "Xilinx Zynq QSPI controller"
975
+ depends on ARCH_ZYNQ || COMPILE_TEST
976
+ help
977
+ This enables support for the Zynq Quad SPI controller
978
+ in master mode.
979
+ This controller only supports SPI memory interface.
980
+
756981 config SPI_ZYNQMP_GQSPI
757982 tristate "Xilinx ZynqMP GQSPI controller"
758
- depends on SPI_MASTER && HAS_DMA
983
+ depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
759984 help
760985 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
986
+
987
+config SPI_AMD
988
+ tristate "AMD SPI controller"
989
+ depends on SPI_MASTER || COMPILE_TEST
990
+ help
991
+ Enables SPI controller driver for AMD SoC.
761992
762993 #
763994 # Add new SPI master controllers in alphabetical order above this line
764995 #
765996
997
+comment "SPI Multiplexer support"
998
+
999
+config SPI_MUX
1000
+ tristate "SPI multiplexer support"
1001
+ select MULTIPLEXER
1002
+ help
1003
+ This adds support for SPI multiplexers. Each SPI mux will be
1004
+ accessible as a SPI controller, the devices behind the mux will appear
1005
+ to be chip selects on this controller. It is still necessary to
1006
+ select one or more specific mux-controller drivers.
1007
+
7661008 #
7671009 # There are lots of SPI device types, with sensors and memory
7681010 # being probably the most widely used ones.