Skip to content

Commit c1c78f5

Browse files
committed
feat(wifi): add esp32c61 eco3 wifi support
1 parent f336022 commit c1c78f5

File tree

49 files changed

+199
-137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+199
-137
lines changed

components/esp_phy/esp32c61/phy_init_data.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -19,24 +19,24 @@ const char __attribute__((section(".rodata"))) phy_init_magic_pre[] = PHY_INIT_M
1919
const esp_phy_init_data_t phy_init_data= { {
2020
0x1,
2121
0x0,
22+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x54),
23+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x54),
2224
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
2325
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
2426
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
27+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
28+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
2529
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
26-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x34),
27-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x34),
2830
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
31+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x48),
32+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x44),
33+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
34+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
35+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
2936
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
30-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x30),
31-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x30),
32-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x28),
33-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x24),
34-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x24),
35-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x24),
3637
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
3738
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
38-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x2c),
39-
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x2c),
39+
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x48),
4040
0x0,
4141
0x00,
4242
0x00,

components/esp_rom/esp32c61/ld/esp32c61.rom.net80211.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ wifi_get_macaddr = 0x40000b2c;
6161
wifi_rf_phy_disable = 0x40000b30;
6262
wifi_rf_phy_enable = 0x40000b34;
6363
wifi_is_started = 0x40000b38;
64-
sta_input = 0x40000b3c;
64+
/*sta_input = 0x40000b3c;*/
6565
sta_rx_eapol = 0x40000b40;
6666
sta_reset_beacon_timeout = 0x40000b44;
6767
sta_get_beacon_timeout = 0x40000b48;

