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