Merge tag 'versal-qspi-for-v2022.10' of https://gitlab.denx.de/u-boot/custodians...
[platform/kernel/u-boot.git] / drivers / spi / Kconfig
1 menuconfig SPI
2         bool "SPI Support"
3         help
4           The "Serial Peripheral Interface" is a low level synchronous
5           protocol.  Chips that support SPI can have data transfer rates
6           up to several tens of Mbit/sec.  Chips are addressed with a
7           controller and a chipselect.  Most SPI slaves don't support
8           dynamic device discovery; some are even write-only or read-only.
9
10           SPI is widely used by microcontrollers to talk with sensors,
11           eeprom and flash memory, codecs and various other controller
12           chips, analog to digital (and d-to-a) converters, and more.
13           MMC and SD cards can be accessed using SPI protocol; and for
14           DataFlash cards used in MMC sockets, SPI must always be used.
15
16           SPI is one of a family of similar protocols using a four wire
17           interface (select, clock, data in, data out) including Microwire
18           (half duplex), SSP, SSI, and PSP.  This driver framework should
19           work with most such devices and controllers.
20
21 if SPI
22
23 config DM_SPI
24         bool "Enable Driver Model for SPI drivers"
25         depends on DM
26         help
27           Enable driver model for SPI. The SPI slave interface
28           (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
29           the SPI uclass. Drivers provide methods to access the SPI
30           buses that they control. The uclass interface is defined in
31           include/spi.h. The existing spi_slave structure is attached
32           as 'parent data' to every slave on each bus. Slaves
33           typically use driver-private data instead of extending the
34           spi_slave structure.
35
36 config SPI_MEM
37         bool "SPI memory extension"
38         help
39           Enable this option if you want to enable the SPI memory extension.
40           This extension is meant to simplify interaction with SPI memories
41           by providing an high-level interface to send memory-like commands.
42
43 if DM_SPI
44
45 config ALTERA_SPI
46         bool "Altera SPI driver"
47         help
48           Enable the Altera SPI driver. This driver can be used to
49           access the SPI NOR flash on platforms embedding this Altera
50           IP core. Please find details on the "Embedded Peripherals IP
51           User Guide" of Altera.
52
53 config APPLE_SPI
54         bool "Apple SPI driver"
55         default y if ARCH_APPLE
56         help
57           Enable the Apple SPI driver. This driver can be used to
58           access the SPI flash and keyboard on machines based on Apple SoCs.
59
60 config ATCSPI200_SPI
61         bool "Andestech ATCSPI200 SPI driver"
62         help
63           Enable the Andestech ATCSPI200 SPI driver. This driver can be
64           used to access the SPI flash on AE3XX and AE250 platforms embedding
65           this Andestech IP core.
66
67 config ATH79_SPI
68         bool "Atheros SPI driver"
69         depends on ARCH_ATH79
70         help
71           Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
72           to access SPI NOR flash and other SPI peripherals. This driver
73           uses driver model and requires a device tree binding to operate.
74           please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
75
76 config ATMEL_QSPI
77         bool "Atmel Quad SPI Controller"
78         depends on ARCH_AT91
79         help
80           Enable the Atmel Quad SPI controller in master mode. This driver
81           does not support generic SPI. The implementation supports only the
82           spi-mem interface.
83
84 config ATMEL_SPI
85         bool "Atmel SPI driver"
86         default y if ARCH_AT91
87         help
88           This enables driver for the Atmel SPI Controller, present on
89           many AT91 (ARM) chips. This driver can be used to access
90           the SPI Flash, such as AT25DF321.
91
92 config BCM63XX_HSSPI
93         bool "BCM63XX HSSPI driver"
94         depends on (ARCH_BMIPS || ARCH_BCM68360 || \
95                     ARCH_BCM6858 || ARCH_BCM63158)
96         help
97           Enable the BCM6328 HSSPI driver. This driver can be used to
98           access the SPI NOR flash on platforms embedding this Broadcom
99           SPI core.
100
101 config BCM63XX_SPI
102         bool "BCM6348 SPI driver"
103         depends on ARCH_BMIPS
104         help
105           Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
106           access the SPI NOR flash on platforms embedding these Broadcom
107           SPI cores.
108
109 config BCMSTB_SPI
110         bool "BCMSTB SPI driver"
111         help
112           Enable the Broadcom set-top box SPI driver. This driver can
113           be used to access the SPI flash on platforms embedding this
114           Broadcom SPI core.
115
116 config CORTINA_SFLASH
117         bool "Cortina-Access Serial Flash controller driver"
118         depends on DM_SPI && SPI_MEM
119         help
120           Enable the Cortina-Access Serial Flash controller driver. This driver
121           can be used to access the SPI NOR/NAND flash on platforms embedding this
122           Cortina-Access IP core.
123
124 config CADENCE_QSPI
125         bool "Cadence QSPI driver"
126         help
127           Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
128           used to access the SPI NOR flash on platforms embedding this
129           Cadence IP core.
130
131 config HAS_CQSPI_REF_CLK
132         bool "Cadence QSPI static reference clock"
133         depends on CADENCE_QSPI
134
135 config CQSPI_REF_CLK
136         int "Cadence QSPI reference clock value in Hz"
137         depends on HAS_CQSPI_REF_CLK
138
139 config CADENCE_OSPI_VERSAL
140         bool "Configure Versal OSPI"
141         depends on ARCH_VERSAL && CADENCE_QSPI
142         imply DM_GPIO
143         help
144           This option is used to enable Versal OSPI DMA operations which
145           are used for ospi flash read using cadence qspi controller.
146
147 config CF_SPI
148         bool "ColdFire SPI driver"
149         help
150           Enable the ColdFire SPI driver. This driver can be used on
151           some m68k SoCs.
152
153 config DAVINCI_SPI
154         bool "Davinci & Keystone SPI driver"
155         depends on ARCH_DAVINCI || ARCH_KEYSTONE
156         help
157           Enable the Davinci SPI driver
158
159 config DESIGNWARE_SPI
160         bool "Designware SPI driver"
161         help
162           Enable the Designware SPI driver. This driver can be used to
163           access the SPI NOR flash on platforms embedding this Designware
164           IP core.
165
166 config EXYNOS_SPI
167         bool "Samsung Exynos SPI driver"
168         help
169           Enable the Samsung Exynos SPI driver. This driver can be used to
170           access the SPI NOR flash on platforms embedding this Samsung
171           Exynos IP core.
172
173 config FSL_DSPI
174         bool "Freescale DSPI driver"
175         help
176           Enable the Freescale DSPI driver. This driver can be used to
177           access the SPI NOR flash and SPI Data flash on platforms embedding
178           this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
179           use this driver.
180
181 config FSL_QSPI
182         bool "Freescale QSPI driver"
183         imply SPI_FLASH_BAR
184         help
185           Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
186           used to access the SPI NOR flash on platforms embedding this
187           Freescale IP core.
188
189 config FSL_QSPI_AHB_FULL_MAP
190         bool "Use full AHB memory map space"
191         depends on FSL_QSPI
192         default y if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M
193         help
194           Enable the Freescale QSPI driver to use full AHB memory map space for
195           flash access.
196
197 config GXP_SPI
198         bool "SPI driver for GXP"
199         imply SPI_FLASH_BAR
200         help
201           Enable support for SPI on GXP.
202
203 config ICH_SPI
204         bool "Intel ICH SPI driver"
205         help
206           Enable the Intel ICH SPI driver. This driver can be used to
207           access the SPI NOR flash on platforms embedding this Intel
208           ICH IP core.
209
210 config IPROC_QSPI
211         bool "Broadcom iProc QSPI Flash Controller driver"
212         help
213           Enable Broadcom iProc QSPI Flash Controller driver.
214           This driver can be used to access the SPI NOR flash.
215
216 config KIRKWOOD_SPI
217         bool "Marvell Kirkwood SPI Driver"
218         help
219           Enable support for SPI on various Marvell SoCs, such as
220           Kirkwood and Armada 375.
221
222 config MESON_SPIFC
223         bool "Amlogic Meson SPI Flash Controller driver"
224         depends on ARCH_MESON
225         help
226           Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
227           This driver can be used to access the SPI NOR flash chips on
228           Amlogic Meson SoCs.
229
230 config MPC8XX_SPI
231         bool "MPC8XX SPI Driver"
232         depends on MPC8xx
233         help
234           Enable support for SPI on MPC8XX
235
236 config MPC8XXX_SPI
237         bool "MPC8XXX SPI Driver"
238         help
239           Enable support for SPI on the MPC8XXX PowerPC SoCs.
240
241 config MSCC_BB_SPI
242         bool "MSCC bitbang SPI driver"
243         depends on SOC_VCOREIII
244         help
245           Enable MSCC bitbang SPI driver. This driver can be used on
246           MSCC SOCs.
247
248 config MT7620_SPI
249         bool "MediaTek MT7620 SPI driver"
250         depends on SOC_MT7620
251         help
252           Enable the MT7620 SPI driver. This driver can be used to access
253           generic SPI devices on MediaTek MT7620 SoC.
254
255 config MT7621_SPI
256         bool "MediaTek MT7621 SPI driver"
257         depends on SOC_MT7628
258         help
259           Enable the MT7621 SPI driver. This driver can be used to access
260           the SPI NOR flash on platforms embedding this Ralink / MediaTek
261           SPI core, like MT7621/7628/7688.
262
263 config MTK_SNOR
264         bool "Mediatek SPI-NOR controller driver"
265         depends on SPI_MEM
266         help
267           Enable the Mediatek SPINOR controller driver. This driver has
268           better read/write performance with NOR.
269
270 config MTK_SNFI_SPI
271         bool "Mediatek SPI memory controller driver"
272         depends on SPI_MEM
273         help
274           Enable the Mediatek SPI memory controller driver. This driver is
275           originally based on the MediaTek SNFI IP core. It can only be
276           used to access SPI memory devices like SPI-NOR or SPI-NAND on
277           platforms embedding this IP core, like MT7622/M7629.
278
279 config MVEBU_A3700_SPI
280         bool "Marvell Armada 3700 SPI driver"
281         select CLK_ARMADA_3720
282         help
283           Enable the Marvell Armada 3700 SPI driver. This driver can be
284           used to access the SPI NOR flash on platforms embedding this
285           Marvell IP core.
286
287 config MXS_SPI
288         bool "MXS SPI Driver"
289         help
290           Enable the MXS SPI controller driver. This driver can be used
291           on the i.MX23 and i.MX28 SoCs.
292
293 config SPI_MXIC
294         bool "Macronix MX25F0A SPI controller"
295         help
296           Enable the Macronix MX25F0A SPI controller driver. This driver
297           can be used to access the SPI flash on platforms embedding
298           this Macronix IP core.
299
300 config NPCM_FIU_SPI
301         bool "FIU driver for Nuvoton NPCM SoC"
302         help
303           This enables support for the Flash Interface Unit SPI controller
304           in master mode.
305
306 config NXP_FSPI
307         bool "NXP FlexSPI driver"
308         depends on SPI_MEM
309         help
310           Enable the NXP FlexSPI (FSPI) driver. This driver can be used to
311           access the SPI NOR flash on platforms embedding this NXP IP core.
312
313 config OCTEON_SPI
314         bool "Octeon SPI driver"
315         depends on ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2
316         help
317           Enable the Octeon SPI driver. This driver can be used to
318           access the SPI NOR flash on Octeon II/III and OcteonTX/TX2
319           SoC platforms.
320
321 config OMAP3_SPI
322         bool "McSPI driver for OMAP"
323         help
324           SPI master controller for OMAP24XX and later Multichannel SPI
325           (McSPI). This driver be used to access SPI chips on platforms
326           embedding this OMAP3 McSPI IP core.
327
328 config PIC32_SPI
329         bool "Microchip PIC32 SPI driver"
330         depends on MACH_PIC32
331         help
332           Enable the Microchip PIC32 SPI driver. This driver can be used
333           to access the SPI NOR flash, MMC-over-SPI on platforms based on
334           Microchip PIC32 family devices.
335
336 config PL022_SPI
337         bool "ARM AMBA PL022 SSP controller driver"
338         depends on ARM
339         help
340           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
341           controller. If you have an embedded system with an AMBA(R)
342           bus and a PL022 controller, say Y or M here.
343
344 config SPI_QUP
345         bool "Qualcomm SPI controller with QUP interface"
346         depends on ARCH_IPQ40XX
347         help
348           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
349           provides a common data path (an output FIFO and an input FIFO)
350           for serial peripheral interface (SPI) mini-core. SPI in master
351           mode supports up to 50MHz, up to four chip selects, programmable
352           data path from 4 bits to 32 bits and numerous protocol variants.
353
354 config RENESAS_RPC_SPI
355         bool "Renesas RPC SPI driver"
356         depends on RCAR_GEN3 || RZA1
357         imply SPI_FLASH_BAR
358         help
359           Enable the Renesas RPC SPI driver, used to access SPI NOR flash
360           on Renesas RCar Gen3 SoCs. This uses driver model and requires a
361           device tree binding to operate.
362
363 config ROCKCHIP_SFC
364         bool "Rockchip SFC Driver"
365         help
366           Enable the Rockchip SFC Driver for SPI NOR flash. This device is
367           a limited purpose SPI controller for driving NOR flash on certain
368           Rockchip SoCs. This uses driver model and requires a device tree
369           binding to operate.
370
371 config ROCKCHIP_SPI
372         bool "Rockchip SPI driver"
373         help
374           Enable the Rockchip SPI driver, used to access SPI NOR flash and
375           other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
376           This uses driver model and requires a device tree binding to
377           operate.
378
379 config SANDBOX_SPI
380         bool "Sandbox SPI driver"
381         depends on SANDBOX && DM
382         help
383           Enable SPI support for sandbox. This is an emulation of a real SPI
384           bus. Devices can be attached to the bus using the device tree
385           which specifies the driver to use. As an example, see this device
386           tree fragment from sandbox.dts. It shows that the SPI bus has a
387           single flash device on chip select 0 which is emulated by the driver
388           for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.
389
390           spi@0 {
391                 #address-cells = <1>;
392                 #size-cells = <0>;
393                 reg = <0>;
394                 compatible = "sandbox,spi";
395                 cs-gpios = <0>, <&gpio_a 0>;
396                 flash@0 {
397                         reg = <0>;
398                         compatible = "spansion,m25p16", "jedec,spi-nor";
399                         spi-max-frequency = <40000000>;
400                         sandbox,filename = "spi.bin";
401                 };
402           };
403
404 config SPI_SIFIVE
405         bool "SiFive SPI driver"
406         help
407           This driver supports the SiFive SPI IP. If unsure say N.
408           Enable the SiFive SPI controller driver.
409
410           The SiFive SPI controller driver is found on various SiFive SoCs.
411
412 config SOFT_SPI
413         bool "Soft SPI driver"
414         help
415          Enable Soft SPI driver. This driver is to use GPIO simulate
416          the SPI protocol.
417
418 config SPI_SUNXI
419         bool "Allwinner SoC SPI controllers"
420         default ARCH_SUNXI
421         help
422           Enable the Allwinner SoC SPi controller driver.
423
424           Same controller driver can reuse in all Allwinner SoC variants.
425
426 config STM32_QSPI
427         bool "STM32F7 QSPI driver"
428         depends on STM32F4 || STM32F7 || ARCH_STM32MP
429         help
430           Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
431           used to access the SPI NOR flash chips on platforms embedding
432           this ST IP core.
433
434 config STM32_SPI
435         bool "STM32 SPI driver"
436         depends on ARCH_STM32MP
437         help
438           Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP
439           SoCs. This uses driver model and requires a device tree binding to
440           operate.
441
442 config TEGRA114_SPI
443         bool "nVidia Tegra114 SPI driver"
444         help
445           Enable the nVidia Tegra114 SPI driver. This driver can be used to
446           access the SPI NOR flash on platforms embedding this nVidia Tegra114
447           IP core.
448
449           This controller is different than the older SoCs SPI controller and
450           also register interface get changed with this controller.
451
452 config TEGRA20_SFLASH
453         bool "nVidia Tegra20 Serial Flash controller driver"
454         help
455           Enable the nVidia Tegra20 Serial Flash controller driver. This driver
456           can be used to access the SPI NOR flash on platforms embedding this
457           nVidia Tegra20 IP core.
458
459 config TEGRA20_SLINK
460         bool "nVidia Tegra20/Tegra30 SLINK driver"
461         help
462           Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
463           be used to access the SPI NOR flash on platforms embedding this
464           nVidia Tegra20/Tegra30 IP cores.
465
466 config TEGRA210_QSPI
467         bool "nVidia Tegra210 QSPI driver"
468         help
469           Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
470           be used to access SPI chips on platforms embedding this
471           NVIDIA Tegra210 IP core.
472
473 config TI_QSPI
474         bool "TI QSPI driver"
475         imply TI_EDMA3
476         help
477           Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
478           This driver support spi flash single, quad and memory reads.
479
480 config UNIPHIER_SPI
481         bool "Socionext UniPhier SPI driver"
482         depends on ARCH_UNIPHIER
483         help
484           Enable the Socionext UniPhier SPI driver. This driver can
485           be used to access SPI chips on platforms embedding this
486           UniPhier IP core.
487
488 config XILINX_SPI
489         bool "Xilinx SPI driver"
490         help
491           Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
492           controller support 8 bit SPI transfers only, with or w/o FIFO.
493           For more info on Xilinx SPI Register Definitions and Overview
494           see driver file - drivers/spi/xilinx_spi.c
495
496 config ZYNQ_SPI
497         bool "Zynq SPI driver"
498         help
499           Enable the Zynq SPI driver. This driver can be used to
500           access the SPI NOR flash on platforms embedding this Zynq
501           SPI IP core.
502
503 config ZYNQ_QSPI
504         bool "Zynq QSPI driver"
505         imply SPI_FLASH_BAR
506         help
507           Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
508           used to access the SPI NOR flash on platforms embedding this
509           Zynq QSPI IP core. This IP is used to connect the flash in
510           4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
511
512 config ZYNQMP_GQSPI
513         bool "Configure ZynqMP Generic QSPI"
514         help
515           This option is used to enable ZynqMP QSPI controller driver which
516           is used to communicate with qspi flash devices.
517
518 endif # if DM_SPI
519
520 config FSL_ESPI
521         bool "Freescale eSPI driver"
522         imply SPI_FLASH_BAR
523         help
524           Enable the Freescale eSPI driver. This driver can be used to
525           access the SPI interface and SPI NOR flash on platforms embedding
526           this Freescale eSPI IP core.
527
528 config SH_QSPI
529         bool "Renesas Quad SPI driver"
530         help
531           Enable the Renesas Quad SPI controller driver. This driver can be
532           used on Renesas SoCs.
533
534 config MXC_SPI
535         bool "MXC SPI Driver"
536         help
537           Enable the MXC SPI controller driver. This driver can be used
538           on various i.MX SoCs such as i.MX31/35/51/6/7.
539
540 config SYNQUACER_SPI
541         bool "Socionext SynQuacer HS-SPI driver"
542         depends on ARCH_SYNQUACER
543         help
544           Enable the Socionext HS-SPI driver for SynQuacer. This driver can
545           be used to access the SPI interface and SPI NOR flash on platforms
546           embedding this HS-SPI IP core.
547
548 endif # menu "SPI Support"