components/esp_rom/esp32c61/ld/esp32c61.rom.pp.ld

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ esf_buf_recycle = 0x40000b64;
2323
GetAccess = 0x40000b68;
2424
hal_mac_is_low_rate_enabled = 0x40000b6c;
2525
hal_mac_tx_get_blockack = 0x40000b70;
26-
hal_mac_tx_set_ppdu = 0x40000b74;
26+
/*hal_mac_tx_set_ppdu = 0x40000b74;*/
2727
hal_mac_tx_clr_mplen = 0x40000b78;
2828
hal_mac_get_txq_state = 0x40000b7c;
2929
hal_mac_clr_txq_state = 0x40000b80;
@@ -72,7 +72,7 @@ lmacRecycleMPDU = 0x40000c30;
7272
lmacRxDone = 0x40000c34;
7373
lmacSetTxFrame = 0x40000c38;
7474
lmacTxDone = 0x40000c3c;
75-
lmacTxFrame = 0x40000c40;
75+
/*lmacTxFrame = 0x40000c40;*/
7676
lmacDisableTransmit = 0x40000c44;
7777
lmacDiscardFrameExchangeSequence = 0x40000c48;
7878
lmacProcessCollision = 0x40000c4c;
@@ -110,10 +110,10 @@ pm_mac_sleep = 0x40000cc8;
110110
pm_enable_active_timer = 0x40000ccc;
111111
pm_enable_sleep_delay_timer = 0x40000cd0;
112112
pm_local_tsf_process = 0x40000cd4;
113-
pm_set_beacon_filter = 0x40000cd8;
114-
pm_is_in_wifi_slice_threshold = 0x40000cdc;
113+
/*pm_set_beacon_filter = 0x40000cd8;*/
114+
/*pm_is_in_wifi_slice_threshold = 0x40000cdc;*/
115115
pm_is_waked = 0x40000ce0;
116-
pm_keep_alive = 0x40000ce4;
116+
/*pm_keep_alive = 0x40000ce4;*/
117117
pm_on_beacon_rx = 0x40000ce8;
118118
pm_on_data_rx = 0x40000cec;
119119
pm_on_data_tx = 0x40000cf0;
@@ -125,37 +125,37 @@ pm_on_isr_twt_wake = 0x40000d04;
125125
pm_on_tsf_timer = 0x40000d08;
126126
pm_on_twt_force_tx = 0x40000d0c;
127127
pm_parse_beacon = 0x40000d10;
128-
pm_process_tim = 0x40000d14;
128+
/*pm_process_tim = 0x40000d14;*/
129129
pm_rx_beacon_process = 0x40000d18;
130130
pm_rx_data_process = 0x40000d1c;
131131
pm_sleep = 0x40000d20;
132132
pm_sleep_for = 0x40000d24;
133-
pm_tbtt_process = 0x40000d28;
133+
//pm_tbtt_process = 0x40000d28;
134134
pm_tx_data_done_process = 0x40000d2c;
135135
pm_allow_tx = 0x40000d30;
136136
pm_extend_tbtt_adaptive_servo = 0x40000d34;
137137
pm_scale_listen_interval = 0x40000d38;
138138
pm_parse_mbssid_element = 0x40000d3c;
139139
pm_disconnected_wake = 0x40000d40;
140-
pm_tx_data_process = 0x40000d44;
140+
/*pm_tx_data_process = 0x40000d44;*/
141141
pm_is_twt_awake = 0x40000d48;
142142
pm_enable_twt_keep_alive = 0x40000d4c;
143143
pm_twt_on_tsf_timer = 0x40000d50;
144-
pm_twt_process = 0x40000d54;
144+
/*pm_twt_process = 0x40000d54;*/
145145
pm_is_twt_start = 0x40000d58;
146146
pm_twt_set_target_wdev_time = 0x40000d5c;
147147
pm_twt_set_target_tsf = 0x40000d60;
148148
pm_enable_twt_keep_alive_timer = 0x40000d64;
149-
pm_mac_try_enable_modem_state = 0x40000d68;
149+
/*pm_mac_try_enable_modem_state = 0x40000d68;*/
150150
pm_beacon_monitor_tbtt_timeout_process = 0x40000d6c;
151-
pm_update_next_tbtt = 0x40000d70;
151+
//pm_update_next_tbtt = 0x40000d70;
152152
pm_twt_disallow_tx = 0x40000d74;
153-
pm_clear_wakeup_signal = 0x40000d78;
154-
pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000d7c;
155-
pm_mac_disable_tsf_tbtt_modem_wakeup = 0x40000d80;
156-
pm_mac_enable_tsf_tbtt_soc_wakeup = 0x40000d84;
157-
pm_mac_enable_tsf_tbtt_modem_wakeup = 0x40000d88;
158-
pm_mac_modem_params_rt_update = 0x40000d8c;
153+
//pm_clear_wakeup_signal = 0x40000d78;
154+
/*pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000d7c;*/
155+
/*pm_mac_disable_tsf_tbtt_modem_wakeup = 0x40000d80;*/
156+
/*pm_mac_enable_tsf_tbtt_soc_wakeup = 0x40000d84;*/
157+
/*pm_mac_enable_tsf_tbtt_modem_wakeup = 0x40000d88;*/
158+
/*pm_mac_modem_params_rt_update = 0x40000d8c;*/
159159
pm_update_at_next_beacon = 0x40000d90;
160160
pm_get_null_max_tx_time = 0x40000d94;
161161
pm_coex_schm_overall_period_get = 0x40000d98;
@@ -175,18 +175,18 @@ ppEmptyDelimiterLength = 0x40000dcc;
175175
ppEnqueueRxq = 0x40000dd0;
176176
ppEnqueueTxDone = 0x40000dd4;
177177
ppGetTxframe = 0x40000dd8;
178-
ppMapTxQueue = 0x40000ddc;
178+
/*ppMapTxQueue = 0x40000ddc;*/
179179
ppProcTxSecFrame = 0x40000de0;
180180
ppProcessRxPktHdr = 0x40000de4;
181-
ppProcessTxQ = 0x40000de8;
181+
/*ppProcessTxQ = 0x40000de8;*/
182182
ppRecordBarRRC = 0x40000dec;
183183
ppRecycleAmpdu = 0x40000df0;
184184
ppRecycleRxPkt = 0x40000df4;
185185
ppResortTxAMPDU = 0x40000df8;
186186
ppResumeTxAMPDU = 0x40000dfc;
187187
ppRxFragmentProc = 0x40000e00;
188-
ppRxPkt = 0x40000e04;
189-
ppRxProtoProc = 0x40000e08;
188+
/*ppRxPkt = 0x40000e04;*/
189+
/*ppRxProtoProc = 0x40000e08;*/
190190
ppSearchTxQueue = 0x40000e0c;
191191
ppSearchTxframe = 0x40000e10;
192192
ppSelectNextQueue = 0x40000e14;
@@ -205,7 +205,7 @@ ppMapWaitTxq = 0x40000e44;
205205
ppProcessWaitingQueue = 0x40000e48;
206206
ppDisableQueue = 0x40000e4c;
207207
ppCheckTxRTS = 0x40000e50;
208-
ppProcessLifeTime = 0x40000e54;
208+
/*ppProcessLifeTime = 0x40000e54;*/
209209
ppProcTxCallback = 0x40000e58;
210210
ppCalPreFecPaddingFactor = 0x40000e5c;
211211
ppCalDeliNum = 0x40000e60;
@@ -229,7 +229,7 @@ rcampduuprate = 0x40000ea4;
229229
rcClearCurAMPDUSched = 0x40000ea8;
230230
rcClearCurSched = 0x40000eac;
231231
rcClearCurStat = 0x40000eb0;
232-
rcGetSched = 0x40000eb4;
232+
/*rcGetSched = 0x40000eb4;*/
233233
rcLowerSched = 0x40000eb8;
234234
rcSetTxAmpduLimit = 0x40000ebc;
235235
rcTxUpdatePer = 0x40000ec0;
@@ -269,7 +269,7 @@ wdev_mac_special_reg_store = 0x40000f44;
269269
wdev_mac_wakeup = 0x40000f48;
270270
wdev_mac_sleep = 0x40000f4c;
271271
wDev_ProcessFiq = 0x40000f50;
272-
wDev_ProcessRxSucData = 0x40000f54;
272+
/*wDev_ProcessRxSucData = 0x40000f54;*/
273273
wdevProcessRxSucDataAll = 0x40000f58;
274274
wdev_csi_len_align = 0x40000f5c;
275275
wDev_IndicateBeaconMemoryFrame = 0x40000f60;
@@ -447,7 +447,7 @@ s_tbttstart = 0x4084fc88;
447447
***************************************/
448448

