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