xref: /openbmc/u-boot/drivers/spi/Kconfig (revision 4c8f336ce14f1f1fdab526678e29b34cd56163ac)
1 menuconfig SPI
2 	bool "SPI Support"
3 
4 if SPI
5 
6 config 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 
19 config 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 
26 if DM_SPI
27 
28 config 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 
36 config 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 
44 config 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 
51 config 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 
58 config 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 
67 config 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 
75 config 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 
83 config 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 
91 config 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 
98 config 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 
105 config 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 
112 config 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 
119 config 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 
127 config 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 
135 config 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 
143 config MPC8XX_SPI
144 	bool "MPC8XX SPI Driver"
145 	depends on MPC8xx
146 	help
147 	  Enable support for SPI on MPC8XX
148 
149 config 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 
157 config 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 
165 config 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 
173 config 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 
181 config 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 
189 config 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 
198 config 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 
206 config 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 
231 config 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 
238 config 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 
247 config 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 
257 config 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 
264 config 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 
271 config 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 
278 config 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 
286 config 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 
294 config 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 
304 config 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 
311 endif # if DM_SPI
312 
313 config 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 
319 config 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 
326 config 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 
332 config 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 
339 config 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 
347 config DAVINCI_SPI
348 	bool "Davinci & Keystone SPI driver"
349 	depends on ARCH_DAVINCI || ARCH_KEYSTONE
350 	help
351 	  Enable the Davinci SPI driver
352 
353 config 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 
359 config 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 
365 config 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 
371 config 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 
377 config LPC32XX_SSP
378 	bool "LPC32XX SPI Driver"
379 	help
380 	  Enable support for SPI on LPC32xx
381 
382 config MPC8XXX_SPI
383 	bool "MPC8XXX SPI Driver"
384 	help
385 	  Enable support for SPI on the MPC8XXX PowerPC SoCs.
386 
387 config 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 
393 config 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 
399 config 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 
406 endif # menu "SPI Support"
407