From 9a4abbdd3a39e31544ea7e7302a867b60514b526 Mon Sep 17 00:00:00 2001 From: wuzhenghui Date: Wed, 6 Aug 2025 10:51:30 +0800 Subject: [PATCH] fix(hal): fix esp32c5 mac link bad trigger --- components/hal/esp32c5/include/hal/pau_ll.h | 25 -------------------- components/hal/esp32c5/pau_hal.c | 10 ++++---- components/hal/esp32h21/include/hal/pau_ll.h | 25 -------------------- components/hal/esp32h21/pau_hal.c | 17 ------------- 4 files changed, 5 insertions(+), 72 deletions(-) diff --git a/components/hal/esp32c5/include/hal/pau_ll.h b/components/hal/esp32c5/include/hal/pau_ll.h index f6117925c3..8235ddf0fd 100644 --- a/components/hal/esp32c5/include/hal/pau_ll.h +++ b/components/hal/esp32c5/include/hal/pau_ll.h @@ -54,31 +54,6 @@ static inline void pau_ll_set_regdma_entry_link_backup_start_enable(pau_dev_t *d dev->regdma_conf.start = enable; } -static inline void pau_ll_set_regdma_select_wifimac_link(pau_dev_t *dev) -{ - dev->regdma_conf.sel_mac = 1; -} - -static inline void pau_ll_set_regdma_deselect_wifimac_link(pau_dev_t *dev) -{ - dev->regdma_conf.sel_mac = 0; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_direction(pau_dev_t *dev, bool to_mem) -{ - dev->regdma_conf.to_mem_mac = to_mem ? 1 : 0; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_start_enable(pau_dev_t *dev) -{ - dev->regdma_conf.start_mac = 1; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_start_disable(pau_dev_t *dev) -{ - dev->regdma_conf.start_mac = 0; -} - static inline uint32_t pau_ll_get_regdma_current_link_addr(pau_dev_t *dev) { return dev->regdma_current_link_addr.val; diff --git a/components/hal/esp32c5/pau_hal.c b/components/hal/esp32c5/pau_hal.c index 55460068c4..d0887f780e 100644 --- a/components/hal/esp32c5/pau_hal.c +++ b/components/hal/esp32c5/pau_hal.c @@ -18,17 +18,17 @@ void pau_hal_set_regdma_entry_link_addr(pau_hal_context_t *hal, pau_regdma_link_ void IRAM_ATTR pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_restore) { pau_ll_clear_regdma_backup_done_intr_state(hal->dev); - pau_ll_set_regdma_select_wifimac_link(hal->dev); - pau_ll_set_regdma_wifimac_link_backup_direction(hal->dev, backup_or_restore); - pau_ll_set_regdma_wifimac_link_backup_start_enable(hal->dev); + pau_ll_select_regdma_entry_link(hal->dev, SOC_PM_PAU_REGDMA_LINK_IDX_WIFIMAC); + pau_ll_set_regdma_entry_link_backup_direction(hal->dev, backup_or_restore); + pau_ll_set_regdma_entry_link_backup_start_enable(hal->dev, true); while (!(pau_ll_get_regdma_intr_raw_signal(hal->dev) & PAU_DONE_INT_RAW)); } void IRAM_ATTR pau_hal_stop_regdma_modem_link(pau_hal_context_t *hal) { - pau_ll_set_regdma_wifimac_link_backup_start_disable(hal->dev); - pau_ll_set_regdma_deselect_wifimac_link(hal->dev); + pau_ll_set_regdma_entry_link_backup_start_enable(hal->dev, false); + pau_ll_select_regdma_entry_link(hal->dev, 0); /* restore link select to default */ pau_ll_clear_regdma_backup_done_intr_state(hal->dev); } diff --git a/components/hal/esp32h21/include/hal/pau_ll.h b/components/hal/esp32h21/include/hal/pau_ll.h index 895cecfe99..c4c0ee109d 100644 --- a/components/hal/esp32h21/include/hal/pau_ll.h +++ b/components/hal/esp32h21/include/hal/pau_ll.h @@ -54,31 +54,6 @@ static inline void pau_ll_set_regdma_entry_link_backup_start_enable(pau_dev_t *d dev->regdma_conf.start = enable; } -static inline void pau_ll_set_regdma_select_wifimac_link(pau_dev_t *dev) -{ - dev->regdma_conf.sel_mac = 1; -} - -static inline void pau_ll_set_regdma_deselect_wifimac_link(pau_dev_t *dev) -{ - dev->regdma_conf.sel_mac = 0; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_direction(pau_dev_t *dev, bool to_mem) -{ - dev->regdma_conf.to_mem_mac = to_mem ? 1 : 0; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_start_enable(pau_dev_t *dev) -{ - dev->regdma_conf.start_mac = 1; -} - -static inline void pau_ll_set_regdma_wifimac_link_backup_start_disable(pau_dev_t *dev) -{ - dev->regdma_conf.start_mac = 0; -} - static inline uint32_t pau_ll_get_regdma_current_link_addr(pau_dev_t *dev) { return dev->regdma_current_link_addr.val; diff --git a/components/hal/esp32h21/pau_hal.c b/components/hal/esp32h21/pau_hal.c index d5b28fa086..8228413b9f 100644 --- a/components/hal/esp32h21/pau_hal.c +++ b/components/hal/esp32h21/pau_hal.c @@ -19,23 +19,6 @@ void pau_hal_set_regdma_entry_link_addr(pau_hal_context_t *hal, pau_regdma_link_ pau_ll_set_regdma_link_addr((uint32_t)(*link_addr)[0]); } -void IRAM_ATTR pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_restore) -{ - pau_ll_clear_regdma_backup_done_intr_state(hal->dev); - pau_ll_set_regdma_select_wifimac_link(hal->dev); - pau_ll_set_regdma_wifimac_link_backup_direction(hal->dev, backup_or_restore); - pau_ll_set_regdma_wifimac_link_backup_start_enable(hal->dev); - - while (!(pau_ll_get_regdma_intr_raw_signal(hal->dev) & PAU_DONE_INT_RAW)); -} - -void IRAM_ATTR pau_hal_stop_regdma_modem_link(pau_hal_context_t *hal) -{ - pau_ll_set_regdma_wifimac_link_backup_start_disable(hal->dev); - pau_ll_set_regdma_deselect_wifimac_link(hal->dev); - pau_ll_clear_regdma_backup_done_intr_state(hal->dev); -} - void IRAM_ATTR pau_hal_start_regdma_extra_link(pau_hal_context_t *hal, bool backup_or_restore) { pau_ll_clear_regdma_backup_done_intr_state(hal->dev);