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 SPI_MXIC 259 bool "Macronix MX25F0A SPI controller" 260 help 261 Enable the Macronix MX25F0A SPI controller driver. This driver 262 can be used to access the SPI flash on platforms embedding 263 this Macronix IP core. 264 265config NXP_FSPI 266 bool "NXP FlexSPI driver" 267 depends on SPI_MEM 268 help 269 Enable the NXP FlexSPI (FSPI) driver. This driver can be used to 270 access the SPI NOR flash on platforms embedding this NXP IP core. 271 272config OCTEON_SPI 273 bool "Octeon SPI driver" 274 depends on ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2 275 help 276 Enable the Octeon SPI driver. This driver can be used to 277 access the SPI NOR flash on Octeon II/III and OcteonTX/TX2 278 SoC platforms. 279 280config OMAP3_SPI 281 bool "McSPI driver for OMAP" 282 help 283 SPI master controller for OMAP24XX and later Multichannel SPI 284 (McSPI). This driver be used to access SPI chips on platforms 285 embedding this OMAP3 McSPI IP core. 286 287config PIC32_SPI 288 bool "Microchip PIC32 SPI driver" 289 depends on MACH_PIC32 290 help 291 Enable the Microchip PIC32 SPI driver. This driver can be used 292 to access the SPI NOR flash, MMC-over-SPI on platforms based on 293 Microchip PIC32 family devices. 294 295config PL022_SPI 296 bool "ARM AMBA PL022 SSP controller driver" 297 depends on ARM 298 help 299 This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP 300 controller. If you have an embedded system with an AMBA(R) 301 bus and a PL022 controller, say Y or M here. 302 303config SPI_QUP 304 bool "Qualcomm SPI controller with QUP interface" 305 depends on ARCH_IPQ40XX 306 help 307 Qualcomm Universal Peripheral (QUP) core is an AHB slave that 308 provides a common data path (an output FIFO and an input FIFO) 309 for serial peripheral interface (SPI) mini-core. SPI in master 310 mode supports up to 50MHz, up to four chip selects, programmable 311 data path from 4 bits to 32 bits and numerous protocol variants. 312 313config RENESAS_RPC_SPI 314 bool "Renesas RPC SPI driver" 315 depends on RCAR_GEN3 || RZA1 316 imply SPI_FLASH_BAR 317 help 318 Enable the Renesas RPC SPI driver, used to access SPI NOR flash 319 on Renesas RCar Gen3 SoCs. This uses driver model and requires a 320 device tree binding to operate. 321 322config ROCKCHIP_SFC 323 bool "Rockchip SFC Driver" 324 help 325 Enable the Rockchip SFC Driver for SPI NOR flash. This device is 326 a limited purpose SPI controller for driving NOR flash on certain 327 Rockchip SoCs. This uses driver model and requires a device tree 328 binding to operate. 329 330config ROCKCHIP_SPI 331 bool "Rockchip SPI driver" 332 help 333 Enable the Rockchip SPI driver, used to access SPI NOR flash and 334 other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs. 335 This uses driver model and requires a device tree binding to 336 operate. 337 338config SANDBOX_SPI 339 bool "Sandbox SPI driver" 340 depends on SANDBOX && DM 341 help 342 Enable SPI support for sandbox. This is an emulation of a real SPI 343 bus. Devices can be attached to the bus using the device tree 344 which specifies the driver to use. As an example, see this device 345 tree fragment from sandbox.dts. It shows that the SPI bus has a 346 single flash device on chip select 0 which is emulated by the driver 347 for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c. 348 349 spi@0 { 350 #address-cells = <1>; 351 #size-cells = <0>; 352 reg = <0>; 353 compatible = "sandbox,spi"; 354 cs-gpios = <0>, <&gpio_a 0>; 355 flash@0 { 356 reg = <0>; 357 compatible = "spansion,m25p16", "jedec,spi-nor"; 358 spi-max-frequency = <40000000>; 359 sandbox,filename = "spi.bin"; 360 }; 361 }; 362 363config SPI_SIFIVE 364 bool "SiFive SPI driver" 365 help 366 This driver supports the SiFive SPI IP. If unsure say N. 367 Enable the SiFive SPI controller driver. 368 369 The SiFive SPI controller driver is found on various SiFive SoCs. 370 371config SOFT_SPI 372 bool "Soft SPI driver" 373 help 374 Enable Soft SPI driver. This driver is to use GPIO simulate 375 the SPI protocol. 376 377config SPI_SUNXI 378 bool "Allwinner SoC SPI controllers" 379 default ARCH_SUNXI 380 help 381 Enable the Allwinner SoC SPi controller driver. 382 383 Same controller driver can reuse in all Allwinner SoC variants. 384 385config STM32_QSPI 386 bool "STM32F7 QSPI driver" 387 depends on STM32F4 || STM32F7 || ARCH_STM32MP 388 help 389 Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be 390 used to access the SPI NOR flash chips on platforms embedding 391 this ST IP core. 392 393config STM32_SPI 394 bool "STM32 SPI driver" 395 depends on ARCH_STM32MP 396 help 397 Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP 398 SoCs. This uses driver model and requires a device tree binding to 399 operate. 400 401config TEGRA114_SPI 402 bool "nVidia Tegra114 SPI driver" 403 help 404 Enable the nVidia Tegra114 SPI driver. This driver can be used to 405 access the SPI NOR flash on platforms embedding this nVidia Tegra114 406 IP core. 407 408 This controller is different than the older SoCs SPI controller and 409 also register interface get changed with this controller. 410 411config TEGRA20_SFLASH 412 bool "nVidia Tegra20 Serial Flash controller driver" 413 help 414 Enable the nVidia Tegra20 Serial Flash controller driver. This driver 415 can be used to access the SPI NOR flash on platforms embedding this 416 nVidia Tegra20 IP core. 417 418config TEGRA20_SLINK 419 bool "nVidia Tegra20/Tegra30 SLINK driver" 420 help 421 Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can 422 be used to access the SPI NOR flash on platforms embedding this 423 nVidia Tegra20/Tegra30 IP cores. 424 425config TEGRA210_QSPI 426 bool "nVidia Tegra210 QSPI driver" 427 help 428 Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver 429 be used to access SPI chips on platforms embedding this 430 NVIDIA Tegra210 IP core. 431 432config TI_QSPI 433 bool "TI QSPI driver" 434 imply TI_EDMA3 435 help 436 Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms. 437 This driver support spi flash single, quad and memory reads. 438 439config UNIPHIER_SPI 440 bool "Socionext UniPhier SPI driver" 441 depends on ARCH_UNIPHIER 442 help 443 Enable the Socionext UniPhier SPI driver. This driver can 444 be used to access SPI chips on platforms embedding this 445 UniPhier IP core. 446 447config XILINX_SPI 448 bool "Xilinx SPI driver" 449 help 450 Enable the Xilinx SPI driver from the Xilinx EDK. This SPI 451 controller support 8 bit SPI transfers only, with or w/o FIFO. 452 For more info on Xilinx SPI Register Definitions and Overview 453 see driver file - drivers/spi/xilinx_spi.c 454 455config ZYNQ_SPI 456 bool "Zynq SPI driver" 457 help 458 Enable the Zynq SPI driver. This driver can be used to 459 access the SPI NOR flash on platforms embedding this Zynq 460 SPI IP core. 461 462config ZYNQ_QSPI 463 bool "Zynq QSPI driver" 464 imply SPI_FLASH_BAR 465 help 466 Enable the Zynq Quad-SPI (QSPI) driver. This driver can be 467 used to access the SPI NOR flash on platforms embedding this 468 Zynq QSPI IP core. This IP is used to connect the flash in 469 4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel. 470 471config ZYNQMP_GQSPI 472 bool "Configure ZynqMP Generic QSPI" 473 help 474 This option is used to enable ZynqMP QSPI controller driver which 475 is used to communicate with qspi flash devices. 476 477endif # if DM_SPI 478 479config FSL_ESPI 480 bool "Freescale eSPI driver" 481 imply SPI_FLASH_BAR 482 help 483 Enable the Freescale eSPI driver. This driver can be used to 484 access the SPI interface and SPI NOR flash on platforms embedding 485 this Freescale eSPI IP core. 486 487config SH_QSPI 488 bool "Renesas Quad SPI driver" 489 help 490 Enable the Renesas Quad SPI controller driver. This driver can be 491 used on Renesas SoCs. 492 493config MXC_SPI 494 bool "MXC SPI Driver" 495 help 496 Enable the MXC SPI controller driver. This driver can be used 497 on various i.MX SoCs such as i.MX31/35/51/6/7. 498 499config SYNQUACER_SPI 500 bool "Socionext SynQuacer HS-SPI driver" 501 depends on ARCH_SYNQUACER 502 help 503 Enable the Socionext HS-SPI driver for SynQuacer. This driver can 504 be used to access the SPI interface and SPI NOR flash on platforms 505 embedding this HS-SPI IP core. 506 507endif # menu "SPI Support" 508