1 /*
2  * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #include <stdbool.h>
10 #include <stddef.h>
11 #include <stdint.h>
12 #include "soc/soc.h"
13 #include "soc/soc_caps.h"
14 
15 #if SOC_PAU_SUPPORTED
16 #include "hal/pau_hal.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 /**
23  * @brief Set the addresses of all REGDMA Links
24  * @param link_entries all linked lists addresses
25  */
26 void pau_regdma_set_entry_link_addr(pau_regdma_link_addr_t *link_entries);
27 
28 #if SOC_PM_SUPPORT_PMU_MODEM_STATE
29 /**
30  * @brief Set the address of WiFi MAC REGDMA Link in modem state
31  * @param link_addr linked lists address
32  */
33 void pau_regdma_set_modem_link_addr(void *link_addr);
34 
35 /**
36  * @brief Software trigger regdma to perform modem link backup
37  */
38 void pau_regdma_trigger_modem_link_backup(void);
39 
40 /**
41  * @brief Software trigger regdma to perform modem link restore
42  */
43 void pau_regdma_trigger_modem_link_restore(void);
44 #endif
45 
46 #if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
47 /**
48  * @brief Set the address of system REGDMA Link in active state
49  * @param link_addr linked lists address
50  */
51 void pau_regdma_set_system_link_addr(void *link_addr);
52 
53 /**
54  * @brief Software trigger regdma to perform system link backup
55  */
56 void pau_regdma_trigger_system_link_backup(void);
57 
58 /**
59  * @brief Software trigger regdma to perform system link restore
60  */
61 void pau_regdma_trigger_system_link_restore(void);
62 #endif
63 
64 /**
65  * @brief Set the address of extra REGDMA Link in active state
66  * @param link_addr linked lists address
67  */
68 void pau_regdma_set_extra_link_addr(void *link_addr);
69 
70 /**
71  * @brief Software trigger regdma to perform extra link backup
72  */
73 void pau_regdma_trigger_extra_link_backup(void);
74 
75 /**
76  * @brief Software trigger regdma to perform extra link restore
77  */
78 void pau_regdma_trigger_extra_link_restore(void);
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif //SOC_PAU_SUPPORTED
85