Linux Audio

Check our new training course

Loading...
v5.14.15
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3#ifndef __NX_CSBCPB_H__
  4#define __NX_CSBCPB_H__
  5
  6struct cop_symcpb_aes_ecb {
  7	u8 key[32];
  8	u8 __rsvd[80];
  9} __packed;
 10
 11struct cop_symcpb_aes_cbc {
 12	u8 iv[16];
 13	u8 key[32];
 14	u8 cv[16];
 15	u32 spbc;
 16	u8 __rsvd[44];
 17} __packed;
 18
 19struct cop_symcpb_aes_gca {
 20	u8 in_pat[16];
 21	u8 key[32];
 22	u8 out_pat[16];
 23	u32 spbc;
 24	u8 __rsvd[44];
 25} __packed;
 26
 27struct cop_symcpb_aes_gcm {
 28	u8 in_pat_or_aad[16];
 29	u8 iv_or_cnt[16];
 30	u64 bit_length_aad;
 31	u64 bit_length_data;
 32	u8 in_s0[16];
 33	u8 key[32];
 34	u8 __rsvd1[16];
 35	u8 out_pat_or_mac[16];
 36	u8 out_s0[16];
 37	u8 out_cnt[16];
 38	u32 spbc;
 39	u8 __rsvd2[12];
 40} __packed;
 41
 42struct cop_symcpb_aes_ctr {
 43	u8 iv[16];
 44	u8 key[32];
 45	u8 cv[16];
 46	u32 spbc;
 47	u8 __rsvd2[44];
 48} __packed;
 49
 50struct cop_symcpb_aes_cca {
 51	u8 b0[16];
 52	u8 b1[16];
 53	u8 key[16];
 54	u8 out_pat_or_b0[16];
 55	u32 spbc;
 56	u8 __rsvd[44];
 57} __packed;
 58
 59struct cop_symcpb_aes_ccm {
 60	u8 in_pat_or_b0[16];
 61	u8 iv_or_ctr[16];
 62	u8 in_s0[16];
 63	u8 key[16];
 64	u8 __rsvd1[48];
 65	u8 out_pat_or_mac[16];
 66	u8 out_s0[16];
 67	u8 out_ctr[16];
 68	u32 spbc;
 69	u8 __rsvd2[12];
 70} __packed;
 71
 72struct cop_symcpb_aes_xcbc {
 73	u8 cv[16];
 74	u8 key[16];
 75	u8 __rsvd1[16];
 76	u8 out_cv_mac[16];
 77	u32 spbc;
 78	u8 __rsvd2[44];
 79} __packed;
 80
 81struct cop_symcpb_sha256 {
 82	u64 message_bit_length;
 83	u64 __rsvd1;
 84	u8 input_partial_digest[32];
 85	u8 message_digest[32];
 86	u32 spbc;
 87	u8 __rsvd2[44];
 88} __packed;
 89
 90struct cop_symcpb_sha512 {
 91	u64 message_bit_length_hi;
 92	u64 message_bit_length_lo;
 93	u8 input_partial_digest[64];
 94	u8 __rsvd1[32];
 95	u8 message_digest[64];
 96	u32 spbc;
 97	u8 __rsvd2[76];
 98} __packed;
 99
