1 /* 2 * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 // The HAL layer for PAU (Power Assist Unit) 8 9 #pragma once 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #include "soc/soc_caps.h" 16 #include "hal/pau_ll.h" 17 #include "hal/pau_types.h" 18 19 typedef struct { 20 pau_dev_t *dev; 21 } pau_hal_context_t; 22 23 /** 24 * @brief Set regdma entry link address 25 * 26 * @param hal regdma hal context 27 * @param link_addr entry link address value 28 */ 29 void pau_hal_set_regdma_entry_link_addr(pau_hal_context_t *hal, pau_regdma_link_addr_t *link_addr); 30 31 #if SOC_PM_SUPPORT_PMU_MODEM_STATE 32 /** 33 * @brief Set regdma modem link address 34 * 35 * @param hal regdma hal context 36 * @param link_addr modem link address value 37 */ 38 #define pau_hal_set_regdma_modem_link_addr(hal, addr) pau_ll_set_regdma_wifimac_link_addr((hal)->dev, (addr)) 39 40 /** 41 * @brief Start transmission on regdma modem link 42 * 43 * @param hal regdma hal context 44 * @param backup_or_restore false:restore true:backup 45 */ 46 void pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_restore); 47 48 /** 49 * @brief Stop transmission on regdma modem link 50 * 51 * @param hal regdma hal context 52 */ 53 void pau_hal_stop_regdma_modem_link(pau_hal_context_t *hal); 54 #endif 55 56 #if SOC_PM_RETENTION_SW_TRIGGER_REGDMA 57 /** 58 * @brief Set regdma system link address 59 * 60 * @param hal regdma hal context 61 * @param link_addr main link address value 62 */ 63 #define pau_hal_set_regdma_system_link_addr(hal, addr) pau_ll_set_regdma_link0_addr(hal->dev, (addr)) 64 65 /** 66 * @brief Start transmission on regdma system link 67 * 68 * @param hal regdma hal context 69 * @param backup_or_restore false:restore true:backup 70 */ 71 void pau_hal_start_regdma_system_link(pau_hal_context_t *hal, bool backup_or_restore); 72 /** 73 * @brief Stop transmission on regdma system link 74 * 75 * @param hal regdma hal context 76 */ 77 void pau_hal_stop_regdma_system_link(pau_hal_context_t *hal); 78 #endif 79 80 /** 81 * @brief Set regdma extra link address 82 * 83 * @param hal regdma hal context 84 * @param link_addr extra link address value 85 */ 86 #define pau_hal_set_regdma_extra_link_addr(hal, addr) pau_ll_set_regdma_link3_addr(hal->dev, (addr)) 87 88 /** 89 * @brief Start transmission on regdma extra link 90 * 91 * @param hal regdma hal context 92 * @param backup_or_restore false:restore true:backup 93 */ 94 void pau_hal_start_regdma_extra_link(pau_hal_context_t *hal, bool backup_or_restore); 95 96 /** 97 * @brief Stop transmission on regdma extra link 98 * 99 * @param hal regdma hal context 100 */ 101 void pau_hal_stop_regdma_extra_link(pau_hal_context_t *hal); 102 103 #if SOC_PM_RETENTION_SW_TRIGGER_REGDMA 104 /** 105 * @brief Enable or disable PAU module clock 106 * 107 * @param hal regdma hal context 108 */ 109 void pau_hal_regdma_clock_configure(pau_hal_context_t *hal, bool enable); 110 #endif 111 112 #ifdef __cplusplus 113 } 114 #endif 115