449449
/* Functions */
450-
pm_get_tbtt_count = 0x400014c8;
450+
//pm_get_tbtt_count = 0x400014c8;
451451
tsf_hal_get_time = 0x400014cc;
452452
tsf_hal_get_counter_value = 0x400014d0;
453453

@@ -461,12 +461,12 @@ pm_beacon_offset_is_enabled = 0x40001554;
461461
pm_beacon_offset_is_sampling = 0x40001558;
462462
pm_beacon_offset_add_total_counter = 0x4000155c;
463463
pm_beacon_offset_add_loss_counter = 0x40001560;
464-
pm_beacon_offset_check = 0x40001564;
465-
pm_beacon_offset_get_average = 0x40001568;
466-
pm_beacon_offset_get_expect = 0x4000156c;
467-
pm_beacon_offset_get_params = 0x40001570;
464+
//pm_beacon_offset_check = 0x40001564;
465+
//pm_beacon_offset_get_average = 0x40001568;
466+
//pm_beacon_offset_get_expect = 0x4000156c;
467+
//pm_beacon_offset_get_params = 0x40001570;
468468
pm_beacon_monitor_tbtt_stop = 0x40001574;
469-
pm_enable_max_idle_timer = 0x40001578;
469+
/*pm_enable_max_idle_timer = 0x40001578;*/
470470
/* Data (.data, .bss, .rodata) */
471471
s_pm_beacon_offset_ptr = 0x4084fc64;
472472
s_pm_beacon_offset_config_ptr = 0x4084fc60;

