1menuconfig 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
21if SPI
22
23config 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
36config 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
43if DM_SPI
44
45config 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
53config ATCSPI200_SPI
54	bool "Andestech ATCSPI200 SPI driver"
55	help
56	  Enable the Andestech ATCSPI200 SPI driver. This driver can be
57	  used to access the SPI flash on AE3XX and AE250 platforms embedding
58	  this Andestech IP core.
59
60config ATH79_SPI
61	bool "Atheros SPI driver"
62	depends on ARCH_ATH79
63	help
64	  Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
65	  to access SPI NOR flash and other SPI peripherals. This driver
66	  uses driver model and requires a device tree binding to operate.
67	  please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
68
69config ATMEL_QSPI
70	bool "Atmel Quad SPI Controller"
71	depends on ARCH_AT91
72	help
73	  Enable the Atmel Quad SPI controller in master mode. This driver
74	  does not support generic SPI. The implementation supports only the
75	  spi-mem interface.
76
77config ATMEL_SPI
78	bool "Atmel SPI driver"
79	default y if ARCH_AT91
80	help
81	  This enables driver for the Atmel SPI Controller, present on
82	  many AT91 (ARM) chips. This driver can be used to access
83	  the SPI Flash, such as AT25DF321.
84
85config BCM63XX_HSSPI
86	bool "BCM63XX HSSPI driver"
87	depends on (ARCH_BMIPS || ARCH_BCM68360 || \
88		    ARCH_BCM6858 || ARCH_BCM63158)
89	help
90	  Enable the BCM6328 HSSPI driver. This driver can be used to
91	  access the SPI NOR flash on platforms embedding this Broadcom
92	  SPI core.
93
94config BCM63XX_SPI
95	bool "BCM6348 SPI driver"
96	depends on ARCH_BMIPS
97	help
98	  Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
99	  access the SPI NOR flash on platforms embedding these Broadcom
100	  SPI cores.
101
102config BCMSTB_SPI
103	bool "BCMSTB SPI driver"
104	help
105	  Enable the Broadcom set-top box SPI driver. This driver can
106	  be used to access the SPI flash on platforms embedding this
107	  Broadcom SPI core.
108
109config CORTINA_SFLASH
110	bool "Cortina-Access Serial Flash controller driver"
111	depends on DM_SPI && SPI_MEM
112	help
113	  Enable the Cortina-Access Serial Flash controller driver. This driver
114	  can be used to access the SPI NOR/NAND flash on platforms embedding this
115	  Cortina-Access IP core.
116
117config CADENCE_QSPI
118	bool "Cadence QSPI driver"
119	help
120	  Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
121	  used to access the SPI NOR flash on platforms embedding this
122	  Cadence IP core.
123
124config CF_SPI
125        bool "ColdFire SPI driver"
126        help
127          Enable the ColdFire SPI driver. This driver can be used on
128          some m68k SoCs.
129
130config DAVINCI_SPI
131	bool "Davinci & Keystone SPI driver"
132	depends on ARCH_DAVINCI || ARCH_KEYSTONE
133	help
134	  Enable the Davinci SPI driver
135
136config DESIGNWARE_SPI
137	bool "Designware SPI driver"
138	help
139	  Enable the Designware SPI driver. This driver can be used to
140	  access the SPI NOR flash on platforms embedding this Designware
141	  IP core.
142
143config EXYNOS_SPI
144	bool "Samsung Exynos SPI driver"
145	help
146	  Enable the Samsung Exynos SPI driver. This driver can be used to
147	  access the SPI NOR flash on platforms embedding this Samsung
148	  Exynos IP core.
149
150config FSL_DSPI
151	bool "Freescale DSPI driver"
152	help
153	  Enable the Freescale DSPI driver. This driver can be used to
154	  access the SPI NOR flash and SPI Data flash on platforms embedding
155	  this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
156	  use this driver.
157
158config FSL_QSPI
159	bool "Freescale QSPI driver"
160	imply SPI_FLASH_BAR
161	help
162	  Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
163	  used to access the SPI NOR flash on platforms embedding this
164	  Freescale IP core.
165
166config FSL_QSPI_AHB_FULL_MAP
167	bool "Use full AHB memory map space"
168	depends on FSL_QSPI
169	default y if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M
170	help
171	  Enable the Freescale QSPI driver to use full AHB memory map space for
172	  flash access.
173
174config ICH_SPI
175	bool "Intel ICH SPI driver"
176	help
177	  Enable the Intel ICH SPI driver. This driver can be used to
178	  access the SPI NOR flash on platforms embedding this Intel
179	  ICH IP core.
180
181config KIRKWOOD_SPI
182	bool "Marvell Kirkwood SPI Driver"
183	help
184	  Enable support for SPI on various Marvell SoCs, such as
185	  Kirkwood and Armada 375.
186
187config MESON_SPIFC
188	bool "Amlogic Meson SPI Flash Controller driver"
189	depends on ARCH_MESON
190	help
191	  Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
192	  This driver can be used to access the SPI NOR flash chips on
193	  Amlogic Meson SoCs.
194
195config MPC8XX_SPI
196	bool "MPC8XX SPI Driver"
197	depends on MPC8xx
198	help
199	  Enable support for SPI on MPC8XX
200
201config MPC8XXX_SPI
202	bool "MPC8XXX SPI Driver"
203	help
204	  Enable support for SPI on the MPC8XXX PowerPC SoCs.
205
206config MSCC_BB_SPI
207	bool "MSCC bitbang SPI driver"
208	depends on SOC_VCOREIII
209	help
210	  Enable MSCC bitbang SPI driver. This driver can be used on
211	  MSCC SOCs.
212
213config MT7620_SPI
214	bool "MediaTek MT7620 SPI driver"
215	depends on SOC_MT7620
216	help
217	  Enable the MT7620 SPI driver. This driver can be used to access
218	  generic SPI devices on MediaTek MT7620 SoC.
219
220config MT7621_SPI
221	bool "MediaTek MT7621 SPI driver"
222	depends on SOC_MT7628
223	help
224	  Enable the MT7621 SPI driver. This driver can be used to access
225	  the SPI NOR flash on platforms embedding this Ralink / MediaTek
226	  SPI core, like MT7621/7628/7688.
227
228config MTK_SNOR
229	bool "Mediatek SPI-NOR controller driver"
230	depends on SPI_MEM
231	help
232	  Enable the Mediatek SPINOR controller driver. This driver has
233          better read/write performance with NOR.
234
235config MTK_SNFI_SPI
236	bool "Mediatek SPI memory controller driver"
237	depends on SPI_MEM
238	help
239	  Enable the Mediatek SPI memory controller driver. This driver is
240	  originally based on the MediaTek SNFI IP core. It can only be
241	  used to access SPI memory devices like SPI-NOR or SPI-NAND on
242	  platforms embedding this IP core, like MT7622/M7629.
243
244config MVEBU_A3700_SPI
245	bool "Marvell Armada 3700 SPI driver"
246	select CLK_ARMADA_3720
247	help
248	  Enable the Marvell Armada 3700 SPI driver. This driver can be
249	  used to access the SPI NOR flash on platforms embedding this
250	  Marvell IP core.
251
252config MXS_SPI
253	bool "MXS SPI Driver"
254	help
255	  Enable the MXS SPI controller driver. This driver can be used
256	  on the i.MX23 and i.MX28 SoCs.
257
258config NXP_FSPI
259	bool "NXP FlexSPI driver"
260	depends on SPI_MEM
261	help
262	  Enable the NXP FlexSPI (FSPI) driver. This driver can be used to
263	  access the SPI NOR flash on platforms embedding this NXP IP core.
264
265config OCTEON_SPI
266	bool "Octeon SPI driver"
267	depends on DM_PCI && (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2)
268	help
269	  Enable the Octeon SPI driver. This driver can be used to
270	  access the SPI NOR flash on Octeon II/III and OcteonTX/TX2
271	  SoC platforms.
272
273config OMAP3_SPI
274	bool "McSPI driver for OMAP"
275	help
276	  SPI master controller for OMAP24XX and later Multichannel SPI
277	  (McSPI). This driver be used to access SPI chips on platforms
278	  embedding this OMAP3 McSPI IP core.
279
280config PIC32_SPI
281	bool "Microchip PIC32 SPI driver"
282	depends on MACH_PIC32
283	help
284	  Enable the Microchip PIC32 SPI driver. This driver can be used
285	  to access the SPI NOR flash, MMC-over-SPI on platforms based on
286	  Microchip PIC32 family devices.
287
288config PL022_SPI
289	bool "ARM AMBA PL022 SSP controller driver"
290	depends on ARM
291	help
292	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
293	  controller. If you have an embedded system with an AMBA(R)
294	  bus and a PL022 controller, say Y or M here.
295
296config SPI_QUP
297	bool "Qualcomm SPI controller with QUP interface"
298	depends on ARCH_IPQ40XX
299	help
300	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
301	  provides a common data path (an output FIFO and an input FIFO)
302	  for serial peripheral interface (SPI) mini-core. SPI in master
303	  mode supports up to 50MHz, up to four chip selects, programmable
304	  data path from 4 bits to 32 bits and numerous protocol variants.
305
306config RENESAS_RPC_SPI
307	bool "Renesas RPC SPI driver"
308	depends on RCAR_GEN3 || RZA1
309	imply SPI_FLASH_BAR
310	help
311	  Enable the Renesas RPC SPI driver, used to access SPI NOR flash
312	  on Renesas RCar Gen3 SoCs. This uses driver model and requires a
313	  device tree binding to operate.
314
315config ROCKCHIP_SPI
316	bool "Rockchip SPI driver"
317	help
318	  Enable the Rockchip SPI driver, used to access SPI NOR flash and
319	  other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
320	  This uses driver model and requires a device tree binding to
321	  operate.
322
323config SANDBOX_SPI
324	bool "Sandbox SPI driver"
325	depends on SANDBOX && DM
326	help
327	  Enable SPI support for sandbox. This is an emulation of a real SPI
328	  bus. Devices can be attached to the bus using the device tree
329	  which specifies the driver to use. As an example, see this device
330	  tree fragment from sandbox.dts. It shows that the SPI bus has a
331	  single flash device on chip select 0 which is emulated by the driver
332	  for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.
333
334	  spi@0 {
335		#address-cells = <1>;
336		#size-cells = <0>;
337		reg = <0>;
338		compatible = "sandbox,spi";
339		cs-gpios = <0>, <&gpio_a 0>;
340		flash@0 {
341			reg = <0>;
342			compatible = "spansion,m25p16", "jedec,spi-nor";
343			spi-max-frequency = <40000000>;
344			sandbox,filename = "spi.bin";
345		};
346	  };
347
348config SPI_SIFIVE
349	bool "SiFive SPI driver"
350	help
351	  This driver supports the SiFive SPI IP. If unsure say N.
352	  Enable the SiFive SPI controller driver.
353
354	  The SiFive SPI controller driver is found on various SiFive SoCs.
355
356config SOFT_SPI
357	bool "Soft SPI driver"
358	help
359	 Enable Soft SPI driver. This driver is to use GPIO simulate
360	 the SPI protocol.
361
362config SPI_SUNXI
363	bool "Allwinner SoC SPI controllers"
364	default ARCH_SUNXI
365	help
366	  Enable the Allwinner SoC SPi controller driver.
367
368	  Same controller driver can reuse in all Allwinner SoC variants.
369
370config STM32_QSPI
371	bool "STM32F7 QSPI driver"
372	depends on STM32F4 || STM32F7 || ARCH_STM32MP
373	help
374	  Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
375	  used to access the SPI NOR flash chips on platforms embedding
376	  this ST IP core.
377
378config STM32_SPI
379	bool "STM32 SPI driver"
380	depends on ARCH_STM32MP
381	help
382	  Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP
383	  SoCs. This uses driver model and requires a device tree binding to
384	  operate.
385
386config TEGRA114_SPI
387	bool "nVidia Tegra114 SPI driver"
388	help
389	  Enable the nVidia Tegra114 SPI driver. This driver can be used to
390	  access the SPI NOR flash on platforms embedding this nVidia Tegra114
391	  IP core.
392
393	  This controller is different than the older SoCs SPI controller and
394	  also register interface get changed with this controller.
395
396config TEGRA20_SFLASH
397	bool "nVidia Tegra20 Serial Flash controller driver"
398	help
399	  Enable the nVidia Tegra20 Serial Flash controller driver. This driver
400	  can be used to access the SPI NOR flash on platforms embedding this
401	  nVidia Tegra20 IP core.
402
403config TEGRA20_SLINK
404	bool "nVidia Tegra20/Tegra30 SLINK driver"
405	help
406	  Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
407	  be used to access the SPI NOR flash on platforms embedding this
408	  nVidia Tegra20/Tegra30 IP cores.
409
410config TEGRA210_QSPI
411	bool "nVidia Tegra210 QSPI driver"
412	help
413	  Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
414	  be used to access SPI chips on platforms embedding this
415	  NVIDIA Tegra210 IP core.
416
417config TI_QSPI
418	bool "TI QSPI driver"
419	imply TI_EDMA3
420	help
421	  Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
422	  This driver support spi flash single, quad and memory reads.
423
424config UNIPHIER_SPI
425	bool "Socionext UniPhier SPI driver"
426	depends on ARCH_UNIPHIER
427	help
428	  Enable the Socionext UniPhier SPI driver. This driver can
429	  be used to access SPI chips on platforms embedding this
430	  UniPhier IP core.
431
432config XILINX_SPI
433	bool "Xilinx SPI driver"
434	help
435	  Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
436	  controller support 8 bit SPI transfers only, with or w/o FIFO.
437	  For more info on Xilinx SPI Register Definitions and Overview
438	  see driver file - drivers/spi/xilinx_spi.c
439
440config ZYNQ_SPI
441	bool "Zynq SPI driver"
442	help
443	  Enable the Zynq SPI driver. This driver can be used to
444	  access the SPI NOR flash on platforms embedding this Zynq
445	  SPI IP core.
446
447config ZYNQ_QSPI
448	bool "Zynq QSPI driver"
449	imply SPI_FLASH_BAR
450	help
451	  Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
452	  used to access the SPI NOR flash on platforms embedding this
453	  Zynq QSPI IP core. This IP is used to connect the flash in
454	  4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
455
456config ZYNQMP_GQSPI
457	bool "Configure ZynqMP Generic QSPI"
458	help
459	  This option is used to enable ZynqMP QSPI controller driver which
460	  is used to communicate with qspi flash devices.
461
462endif # if DM_SPI
463
464config FSL_ESPI
465	bool "Freescale eSPI driver"
466	imply SPI_FLASH_BAR
467	help
468	  Enable the Freescale eSPI driver. This driver can be used to
469	  access the SPI interface and SPI NOR flash on platforms embedding
470	  this Freescale eSPI IP core.
471
472config SH_QSPI
473	bool "Renesas Quad SPI driver"
474	help
475	  Enable the Renesas Quad SPI controller driver. This driver can be
476	  used on Renesas SoCs.
477
478config MXC_SPI
479	bool "MXC SPI Driver"
480	help
481	  Enable the MXC SPI controller driver. This driver can be used
482	  on various i.MX SoCs such as i.MX31/35/51/6/7.
483
484endif # menu "SPI Support"
485