100#define NX_FDM_INTERMEDIATE		0x01
101#define NX_FDM_CONTINUATION		0x02
102#define NX_FDM_ENDE_ENCRYPT		0x80
103
104#define NX_CPB_FDM(c)			((c)->cpb.hdr.fdm)
105#define NX_CPB_KS_DS(c)			((c)->cpb.hdr.ks_ds)
106
107#define NX_CPB_KEY_SIZE(c)		(NX_CPB_KS_DS(c) >> 4)
108#define NX_CPB_SET_KEY_SIZE(c, x)	NX_CPB_KS_DS(c) |= ((x) << 4)
109#define NX_CPB_SET_DIGEST_SIZE(c, x)	NX_CPB_KS_DS(c) |= (x)
110
111struct cop_symcpb_header {
112	u8 mode;
113	u8 fdm;
114	u8 ks_ds;
115	u8 pad_byte;
116	u8 __rsvd[12];
117} __packed;
118
119struct cop_parameter_block {
120	struct cop_symcpb_header hdr;
121	union {
122		struct cop_symcpb_aes_ecb  aes_ecb;
123		struct cop_symcpb_aes_cbc  aes_cbc;
124		struct cop_symcpb_aes_gca  aes_gca;
125		struct cop_symcpb_aes_gcm  aes_gcm;
126		struct cop_symcpb_aes_cca  aes_cca;
127		struct cop_symcpb_aes_ccm  aes_ccm;
128		struct cop_symcpb_aes_ctr  aes_ctr;
129		struct cop_symcpb_aes_xcbc aes_xcbc;
130		struct cop_symcpb_sha256   sha256;
131		struct cop_symcpb_sha512   sha512;
132	};
133} __packed;
134
135#define NX_CSB_VALID_BIT	0x80
136
137/* co-processor status block */
138struct cop_status_block {
139	u8 valid;
140	u8 crb_seq_number;
141	u8 completion_code;
142	u8 completion_extension;
143	__be32 processed_byte_count;
144	__be64 address;
145} __packed;
146
147/* Nest accelerator workbook section 4.4 */
148struct nx_csbcpb {
149	unsigned char __rsvd[112];
150	struct cop_status_block csb;
151	struct cop_parameter_block cpb;
152} __packed;
153
154/* nx_csbcpb related definitions */
155#define NX_MODE_AES_ECB			0
156#define NX_MODE_AES_CBC			1
157#define NX_MODE_AES_GMAC		2
158#define NX_MODE_AES_GCA			3
159#define NX_MODE_AES_GCM			4
160#define NX_MODE_AES_CCA			5
161#define NX_MODE_AES_CCM			6
162#define NX_MODE_AES_CTR			7
163#define NX_MODE_AES_XCBC_MAC		20
164#define NX_MODE_SHA			0
165#define NX_MODE_SHA_HMAC		1
166#define NX_MODE_AES_CBC_HMAC_ETA	8
167#define NX_MODE_AES_CBC_HMAC_ATE	9
168#define NX_MODE_AES_CBC_HMAC_EAA	10
169#define NX_MODE_AES_CTR_HMAC_ETA	12
170#define NX_MODE_AES_CTR_HMAC_ATE	13
171#define NX_MODE_AES_CTR_HMAC_EAA	14
172
173#define NX_FDM_CI_FULL		0
174#define NX_FDM_CI_FIRST		1
175#define NX_FDM_CI_LAST		2
176#define NX_FDM_CI_MIDDLE	3
177
178#define NX_FDM_PR_NONE		0
179#define NX_FDM_PR_PAD		1
180
181#define NX_KS_AES_128		1
182#define NX_KS_AES_192		2
183#define NX_KS_AES_256		3
184
185#define NX_DS_SHA256		2
186#define NX_DS_SHA512		3
187
188#define NX_FC_AES		0
189#define NX_FC_SHA		2
190#define NX_FC_AES_HMAC		6
191
192#define NX_MAX_FC		(NX_FC_AES_HMAC + 1)
193#define NX_MAX_MODE		(NX_MODE_AES_XCBC_MAC + 1)
194
195#define HCOP_FC_AES          NX_FC_AES
196#define HCOP_FC_SHA          NX_FC_SHA
197#define HCOP_FC_AES_HMAC     NX_FC_AES_HMAC
198
199/* indices into the array of algorithm properties */
200#define NX_PROPS_AES_128		0
201#define NX_PROPS_AES_192		1
202#define NX_PROPS_AES_256		2
203#define NX_PROPS_SHA256			1
204#define NX_PROPS_SHA512			2
205
206#endif
v6.8
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3#ifndef __NX_CSBCPB_H__
  4#define __NX_CSBCPB_H__
  5
  6struct cop_symcpb_aes_ecb {
  7	u8 key[32];
  8	u8 __rsvd[80];
  9} __packed;
 10
 11struct cop_symcpb_aes_cbc {
 12	u8 iv[16];
 13	u8 key[32];
 14	u8 cv[16];
 15	u32 spbc;
 16	u8 __rsvd[44];
 17} __packed;
 18
 19struct cop_symcpb_aes_gca {
 20	u8 in_pat[16];
 21	u8 key[32];
 22	u8 out_pat[16];
 23	u32 spbc;
 24	u8 __rsvd[44];
 25} __packed;
 26
 27struct cop_symcpb_aes_gcm {
 28	u8 in_pat_or_aad[16];
 29	u8 iv_or_cnt[16];
 30	u64 bit_length_aad;
 31	u64 bit_length_data;
 32	u8 in_s0[16];
 33	u8 key[32];
 34	u8 __rsvd1[16];
 35	u8 out_pat_or_mac[16];
 36	u8 out_s0[16];
 37	u8 out_cnt[16];
 38	u32 spbc;
 39	u8 __rsvd2[12];
 40} __packed;
 41
 42struct cop_symcpb_aes_ctr {
 43	u8 iv[16];
 44	u8 key[32];
 45	u8 cv[16];
 46	u32 spbc;
 47	u8 __rsvd2[44];
 48} __packed;
 49
 50struct cop_symcpb_aes_cca {
 51	u8 b0[16];
 52	u8 b1[16];
 53	u8 key[16];
 54	u8 out_pat_or_b0[16];
 55	u32 spbc;
 56	u8 __rsvd[44];
 57} __packed;
 58
 59struct cop_symcpb_aes_ccm {
 60	u8 in_pat_or_b0[16];
 61	u8 iv_or_ctr[16];
 62	u8 in_s0[16];
 63	u8 key[16];
 64	u8 __rsvd1[48];
 65	u8 out_pat_or_mac[16];
 66	u8 out_s0[16];
 67	u8 out_ctr[16];
 68	u32 spbc;
 69	u8 __rsvd2[12];
 70} __packed;
 71
 72struct cop_symcpb_aes_xcbc {
 73	u8 cv[16];
 74	u8 key[16];
 75	u8 __rsvd1[16];
 76	u8 out_cv_mac[16];
 77	u32 spbc;
 78	u8 __rsvd2[44];
 79} __packed;
 80
 81struct cop_symcpb_sha256 {
 82	u64 message_bit_length;
 83	u64 __rsvd1;
 84	u8 input_partial_digest[32];
 85	u8 message_digest[32];
 86	u32 spbc;
 87	u8 __rsvd2[44];
 88} __packed;
 89
 90struct cop_symcpb_sha512 {
 91	u64 message_bit_length_hi;
 92	u64 message_bit_length_lo;
 93	u8 input_partial_digest[64];
 94	u8 __rsvd1[32];
 95	u8 message_digest[64];
 96	u32 spbc;
 97	u8 __rsvd2[76];
 98} __packed;
 99