components/esp_wifi/include/esp_private/esp_wifi_he_types_private.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,21 +235,43 @@ typedef struct {
235235
*/
236236
uint32_t mu_bw[3];
237237
uint32_t mu_sigb_dump;
238+
#if CONFIG_IDF_TARGET_ESP32C5
238239
uint32_t vht;
239240
uint32_t vht_noeb;
240241
uint32_t vht_stbc;
241242
uint32_t vht_txbf;
242243
uint32_t vht_retry;
244+
#endif
243245
uint32_t rx_isr;
244246
uint32_t rx_nblks;
245247
uint32_t rx_ndpa;
246248
uint32_t rx_reset_rxbase_cnt;
247249
uint32_t rx_base_null_cnt;
250+
#if CONFIG_IDF_TARGET_ESP32C5
248251
uint32_t vht_mu[64][4];
249252
uint32_t vht_mu_noeb;
250253
uint32_t vht_mu_stbc;
251254
uint32_t vht_mu_retry[64][4];
252255
uint16_t vht_mu_mcs[64][4][12];
256+
#endif
257+
258+
#if CONFIG_IDF_TARGET_ESP32C61
259+
int8_t min_legacy_rssi;
260+
int8_t max_legacy_rssi;
261+
float avg_legacy_rssi;
262+
263+
int8_t min_data_rssi;
264+
int8_t max_data_rssi;
265+
float avg_data_rssi;
266+
267+
int8_t min_mu_legacy_rssi;
268+
int8_t max_mu_legacy_rssi;
269+
float avg_mu_legacy_rssi;
270+
271+
int8_t min_mu_data_rssi;
272+
int8_t max_mu_data_rssi;
273+
float avg_mu_data_rssi;
274+
#endif
253275
} esp_test_rx_statistics_t; //140 bytes
254276

255277
#else
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
2-
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
1+
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
2+
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
2-
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
1+
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
2+
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
2-
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
1+
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
2+
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
33

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
2-
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
1+
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
2+
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |

components/soc/esp32c61/include/soc/Kconfig.soc_caps.in

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ config SOC_PHY_SUPPORTED
5151
bool
5252
default y
5353

54+
config SOC_WIFI_SUPPORTED
55+
bool
56+
default y
57+
5458
config SOC_SUPPORTS_SECURE_DL_MODE
5559
bool
5660
default y
@@ -1239,6 +1243,42 @@ config SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN
12391243
bool
12401244
default y
12411245

1246+
config SOC_WIFI_HW_TSF
1247+
bool
1248+
default y
1249+
1250+
config SOC_WIFI_FTM_SUPPORT
1251+
bool
1252+
default n
1253+
1254+
config SOC_WIFI_GCMP_SUPPORT
1255+
bool
1256+
default y
1257+
1258+
config SOC_WIFI_WAPI_SUPPORT
1259+
bool
1260+
default y
1261+
1262+
config SOC_WIFI_CSI_SUPPORT
1263+
bool
1264+
default y
1265+
1266+
config SOC_WIFI_MESH_SUPPORT
1267+
bool
1268+
default y
1269+
1270+
config SOC_WIFI_HE_SUPPORT
1271+
bool
1272+
default y
1273+
1274+
config SOC_WIFI_MAC_VERSION_NUM
1275+
int
1276+
default 3
1277+
1278+
config SOC_WIFI_NAN_SUPPORT
1279+
bool
1280+
default y
1281+
12421282
config SOC_BLE_SUPPORTED
12431283
bool
12441284
default y

0 commit comments

Comments
 (0)