diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index bb9660c401..f128e898d7 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -436,6 +436,13 @@ config ESP32C3_WIFI_FS_MOUNTPT help Mount point of Wi-Fi storage file system. +config ESP32C3_WIFI_STA_DISCONNECT_PM + bool "Power Management for station when disconnected" + default n + ---help--- + Select this option to enable power management for station when disconnected. + Chip will do modem-sleep when RF module is not in use anymore. + endmenu # ESP32C3_WIRELESS menu "SPI Flash configuration" diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 76c01ae949..16b6961c71 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -102,7 +102,7 @@ endif ifeq ($(CONFIG_ESP32C3_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty -WIRELESS_DRV_ID = 3cc7f67 +WIRELESS_DRV_ID = 2b53111 WIRELESS_DRV_ZIP = $(WIRELESS_DRV_ID).zip WIRELESS_DRV_URL = https://github.com/espressif/esp-wireless-drivers-3rdparty/archive diff --git a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c index 22d7d9da79..9d66ae4592 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c @@ -4820,6 +4820,12 @@ int esp_wifi_adapter_init(void) wifi_cfg.ampdu_rx_enable = 0; #endif +#ifdef CONFIG_ESP32C3_WIFI_STA_DISCONNECT_PM + wifi_cfg.sta_disconnected_pm = true; +#else + wifi_cfg.sta_disconnected_pm = false; +#endif + wifi_cfg.rx_ba_win = CONFIG_ESP32C3_WIFI_RXBA_AMPDU_WZ; wifi_cfg.static_rx_buf_num = CONFIG_ESP32C3_WIFI_STATIC_RXBUF_NUM; wifi_cfg.dynamic_rx_buf_num = CONFIG_ESP32C3_WIFI_DYNAMIC_RXBUF_NUM; diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index 9556521373..cb76b0dbbe 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -957,6 +957,13 @@ config ESP32_WIFI_FS_MOUNTPT help Mount point of WiFi storage file system. +config ESP32_WIFI_STA_DISCONNECT_PM + bool "Power Management for station when disconnected" + default n + ---help--- + Select this option to enable power management for station when disconnected. + Chip will do modem-sleep when RF module is not in use anymore. + endmenu # ESP32_WIRELESS menu "Real-Time Timer" diff --git a/arch/xtensa/src/esp32/Make.defs b/arch/xtensa/src/esp32/Make.defs index 97c3ca80a2..6696776ba0 100644 --- a/arch/xtensa/src/esp32/Make.defs +++ b/arch/xtensa/src/esp32/Make.defs @@ -190,7 +190,7 @@ endif ifeq ($(CONFIG_ESP32_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty -WIRELESS_DRV_ID = e766ea3 +WIRELESS_DRV_ID = 2b53111 WIRELESS_DRV_ZIP = $(WIRELESS_DRV_ID).zip WIRELESS_DRV_URL = https://github.com/espressif/esp-wireless-drivers-3rdparty/archive diff --git a/arch/xtensa/src/esp32/esp32_wifi_adapter.c b/arch/xtensa/src/esp32/esp32_wifi_adapter.c index a1b8e7f4b7..c7e9860a68 100644 --- a/arch/xtensa/src/esp32/esp32_wifi_adapter.c +++ b/arch/xtensa/src/esp32/esp32_wifi_adapter.c @@ -4895,6 +4895,12 @@ int esp_wifi_adapter_init(void) wifi_cfg.ampdu_rx_enable = 0; #endif +#ifdef CONFIG_ESP32_WIFI_STA_DISCONNECT_PM + wifi_cfg.sta_disconnected_pm = true; +#else + wifi_cfg.sta_disconnected_pm = false; +#endif + wifi_cfg.rx_ba_win = CONFIG_ESP32_WIFI_RXBA_AMPDU_WZ; wifi_cfg.static_rx_buf_num = CONFIG_ESP32_WIFI_STATIC_RXBUF_NUM; wifi_cfg.dynamic_rx_buf_num = CONFIG_ESP32_WIFI_DYNAMIC_RXBUF_NUM; diff --git a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld index c2aaf5f6e1..ae05e4481c 100644 --- a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld @@ -58,6 +58,9 @@ SECTIONS *libarch.a:esp32_spiflash.*(.literal .text .literal.* .text.*) *(.wifirxiram .wifirxiram.*) *(.wifi0iram .wifi0iram.*) + *(.wifislpiram .wifislpiram.*) + *(.wifislprxiram .wifislprxiram.*) + *(.phyiram .phyiram.*) _iram_text_end = ABSOLUTE(.); /* Module text area starts at the end of iram0_0_seg */ diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld index aaf4fac567..36ca15d7ec 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld @@ -61,6 +61,9 @@ SECTIONS *libarch.a:esp32_spiflash.*(.literal .text .literal.* .text.*) *(.wifirxiram .wifirxiram.*) *(.wifirxiram .wifi0iram.*) + *(.wifislpiram .wifislpiram.*) + *(.wifislprxiram .wifislprxiram.*) + *(.phyiram .phyiram.*) _iram_text_end = ABSOLUTE(.); /* Module text area starts at the end of iram0_0_seg */ diff --git a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld index b24007de6e..20d81352d5 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld @@ -61,6 +61,9 @@ SECTIONS *libarch.a:esp32_spiflash.*(.literal .text .literal.* .text.*) *(.wifirxiram .wifirxiram.*) *(.wifirxiram .wifi0iram.*) + *(.wifislpiram .wifislpiram.*) + *(.wifislprxiram .wifislprxiram.*) + *(.phyiram .phyiram.*) _iram_text_end = ABSOLUTE(.); /* Module text area starts at the end of iram0_0_seg */