1 // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #include "soc/lldesc.h"
18 #include "soc/soc_caps.h"
19 #include "esp_err.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 /**
26  * @brief Start the DMA engine
27  *
28  * @param input AES input descriptor (outlink)
29  * @param output AES output descriptor (inlink)
30  * @return
31  *      - ESP_OK: Successfully started the DMA
32  *      - ESP_ERR_INVALID_STATE: No DMA channel available
33  */
34 esp_err_t esp_aes_dma_start(const lldesc_t *input, const lldesc_t *output);
35 
36 /**
37  * @brief Check if the DMA engine is finished reading the result
38  *
39  * @param output AES output descriptor (inlink)
40  * @return
41  *      - true: DMA finished
42  *      - false: DMA not yet finished
43  */
44 bool esp_aes_dma_done(const lldesc_t *output);
45 
46 #ifdef __cplusplus
47 }
48 #endif
49