brintos

brintos / linux-shallow public Read only

0
0
Text · 14.5 KiB · e28241b Raw
586 lines · c
1/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */2/* Copyright(c) 2014 - 2020 Intel Corporation */3#ifndef __ICP_QAT_UCLO_H__4#define __ICP_QAT_UCLO_H__5 6#define ICP_QAT_AC_895XCC_DEV_TYPE 0x004000007#define ICP_QAT_AC_C62X_DEV_TYPE   0x010000008#define ICP_QAT_AC_C3XXX_DEV_TYPE  0x020000009#define ICP_QAT_AC_4XXX_A_DEV_TYPE 0x0800000010#define ICP_QAT_UCLO_MAX_AE       1711#define ICP_QAT_UCLO_MAX_CTX      812#define ICP_QAT_UCLO_MAX_UIMAGE   (ICP_QAT_UCLO_MAX_AE * ICP_QAT_UCLO_MAX_CTX)13#define ICP_QAT_UCLO_MAX_USTORE   0x400014#define ICP_QAT_UCLO_MAX_XFER_REG 12815#define ICP_QAT_UCLO_MAX_GPR_REG  12816#define ICP_QAT_UCLO_MAX_LMEM_REG 102417#define ICP_QAT_UCLO_MAX_LMEM_REG_2X 128018#define ICP_QAT_UCLO_AE_ALL_CTX   0xff19#define ICP_QAT_UOF_OBJID_LEN     820#define ICP_QAT_UOF_FID 0xc6c221#define ICP_QAT_UOF_MAJVER 0x422#define ICP_QAT_UOF_MINVER 0x1123#define ICP_QAT_UOF_OBJS        "UOF_OBJS"24#define ICP_QAT_UOF_STRT        "UOF_STRT"25#define ICP_QAT_UOF_IMAG        "UOF_IMAG"26#define ICP_QAT_UOF_IMEM        "UOF_IMEM"27#define ICP_QAT_UOF_LOCAL_SCOPE     128#define ICP_QAT_UOF_INIT_EXPR               029#define ICP_QAT_UOF_INIT_REG                130#define ICP_QAT_UOF_INIT_REG_CTX            231#define ICP_QAT_UOF_INIT_EXPR_ENDIAN_SWAP   332#define ICP_QAT_SUOF_OBJ_ID_LEN             833#define ICP_QAT_SUOF_FID  0x53554f4634#define ICP_QAT_SUOF_MAJVER 0x035#define ICP_QAT_SUOF_MINVER 0x136#define ICP_QAT_SUOF_OBJ_NAME_LEN 12837#define ICP_QAT_MOF_OBJ_ID_LEN 838#define ICP_QAT_MOF_OBJ_CHUNKID_LEN 839#define ICP_QAT_MOF_FID 0x00666f6d40#define ICP_QAT_MOF_MAJVER 0x041#define ICP_QAT_MOF_MINVER 0x142#define ICP_QAT_MOF_SYM_OBJS "SYM_OBJS"43#define ICP_QAT_SUOF_OBJS "SUF_OBJS"44#define ICP_QAT_SUOF_IMAG "SUF_IMAG"45#define ICP_QAT_SIMG_AE_INIT_SEQ_LEN    (50 * sizeof(unsigned long long))46#define ICP_QAT_SIMG_AE_INSTS_LEN       (0x4000 * sizeof(unsigned long long))47 48#define DSS_FWSK_MODULUS_LEN    384 /* RSA3K */49#define DSS_FWSK_EXPONENT_LEN   450#define DSS_FWSK_PADDING_LEN    38051#define DSS_SIGNATURE_LEN       384 /* RSA3K */52 53#define CSS_FWSK_MODULUS_LEN    256 /* RSA2K */54#define CSS_FWSK_EXPONENT_LEN   455#define CSS_FWSK_PADDING_LEN    25256#define CSS_SIGNATURE_LEN       256 /* RSA2K */57 58#define ICP_QAT_CSS_FWSK_MODULUS_LEN(handle)	((handle)->chip_info->css_3k ? \59						DSS_FWSK_MODULUS_LEN  : \60						CSS_FWSK_MODULUS_LEN)61 62#define ICP_QAT_CSS_FWSK_EXPONENT_LEN(handle)	((handle)->chip_info->css_3k ? \63						DSS_FWSK_EXPONENT_LEN : \64						CSS_FWSK_EXPONENT_LEN)65 66#define ICP_QAT_CSS_FWSK_PAD_LEN(handle)	((handle)->chip_info->css_3k ? \67						DSS_FWSK_PADDING_LEN : \68						CSS_FWSK_PADDING_LEN)69 70#define ICP_QAT_CSS_FWSK_PUB_LEN(handle)	(ICP_QAT_CSS_FWSK_MODULUS_LEN(handle) + \71						ICP_QAT_CSS_FWSK_EXPONENT_LEN(handle) + \72						ICP_QAT_CSS_FWSK_PAD_LEN(handle))73 74#define ICP_QAT_CSS_SIGNATURE_LEN(handle)	((handle)->chip_info->css_3k ? \75						DSS_SIGNATURE_LEN : \76						CSS_SIGNATURE_LEN)77 78#define ICP_QAT_CSS_AE_IMG_LEN     (sizeof(struct icp_qat_simg_ae_mode) + \79				    ICP_QAT_SIMG_AE_INIT_SEQ_LEN +         \80				    ICP_QAT_SIMG_AE_INSTS_LEN)81#define ICP_QAT_CSS_AE_SIMG_LEN(handle) (sizeof(struct icp_qat_css_hdr) + \82					ICP_QAT_CSS_FWSK_PUB_LEN(handle) + \83					ICP_QAT_CSS_SIGNATURE_LEN(handle) + \84					ICP_QAT_CSS_AE_IMG_LEN)85#define ICP_QAT_AE_IMG_OFFSET(handle) (sizeof(struct icp_qat_css_hdr) + \86					ICP_QAT_CSS_FWSK_MODULUS_LEN(handle) + \87					ICP_QAT_CSS_FWSK_EXPONENT_LEN(handle) + \88					ICP_QAT_CSS_SIGNATURE_LEN(handle))89#define ICP_QAT_CSS_RSA4K_MAX_IMAGE_LEN    0x4000090#define ICP_QAT_CSS_RSA3K_MAX_IMAGE_LEN    0x3000091 92#define ICP_QAT_CTX_MODE(ae_mode) ((ae_mode) & 0xf)93#define ICP_QAT_NN_MODE(ae_mode) (((ae_mode) >> 0x4) & 0xf)94#define ICP_QAT_SHARED_USTORE_MODE(ae_mode) (((ae_mode) >> 0xb) & 0x1)95#define RELOADABLE_CTX_SHARED_MODE(ae_mode) (((ae_mode) >> 0xc) & 0x1)96 97#define ICP_QAT_LOC_MEM0_MODE(ae_mode) (((ae_mode) >> 0x8) & 0x1)98#define ICP_QAT_LOC_MEM1_MODE(ae_mode) (((ae_mode) >> 0x9) & 0x1)99#define ICP_QAT_LOC_MEM2_MODE(ae_mode) (((ae_mode) >> 0x6) & 0x1)100#define ICP_QAT_LOC_MEM3_MODE(ae_mode) (((ae_mode) >> 0x7) & 0x1)101#define ICP_QAT_LOC_TINDEX_MODE(ae_mode) (((ae_mode) >> 0xe) & 0x1)102 103enum icp_qat_uof_mem_region {104	ICP_QAT_UOF_SRAM_REGION = 0x0,105	ICP_QAT_UOF_LMEM_REGION = 0x3,106	ICP_QAT_UOF_UMEM_REGION = 0x5107};108 109enum icp_qat_uof_regtype {110	ICP_NO_DEST	= 0,111	ICP_GPA_REL	= 1,112	ICP_GPA_ABS	= 2,113	ICP_GPB_REL	= 3,114	ICP_GPB_ABS	= 4,115	ICP_SR_REL	= 5,116	ICP_SR_RD_REL	= 6,117	ICP_SR_WR_REL	= 7,118	ICP_SR_ABS	= 8,119	ICP_SR_RD_ABS	= 9,120	ICP_SR_WR_ABS	= 10,121	ICP_DR_REL	= 19,122	ICP_DR_RD_REL	= 20,123	ICP_DR_WR_REL	= 21,124	ICP_DR_ABS	= 22,125	ICP_DR_RD_ABS	= 23,126	ICP_DR_WR_ABS	= 24,127	ICP_LMEM	= 26,128	ICP_LMEM0	= 27,129	ICP_LMEM1	= 28,130	ICP_NEIGH_REL	= 31,131	ICP_LMEM2	= 61,132	ICP_LMEM3	= 62,133};134 135enum icp_qat_css_fwtype {136	CSS_AE_FIRMWARE = 0,137	CSS_MMP_FIRMWARE = 1138};139 140struct icp_qat_uclo_page {141	struct icp_qat_uclo_encap_page *encap_page;142	struct icp_qat_uclo_region *region;143	unsigned int flags;144};145 146struct icp_qat_uclo_region {147	struct icp_qat_uclo_page *loaded;148	struct icp_qat_uclo_page *page;149};150 151struct icp_qat_uclo_aeslice {152	struct icp_qat_uclo_region *region;153	struct icp_qat_uclo_page *page;154	struct icp_qat_uclo_page *cur_page[ICP_QAT_UCLO_MAX_CTX];155	struct icp_qat_uclo_encapme *encap_image;156	unsigned int ctx_mask_assigned;157	unsigned int new_uaddr[ICP_QAT_UCLO_MAX_CTX];158};159 160struct icp_qat_uclo_aedata {161	unsigned int slice_num;162	unsigned int eff_ustore_size;163	struct icp_qat_uclo_aeslice ae_slices[ICP_QAT_UCLO_MAX_CTX];164};165 166struct icp_qat_uof_encap_obj {167	char *beg_uof;168	struct icp_qat_uof_objhdr *obj_hdr;169	struct icp_qat_uof_chunkhdr *chunk_hdr;170	struct icp_qat_uof_varmem_seg *var_mem_seg;171};172 173struct icp_qat_uclo_encap_uwblock {174	unsigned int start_addr;175	unsigned int words_num;176	u64 micro_words;177};178 179struct icp_qat_uclo_encap_page {180	unsigned int def_page;181	unsigned int page_region;182	unsigned int beg_addr_v;183	unsigned int beg_addr_p;184	unsigned int micro_words_num;185	unsigned int uwblock_num;186	struct icp_qat_uclo_encap_uwblock *uwblock;187};188 189struct icp_qat_uclo_encapme {190	struct icp_qat_uof_image *img_ptr;191	struct icp_qat_uclo_encap_page *page;192	unsigned int ae_reg_num;193	struct icp_qat_uof_ae_reg *ae_reg;194	unsigned int init_regsym_num;195	struct icp_qat_uof_init_regsym *init_regsym;196	unsigned int sbreak_num;197	struct icp_qat_uof_sbreak *sbreak;198	unsigned int uwords_num;199};200 201struct icp_qat_uclo_init_mem_table {202	unsigned int entry_num;203	struct icp_qat_uof_initmem *init_mem;204};205 206struct icp_qat_uclo_objhdr {207	char *file_buff;208	unsigned int checksum;209	unsigned int size;210};211 212struct icp_qat_uof_strtable {213	unsigned int table_len;214	unsigned int reserved;215	u64 strings;216};217 218struct icp_qat_uclo_objhandle {219	unsigned int prod_type;220	unsigned int prod_rev;221	struct icp_qat_uclo_objhdr *obj_hdr;222	struct icp_qat_uof_encap_obj encap_uof_obj;223	struct icp_qat_uof_strtable str_table;224	struct icp_qat_uclo_encapme ae_uimage[ICP_QAT_UCLO_MAX_UIMAGE];225	struct icp_qat_uclo_aedata ae_data[ICP_QAT_UCLO_MAX_AE];226	struct icp_qat_uclo_init_mem_table init_mem_tab;227	struct icp_qat_uof_batch_init *lm_init_tab[ICP_QAT_UCLO_MAX_AE];228	struct icp_qat_uof_batch_init *umem_init_tab[ICP_QAT_UCLO_MAX_AE];229	int uimage_num;230	int uword_in_bytes;231	int global_inited;232	unsigned int ae_num;233	unsigned int ustore_phy_size;234	void *obj_buf;235	u64 *uword_buf;236};237 238struct icp_qat_uof_uword_block {239	unsigned int start_addr;240	unsigned int words_num;241	unsigned int uword_offset;242	unsigned int reserved;243};244 245struct icp_qat_uof_filehdr {246	unsigned short file_id;247	unsigned short reserved1;248	char min_ver;249	char maj_ver;250	unsigned short reserved2;251	unsigned short max_chunks;252	unsigned short num_chunks;253};254 255struct icp_qat_uof_filechunkhdr {256	char chunk_id[ICP_QAT_UOF_OBJID_LEN];257	unsigned int checksum;258	unsigned int offset;259	unsigned int size;260};261 262struct icp_qat_uof_objhdr {263	unsigned int ac_dev_type;264	unsigned short min_cpu_ver;265	unsigned short max_cpu_ver;266	short max_chunks;267	short num_chunks;268	unsigned int reserved1;269	unsigned int reserved2;270};271 272struct icp_qat_uof_chunkhdr {273	char chunk_id[ICP_QAT_UOF_OBJID_LEN];274	unsigned int offset;275	unsigned int size;276};277 278struct icp_qat_uof_memvar_attr {279	unsigned int offset_in_byte;280	unsigned int value;281};282 283struct icp_qat_uof_initmem {284	unsigned int sym_name;285	char region;286	char scope;287	unsigned short reserved1;288	unsigned int addr;289	unsigned int num_in_bytes;290	unsigned int val_attr_num;291};292 293struct icp_qat_uof_init_regsym {294	unsigned int sym_name;295	char init_type;296	char value_type;297	char reg_type;298	unsigned char ctx;299	unsigned int reg_addr;300	unsigned int value;301};302 303struct icp_qat_uof_varmem_seg {304	unsigned int sram_base;305	unsigned int sram_size;306	unsigned int sram_alignment;307	unsigned int sdram_base;308	unsigned int sdram_size;309	unsigned int sdram_alignment;310	unsigned int sdram1_base;311	unsigned int sdram1_size;312	unsigned int sdram1_alignment;313	unsigned int scratch_base;314	unsigned int scratch_size;315	unsigned int scratch_alignment;316};317 318struct icp_qat_uof_gtid {319	char tool_id[ICP_QAT_UOF_OBJID_LEN];320	int tool_ver;321	unsigned int reserved1;322	unsigned int reserved2;323};324 325struct icp_qat_uof_sbreak {326	unsigned int page_num;327	unsigned int virt_uaddr;328	unsigned char sbreak_type;329	unsigned char reg_type;330	unsigned short reserved1;331	unsigned int addr_offset;332	unsigned int reg_addr;333};334 335struct icp_qat_uof_code_page {336	unsigned int page_region;337	unsigned int page_num;338	unsigned char def_page;339	unsigned char reserved2;340	unsigned short reserved1;341	unsigned int beg_addr_v;342	unsigned int beg_addr_p;343	unsigned int neigh_reg_tab_offset;344	unsigned int uc_var_tab_offset;345	unsigned int imp_var_tab_offset;346	unsigned int imp_expr_tab_offset;347	unsigned int code_area_offset;348};349 350struct icp_qat_uof_image {351	unsigned int img_name;352	unsigned int ae_assigned;353	unsigned int ctx_assigned;354	unsigned int ac_dev_type;355	unsigned int entry_address;356	unsigned int fill_pattern[2];357	unsigned int reloadable_size;358	unsigned char sensitivity;359	unsigned char reserved;360	unsigned short ae_mode;361	unsigned short max_ver;362	unsigned short min_ver;363	unsigned short image_attrib;364	unsigned short reserved2;365	unsigned short page_region_num;366	unsigned short numpages;367	unsigned int reg_tab_offset;368	unsigned int init_reg_sym_tab;369	unsigned int sbreak_tab;370	unsigned int app_metadata;371};372 373struct icp_qat_uof_objtable {374	unsigned int entry_num;375};376 377struct icp_qat_uof_ae_reg {378	unsigned int name;379	unsigned int vis_name;380	unsigned short type;381	unsigned short addr;382	unsigned short access_mode;383	unsigned char visible;384	unsigned char reserved1;385	unsigned short ref_count;386	unsigned short reserved2;387	unsigned int xo_id;388};389 390struct icp_qat_uof_code_area {391	unsigned int micro_words_num;392	unsigned int uword_block_tab;393};394 395struct icp_qat_uof_batch_init {396	unsigned int ae;397	unsigned int addr;398	unsigned int *value;399	unsigned int size;400	struct icp_qat_uof_batch_init *next;401};402 403struct icp_qat_suof_img_hdr {404	char          *simg_buf;405	unsigned long simg_len;406	char          *css_header;407	char          *css_key;408	char          *css_signature;409	char          *css_simg;410	unsigned long simg_size;411	unsigned int  ae_num;412	unsigned int  ae_mask;413	unsigned int  fw_type;414	unsigned long simg_name;415	unsigned long appmeta_data;416};417 418struct icp_qat_suof_img_tbl {419	unsigned int num_simgs;420	struct icp_qat_suof_img_hdr *simg_hdr;421};422 423struct icp_qat_suof_handle {424	unsigned int  file_id;425	unsigned int  check_sum;426	char          min_ver;427	char          maj_ver;428	char          fw_type;429	char          *suof_buf;430	unsigned int  suof_size;431	char          *sym_str;432	unsigned int  sym_size;433	struct icp_qat_suof_img_tbl img_table;434};435 436struct icp_qat_fw_auth_desc {437	unsigned int   img_len;438	unsigned int   ae_mask;439	unsigned int   css_hdr_high;440	unsigned int   css_hdr_low;441	unsigned int   img_high;442	unsigned int   img_low;443	unsigned int   signature_high;444	unsigned int   signature_low;445	unsigned int   fwsk_pub_high;446	unsigned int   fwsk_pub_low;447	unsigned int   img_ae_mode_data_high;448	unsigned int   img_ae_mode_data_low;449	unsigned int   img_ae_init_data_high;450	unsigned int   img_ae_init_data_low;451	unsigned int   img_ae_insts_high;452	unsigned int   img_ae_insts_low;453};454 455struct icp_qat_auth_chunk {456	struct icp_qat_fw_auth_desc fw_auth_desc;457	u64 chunk_size;458	u64 chunk_bus_addr;459};460 461struct icp_qat_css_hdr {462	unsigned int module_type;463	unsigned int header_len;464	unsigned int header_ver;465	unsigned int module_id;466	unsigned int module_vendor;467	unsigned int date;468	unsigned int size;469	unsigned int key_size;470	unsigned int module_size;471	unsigned int exponent_size;472	unsigned int fw_type;473	unsigned int reserved[21];474};475 476struct icp_qat_simg_ae_mode {477	unsigned int     file_id;478	unsigned short   maj_ver;479	unsigned short   min_ver;480	unsigned int     dev_type;481	unsigned short   devmax_ver;482	unsigned short   devmin_ver;483	unsigned int     ae_mask;484	unsigned int     ctx_enables;485	char             fw_type;486	char             ctx_mode;487	char             nn_mode;488	char             lm0_mode;489	char             lm1_mode;490	char             scs_mode;491	char             lm2_mode;492	char             lm3_mode;493	char             tindex_mode;494	unsigned char    reserved[7];495	char             simg_name[256];496	char             appmeta_data[256];497};498 499struct icp_qat_suof_filehdr {500	unsigned int     file_id;501	unsigned int     check_sum;502	char             min_ver;503	char             maj_ver;504	char             fw_type;505	char             reserved;506	unsigned short   max_chunks;507	unsigned short   num_chunks;508};509 510struct icp_qat_suof_chunk_hdr {511	char chunk_id[ICP_QAT_SUOF_OBJ_ID_LEN];512	u64 offset;513	u64 size;514};515 516struct icp_qat_suof_strtable {517	unsigned int tab_length;518	unsigned int strings;519};520 521struct icp_qat_suof_objhdr {522	unsigned int img_length;523	unsigned int reserved;524};525 526struct icp_qat_mof_file_hdr {527	unsigned int file_id;528	unsigned int checksum;529	char min_ver;530	char maj_ver;531	unsigned short reserved;532	unsigned short max_chunks;533	unsigned short num_chunks;534};535 536struct icp_qat_mof_chunkhdr {537	char chunk_id[ICP_QAT_MOF_OBJ_ID_LEN];538	u64 offset;539	u64 size;540};541 542struct icp_qat_mof_str_table {543	unsigned int tab_len;544	unsigned int strings;545};546 547struct icp_qat_mof_obj_hdr {548	unsigned short max_chunks;549	unsigned short num_chunks;550	unsigned int reserved;551};552 553struct icp_qat_mof_obj_chunkhdr {554	char chunk_id[ICP_QAT_MOF_OBJ_CHUNKID_LEN];555	u64 offset;556	u64 size;557	unsigned int name;558	unsigned int reserved;559};560 561struct icp_qat_mof_objhdr {562	char *obj_name;563	char *obj_buf;564	unsigned int obj_size;565};566 567struct icp_qat_mof_table {568	unsigned int num_objs;569	struct icp_qat_mof_objhdr *obj_hdr;570};571 572struct icp_qat_mof_handle {573	unsigned int file_id;574	unsigned int checksum;575	char min_ver;576	char maj_ver;577	char *mof_buf;578	u32 mof_size;579	char *sym_str;580	unsigned int sym_size;581	char *uobjs_hdr;582	char *sobjs_hdr;583	struct icp_qat_mof_table obj_table;584};585#endif586