Kconfig 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018
  1. config ESP_HOSTED_ENABLED
  2. bool
  3. default y if ESP_WIFI_REMOTE_ENABLED && ESP_WIFI_REMOTE_LIBRARY_HOSTED
  4. default n
  5. menu "ESP-Hosted config"
  6. depends on ESP_HOSTED_ENABLED
  7. choice ESP_HOST_INTERFACE
  8. bool "Transport layer"
  9. default ESP_SDIO_HOST_INTERFACE if IDF_TARGET_ESP32
  10. default ESP_SDIO_HOST_INTERFACE if IDF_TARGET_ESP32P4
  11. default ESP_SPI_HOST_INTERFACE
  12. help
  13. Bus interface to be used for communication with the host
  14. config ESP_SPI_HOST_INTERFACE
  15. bool "SPI Full-duplex"
  16. help
  17. Enable/Disable SPI Full-duplex host interface
  18. config ESP_SDIO_HOST_INTERFACE
  19. bool "SDIO"
  20. depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4
  21. help
  22. Enable/Disable SDIO host interface
  23. # SPI Half Duplex is not supported in ESP32
  24. config ESP_SPI_HD_HOST_INTERFACE
  25. depends on !IDF_TARGET_ESP32
  26. bool "SPI Half-duplex"
  27. help
  28. Enable/Disable SPI Half-duplex host interface
  29. config ESP_UART_HOST_INTERFACE
  30. bool "UART"
  31. help
  32. Enable/Disable UART host interface
  33. endchoice
  34. choice ESP_HOSTED_SLAVE_CHIPSET_USED
  35. bool "Slave chipset to be used"
  36. default SLAVE_CHIPSET_ESP32C6
  37. config SLAVE_CHIPSET_ESP32
  38. depends on ESP_SPI_HOST_INTERFACE || ESP_SDIO_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  39. bool "Slave as ESP32"
  40. config SLAVE_CHIPSET_ESP32S2
  41. depends on ESP_SPI_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  42. bool "Slave as ESP32S2"
  43. config SLAVE_CHIPSET_ESP32S3
  44. depends on ESP_SPI_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  45. bool "Slave as ESP32S3"
  46. config SLAVE_CHIPSET_ESP32C2
  47. depends on ESP_SPI_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  48. bool "Slave as ESP32C2"
  49. config SLAVE_CHIPSET_ESP32C3
  50. depends on ESP_SPI_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  51. bool "Slave as ESP32C3"
  52. config SLAVE_CHIPSET_ESP32C6
  53. depends on ESP_SPI_HOST_INTERFACE || ESP_SDIO_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  54. bool "Slave as ESP32C6"
  55. config SLAVE_CHIPSET_ESP32C5
  56. depends on ESP_SPI_HOST_INTERFACE || ESP_SPI_HD_HOST_INTERFACE || ESP_UART_HOST_INTERFACE
  57. bool "Slave as ESP32C5"
  58. endchoice
  59. config IDF_SLAVE_TARGET
  60. string
  61. default "esp32" if SLAVE_CHIPSET_ESP32
  62. default "esp32s2" if SLAVE_CHIPSET_ESP32S2
  63. default "esp32s3" if SLAVE_CHIPSET_ESP32S3
  64. default "esp32c2" if SLAVE_CHIPSET_ESP32C2
  65. default "esp32c3" if SLAVE_CHIPSET_ESP32C3
  66. default "esp32c6" if SLAVE_CHIPSET_ESP32C6
  67. default "esp32c5" if SLAVE_CHIPSET_ESP32C5
  68. default "invalid"
  69. menu "Task defaults"
  70. config ESP_RPC_TASK_STACK
  71. int "RPC task stack size"
  72. default 4096
  73. config ESP_DFLT_TASK_STACK
  74. int "Hosted default task size"
  75. default 3072
  76. endmenu
  77. menu "SPI Configuration"
  78. depends on ESP_SPI_HOST_INTERFACE
  79. choice ESP_SPI_PRIV_MODE_ESP32
  80. depends on SLAVE_CHIPSET_ESP32
  81. bool "Host SPI mode"
  82. default ESP_SPI_PRIV_MODE_2_ESP32
  83. config ESP_SPI_PRIV_MODE_0_ESP32
  84. bool "Host SPI mode 0"
  85. config ESP_SPI_PRIV_MODE_1_ESP32
  86. bool "Host SPI mode 1"
  87. config ESP_SPI_PRIV_MODE_2_ESP32
  88. bool "Host SPI mode 2"
  89. config ESP_SPI_PRIV_MODE_3_ESP32
  90. bool "Host SPI mode 3"
  91. endchoice
  92. choice ESP_SPI_PRIV_MODE_ESP32XX
  93. depends on !SLAVE_CHIPSET_ESP32
  94. bool "Host SPI mode"
  95. default ESP_SPI_PRIV_MODE_3_ESP32XX
  96. config ESP_SPI_PRIV_MODE_0_ESP32XX
  97. bool "Host SPI mode 0"
  98. config ESP_SPI_PRIV_MODE_1_ESP32XX
  99. bool "Host SPI mode 1"
  100. config ESP_SPI_PRIV_MODE_2_ESP32XX
  101. bool "Host SPI mode 2"
  102. config ESP_SPI_PRIV_MODE_3_ESP32XX
  103. bool "Host SPI mode 3"
  104. endchoice
  105. config ESP_SPI_MODE
  106. int
  107. default 0 if ESP_SPI_PRIV_MODE_0_ESP32
  108. default 1 if ESP_SPI_PRIV_MODE_1_ESP32
  109. default 2 if ESP_SPI_PRIV_MODE_2_ESP32
  110. default 3 if ESP_SPI_PRIV_MODE_3_ESP32
  111. default 0 if ESP_SPI_PRIV_MODE_0_ESP32XX
  112. default 1 if ESP_SPI_PRIV_MODE_1_ESP32XX
  113. default 2 if ESP_SPI_PRIV_MODE_2_ESP32XX
  114. default 3 if ESP_SPI_PRIV_MODE_3_ESP32XX
  115. choice SPI_CONTROLLER
  116. bool "Host SPI controller to use"
  117. default SPI_HSPI
  118. config SPI_HSPI
  119. bool "HSPI/FSPI"
  120. help
  121. "HSPI/FSPI: SPI_controller_1"
  122. config SPI_VSPI
  123. depends on IDF_TARGET_ESP32
  124. bool "VSPI"
  125. help
  126. "VSPI: SPI_controller_2"
  127. endchoice
  128. config ESP_SPI_CONTROLLER
  129. int
  130. default 2 if SPI_VSPI
  131. default 1
  132. menu "Host SPI GPIOs Config"
  133. choice SPI_HANDSHAKE_GPIO_CONFIG
  134. bool "Handshake GPIO Config"
  135. default HS_ACTIVE_HIGH
  136. config HS_ACTIVE_HIGH
  137. bool "HS: Active High"
  138. config HS_ACTIVE_LOW
  139. bool "HS: Active Low"
  140. endchoice
  141. choice SPI_DATAREADY__GPIO_CONFIG
  142. bool "DataReady GPIO Config"
  143. default DR_ACTIVE_HIGH
  144. config DR_ACTIVE_HIGH
  145. bool "DR: Active High"
  146. config DR_ACTIVE_LOW
  147. bool "DR: Active Low"
  148. endchoice
  149. config ESP_SPI_HSPI_GPIO_MOSI
  150. depends on SPI_HSPI
  151. int "GPIO pin for Host MOSI"
  152. default 14 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  153. default 13 if IDF_TARGET_ESP32
  154. default 11 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  155. default 7
  156. help
  157. SPI controller Host MOSI
  158. config ESP_SPI_HSPI_GPIO_MISO
  159. depends on SPI_HSPI
  160. int "GPIO pin for Host MISO"
  161. default 15 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  162. default 12 if IDF_TARGET_ESP32
  163. default 13 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  164. default 2
  165. help
  166. SPI controller Host MISO
  167. config ESP_SPI_HSPI_GPIO_CLK
  168. depends on SPI_HSPI
  169. int "GPIO pin for Host CLK"
  170. default 18 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  171. default 14 if IDF_TARGET_ESP32
  172. default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  173. default 6
  174. help
  175. SPI controller Host CLK
  176. config ESP_SPI_HSPI_GPIO_CS
  177. depends on SPI_HSPI
  178. int "GPIO pin for Host CS"
  179. default 19 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  180. default 15 if IDF_TARGET_ESP32
  181. default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  182. default 10
  183. help
  184. SPI controller Host CS
  185. config ESP_SPI_VSPI_GPIO_MOSI
  186. depends on SPI_VSPI
  187. int "GPIO pin for Host MOSI"
  188. default 23
  189. help
  190. SPI controller Host MOSI
  191. config ESP_SPI_VSPI_GPIO_MISO
  192. depends on SPI_VSPI
  193. int "GPIO pin for Host MISO"
  194. default 19
  195. help
  196. SPI controller Host MISO
  197. config ESP_SPI_VSPI_GPIO_CLK
  198. depends on SPI_VSPI
  199. int "GPIO pin for Host CLK"
  200. default 18
  201. help
  202. SPI controller Host CLK
  203. config ESP_SPI_VSPI_GPIO_CS
  204. depends on SPI_VSPI
  205. int "GPIO pin for Host CS"
  206. default 5
  207. help
  208. SPI controller Host CS
  209. config ESP_SPI_GPIO_MOSI
  210. int
  211. default ESP_SPI_VSPI_GPIO_MOSI if SPI_VSPI
  212. default ESP_SPI_HSPI_GPIO_MOSI
  213. config ESP_SPI_GPIO_MISO
  214. int
  215. default ESP_SPI_VSPI_GPIO_MISO if SPI_VSPI
  216. default ESP_SPI_HSPI_GPIO_MISO
  217. config ESP_SPI_GPIO_CLK
  218. int
  219. default ESP_SPI_VSPI_GPIO_CLK if SPI_VSPI
  220. default ESP_SPI_HSPI_GPIO_CLK
  221. config ESP_SPI_GPIO_CS
  222. int
  223. default ESP_SPI_VSPI_GPIO_CS if SPI_VSPI
  224. default ESP_SPI_HSPI_GPIO_CS
  225. config ESP_SPI_GPIO_HANDSHAKE
  226. int "GPIO pin for handshake"
  227. default 16 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  228. default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6
  229. default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2
  230. default 26
  231. help
  232. GPIO pin to use for handshake with other spi controller
  233. config ESP_SPI_GPIO_DATA_READY
  234. int "GPIO pin for data ready interrupt"
  235. default 17 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  236. default 4
  237. help
  238. GPIO pin for indicating host that SPI slave has data to be read by host
  239. config ESP_SPI_GPIO_RESET_SLAVE
  240. int "GPIO pin for Reseting slave ESP"
  241. default 54 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  242. default 5
  243. help
  244. GPIO pin for Resetting ESP SPI slave device. Should be connected to RST/EN of ESP SPI slave device.
  245. endmenu
  246. ESP32XX_SPI_CLK_FREQ_RANGE_MIN := 1
  247. ESP32_SPI_CLK_FREQ_RANGE_MAX := 10
  248. ESP32C6_SPI_CLK_FREQ_RANGE_MAX := 26
  249. ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40
  250. config ESP_SPI_FREQ_ESP32
  251. depends on SLAVE_CHIPSET_ESP32
  252. int "SPI Clock Freq (MHz)"
  253. default 10
  254. range $(ESP32XX_SPI_CLK_FREQ_RANGE_MIN) $(ESP32_SPI_CLK_FREQ_RANGE_MAX)
  255. help
  256. "Optimize SPI CLK by increasing till host practically can support"
  257. config ESP_SPI_FREQ_ESP32C6
  258. depends on SLAVE_CHIPSET_ESP32C6
  259. int "SPI Clock Freq (MHz)"
  260. default 10 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  261. default 26
  262. range $(ESP32XX_SPI_CLK_FREQ_RANGE_MIN) $(ESP32C6_SPI_CLK_FREQ_RANGE_MAX)
  263. help
  264. "Optimize SPI CLK by increasing till host practically can support"
  265. config ESP_SPI_FREQ_ESP32XX
  266. depends on SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  267. int "SPI Clock Freq"
  268. default 30 if SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  269. range $(ESP32XX_SPI_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_CLK_FREQ_RANGE_MAX)
  270. help
  271. "Optimize SPI CLK by increasing till host practically can support"
  272. config ESP_SPI_CLK_FREQ
  273. int
  274. default ESP_SPI_FREQ_ESP32 if SLAVE_CHIPSET_ESP32
  275. default ESP_SPI_FREQ_ESP32C6 if SLAVE_CHIPSET_ESP32C6
  276. default ESP_SPI_FREQ_ESP32XX if SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  277. help
  278. "Optimize SPI CLK by increasing till host practically can support"
  279. config ESP_SPI_TX_Q_SIZE
  280. int "ESP to Host SPI queue size"
  281. default 20
  282. help
  283. Very small tx queue will lower ESP -- SPI --> Host data rate
  284. config ESP_SPI_RX_Q_SIZE
  285. int "Host to ESP SPI queue size"
  286. default 20
  287. help
  288. Very small RX queue will lower ESP <-- SPI -- Host data rate
  289. endmenu
  290. menu "Hosted SDIO Configuration"
  291. depends on ESP_SDIO_HOST_INTERFACE
  292. choice SDIO_RESET_GPIO_CONFIG
  293. bool "RESET GPIO Config"
  294. default SDIO_RESET_ACTIVE_HIGH
  295. help
  296. "If Active High, High->Low->High will trigger reset (Low will trigger reset)
  297. If Active Low, Low->High->Low will trigger reset (High will trigger reset)"
  298. config SDIO_RESET_ACTIVE_HIGH
  299. bool "RESET: Active High"
  300. config SDIO_RESET_ACTIVE_LOW
  301. bool "RESET: Active Low"
  302. endchoice
  303. choice ESP_SDIO_RX_OPTIMIZATION
  304. bool "SDIO Receive Optimization"
  305. default ESP_SDIO_OPTIMIZATION_RX_STREAMING_MODE
  306. config ESP_SDIO_OPTIMIZATION_RX_NONE
  307. bool "No optimization"
  308. help
  309. Use SDIO as is, with no optimizations.
  310. config ESP_SDIO_OPTIMIZATION_RX_MAX_SIZE
  311. bool "Always Rx Max Packet size"
  312. help
  313. Always read max Rx Packet Size (512 * 3 bytes). This saves one SDIO
  314. transaction (get Rx Packet Size) when reading data from slave by
  315. always transferring a fixed amount of data. Extra data at end of valid
  316. packet data is discarded.
  317. config ESP_SDIO_OPTIMIZATION_RX_STREAMING_MODE
  318. bool "Use Streaming Mode"
  319. help
  320. Receive a stream of queued data from the slave, made up of one or more
  321. packets of data. Host extracts packets from the stream. This improves
  322. SDIO read performance by doing one large read transaction instead of
  323. many smaller read transactions for each packet.
  324. (Note: requires slave to support streaming mode.)
  325. endchoice
  326. config ESP_SDIO_GPIO_RESET_SLAVE
  327. int "GPIO pin for Reseting slave ESP"
  328. default 54 if IDF_TARGET_ESP32P4
  329. default 42 if IDF_TARGET_ESP32S3
  330. default 5
  331. help
  332. GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device.
  333. choice
  334. prompt "SDIO Bus Width"
  335. default ESP_SDIO_4_BIT_BUS
  336. help
  337. Select the SDIO Bus Width to use
  338. config ESP_SDIO_4_BIT_BUS
  339. bool "4 Bits"
  340. config ESP_SDIO_1_BIT_BUS
  341. bool "1 Bit"
  342. endchoice
  343. config ESP_SDIO_BUS_WIDTH
  344. int
  345. default 1 if ESP_SDIO_1_BIT_BUS
  346. default 4
  347. ESP32_SDIO_CLK_FREQ_KHZ_RANGE_MIN := 400
  348. ESP32_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 40000
  349. ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MIN := 400
  350. ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 80000
  351. config ESP_SDIO_CLOCK_FREQ_KHZ
  352. int "SDIO Clock Freq (in kHz)"
  353. default 40000
  354. range $(ESP32_SDIO_CLK_FREQ_KHZ_RANGE_MIN) $(ESP32_SDIO_CLK_FREQ_KHZ_RANGE_MAX) if IDF_TARGET_ESP32
  355. range $(ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MIN) $(ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX) if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4
  356. help
  357. "Optimize SDIO CLK by increasing till host practically can support"
  358. config ESP_SDIO_PIN_CMD
  359. int "CMD GPIO number"
  360. default 47 if IDF_TARGET_ESP32S3
  361. default 19 if IDF_TARGET_ESP32P4
  362. range 15 15 if IDF_TARGET_ESP32
  363. help
  364. "Value can only be configured for some targets. Displayed always for reference."
  365. config ESP_SDIO_PIN_CLK
  366. int "CLK GPIO number"
  367. default 19 if IDF_TARGET_ESP32S3
  368. default 18 if IDF_TARGET_ESP32P4
  369. range 14 14 if IDF_TARGET_ESP32
  370. help
  371. "Value can only be configured for some targets. Displayed always for reference."
  372. config ESP_SDIO_PIN_D0
  373. int "D0 GPIO number"
  374. default 13 if IDF_TARGET_ESP32S3
  375. default 14 if IDF_TARGET_ESP32P4
  376. range 2 2 if IDF_TARGET_ESP32
  377. help
  378. "Value can only be configured for some targets. Displayed always for reference."
  379. if ESP_SDIO_4_BIT_BUS
  380. config ESP_SDIO_PIN_D1
  381. int "D1 GPIO number"
  382. default 35 if IDF_TARGET_ESP32S3
  383. default 15 if IDF_TARGET_ESP32P4
  384. range 4 4 if IDF_TARGET_ESP32
  385. help
  386. "Value can only be configured for some targets. Displayed always for reference."
  387. config ESP_SDIO_PIN_D2
  388. int "D2 GPIO number"
  389. default 20 if IDF_TARGET_ESP32S3
  390. default 16 if IDF_TARGET_ESP32P4
  391. range 12 12 if IDF_TARGET_ESP32
  392. help
  393. "Value can only be configured for some targets. Displayed always for reference."
  394. config ESP_SDIO_PIN_D3
  395. int "D3 GPIO number"
  396. default 9 if IDF_TARGET_ESP32S3
  397. default 17 if IDF_TARGET_ESP32P4
  398. range 13 13 if IDF_TARGET_ESP32
  399. help
  400. "Value can only be configured for some targets. Displayed always for reference."
  401. endif
  402. if !ESP_SDIO_4_BIT_BUS
  403. config ESP_SDIO_PIN_D1
  404. int "D1 GPIO number (Interrupt Line)"
  405. default 35 if IDF_TARGET_ESP32S3
  406. default 15 if IDF_TARGET_ESP32P4
  407. range 4 4 if IDF_TARGET_ESP32
  408. help
  409. "Value can only be configured for some targets. Displayed always for reference."
  410. endif
  411. config ESP_SDIO_TX_Q_SIZE
  412. int "Host SDIO Tx queue size"
  413. default 20
  414. help
  415. Very small tx queue will lower data rate
  416. config ESP_SDIO_RX_Q_SIZE
  417. int "Host SDIO Rx queue size"
  418. default 20
  419. help
  420. Very small RX queue will lower data rate
  421. config ESP_SDIO_CHECKSUM
  422. bool "SDIO checksum ENABLE/DISABLE"
  423. help
  424. ENABLE/DISABLE software SDIO checksum
  425. endmenu
  426. menu "SPI Half-duplex Configuration"
  427. depends on ESP_SPI_HD_HOST_INTERFACE
  428. config ESP_SPI_HD_MODE
  429. int "SPI Mode to use"
  430. default 3
  431. range 0 3
  432. help
  433. SPI Mode to use. The same mode must be used on both host and slave.
  434. choice ESP_SPI_HD_PRIV_INTERFACE_NUM_DATA_LINES
  435. bool "Num Data Lines to use"
  436. default ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES
  437. help
  438. Number of Data Lines to use in the SPI HD interface
  439. config ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES
  440. bool "4 data lines"
  441. config ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES
  442. bool "2 data lines"
  443. endchoice
  444. config ESP_SPI_HD_INTERFACE_NUM_DATA_LINES
  445. int
  446. default 4 if ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES
  447. default 2 if ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES
  448. choice SPI_HD_RESET_GPIO_CONFIG
  449. bool "RESET GPIO Config"
  450. default SPI_HD_RESET_ACTIVE_HIGH
  451. help
  452. "If Active High, High->Low->High will trigger reset (Low will trigger reset)
  453. If Active Low, Low->High->Low will trigger reset (High will trigger reset)"
  454. config SPI_HD_RESET_ACTIVE_HIGH
  455. bool "RESET: Active High"
  456. config SPI_HD_RESET_ACTIVE_LOW
  457. bool "RESET: Active Low"
  458. endchoice
  459. choice SPI_HD_DATAREADY_GPIO_CONFIG
  460. bool "DataReady GPIO Config"
  461. default SPI_HD_DR_ACTIVE_HIGH
  462. config SPI_HD_DR_ACTIVE_HIGH
  463. bool "DR: Active High"
  464. config SPI_HD_DR_ACTIVE_LOW
  465. bool "DR: Active Low"
  466. endchoice
  467. menu "Host GPIOs Config"
  468. config ESP_SPI_HD_GPIO_CS
  469. int "GPIO pin for Host CS"
  470. default 10 if IDF_TARGET_ESP32S3
  471. default 19 if IDF_TARGET_ESP32P4
  472. default 15
  473. help
  474. SPI Half-duplex controller Host CS
  475. config ESP_SPI_HD_GPIO_CLK
  476. int "GPIO pin for Host CLK"
  477. default 12 if IDF_TARGET_ESP32S3
  478. default 18 if IDF_TARGET_ESP32P4
  479. default 18
  480. help
  481. SPI Half-duplex controller Host CLK
  482. config ESP_SPI_HD_GPIO_D0
  483. int "GPIO pin for Host D0"
  484. default 11 if IDF_TARGET_ESP32S3
  485. default 14 if IDF_TARGET_ESP32P4
  486. default 2
  487. help
  488. SPI Half-duplex controller Host D0
  489. config ESP_SPI_HD_GPIO_D1
  490. int "GPIO pin for Host D1"
  491. default 13 if IDF_TARGET_ESP32S3
  492. default 15 if IDF_TARGET_ESP32P4
  493. default 4
  494. help
  495. SPI Half-duplex controller Host D1
  496. config ESP_SPI_HD_GPIO_D2
  497. depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES
  498. int "GPIO pin for Host D2"
  499. default 14 if IDF_TARGET_ESP32S3
  500. default 16 if IDF_TARGET_ESP32P4
  501. default 12
  502. help
  503. SPI Half-duplex controller Host D2
  504. config ESP_SPI_HD_GPIO_D3
  505. depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES
  506. int "GPIO pin for Host D3"
  507. default 9 if IDF_TARGET_ESP32S3
  508. default 17 if IDF_TARGET_ESP32P4
  509. default 13
  510. help
  511. SPI Half-duplex controller Host D3
  512. config ESP_SPI_HD_GPIO_DATA_READY
  513. int "GPIO pin for data ready interrupt"
  514. default 4 if IDF_TARGET_ESP32S3
  515. default 6 if IDF_TARGET_ESP32P4
  516. default 8
  517. help
  518. GPIO pin for indicating host that slave has data to be read by host
  519. config ESP_SPI_HD_GPIO_RESET_SLAVE
  520. int "GPIO pin for Reseting slave ESP"
  521. default 5 if IDF_TARGET_ESP32S3
  522. default 54 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6
  523. default 5
  524. help
  525. GPIO pin for Resetting ESP slave device. Should be connected to RST/EN of ESP SPI slave device.
  526. endmenu
  527. ESP32XX_SPI_HD_CLK_FREQ_RANGE_MIN := 1
  528. ESP32_SPI_HD_CLK_FREQ_RANGE_MAX := 10
  529. ESP32C6_SPI_HD_CLK_FREQ_RANGE_MAX := 40
  530. ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40
  531. config ESP_SPI_HD_FREQ_ESP32C6
  532. depends on SLAVE_CHIPSET_ESP32C6
  533. int "SPI HD Clock Freq (MHz)"
  534. default 10
  535. range $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MIN) $(ESP32C6_SPI_HD_CLK_FREQ_RANGE_MAX)
  536. help
  537. "Optimize CLK by increasing till host practically can support"
  538. config ESP_SPI_HD_FREQ_ESP32XX
  539. depends on SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  540. int "SPI HD Clock Freq (MHz)"
  541. default 10 if SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  542. range $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX)
  543. help
  544. "Optimize CLK by increasing till host practically can support"
  545. config ESP_SPI_HD_CLK_FREQ
  546. int
  547. default ESP_SPI_HD_FREQ_ESP32C6 if SLAVE_CHIPSET_ESP32C6
  548. default ESP_SPI_HD_FREQ_ESP32XX if SLAVE_CHIPSET_ESP32C2 || SLAVE_CHIPSET_ESP32C3 || SLAVE_CHIPSET_ESP32S2 || SLAVE_CHIPSET_ESP32S3 || SLAVE_CHIPSET_ESP32C5
  549. help
  550. "Optimize CLK by increasing till host practically can support"
  551. config ESP_SPI_HD_TX_Q_SIZE
  552. int "ESP to Host queue size"
  553. default 20
  554. help
  555. Very small tx queue will lower ESP -- SPI Half-duplex --> Host data rate
  556. config ESP_SPI_HD_RX_Q_SIZE
  557. int "Host to ESP queue size"
  558. default 20
  559. help
  560. Very small RX queue will lower ESP <-- SPI Half-duplex -- Host data rate
  561. config ESP_SPI_HD_CHECKSUM
  562. bool "Checksum ENABLE/DISABLE"
  563. default y
  564. help
  565. ENABLE/DISABLE software checksum
  566. endmenu
  567. menu "UART Configuration"
  568. depends on ESP_UART_HOST_INTERFACE
  569. choice ESP_UART_RESET_GPIO_CONFIG
  570. bool "RESET GPIO Config"
  571. default ESP_UART_RESET_ACTIVE_HIGH
  572. help
  573. "If Active High, High->Low->High will trigger reset (Low will trigger reset)
  574. If Active Low, Low->High->Low will trigger reset (High will trigger reset)"
  575. config ESP_UART_RESET_ACTIVE_HIGH
  576. bool "RESET: Active High"
  577. config ESP_UART_RESET_ACTIVE_LOW
  578. bool "RESET: Active Low"
  579. endchoice
  580. config ESP_UART_PORT
  581. int "UART Port to Use"
  582. default 1
  583. range 0 2 if IDF_TARGET_ESP32
  584. range 0 1 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C6
  585. range 0 2 if IDF_TARGET_ESP32C61
  586. range 0 1 if IDF_TARGET_ESP32S2
  587. range 0 2 if IDF_TARGET_ESP32S3
  588. range 0 4 if IDF_TARGET_ESP32P4
  589. help
  590. Select UART Port to Use. Do not select the UART Port used for console output (if enabled)
  591. config ESP_UART_PIN_TX
  592. int "TX GPIO number"
  593. default 13 if IDF_TARGET_ESP32
  594. default 5 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3
  595. default 14 if IDF_TARGET_ESP32C5
  596. default 21 if IDF_TARGET_ESP32C6
  597. default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  598. default 14 if IDF_TARGET_ESP32P4
  599. help
  600. GPIO used for UART TX
  601. config ESP_UART_PIN_RX
  602. int "RX GPIO number"
  603. default 12 if IDF_TARGET_ESP32
  604. default 4 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3
  605. default 13 if IDF_TARGET_ESP32C5
  606. default 20 if IDF_TARGET_ESP32C6
  607. default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
  608. default 15 if IDF_TARGET_ESP32P4
  609. help
  610. GPIO used for UART RX
  611. config ESP_UART_BAUDRATE
  612. int "Baud Rate"
  613. default 921600
  614. range 9600 3500000
  615. help
  616. Baud Rate to Use. Make sure Hardware supports the rate. Standard rates are 9600, 19200, 38400, 57600, 115200, 460800, 921600
  617. config ESP_UART_NUM_DATA_BITS
  618. int "Number of Data Bits"
  619. default 8
  620. range 5 8
  621. help
  622. Number of Data Bits to use
  623. choice ESP_UART_PRIV_PARITY
  624. bool "Parity"
  625. config ESP_UART_PRIV_PARITY_NONE
  626. bool "None"
  627. config ESP_UART_PRIV_PARITY_EVEN
  628. bool "Even"
  629. config ESP_UART_PRIV_PARITY_ODD
  630. bool "Odd"
  631. endchoice
  632. config ESP_UART_PARITY
  633. int
  634. default 0 if ESP_UART_PRIV_PARITY_NONE
  635. default 1 if ESP_UART_PRIV_PARITY_EVEN
  636. default 2 if ESP_UART_PRIV_PARITY_ODD
  637. choice ESP_UART_PRIV_STOP_BITS
  638. bool "Number of Stop Bits"
  639. config ESP_UART_PRIV_STOP_BITS_1
  640. bool "1"
  641. config ESP_UART_PRIV_STOP_BITS_1_5
  642. bool "1.5"
  643. config ESP_UART_PRIV_STOP_BITS_2
  644. bool "2"
  645. endchoice
  646. config ESP_UART_STOP_BITS
  647. int
  648. default 0 if ESP_UART_PRIV_STOP_BITS_1
  649. default 1 if ESP_UART_PRIV_STOP_BITS_1_5
  650. default 2 if ESP_UART_PRIV_STOP_BITS_2
  651. config ESP_UART_GPIO_RESET_SLAVE
  652. int "GPIO pin for Reseting slave ESP"
  653. default 54 if IDF_TARGET_ESP32P4
  654. default 42 if IDF_TARGET_ESP32S3
  655. default 5
  656. help
  657. GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device.
  658. config ESP_UART_TX_Q_SIZE
  659. int "Tx Queue Size"
  660. default 5
  661. help
  662. UART rates are low, so large queue sizes are not required
  663. config ESP_UART_RX_Q_SIZE
  664. int "Rx Queue Size"
  665. default 5
  666. help
  667. UART rates are low, so large queue sizes are not required
  668. config ESP_UART_CHECKSUM
  669. bool "UART checksum ENABLE/DISABLE"
  670. default y
  671. help
  672. ENABLE/DISABLE software UART checksum
  673. endmenu
  674. config ESP_GPIO_SLAVE_RESET_SLAVE
  675. int
  676. default ESP_SPI_GPIO_RESET_SLAVE if ESP_SPI_HOST_INTERFACE
  677. default ESP_SDIO_GPIO_RESET_SLAVE if ESP_SDIO_HOST_INTERFACE
  678. default ESP_SPI_HD_GPIO_RESET_SLAVE if ESP_SPI_HD_HOST_INTERFACE
  679. default ESP_UART_GPIO_RESET_SLAVE if ESP_UART_HOST_INTERFACE
  680. config RESET_GPIO_ACTIVE_LOW
  681. bool
  682. default n if SDIO_RESET_ACTIVE_HIGH || SPI_RESET_ACTIVE_HIGH || SPI_HD_RESET_ACTIVE_HIGH || ESP_UART_RESET_ACTIVE_HIGH
  683. default y if SDIO_RESET_ACTIVE_LOW || SPI_RESET_ACTIVE_LOW || SPI_HD_RESET_ACTIVE_LOW || ESP_UART_RESET_ACTIVE_LOW
  684. menu "Bluetooth Support"
  685. comment "Following options must be set before this option can be enabled"
  686. depends on !BT_ENABLED || BT_CONTROLLER_ONLY || (BT_NIMBLE_ENABLED && (BT_NIMBLE_TRANSPORT_UART || BT_CONTROLLER_ENABLED)) || (BT_BLUEDROID_ENABLED && BT_CONTROLLER_ENABLED)
  687. comment "'Component config->Bluetooth' must be enabled"
  688. depends on !BT_ENABLED
  689. comment "'Component config->Bluetooth->Host' must be enabled"
  690. depends on BT_ENABLED && BT_CONTROLLER_ONLY
  691. comment "'Component config->Bluetooth->Controller' must be disabled"
  692. depends on BT_ENABLED && BT_CONTROLLER_ENABLED
  693. comment "'Component config->Bluetooth->NimBLE Options->Host-controller Transport->Uart Transport' must be disabled"
  694. depends on BT_NIMBLE_ENABLED && BT_NIMBLE_TRANSPORT_UART
  695. if BT_ENABLED && BT_BLUEDROID_ENABLED && !BT_CONTROLLER_ENABLED
  696. config ESP_ENABLE_BT_BLUEDROID
  697. bool "Enable Hosted Bluedroid Bluetooth support"
  698. default n
  699. help
  700. Enable Bluetooth Support for Bluedroid via Hosted
  701. choice ESP_BLUEDROID_HCI_TYPE
  702. bool "BT Bluedroid HCI Type"
  703. default ESP_BLUEDROID_HCI_VHCI
  704. depends on ESP_ENABLE_BT_BLUEDROID
  705. help
  706. Selects the HCI to use
  707. config ESP_BLUEDROID_HCI_VHCI
  708. bool "VHCI"
  709. help
  710. Bluetooth data is sent through the selected transport layer
  711. endchoice
  712. endif
  713. if BT_ENABLED && BT_NIMBLE_ENABLED && !BT_CONTROLLER_ENABLED && !BT_NIMBLE_TRANSPORT_UART
  714. config ESP_ENABLE_BT_NIMBLE
  715. bool "Enable Hosted Nimble Bluetooth support"
  716. default n
  717. help
  718. Enable Bluetooth Support via Hosted
  719. choice ESP_NIMBLE_HCI_TYPE
  720. bool "BT Nimble HCI Type"
  721. default ESP_NIMBLE_HCI_VHCI
  722. depends on ESP_ENABLE_BT_NIMBLE
  723. help
  724. Selects the HCI to use
  725. config ESP_NIMBLE_HCI_VHCI
  726. bool "VHCI"
  727. help
  728. Bluetooth data is sent through the selected transport layer
  729. endchoice
  730. endif
  731. endmenu
  732. config ESP_USE_MEMPOOL
  733. bool "Cache allocated memory like mempool - helps to reduce malloc calls"
  734. default y
  735. help
  736. Cache allocated memory - reduces number of malloc calls
  737. config ESP_MAX_SIMULTANEOUS_SYNC_RPC_REQUESTS
  738. int "Maximum number of simultaneous synchronous RPC Request"
  739. default 5
  740. help
  741. Sets the maximum number of simultaneous synchronous RPC Requests.
  742. (Synchronous RPC Request: each sending task waits for the response.)
  743. Usually, the host application may send up to 3 simultaneous RPC requests to the slave.
  744. Increase this number if you need to send more simultaneous RPC requests.
  745. Note: the slave will only process one RPC request (sync and async) at a time
  746. config ESP_MAX_SIMULTANEOUS_ASYNC_RPC_REQUESTS
  747. int "Maximum number of simultaneous asynchronous RPC Request"
  748. default 5
  749. help
  750. Sets the maximum number of simultaneous asynchronous RPC Requests.
  751. (Asynchronous RPC Request: each sending task registers a callback to get the response.)
  752. Usually, the host application may send up to 3 simultaneous RPC requests to the slave.
  753. Increase this number if you need to send more simultaneous RPC requests.
  754. Note: the slave will only process one RPC request (sync and async) at a time
  755. menu "Debug Settings"
  756. config ESP_RAW_THROUGHPUT_TRANSPORT
  757. bool "RawTP: Transport level throughput debug test"
  758. default n
  759. help
  760. Find max transport performance which helps to assess stability of porting done
  761. choice ESP_RAW_THROUGHPUT_DIRECTION
  762. bool "RawTP: Send data from:"
  763. depends on ESP_RAW_THROUGHPUT_TRANSPORT
  764. config ESP_RAW_THROUGHPUT_TX_TO_SLAVE
  765. bool "Host to Slave"
  766. help
  767. Sends data from Host to Slave
  768. config ESP_RAW_THROUGHPUT_RX_FROM_SLAVE
  769. bool "Slave to Host"
  770. help
  771. Sends data from Slave to Slave
  772. config ESP_RAW_THROUGHPUT_BIDIRECTIONAL
  773. bool "Bidirectional"
  774. help
  775. Sends data in both directions
  776. endchoice
  777. config ESP_RAW_TP_HOST_TO_ESP_PKT_LEN
  778. depends on ESP_RAW_THROUGHPUT_TRANSPORT
  779. int "RawTP: Host to ESP packet size"
  780. range 1 1500
  781. default 1460
  782. config ESP_RAW_TP_REPORT_INTERVAL
  783. depends on ESP_RAW_THROUGHPUT_TRANSPORT
  784. int "RawTP: periodic duration to report stats accumulated"
  785. default 5
  786. config ESP_PKT_STATS
  787. bool "Transport level packet stats"
  788. default n
  789. help
  790. On comparing with slave packet stats helps to understand any packet loss at hosted
  791. endmenu
  792. menu "Data path options"
  793. config HOST_TO_ESP_WIFI_DATA_THROTTLE
  794. bool "Report WiFi queue utilization to host"
  795. default y
  796. help
  797. Proactively drop Host->slave Wi-Fi data when Slave Wi-Fi is under load
  798. Slave Wi-Fi may drop ingress bursty or higher than capacity packets.
  799. To have synchronous way of packet dropped for application,
  800. Host will throttle incoming data if the slave datapath Rx load is high
  801. config PRIV_WIFI_TX_SPI_HIGH_THRESHOLD
  802. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE && ESP_SPI_HOST_INTERFACE
  803. int "High threshold to report host to drop data when wifi highly loaded"
  804. range 0 100
  805. default 90
  806. help
  807. Host will throttle incoming data if the slave datapath Rx load goes beyond this threshold
  808. 0 value will disable this function
  809. config PRIV_WIFI_TX_SDIO_HIGH_THRESHOLD
  810. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE && ESP_SDIO_HOST_INTERFACE
  811. int "High threshold to report host to drop data when wifi highly loaded"
  812. range 0 100
  813. default 80
  814. help
  815. Host will throttle incoming data if the slave datapath Rx load goes beyond this threshold
  816. 0 value will disable this function
  817. config PRIV_WIFI_TX_SPI_HD_HIGH_THRESHOLD
  818. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE && ESP_SPI_HD_HOST_INTERFACE
  819. int "High threshold to report host to drop data when wifi highly loaded"
  820. range 0 100
  821. default 80
  822. help
  823. Host will throttle incoming data if the slave datapath Rx load goes beyond this threshold
  824. 0 value will disable this function
  825. config PRIV_WIFI_TX_UART_HIGH_THRESHOLD
  826. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE && ESP_UART_HOST_INTERFACE
  827. int "High threshold to report host to drop data when wifi highly loaded"
  828. range 0 100
  829. default 80
  830. help
  831. Host will throttle incoming data if the slave datapath Rx load goes beyond this threshold
  832. 0 value will disable this function
  833. config TO_WIFI_DATA_THROTTLE_HIGH_THRESHOLD
  834. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE
  835. int
  836. default PRIV_WIFI_TX_SPI_HIGH_THRESHOLD if ESP_SPI_HOST_INTERFACE
  837. default PRIV_WIFI_TX_SDIO_HIGH_THRESHOLD if ESP_SDIO_HOST_INTERFACE
  838. default PRIV_WIFI_TX_SPI_HD_HIGH_THRESHOLD if ESP_SPI_HD_HOST_INTERFACE
  839. default PRIV_WIFI_TX_UART_HIGH_THRESHOLD if ESP_UART_HOST_INTERFACE
  840. config TO_WIFI_DATA_THROTTLE_LOW_THRESHOLD
  841. depends on HOST_TO_ESP_WIFI_DATA_THROTTLE
  842. int "Low threshold to report host to stop dropping data"
  843. range 0 TO_WIFI_DATA_THROTTLE_HIGH_THRESHOLD
  844. default 60
  845. help
  846. Once the Wi-Fi is no more stressed, data throttling would be stopped, once slave Wi-Fi load
  847. is lower than this threshold
  848. endmenu
  849. endmenu