100#define NX_FDM_INTERMEDIATE		0x01
101#define NX_FDM_CONTINUATION		0x02
102#define NX_FDM_ENDE_ENCRYPT		0x80
103
104#define NX_CPB_FDM(c)			((c)->cpb.hdr.fdm)
105#define NX_CPB_KS_DS(c)			((c)->cpb.hdr.ks_ds)
106
107#define NX_CPB_KEY_SIZE(c)		(NX_CPB_KS_DS(c) >> 4)
108#define NX_CPB_SET_KEY_SIZE(c, x)	NX_CPB_KS_DS(c) |= ((x) << 4)
109#define NX_CPB_SET_DIGEST_SIZE(c, x)	NX_CPB_KS_DS(c) |= (x)
110
111struct cop_symcpb_header {
112	u8 mode;
113	u8 fdm;
114	u8 ks_ds;
115	u8 pad_byte;
116	u8 __rsvd[12];
117} __packed;
118
119struct cop_parameter_block {
120	struct cop_symcpb_header hdr;
121	union {
122		struct cop_symcpb_aes_ecb  aes_ecb;
123		struct cop_symcpb_aes_cbc  aes_cbc;
124		struct cop_symcpb_aes_gca  aes_gca;
125		struct cop_symcpb_aes_gcm  aes_gcm;
126		struct cop_symcpb_aes_cca  aes_cca;
127		struct cop_symcpb_aes_ccm  aes_ccm;
128		struct cop_symcpb_aes_ctr  aes_ctr;
129		struct cop_symcpb_aes_xcbc aes_xcbc;
130		struct cop_symcpb_sha256   sha256;
131		struct cop_symcpb_sha512   sha512;
132	};
133} __packed;
134
135#define NX_CSB_VALID_BIT	0x80
136
137/* co-processor status block */
138struct cop_status_block {
139	u8 valid;
140	u8 crb_seq_number;
141	u8 completion_code;
142	u8 completion_extension;
143	__be32 processed_byte_count;
144	__be64 address;
145} __packed;
146
147/* Nest accelerator workbook section 4.4 */
148struct nx_csbcpb {
149	unsigned char __rsvd[112];
150	struct cop_status_block csb;
151	struct cop_parameter_block cpb;
152} __packed;
153
154/* nx_csbcpb related definitions */
155#define NX_MODE_AES_ECB			0
156#define NX_MODE_AES_CBC			1
157#define NX_MODE_AES_GMAC		2
158#define NX_MODE_AES_GCA			3
159#define NX_MODE_AES_GCM			4
160#define NX_MODE_AES_CCA			5
161#define NX_MODE_AES_CCM			6
162#define NX_MODE_AES_CTR			7
163#define NX_MODE_AES_XCBC_MAC		20
164#define NX_MODE_SHA			0
165#define NX_MODE_SHA_HMAC		1
166#define NX_MODE_AES_CBC_HMAC_ETA	8
167#define NX_MODE_AES_CBC_HMAC_ATE	9
168#define NX_MODE_AES_CBC_HMAC_EAA	10
169#define NX_MODE_AES_CTR_HMAC_ETA	12
170#define NX_MODE_AES_CTR_HMAC_ATE	13
171#define NX_MODE_AES_CTR_HMAC_EAA	14
172
173#define NX_FDM_CI_FULL		0
174#define NX_FDM_CI_FIRST		1
175#define NX_FDM_CI_LAST		2
176#define NX_FDM_CI_MIDDLE	3
177
178#define NX_FDM_PR_NONE		0
179#define NX_FDM_PR_PAD		1
180
181#define NX_KS_AES_128		1
182#define NX_KS_AES_192		2
183#define NX_KS_AES_256		3
184
185#define NX_DS_SHA256		2
186#define NX_DS_SHA512		3
187
188#define NX_FC_AES		0
189#define NX_FC_SHA		2
190#define NX_FC_AES_HMAC		6
191
192#define NX_MAX_FC		(NX_FC_AES_HMAC + 1)
193#define NX_MAX_MODE		(NX_MODE_AES_XCBC_MAC + 1)
194
195#define HCOP_FC_AES          NX_FC_AES
196#define HCOP_FC_SHA          NX_FC_SHA
197#define HCOP_FC_AES_HMAC     NX_FC_AES_HMAC
198
199/* indices into the array of algorithm properties */
200#define NX_PROPS_AES_128		0
201#define NX_PROPS_AES_192		1
202#define NX_PROPS_AES_256		2
203#define NX_PROPS_SHA256			1
204#define NX_PROPS_SHA512			2
205
206#endif