1# SPI driver configuration options
2
3# Copyright (c) 2015-2016 Intel Corporation
4# SPDX-License-Identifier: Apache-2.0
5
6#
7# SPI Drivers
8#
9menuconfig SPI
10	bool "Serial Peripheral Interface (SPI) bus drivers"
11	help
12	  Enable support for the SPI hardware bus.
13
14if SPI
15
16config SPI_SHELL
17	bool "SPI Shell"
18	depends on SHELL
19	help
20	  Enable SPI Shell.
21
22	  The currently SPI shell supports simple SPI write/read (transceive)
23	  operation.
24
25config SPI_ASYNC
26	bool "Asynchronous call support"
27	depends on MULTITHREADING
28	select POLL
29	help
30	  This option enables the asynchronous API calls.
31
32config SPI_RTIO
33	bool "RTIO support [EXPERIMENTAL]"
34	select EXPERIMENTAL
35	select RTIO
36	select RTIO_WORKQ
37	help
38	  This option enables the RTIO API calls. RTIO support is
39	  experimental as the API itself is unstable.
40
41if SPI_RTIO
42
43config SPI_RTIO_FALLBACK_MSGS
44	int "Number of available spi_buf structs for the default handler to use"
45	default 4
46	help
47		When RTIO is used with a driver that does not yet implement the submit API
48		natively the submissions are converted back to struct spi_buf values that
49		are given to spi_transfer. This requires some number of msgs be available to convert
50		the submissions into on the stack. MISRA rules dictate we must know this in
51		advance.
52
53		In all likelihood 4 is going to work for everyone, but in case you do end up with
54		an issue where you are using RTIO, your driver does not implement submit natively,
55		and get an error relating to not enough spi msgs this is the Kconfig to manipulate.
56
57endif # SPI_RTIO
58
59config SPI_SLAVE
60	bool "Slave support [EXPERIMENTAL]"
61	select EXPERIMENTAL
62	help
63	  Enables Driver SPI slave operations. Slave support depends
64	  on the driver and the hardware it runs on.
65
66config SPI_EXTENDED_MODES
67	bool "Extended modes [EXPERIMENTAL]"
68	select EXPERIMENTAL
69	help
70	  Enables extended operations in the SPI API. Currently, this
71	  enables the possibility to select the line mode (single/dual/
72	  quad/octal), though none of these mode are really supported as
73	  it would require more features exposed into the SPI buffer.
74
75config SPI_INIT_PRIORITY
76	int "Init priority"
77	default KERNEL_INIT_PRIORITY_DEVICE
78	help
79	  Device driver initialization priority.
80
81config SPI_COMPLETION_TIMEOUT_TOLERANCE
82	int "Completion timeout tolerance (ms)"
83	default 200
84	help
85	  The tolerance value in ms for the SPI completion timeout logic.
86
87config SPI_STATS
88	bool "SPI device statistics"
89	depends on STATS
90	help
91	  Enable SPI device statistics.
92
93module = SPI
94module-str = spi
95source "subsys/logging/Kconfig.template.log_config"
96
97# zephyr-keep-sorted-start
98source "drivers/spi/Kconfig.ambiq"
99source "drivers/spi/Kconfig.andes_atcspi200"
100source "drivers/spi/Kconfig.b91"
101source "drivers/spi/Kconfig.bitbang"
102source "drivers/spi/Kconfig.cc13xx_cc26xx"
103source "drivers/spi/Kconfig.cc23x0"
104source "drivers/spi/Kconfig.cdns"
105source "drivers/spi/Kconfig.dw"
106source "drivers/spi/Kconfig.egis_et171"
107source "drivers/spi/Kconfig.esp32"
108source "drivers/spi/Kconfig.gd32"
109source "drivers/spi/Kconfig.grlib_spimctrl"
110source "drivers/spi/Kconfig.ifx_cat1"
111source "drivers/spi/Kconfig.it51xxx"
112source "drivers/spi/Kconfig.it8xxx2"
113source "drivers/spi/Kconfig.litex"
114source "drivers/spi/Kconfig.max32"
115source "drivers/spi/Kconfig.mchp_mss"
116source "drivers/spi/Kconfig.mchp_mss_qspi"
117source "drivers/spi/Kconfig.mcux_dspi"
118source "drivers/spi/Kconfig.mcux_ecspi"
119source "drivers/spi/Kconfig.mcux_flexcomm"
120source "drivers/spi/Kconfig.mcux_flexio"
121source "drivers/spi/Kconfig.mec5"
122source "drivers/spi/Kconfig.npcx"
123source "drivers/spi/Kconfig.nrfx"
124source "drivers/spi/Kconfig.numaker"
125source "drivers/spi/Kconfig.nxp_s32"
126source "drivers/spi/Kconfig.oc_simple"
127source "drivers/spi/Kconfig.omap"
128source "drivers/spi/Kconfig.opentitan"
129source "drivers/spi/Kconfig.pl022"
130source "drivers/spi/Kconfig.psoc6"
131source "drivers/spi/Kconfig.pw"
132source "drivers/spi/Kconfig.renesas_ra"
133source "drivers/spi/Kconfig.renesas_ra8"
134source "drivers/spi/Kconfig.renesas_rx"
135source "drivers/spi/Kconfig.renesas_rz"
136source "drivers/spi/Kconfig.rpi_pico"
137source "drivers/spi/Kconfig.rv32m1_lpspi"
138source "drivers/spi/Kconfig.sam"
139source "drivers/spi/Kconfig.sam0"
140source "drivers/spi/Kconfig.sedi"
141source "drivers/spi/Kconfig.sifive"
142source "drivers/spi/Kconfig.silabs_eusart"
143source "drivers/spi/Kconfig.silabs_siwx91x_gspi"
144source "drivers/spi/Kconfig.silabs_usart"
145source "drivers/spi/Kconfig.smartbond"
146source "drivers/spi/Kconfig.spi_emul"
147source "drivers/spi/Kconfig.stm32"
148source "drivers/spi/Kconfig.test"
149source "drivers/spi/Kconfig.wch"
150source "drivers/spi/Kconfig.xec_qmspi"
151source "drivers/spi/Kconfig.xlnx"
152source "drivers/spi/Kconfig.xmc4xxx"
153source "drivers/spi/spi_nxp_lpspi/Kconfig"
154# zephyr-keep-sorted-stop
155
156endif # SPI
157