summaryrefslogtreecommitdiff
path: root/bsp/allwinner/libraries/sunxi-hal/hal/source/ce/ce_common.h
blob: 77f5241c22f6af12d6e69c75f7348f1439fcc5e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/* Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved.

 * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in
 * the the People's Republic of China and other countries.
 * All Allwinner Technology Co.,Ltd. trademarks are used with permission.

 * DISCLAIMER
 * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT.
 * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
 * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN
 * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES.
 * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS
 * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE.
 * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY.


 * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT
 * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING
 * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE
 * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef __SUNXI_CE_H__
#define __SUNXI_CE_H__

#ifdef __cplusplus
extern "C" {
#endif

//#define CE_DEBUG
/* For debug */
#if defined(CE_DEBUG)
#define CE_DBG(fmt, arg...) hal_log_err("%s()%d - "fmt, __func__, __LINE__, ##arg)
#else
#define CE_DBG(fmt, arg...) do{} while(0)
#endif
#define CE_ERR(fmt, arg...) hal_log_err("%s()%d - "fmt, __func__, __LINE__, ##arg)

#define AES_KEYSIZE_16          (16)
#define AES_KEYSIZE_24          (24)
#define AES_KEYSIZE_32          (32)
#define AES_MAX_KEY_SIZE        (32)

/*ce flow*/
#define CE_FLOW_NUM     (4)
#define CE_FLOW_AVAILABLE   (0)
#define CE_FLOW_UNAVAILABLE (1)

typedef struct {
    uint32_t addr;
    uint32_t len; /* in word (4 bytes). Exception: in byte for AES_CTS */
} ce_scatter_t;

/*define the return value for aes*/
typedef enum{
    HAL_AES_STATUS_OK = 0,
    HAL_AES_INPUT_ERROR = -1,
    HAL_AES_MALLOC_ERROR = -2,
    HAL_AES_CRYPTO_ERROR = -3,
    HAL_AES_TIME_OUT = -4,
} hal_aes_status_t;

/*define the return value for hal_hash*/
typedef enum{
    HAL_HASH_STATUS_OK = 0,
    HAL_HASH_INPUT_ERROR = -1,
    HAL_HASH_MALLOC_ERROR = -2,
    HAL_HASH_CRYPTO_ERROR = -3,
    HAL_HASH_TIME_OUT = -4,
} hal_hash_status_t;

/*define the return value for hal_rsa*/
typedef enum{
    HAL_RSA_STATUS_OK = 0,
    HAL_RSA_INPUT_ERROR = -1,
    HAL_RSA_MALLOC_ERROR = -2,
    HAL_RSA_CRYPTO_ERROR = -3,
    HAL_RSA_TIME_OUT = -4,
} hal_rsa_status_t;


/*define the return value for hal_hash*/
typedef enum{
    HAL_RNG_STATUS_OK = 0,
    HAL_RNG_INPUT_ERROR = -1,
    HAL_RNG_MALLOC_ERROR = -2,
    HAL_RNG_CRYPTO_ERROR = -3,
    HAL_RNG_TIME_OUT = -4,
} hal_rng_status_t;

typedef struct ce_task_desc {
    uint32_t chan_id;
    uint32_t comm_ctl;
    uint32_t sym_ctl;
    uint32_t asym_ctl;
    uint32_t key_addr;
    uint32_t iv_addr;
    uint32_t ctr_addr;
    uint32_t data_len; /* in word(4 byte). Exception: in byte for AES_CTS */

    ce_scatter_t src[8];
    ce_scatter_t dst[8];

    struct ce_task_desc *next;
    uint32_t reserved[3];
} ce_task_desc_t;


#ifdef __cplusplus
}
#endif

#endif /* __SUNXI_CE_H__ */