mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
esp_wifi: add protection for mac reset (backport 4.4)
This commit is contained in:
parent
b992d3b4f8
commit
25abb74284
@ -521,8 +521,7 @@ static void IRAM_ATTR timer_arm_us_wrapper(void *ptimer, uint32_t us, bool repea
|
|||||||
|
|
||||||
static void wifi_reset_mac_wrapper(void)
|
static void wifi_reset_mac_wrapper(void)
|
||||||
{
|
{
|
||||||
DPORT_SET_PERI_REG_MASK(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST);
|
periph_module_reset(PERIPH_WIFI_MODULE);
|
||||||
DPORT_CLEAR_PERI_REG_MASK(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifi_clock_enable_wrapper(void)
|
static void wifi_clock_enable_wrapper(void)
|
||||||
|
@ -394,15 +394,13 @@ static void IRAM_ATTR timer_arm_us_wrapper(void *ptimer, uint32_t us, bool repea
|
|||||||
|
|
||||||
static void wifi_reset_mac_wrapper(void)
|
static void wifi_reset_mac_wrapper(void)
|
||||||
{
|
{
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
periph_module_reset(PERIPH_WIFI_MODULE);
|
||||||
CLEAR_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IRAM_ATTR wifi_rtc_enable_iso_wrapper(void)
|
static void IRAM_ATTR wifi_rtc_enable_iso_wrapper(void)
|
||||||
{
|
{
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
esp_mac_bb_power_down();
|
esp_mac_bb_power_down();
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,8 +408,6 @@ static void IRAM_ATTR wifi_rtc_disable_iso_wrapper(void)
|
|||||||
{
|
{
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
esp_mac_bb_power_up();
|
esp_mac_bb_power_up();
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
CLEAR_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,8 +501,7 @@ static void IRAM_ATTR timer_arm_us_wrapper(void *ptimer, uint32_t us, bool repea
|
|||||||
|
|
||||||
static void wifi_reset_mac_wrapper(void)
|
static void wifi_reset_mac_wrapper(void)
|
||||||
{
|
{
|
||||||
DPORT_SET_PERI_REG_MASK(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST);
|
periph_module_reset(PERIPH_WIFI_MODULE);
|
||||||
DPORT_CLEAR_PERI_REG_MASK(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifi_clock_enable_wrapper(void)
|
static void wifi_clock_enable_wrapper(void)
|
||||||
|
@ -512,15 +512,13 @@ static void IRAM_ATTR timer_arm_us_wrapper(void *ptimer, uint32_t us, bool repea
|
|||||||
|
|
||||||
static void wifi_reset_mac_wrapper(void)
|
static void wifi_reset_mac_wrapper(void)
|
||||||
{
|
{
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
periph_module_reset(PERIPH_WIFI_MODULE);
|
||||||
CLEAR_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IRAM_ATTR wifi_rtc_enable_iso_wrapper(void)
|
static void IRAM_ATTR wifi_rtc_enable_iso_wrapper(void)
|
||||||
{
|
{
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
esp_mac_bb_power_down();
|
esp_mac_bb_power_down();
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,8 +526,6 @@ static void IRAM_ATTR wifi_rtc_disable_iso_wrapper(void)
|
|||||||
{
|
{
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
esp_mac_bb_power_up();
|
esp_mac_bb_power_up();
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
CLEAR_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_WIFIMAC_RST);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +104,8 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
|
|||||||
switch (periph) {
|
switch (periph) {
|
||||||
case PERIPH_LEDC_MODULE:
|
case PERIPH_LEDC_MODULE:
|
||||||
return DPORT_LEDC_RST;
|
return DPORT_LEDC_RST;
|
||||||
|
case PERIPH_WIFI_MODULE:
|
||||||
|
return DPORT_MAC_RST;
|
||||||
case PERIPH_UART0_MODULE:
|
case PERIPH_UART0_MODULE:
|
||||||
return DPORT_UART_RST;
|
return DPORT_UART_RST;
|
||||||
case PERIPH_UART1_MODULE:
|
case PERIPH_UART1_MODULE:
|
||||||
|
@ -97,6 +97,8 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
|
|||||||
return SYSTEM_RMT_RST;
|
return SYSTEM_RMT_RST;
|
||||||
case PERIPH_LEDC_MODULE:
|
case PERIPH_LEDC_MODULE:
|
||||||
return SYSTEM_LEDC_RST;
|
return SYSTEM_LEDC_RST;
|
||||||
|
case PERIPH_WIFI_MODULE:
|
||||||
|
return SYSTEM_WIFIMAC_RST;
|
||||||
case PERIPH_BT_MODULE:
|
case PERIPH_BT_MODULE:
|
||||||
return (SYSTEM_BTBB_RST | SYSTEM_BTBB_REG_RST | SYSTEM_RW_BTMAC_RST | SYSTEM_RW_BTLP_RST | SYSTEM_RW_BTMAC_REG_RST | SYSTEM_RW_BTLP_REG_RST);
|
return (SYSTEM_BTBB_RST | SYSTEM_BTBB_REG_RST | SYSTEM_RW_BTMAC_RST | SYSTEM_RW_BTLP_RST | SYSTEM_RW_BTMAC_REG_RST | SYSTEM_RW_BTLP_REG_RST);
|
||||||
case PERIPH_UART0_MODULE:
|
case PERIPH_UART0_MODULE:
|
||||||
|
@ -97,6 +97,8 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
|
|||||||
return DPORT_APB_SARADC_RST;
|
return DPORT_APB_SARADC_RST;
|
||||||
case PERIPH_LEDC_MODULE:
|
case PERIPH_LEDC_MODULE:
|
||||||
return DPORT_LEDC_RST;
|
return DPORT_LEDC_RST;
|
||||||
|
case PERIPH_WIFI_MODULE:
|
||||||
|
return DPORT_MAC_RST;
|
||||||
case PERIPH_UART0_MODULE:
|
case PERIPH_UART0_MODULE:
|
||||||
return DPORT_UART_RST;
|
return DPORT_UART_RST;
|
||||||
case PERIPH_UART1_MODULE:
|
case PERIPH_UART1_MODULE:
|
||||||
|
@ -111,6 +111,8 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
|
|||||||
return SYSTEM_RMT_RST;
|
return SYSTEM_RMT_RST;
|
||||||
case PERIPH_LEDC_MODULE:
|
case PERIPH_LEDC_MODULE:
|
||||||
return SYSTEM_LEDC_RST;
|
return SYSTEM_LEDC_RST;
|
||||||
|
case PERIPH_WIFI_MODULE:
|
||||||
|
return SYSTEM_WIFIMAC_RST;
|
||||||
case PERIPH_BT_MODULE:
|
case PERIPH_BT_MODULE:
|
||||||
return (SYSTEM_BTBB_RST | SYSTEM_BTBB_REG_RST | SYSTEM_RW_BTMAC_RST | SYSTEM_RW_BTLP_RST | SYSTEM_RW_BTMAC_REG_RST | SYSTEM_RW_BTLP_REG_RST);
|
return (SYSTEM_BTBB_RST | SYSTEM_BTBB_REG_RST | SYSTEM_RW_BTMAC_RST | SYSTEM_RW_BTLP_RST | SYSTEM_RW_BTMAC_REG_RST | SYSTEM_RW_BTLP_REG_RST);
|
||||||
case PERIPH_UART0_MODULE:
|
case PERIPH_UART0_MODULE:
|
||||||
|
Loading…
Reference in New Issue
Block a user