summaryrefslogtreecommitdiff
path: root/drivers/firmware/imx/ele_fw_api.h
blob: 7a6d7dab84ff3af2b3a1b35a8a1f06ba573f8bd1 (plain) (blame)
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
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright 2026 NXP
 */

#ifndef ELE_FW_API_H
#define ELE_FW_API_H
#include "se_ctrl.h"

#define ELE_SESSION_OPEN_REQ            0x10u
#define ELE_SESSION_OPEN_RSP_SZ         0x0Cu

#define ELE_SESSION_CLOSE_REQ_SZ	0x08u
#define ELE_SESSION_CLOSE_RSP_SZ	0x08u
#define ELE_SESSION_CLOSE_REQ           0x11u

/*
 * Session-scoped FW-API service, key-management and close command opcodes
 * (SAB command IDs, PSA_COMPLIANT message layout). These commands do not
 * embed DMA staging-buffer addresses that require range-checking; they are
 * defined here for completeness and for use by the command allow-list.
 * ELE_FW_GET_INFO_REQ is the FW-API get-info opcode and is intentionally
 * distinct from the base-API ELE_GET_INFO_REQ (0xda) in ele_base_msg.h.
 */
#define ELE_FW_GET_INFO_REQ             0x16u
#define ELE_KEY_STORE_OPEN_REQ          0x30u
#define ELE_KEY_STORE_CLOSE_REQ         0x31u
#define ELE_KEY_MGMT_OPEN_REQ           0x40u
#define ELE_KEY_MGMT_CLOSE_REQ          0x41u
#define ELE_MANAGE_KEY_GROUP_REQ        0x45u
#define ELE_GET_KEY_ATTR_REQ            0x4Cu
#define ELE_KEY_DELETE_REQ              0x4Eu
#define ELE_MAC_OPEN_REQ                0x50u
#define ELE_MAC_CLOSE_REQ               0x51u
#define ELE_CIPHER_OPEN_REQ             0x60u
#define ELE_CIPHER_CLOSE_REQ            0x61u
#define ELE_SIGNATURE_GENERATE_OPEN_REQ 0x70u
#define ELE_SIGNATURE_GENERATE_CLOSE_REQ 0x71u
#define ELE_SIGNATURE_VERIFY_OPEN_REQ   0x80u
#define ELE_SIGNATURE_VERIFY_CLOSE_REQ  0x81u
#define ELE_DATA_STORAGE_OPEN_REQ       0xA0u
#define ELE_DATA_STORAGE_CLOSE_REQ      0xA1u
#define ELE_DATA_DELETE_REQ             0xA4u

/*
 * FW-API crypto command opcodes that embed one or more DMA physical addresses
 * in their message payload. ele_uapi_allowed_fw_cmd() range-checks those
 * addresses against the calling context's shared-memory window before the
 * message is handed to firmware. Opcodes match the SAB command IDs emitted by
 * the userspace library (PSA_COMPLIANT message layout).
 */
#define ELE_PUB_KEY_EXPORT_REQ          0x32u
#define ELE_KEYSTORE_REPROV_ENABLE_REQ  0x3Fu
#define ELE_KEYGEN_REQ                  0x42u
#define ELE_KEY_EXCHANGE_REQ            0x47u
#define ELE_KEY_IMPORT_REQ              0x4Fu
#define ELE_KEY_IMPORT                  0x4Fu
#define ELE_MAC_REQ                     0x52u
#define ELE_CIPHER_REQ                  0x62u
#define ELE_AUTH_ENC_REQ                0x64u
#define ELE_AUTH_ENC_NEW_REQ            0x65u
#define ELE_SIGNATURE_GENERATE_REQ      0x72u
#define ELE_PUB_KEY_ATTEST_REQ          0x74u
#define ELE_SIGNATURE_VERIFY_REQ        0x82u
#define ELE_DATA_STORAGE_REQ            0xA2u
#define ELE_ENC_DATA_STORAGE_REQ        0xA3u
#define ELE_ASYMMETRIC_ENC_REQ          0x92u

#define ELE_KEY_GENERIC_CRYPTO_REQ      0xC2u
#define ELE_GC_CIPHER_REQ               0xC8u
#define ELE_GC_AEAD_REQ                 0xC9u
#define ELE_GC_ACRYPTO_REQ              0xCAu
#define ELE_GC_AKEY_GEN_REQ             0xCBu
#define ELE_HASH_ONE_GO_REQ             0xCCu
#define ELE_RNG_GET_RANDOM_REQ          0xCDu

#define ELE_STORAGE_OPEN_REQ            0xE0u
#define ELE_STORAGE_OPEN_RSP_SZ         0x0Cu

#define ELE_STORAGE_CLOSE_REQ_SZ	0x08u
#define ELE_STORAGE_CLOSE_RSP_SZ	0x08u
#define ELE_STORAGE_CLOSE_REQ           0xE1u

#define ELE_STORAGE_MASTER_IMPORT_REQ   0xE2u
#define ELE_STORAGE_MASTER_EXPORT_REQ   0xE3u
#define ELE_STORAGE_EXPORT_FINISH_REQ   0xE4u
#define ELE_STORAGE_CHUNK_EXPORT_REQ    0xE5u
#define ELE_STORAGE_CHUNK_GET_REQ       0xE6u
#define ELE_STORAGE_CHUNK_GET_DONE_REQ  0xE7u
#define ELE_STORAGE_CHUNK_DELETE_REQ    0xE9u
#define ELE_STORAGE_STATUS_REQ          0xEAu

int ele_uapi_allowed_fw_rsp(struct se_if_device_ctx *dev_ctx, struct se_msg_hdr *header,
			    u32 tx_msg_sz);
int ele_uapi_allowed_fw_cmd(struct se_if_device_ctx *dev_ctx, struct se_msg_hdr *header,
			    u32 tx_msg_sz, u32 rx_msg_sz);
int fw_api_specific_ops(struct se_if_device_ctx *dev_ctx, struct se_api_msg *rx_msg,
			bool is_cmd_interrupted);
void cmd_receiver_specific_ops(struct se_if_device_ctx *dev_ctx,
			       struct se_api_msg *rx_msg);
int se_close_session(struct se_if_device_ctx *dev_ctx, u32 session_hdl);
int se_close_storage(struct se_if_device_ctx *dev_ctx, u32 storage_hdl);

#endif /* ELE_FW_API_H */