xref: /openbmc/u-boot/drivers/spi/Kconfig (revision 902902db)
1menuconfig SPI
2	bool "SPI Support"
3
4if SPI
5
6config DM_SPI
7	bool "Enable Driver Model for SPI drivers"
8	depends on DM
9	help
10	  Enable driver model for SPI. The SPI slave interface
11	  (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
12	  the SPI uclass. Drivers provide methods to access the SPI
13	  buses that they control. The uclass interface is defined in
14	  include/spi.h. The existing spi_slave structure is attached
15	  as 'parent data' to every slave on each bus. Slaves
16	  typically use driver-private data instead of extending the
17	  spi_slave structure.
18
19config SPI_MEM
20	bool "SPI memory extension"
21	help
22	  Enable this option if you want to enable the SPI memory extension.
23	  This extension is meant to simplify interaction with SPI memories
24	  by providing an high-level interface to send memory-like commands.
25
26if DM_SPI
27
28config ALTERA_SPI
29	bool "Altera SPI driver"
30	help
31	  Enable the Altera SPI driver. This driver can be used to
32	  access the SPI NOR flash on platforms embedding this Altera
33	  IP core. Please find details on the "Embedded Peripherals IP
34	  User Guide" of Altera.
35
36config ASPEED_SPI
37	bool "Aspeed SPI driver"
38	default y if ARCH_ASPEED
39	help
40	  Enable the Aspeed AST2500 FMC/SPI driver. This driver can be
41	  used to access the SPI NOR flash on boards using the Aspeed
42	  AST2500 SoC, such as the POWER9 OpenPOWER platforms
43
44config ASPEED_SPI_FLASH_WRITE_PROTECTION
45	bool "Aspeed SPI flash write protection"
46	depends on ASPEED_SPI
47	help
48	  Enable AST2600 FMC SW CRTM feature. Also, command read/write
49	  mode should be used when SW CRTM is enabled.
50
51config ATCSPI200_SPI
52	bool "Andestech ATCSPI200 SPI driver"
53	help
54	  Enable the Andestech ATCSPI200 SPI driver. This driver can be
55	  used to access the SPI flash on AE3XX and AE250 platforms embedding
56	  this Andestech IP core.
57
58config ATH79_SPI
59	bool "Atheros SPI driver"
60	depends on ARCH_ATH79
61	help
62	  Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
63	  to access SPI NOR flash and other SPI peripherals. This driver
64	  uses driver model and requires a device tree binding to operate.
65	  please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
66
67config ATMEL_SPI
68	bool "Atmel SPI driver"
69	default y if ARCH_AT91
70	help
71	  This enables driver for the Atmel SPI Controller, present on
72	  many AT91 (ARM) chips. This driver can be used to access
73	  the SPI Flash, such as AT25DF321.
74
75config BCM63XX_HSSPI
76	bool "BCM63XX HSSPI driver"
77	depends on ARCH_BMIPS
78	help
79	  Enable the BCM6328 HSSPI driver. This driver can be used to
80	  access the SPI NOR flash on platforms embedding this Broadcom
81	  SPI core.
82
83config BCM63XX_SPI
84	bool "BCM6348 SPI driver"
85	depends on ARCH_BMIPS
86	help
87	  Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
88	  access the SPI NOR flash on platforms embedding these Broadcom
89	  SPI cores.
90
91config BCMSTB_SPI
92	bool "BCMSTB SPI driver"
93	help
94	  Enable the Broadcom set-top box SPI driver. This driver can
95	  be used to access the SPI flash on platforms embedding this
96	  Broadcom SPI core.
97
98config CADENCE_QSPI
99	bool "Cadence QSPI driver"
100	help
101	  Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
102	  used to access the SPI NOR flash on platforms embedding this
103	  Cadence IP core.
104
105config DESIGNWARE_SPI
106	bool "Designware SPI driver"
107	help
108	  Enable the Designware SPI driver. This driver can be used to
109	  access the SPI NOR flash on platforms embedding this Designware
110	  IP core.
111
112config EXYNOS_SPI
113	bool "Samsung Exynos SPI driver"
114	help
115	  Enable the Samsung Exynos SPI driver. This driver can be used to
116	  access the SPI NOR flash on platforms embedding this Samsung
117	  Exynos IP core.
118
119config FSL_DSPI
120	bool "Freescale DSPI driver"
121	help
122	  Enable the Freescale DSPI driver. This driver can be used to
123	  access the SPI NOR flash and SPI Data flash on platforms embedding
124	  this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
125	  use this driver.
126
127config ICH_SPI
128	bool "Intel ICH SPI driver"
129	imply SPI_FLASH_BAR
130	help
131	  Enable the Intel ICH SPI driver. This driver can be used to
132	  access the SPI NOR flash on platforms embedding this Intel
133	  ICH IP core.
134
135config MESON_SPIFC
136	bool "Amlogic Meson SPI Flash Controller driver"
137	depends on ARCH_MESON
138	help
139	  Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
140	  This driver can be used to access the SPI NOR flash chips on
141	  Amlogic Meson SoCs.
142
143config MPC8XX_SPI
144	bool "MPC8XX SPI Driver"
145	depends on MPC8xx
146	help
147	  Enable support for SPI on MPC8XX
148
149config MT7621_SPI
150	bool "MediaTek MT7621 SPI driver"
151	depends on ARCH_MT7620
152	help
153	  Enable the MT7621 SPI driver. This driver can be used to access
154	  the SPI NOR flash on platforms embedding this Ralink / MediaTek
155	  SPI core, like MT7621/7628/7688.
156
157config MTK_QSPI
158	bool "Mediatek QSPI driver"
159	imply SPI_FLASH_BAR
160	help
161	  Enable the Mediatek QSPI driver. This driver can be
162	  used to access the SPI NOR flash on platforms embedding this
163	  Mediatek QSPI IP core.
164
165config MVEBU_A3700_SPI
166	bool "Marvell Armada 3700 SPI driver"
167	select CLK_ARMADA_3720
168	help
169	  Enable the Marvell Armada 3700 SPI driver. This driver can be
170	  used to access the SPI NOR flash on platforms embedding this
171	  Marvell IP core.
172
173config PIC32_SPI
174	bool "Microchip PIC32 SPI driver"
175	depends on MACH_PIC32
176	help
177	  Enable the Microchip PIC32 SPI driver. This driver can be used
178	  to access the SPI NOR flash, MMC-over-SPI on platforms based on
179	  Microchip PIC32 family devices.
180
181config PL022_SPI
182	bool "ARM AMBA PL022 SSP controller driver"
183	depends on ARM
184	help
185	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
186	  controller. If you have an embedded system with an AMBA(R)
187	  bus and a PL022 controller, say Y or M here.
188
189config RENESAS_RPC_SPI
190	bool "Renesas RPC SPI driver"
191	depends on RCAR_GEN3
192	imply SPI_FLASH_BAR
193	help
194	  Enable the Renesas RPC SPI driver, used to access SPI NOR flash
195	  on Renesas RCar Gen3 SoCs. This uses driver model and requires a
196	  device tree binding to operate.
197
198config ROCKCHIP_SPI
199	bool "Rockchip SPI driver"
200	help
201	  Enable the Rockchip SPI driver, used to access SPI NOR flash and
202	  other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
203	  This uses driver model and requires a device tree binding to
204	  operate.
205
206config SANDBOX_SPI
207	bool "Sandbox SPI driver"
208	depends on SANDBOX && DM
209	help
210	  Enable SPI support for sandbox. This is an emulation of a real SPI
211	  bus. Devices can be attached to the bus using the device tree
212	  which specifies the driver to use. As an example, see this device
213	  tree fragment from sandbox.dts. It shows that the SPI bus has a
214	  single flash device on chip select 0 which is emulated by the driver
215	  for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.
216
217	  spi@0 {
218		#address-cells = <1>;
219		#size-cells = <0>;
220		reg = <0>;
221		compatible = "sandbox,spi";
222		cs-gpios = <0>, <&gpio_a 0>;
223		flash@0 {
224			reg = <0>;
225			compatible = "spansion,m25p16", "sandbox,spi-flash";
226			spi-max-frequency = <40000000>;
227			sandbox,filename = "spi.bin";
228		};
229	  };
230
231config SPI_SUNXI
232	bool "Allwinner SoC SPI controllers"
233	help
234	  Enable the Allwinner SoC SPi controller driver.
235
236	  Same controller driver can reuse in all Allwinner SoC variants.
237
238config STM32_QSPI
239	bool "STM32F7 QSPI driver"
240	depends on STM32F7
241	imply SPI_FLASH_BAR
242	help
243	  Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
244	  used to access the SPI NOR flash chips on platforms embedding
245	  this ST IP core.
246
247config TEGRA114_SPI
248	bool "nVidia Tegra114 SPI driver"
249	help
250	  Enable the nVidia Tegra114 SPI driver. This driver can be used to
251	  access the SPI NOR flash on platforms embedding this nVidia Tegra114
252	  IP core.
253
254	  This controller is different than the older SoCs SPI controller and
255	  also register interface get changed with this controller.
256
257config TEGRA20_SFLASH
258	bool "nVidia Tegra20 Serial Flash controller driver"
259	help
260	  Enable the nVidia Tegra20 Serial Flash controller driver. This driver
261	  can be used to access the SPI NOR flash on platforms embedding this
262	  nVidia Tegra20 IP core.
263
264config TEGRA20_SLINK
265	bool "nVidia Tegra20/Tegra30 SLINK driver"
266	help
267	  Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
268	  be used to access the SPI NOR flash on platforms embedding this
269	  nVidia Tegra20/Tegra30 IP cores.
270
271config TEGRA210_QSPI
272	bool "nVidia Tegra210 QSPI driver"
273	help
274	  Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
275	  be used to access SPI chips on platforms embedding this
276	  NVIDIA Tegra210 IP core.
277
278config XILINX_SPI
279	bool "Xilinx SPI driver"
280	help
281	  Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
282	  controller support 8 bit SPI transfers only, with or w/o FIFO.
283	  For more info on Xilinx SPI Register Definitions and Overview
284	  see driver file - drivers/spi/xilinx_spi.c
285
286config ZYNQ_SPI
287	bool "Zynq SPI driver"
288	depends on ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
289	help
290	  Enable the Zynq SPI driver. This driver can be used to
291	  access the SPI NOR flash on platforms embedding this Zynq
292	  SPI IP core.
293
294config ZYNQ_QSPI
295	bool "Zynq QSPI driver"
296	depends on ARCH_ZYNQ
297	imply SPI_FLASH_BAR
298	help
299	  Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
300	  used to access the SPI NOR flash on platforms embedding this
301	  Zynq QSPI IP core. This IP is used to connect the flash in
302	  4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
303
304config ZYNQMP_GQSPI
305	bool "Configure ZynqMP Generic QSPI"
306	depends on ARCH_ZYNQMP || ARCH_VERSAL
307	help
308	  This option is used to enable ZynqMP QSPI controller driver which
309	  is used to communicate with qspi flash devices.
310
311endif # if DM_SPI
312
313config SOFT_SPI
314	bool "Soft SPI driver"
315	help
316	 Enable Soft SPI driver. This driver is to use GPIO simulate
317	 the SPI protocol.
318
319config MSCC_BB_SPI
320	bool "MSCC bitbang SPI driver"
321	depends on SOC_VCOREIII
322	help
323	  Enable MSCC bitbang SPI driver. This driver can be used on
324	  MSCC SOCs.
325
326config CF_SPI
327	bool "ColdFire SPI driver"
328	help
329	  Enable the ColdFire SPI driver. This driver can be used on
330	  some m68k SoCs.
331
332config FSL_ESPI
333	bool "Freescale eSPI driver"
334	help
335	  Enable the Freescale eSPI driver. This driver can be used to
336	  access the SPI interface and SPI NOR flash on platforms embedding
337	  this Freescale eSPI IP core.
338
339config FSL_QSPI
340	bool "Freescale QSPI driver"
341	imply SPI_FLASH_BAR
342	help
343	  Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
344	  used to access the SPI NOR flash on platforms embedding this
345	  Freescale IP core.
346
347config DAVINCI_SPI
348	bool "Davinci & Keystone SPI driver"
349	depends on ARCH_DAVINCI || ARCH_KEYSTONE
350	help
351	  Enable the Davinci SPI driver
352
353config SH_SPI
354	bool "SuperH SPI driver"
355	help
356	  Enable the SuperH SPI controller driver. This driver can be used
357	  on various SuperH SoCs, such as SH7757.
358
359config SH_QSPI
360	bool "Renesas Quad SPI driver"
361	help
362	  Enable the Renesas Quad SPI controller driver. This driver can be
363	  used on Renesas SoCs.
364
365config TI_QSPI
366	bool "TI QSPI driver"
367	help
368	  Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
369	  This driver support spi flash single, quad and memory reads.
370
371config KIRKWOOD_SPI
372	bool "Marvell Kirkwood SPI Driver"
373	help
374	  Enable support for SPI on various Marvell SoCs, such as
375	  Kirkwood and Armada 375.
376
377config LPC32XX_SSP
378	bool "LPC32XX SPI Driver"
379	help
380	  Enable support for SPI on LPC32xx
381
382config MPC8XXX_SPI
383	bool "MPC8XXX SPI Driver"
384	help
385	  Enable support for SPI on the MPC8XXX PowerPC SoCs.
386
387config MXC_SPI
388	bool "MXC SPI Driver"
389	help
390	  Enable the MXC SPI controller driver. This driver can be used
391	  on various i.MX SoCs such as i.MX31/35/51/6/7.
392
393config MXS_SPI
394	bool "MXS SPI Driver"
395	help
396	  Enable the MXS SPI controller driver. This driver can be used
397	  on the i.MX23 and i.MX28 SoCs.
398
399config OMAP3_SPI
400	bool "McSPI driver for OMAP"
401	help
402	  SPI master controller for OMAP24XX and later Multichannel SPI
403	  (McSPI). This driver be used to access SPI chips on platforms
404	  embedding this OMAP3 McSPI IP core.
405
406endif # menu "SPI Support"
407