1
2menu "Wireless Coexistence"
3    config ESP_COEX_SW_COEXIST_ENABLE
4        bool "Software controls WiFi/Bluetooth coexistence"
5        depends on (ESP_WIFI_ENABLED && BT_ENABLED) || \
6            (ESP_WIFI_ENABLED && IEEE802154_ENABLED)   || \
7            (IEEE802154_ENABLED && BT_ENABLED)
8        default y
9        select ESP_WIFI_STA_DISCONNECTED_PM_ENABLE if (ESP_WIFI_ENABLED)
10        help
11            If enabled, WiFi & Bluetooth coexistence is controlled by software rather than hardware.
12            Recommended for heavy traffic scenarios. Both coexistence configuration options are
13            automatically managed, no user intervention is required.
14            If only Bluetooth is used, it is recommended to disable this option to reduce binary file
15            size.
16
17    config ESP_COEX_EXTERNAL_COEXIST_ENABLE
18        bool "External Coexistence"
19        default n
20        depends on (!(BT_ENABLED||NIMBLE_ENABLED)&&(!IDF_TARGET_ESP32))
21        help
22            If enabled, HW External coexistence arbitration is managed by GPIO pins.
23            It can support three types of wired combinations so far which are 1-wired/2-wired/3-wired.
24            User can select GPIO pins in application code with configure interfaces.
25
26            This function depends on BT-off
27            because currently we do not support external coex and internal coex simultaneously.
28
29    config ESP_COEX_POWER_MANAGEMENT
30        bool "Support power management under coexistence"
31        default n
32        depends on (ESP_COEX_SW_COEXIST_ENABLE)
33        help
34            If enabled, coexist power management will be enabled.
35
36    config ESP_COEX_GPIO_DEBUG
37        bool "GPIO debugging for coexistence"
38        default n
39        depends on !PM_SLP_DISABLE_GPIO && !PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP
40        help
41            Support coexistence GPIO debugging
42
43    if (ESP_COEX_GPIO_DEBUG)
44
45        choice ESP_COEX_GPIO_DEBUG_DIAG
46            prompt "Debugging Diagram"
47            default ESP_COEX_GPIO_DEBUG_DIAG_GENERAL
48            help
49                Select type of debugging diagram
50
51            config ESP_COEX_GPIO_DEBUG_DIAG_GENERAL
52                bool "General"
53            config ESP_COEX_GPIO_DEBUG_DIAG_WIFI
54                bool "Wi-Fi"
55
56        endchoice
57
58        config ESP_COEX_GPIO_DEBUG_IO_COUNT
59            int "Max number of debugging GPIOs"
60            range 0 12
61            default 12
62
63        config ESP_COEX_GPIO_DEBUG_IO_IDX0
64            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 0)
65            int "Actual IO num for Debug IO ID0"
66            range 0 SOC_GPIO_OUT_RANGE_MAX
67            default 15 if IDF_TARGET_ESP32
68            default 4 if IDF_TARGET_ESP32S2
69            default 19 if IDF_TARGET_ESP32C3
70            default 4 if IDF_TARGET_ESP32S3
71            default 18 if IDF_TARGET_ESP32C2
72            default 4 if IDF_TARGET_ESP32C6
73            default 2 if IDF_TARGET_ESP32C5
74            default 4 if IDF_TARGET_ESP32C61
75            default 1
76
77        config ESP_COEX_GPIO_DEBUG_IO_IDX1
78            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 1)
79            int "Actual IO num for Debug IO ID1"
80            range 0 SOC_GPIO_OUT_RANGE_MAX
81            default 2 if IDF_TARGET_ESP32
82            default 5 if IDF_TARGET_ESP32S2
83            default 18 if IDF_TARGET_ESP32C3
84            default 5 if IDF_TARGET_ESP32S3
85            default 4 if IDF_TARGET_ESP32C2
86            default 5 if IDF_TARGET_ESP32C6
87            default 3 if IDF_TARGET_ESP32C5
88            default 5 if IDF_TARGET_ESP32C61
89            default 2
90
91        config ESP_COEX_GPIO_DEBUG_IO_IDX2
92            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 2)
93            int "Actual IO num for Debug IO ID2"
94            range 0 SOC_GPIO_OUT_RANGE_MAX
95            default 0 if IDF_TARGET_ESP32
96            default 6 if IDF_TARGET_ESP32S2
97            default 4 if IDF_TARGET_ESP32C3
98            default 6 if IDF_TARGET_ESP32S3
99            default 5 if IDF_TARGET_ESP32C2
100            default 6 if IDF_TARGET_ESP32C6
101            default 4 if IDF_TARGET_ESP32C5
102            default 6 if IDF_TARGET_ESP32C61
103            default 3
104
105        config ESP_COEX_GPIO_DEBUG_IO_IDX3
106            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 3)
107            int "Actual IO num for Debug IO ID3"
108            range 0 SOC_GPIO_OUT_RANGE_MAX
109            default 4 if IDF_TARGET_ESP32
110            default 7 if IDF_TARGET_ESP32S2
111            default 5 if IDF_TARGET_ESP32C3
112            default 7 if IDF_TARGET_ESP32S3
113            default 6 if IDF_TARGET_ESP32C2
114            default 7 if IDF_TARGET_ESP32C6
115            default 5 if IDF_TARGET_ESP32C5
116            default 7 if IDF_TARGET_ESP32C61
117            default 4
118
119        config ESP_COEX_GPIO_DEBUG_IO_IDX4
120            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 4)
121            int "Actual IO num for Debug IO ID4"
122            range 0 SOC_GPIO_OUT_RANGE_MAX
123            default 5 if IDF_TARGET_ESP32
124            default 8 if IDF_TARGET_ESP32S2
125            default 6 if IDF_TARGET_ESP32C3
126            default 15 if IDF_TARGET_ESP32S3
127            default 7 if IDF_TARGET_ESP32C2
128            default 8 if IDF_TARGET_ESP32C6
129            default 27 if IDF_TARGET_ESP32C5
130            default 0 if IDF_TARGET_ESP32C61
131            default 5
132
133        config ESP_COEX_GPIO_DEBUG_IO_IDX5
134            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 5)
135            int "Actual IO num for Debug IO ID5"
136            range 0 SOC_GPIO_OUT_RANGE_MAX
137            default 18 if IDF_TARGET_ESP32
138            default 9 if IDF_TARGET_ESP32S2
139            default 7 if IDF_TARGET_ESP32C3
140            default 16 if IDF_TARGET_ESP32S3
141            default 8 if IDF_TARGET_ESP32C2
142            default 10 if IDF_TARGET_ESP32C6
143            default 6 if IDF_TARGET_ESP32C5
144            default 1 if IDF_TARGET_ESP32C61
145            default 6
146
147        config ESP_COEX_GPIO_DEBUG_IO_IDX6
148            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 6)
149            int "Actual IO num for Debug IO ID6"
150            range 0 SOC_GPIO_OUT_RANGE_MAX
151            default 19 if IDF_TARGET_ESP32
152            default 10 if IDF_TARGET_ESP32S2
153            default 8 if IDF_TARGET_ESP32C3
154            default 17 if IDF_TARGET_ESP32S3
155            default 9 if IDF_TARGET_ESP32C2
156            default 11 if IDF_TARGET_ESP32C6
157            default 7 if IDF_TARGET_ESP32C5
158            default 8 if IDF_TARGET_ESP32C61
159            default 7
160
161        config ESP_COEX_GPIO_DEBUG_IO_IDX7
162            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 7)
163            int "Actual IO num for Debug IO ID7"
164            range 0 SOC_GPIO_OUT_RANGE_MAX
165            default 22 if IDF_TARGET_ESP32
166            default 11 if IDF_TARGET_ESP32S2
167            default 9 if IDF_TARGET_ESP32C3
168            default 18 if IDF_TARGET_ESP32S3
169            default 10 if IDF_TARGET_ESP32C2
170            default 2 if IDF_TARGET_ESP32C6
171            default 26 if IDF_TARGET_ESP32C5
172            default 2 if IDF_TARGET_ESP32C61
173            default 8
174
175        config ESP_COEX_GPIO_DEBUG_IO_IDX8
176            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 8)
177            int "Actual IO num for Debug IO ID8"
178            range 0 SOC_GPIO_OUT_RANGE_MAX
179            default 13 if IDF_TARGET_ESP32
180            default 12 if IDF_TARGET_ESP32S2
181            default 10 if IDF_TARGET_ESP32C3
182            default 10 if IDF_TARGET_ESP32S3
183            default 1 if IDF_TARGET_ESP32C2
184            default 15 if IDF_TARGET_ESP32C6
185            default 24 if IDF_TARGET_ESP32C5
186            default 3 if IDF_TARGET_ESP32C61
187            default 9
188
189        config ESP_COEX_GPIO_DEBUG_IO_IDX9
190            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 9)
191            int "Actual IO num for Debug IO ID9"
192            range 0 SOC_GPIO_OUT_RANGE_MAX
193            default 12 if IDF_TARGET_ESP32
194            default 13 if IDF_TARGET_ESP32S2
195            default 0 if IDF_TARGET_ESP32C3
196            default 11 if IDF_TARGET_ESP32S3
197            default 0 if IDF_TARGET_ESP32C2
198            default 23 if IDF_TARGET_ESP32C6
199            default 23 if IDF_TARGET_ESP32C5
200            default 9 if IDF_TARGET_ESP32C61
201            default 10
202
203        config ESP_COEX_GPIO_DEBUG_IO_IDX10
204            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 10)
205            int "Actual IO num for Debug IO ID10"
206            range 0 SOC_GPIO_OUT_RANGE_MAX
207            default 14 if IDF_TARGET_ESP32
208            default 14 if IDF_TARGET_ESP32S2
209            default 3 if IDF_TARGET_ESP32C3
210            default 12 if IDF_TARGET_ESP32S3
211            default 3 if IDF_TARGET_ESP32C2
212            default 22 if IDF_TARGET_ESP32C6
213            default 10 if IDF_TARGET_ESP32C5
214            default 13 if IDF_TARGET_ESP32C61
215            default 11
216
217        config ESP_COEX_GPIO_DEBUG_IO_IDX11
218            depends on (ESP_COEX_GPIO_DEBUG_IO_COUNT > 11)
219            int "Actual IO num for Debug IO ID11"
220            range 0 SOC_GPIO_OUT_RANGE_MAX
221            default 27 if IDF_TARGET_ESP32
222            default 15 if IDF_TARGET_ESP32S2
223            default 2 if IDF_TARGET_ESP32C3
224            default 13 if IDF_TARGET_ESP32S3
225            default 2 if IDF_TARGET_ESP32C2
226            default 21 if IDF_TARGET_ESP32C6
227            default 9 if IDF_TARGET_ESP32C5
228            default 12 if IDF_TARGET_ESP32C61
229            default 12
230
231    endif
232
233endmenu  # Wireless Coexistence
234