178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 278ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 378ee8d1cSJulian Grajkowski #ifndef __ICP_QAT_UCLO_H__ 478ee8d1cSJulian Grajkowski #define __ICP_QAT_UCLO_H__ 578ee8d1cSJulian Grajkowski 678ee8d1cSJulian Grajkowski #define ICP_QAT_AC_895XCC_DEV_TYPE 0x00400000 778ee8d1cSJulian Grajkowski #define ICP_QAT_AC_C62X_DEV_TYPE 0x01000000 878ee8d1cSJulian Grajkowski #define ICP_QAT_AC_C3XXX_DEV_TYPE 0x02000000 978ee8d1cSJulian Grajkowski #define ICP_QAT_AC_200XX_DEV_TYPE 0x02000000 1078ee8d1cSJulian Grajkowski #define ICP_QAT_AC_C4XXX_DEV_TYPE 0x04000000 11a977168cSMichal Gulbicki #define ICP_QAT_AC_4XXX_A_DEV_TYPE 0x08000000 1278ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_AE 32 1378ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_CTX 8 1478ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_CPPNUM 2 1578ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_UIMAGE (ICP_QAT_UCLO_MAX_AE * ICP_QAT_UCLO_MAX_CTX) 1678ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_USTORE 0x4000 1778ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_XFER_REG 128 1878ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_GPR_REG 128 1978ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_MAX_LMEM_REG 1024 20a977168cSMichal Gulbicki #define ICP_QAT_UCLO_MAX_LMEM_REG_2X 1280 2178ee8d1cSJulian Grajkowski #define ICP_QAT_UCLO_AE_ALL_CTX 0xff 2278ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_OBJID_LEN 8 2378ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_FID 0xc6c2 2478ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_MAJVER 0x4 2578ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_MINVER 0x11 2678ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_OBJS "UOF_OBJS" 2778ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_STRT "UOF_STRT" 2878ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_IMAG "UOF_IMAG" 2978ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_IMEM "UOF_IMEM" 3078ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_LOCAL_SCOPE 1 3178ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_INIT_EXPR 0 3278ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_INIT_REG 1 3378ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_INIT_REG_CTX 2 3478ee8d1cSJulian Grajkowski #define ICP_QAT_UOF_INIT_EXPR_ENDIAN_SWAP 3 3578ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_OBJ_ID_LEN 8 3678ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_FID 0x53554f46 3778ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_MAJVER 0x0 3878ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_MINVER 0x1 3978ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_OBJ_NAME_LEN 128 4078ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_OBJ_ID_LEN 8 4178ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_OBJ_CHUNKID_LEN 8 4278ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_FID 0x00666f6d 4378ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_MAJVER 0x0 4478ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_MINVER 0x1 4578ee8d1cSJulian Grajkowski #define ICP_QAT_MOF_SYM_OBJS "SYM_OBJS" 4678ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_OBJS "SUF_OBJS" 4778ee8d1cSJulian Grajkowski #define ICP_QAT_SUOF_IMAG "SUF_IMAG" 4878ee8d1cSJulian Grajkowski #define ICP_QAT_SIMG_AE_INIT_SEQ_LEN (50 * sizeof(unsigned long long)) 4978ee8d1cSJulian Grajkowski #define ICP_QAT_SIMG_AE_INSTS_LEN (0x4000 * sizeof(unsigned long long)) 50a977168cSMichal Gulbicki 51a977168cSMichal Gulbicki #define DSS_FWSK_MODULUS_LEN 384 // RSA3K 52a977168cSMichal Gulbicki #define DSS_FWSK_EXPONENT_LEN 4 53a977168cSMichal Gulbicki #define DSS_FWSK_PADDING_LEN 380 54a977168cSMichal Gulbicki #define DSS_SIGNATURE_LEN 384 // RSA3K 55a977168cSMichal Gulbicki 56a977168cSMichal Gulbicki #define CSS_FWSK_MODULUS_LEN 256 // RSA2K 57a977168cSMichal Gulbicki #define CSS_FWSK_EXPONENT_LEN 4 58a977168cSMichal Gulbicki #define CSS_FWSK_PADDING_LEN 252 59a977168cSMichal Gulbicki #define CSS_SIGNATURE_LEN 256 // RSA2K 60a977168cSMichal Gulbicki 61a977168cSMichal Gulbicki #define ICP_QAT_CSS_FWSK_MODULUS_LEN(ID) \ 62a977168cSMichal Gulbicki (IS_QAT_GEN4(ID) ? DSS_FWSK_MODULUS_LEN : CSS_FWSK_MODULUS_LEN) 63a977168cSMichal Gulbicki 64a977168cSMichal Gulbicki #define ICP_QAT_CSS_FWSK_EXPONENT_LEN(ID) \ 65a977168cSMichal Gulbicki (IS_QAT_GEN4(ID) ? DSS_FWSK_EXPONENT_LEN : CSS_FWSK_EXPONENT_LEN) 66a977168cSMichal Gulbicki 67a977168cSMichal Gulbicki #define ICP_QAT_CSS_FWSK_PAD_LEN(ID) \ 68a977168cSMichal Gulbicki (IS_QAT_GEN4(ID) ? DSS_FWSK_PADDING_LEN : CSS_FWSK_PADDING_LEN) 69a977168cSMichal Gulbicki 70a977168cSMichal Gulbicki #define ICP_QAT_CSS_FWSK_PUB_LEN(ID) \ 71a977168cSMichal Gulbicki (ICP_QAT_CSS_FWSK_MODULUS_LEN(ID) + \ 72a977168cSMichal Gulbicki ICP_QAT_CSS_FWSK_EXPONENT_LEN(ID) + ICP_QAT_CSS_FWSK_PAD_LEN(ID)) 73a977168cSMichal Gulbicki 74a977168cSMichal Gulbicki #define ICP_QAT_CSS_SIGNATURE_LEN(ID) \ 75a977168cSMichal Gulbicki (IS_QAT_GEN4(ID) ? DSS_SIGNATURE_LEN : CSS_SIGNATURE_LEN) 76a977168cSMichal Gulbicki 7778ee8d1cSJulian Grajkowski #define ICP_QAT_CSS_AE_IMG_LEN \ 7878ee8d1cSJulian Grajkowski (sizeof(struct icp_qat_simg_ae_mode) + ICP_QAT_SIMG_AE_INIT_SEQ_LEN + \ 7978ee8d1cSJulian Grajkowski ICP_QAT_SIMG_AE_INSTS_LEN) 80a977168cSMichal Gulbicki #define ICP_QAT_CSS_AE_SIMG_LEN(ID) \ 81a977168cSMichal Gulbicki (sizeof(struct icp_qat_css_hdr) + ICP_QAT_CSS_FWSK_PUB_LEN(ID) + \ 82a977168cSMichal Gulbicki ICP_QAT_CSS_SIGNATURE_LEN(ID) + ICP_QAT_CSS_AE_IMG_LEN) 83a977168cSMichal Gulbicki #define ICP_QAT_AE_IMG_OFFSET(ID) \ 84a977168cSMichal Gulbicki (sizeof(struct icp_qat_css_hdr) + ICP_QAT_CSS_FWSK_MODULUS_LEN(ID) + \ 85a977168cSMichal Gulbicki ICP_QAT_CSS_FWSK_EXPONENT_LEN(ID) + ICP_QAT_CSS_SIGNATURE_LEN(ID)) 8678ee8d1cSJulian Grajkowski #define ICP_QAT_CSS_MAX_IMAGE_LEN 0x40000 8778ee8d1cSJulian Grajkowski 8878ee8d1cSJulian Grajkowski #define ICP_QAT_CTX_MODE(ae_mode) ((ae_mode)&0xf) 8978ee8d1cSJulian Grajkowski #define ICP_QAT_NN_MODE(ae_mode) (((ae_mode) >> 0x4) & 0xf) 9078ee8d1cSJulian Grajkowski #define ICP_QAT_SHARED_USTORE_MODE(ae_mode) (((ae_mode) >> 0xb) & 0x1) 9178ee8d1cSJulian Grajkowski #define RELOADABLE_CTX_SHARED_MODE(ae_mode) (((ae_mode) >> 0xc) & 0x1) 9278ee8d1cSJulian Grajkowski 9378ee8d1cSJulian Grajkowski #define ICP_QAT_LOC_MEM0_MODE(ae_mode) (((ae_mode) >> 0x8) & 0x1) 9478ee8d1cSJulian Grajkowski #define ICP_QAT_LOC_MEM1_MODE(ae_mode) (((ae_mode) >> 0x9) & 0x1) 9578ee8d1cSJulian Grajkowski #define ICP_QAT_LOC_MEM2_MODE(ae_mode) (((ae_mode) >> 0x6) & 0x1) 9678ee8d1cSJulian Grajkowski #define ICP_QAT_LOC_MEM3_MODE(ae_mode) (((ae_mode) >> 0x7) & 0x1) 9778ee8d1cSJulian Grajkowski #define ICP_QAT_LOC_TINDEX_MODE(ae_mode) (((ae_mode) >> 0xe) & 0x1) 9878ee8d1cSJulian Grajkowski 9978ee8d1cSJulian Grajkowski enum icp_qat_uof_mem_region { 10078ee8d1cSJulian Grajkowski ICP_QAT_UOF_SRAM_REGION = 0x0, 10178ee8d1cSJulian Grajkowski ICP_QAT_UOF_LMEM_REGION = 0x3, 10278ee8d1cSJulian Grajkowski ICP_QAT_UOF_UMEM_REGION = 0x5 10378ee8d1cSJulian Grajkowski }; 10478ee8d1cSJulian Grajkowski 10578ee8d1cSJulian Grajkowski enum icp_qat_uof_regtype { 10678ee8d1cSJulian Grajkowski ICP_NO_DEST = 0, 10778ee8d1cSJulian Grajkowski ICP_GPA_REL = 1, 10878ee8d1cSJulian Grajkowski ICP_GPA_ABS = 2, 10978ee8d1cSJulian Grajkowski ICP_GPB_REL = 3, 11078ee8d1cSJulian Grajkowski ICP_GPB_ABS = 4, 11178ee8d1cSJulian Grajkowski ICP_SR_REL = 5, 11278ee8d1cSJulian Grajkowski ICP_SR_RD_REL = 6, 11378ee8d1cSJulian Grajkowski ICP_SR_WR_REL = 7, 11478ee8d1cSJulian Grajkowski ICP_SR_ABS = 8, 11578ee8d1cSJulian Grajkowski ICP_SR_RD_ABS = 9, 11678ee8d1cSJulian Grajkowski ICP_SR_WR_ABS = 10, 11778ee8d1cSJulian Grajkowski ICP_DR_REL = 19, 11878ee8d1cSJulian Grajkowski ICP_DR_RD_REL = 20, 11978ee8d1cSJulian Grajkowski ICP_DR_WR_REL = 21, 12078ee8d1cSJulian Grajkowski ICP_DR_ABS = 22, 12178ee8d1cSJulian Grajkowski ICP_DR_RD_ABS = 23, 12278ee8d1cSJulian Grajkowski ICP_DR_WR_ABS = 24, 12378ee8d1cSJulian Grajkowski ICP_LMEM = 26, 12478ee8d1cSJulian Grajkowski ICP_LMEM0 = 27, 12578ee8d1cSJulian Grajkowski ICP_LMEM1 = 28, 12678ee8d1cSJulian Grajkowski ICP_NEIGH_REL = 31, 12778ee8d1cSJulian Grajkowski ICP_LMEM2 = 61, 12878ee8d1cSJulian Grajkowski ICP_LMEM3 = 62, 12978ee8d1cSJulian Grajkowski }; 13078ee8d1cSJulian Grajkowski 13178ee8d1cSJulian Grajkowski enum icp_qat_css_fwtype { CSS_AE_FIRMWARE = 0, CSS_MMP_FIRMWARE = 1 }; 13278ee8d1cSJulian Grajkowski 13378ee8d1cSJulian Grajkowski struct icp_qat_uclo_page { 13478ee8d1cSJulian Grajkowski struct icp_qat_uclo_encap_page *encap_page; 13578ee8d1cSJulian Grajkowski struct icp_qat_uclo_region *region; 13678ee8d1cSJulian Grajkowski unsigned int flags; 13778ee8d1cSJulian Grajkowski }; 13878ee8d1cSJulian Grajkowski 13978ee8d1cSJulian Grajkowski struct icp_qat_uclo_region { 14078ee8d1cSJulian Grajkowski struct icp_qat_uclo_page *loaded; 14178ee8d1cSJulian Grajkowski struct icp_qat_uclo_page *page; 14278ee8d1cSJulian Grajkowski }; 14378ee8d1cSJulian Grajkowski 14478ee8d1cSJulian Grajkowski struct icp_qat_uclo_aeslice { 14578ee8d1cSJulian Grajkowski struct icp_qat_uclo_region *region; 14678ee8d1cSJulian Grajkowski struct icp_qat_uclo_page *page; 14778ee8d1cSJulian Grajkowski struct icp_qat_uclo_page *cur_page[ICP_QAT_UCLO_MAX_CTX]; 14878ee8d1cSJulian Grajkowski struct icp_qat_uclo_encapme *encap_image; 14978ee8d1cSJulian Grajkowski unsigned int ctx_mask_assigned; 15078ee8d1cSJulian Grajkowski unsigned int new_uaddr[ICP_QAT_UCLO_MAX_CTX]; 15178ee8d1cSJulian Grajkowski }; 15278ee8d1cSJulian Grajkowski 15378ee8d1cSJulian Grajkowski struct icp_qat_uclo_aedata { 15478ee8d1cSJulian Grajkowski unsigned int slice_num; 15578ee8d1cSJulian Grajkowski unsigned int eff_ustore_size; 15678ee8d1cSJulian Grajkowski struct icp_qat_uclo_aeslice ae_slices[ICP_QAT_UCLO_MAX_CTX]; 15778ee8d1cSJulian Grajkowski unsigned int shareable_ustore; 15878ee8d1cSJulian Grajkowski }; 15978ee8d1cSJulian Grajkowski 16078ee8d1cSJulian Grajkowski struct icp_qat_uof_encap_obj { 16178ee8d1cSJulian Grajkowski char *beg_uof; 16278ee8d1cSJulian Grajkowski struct icp_qat_uof_objhdr *obj_hdr; 16378ee8d1cSJulian Grajkowski struct icp_qat_uof_chunkhdr *chunk_hdr; 16478ee8d1cSJulian Grajkowski struct icp_qat_uof_varmem_seg *var_mem_seg; 16578ee8d1cSJulian Grajkowski }; 16678ee8d1cSJulian Grajkowski 16778ee8d1cSJulian Grajkowski struct icp_qat_uclo_encap_uwblock { 16878ee8d1cSJulian Grajkowski unsigned int start_addr; 16978ee8d1cSJulian Grajkowski unsigned int words_num; 17078ee8d1cSJulian Grajkowski uint64_t micro_words; 17178ee8d1cSJulian Grajkowski }; 17278ee8d1cSJulian Grajkowski 17378ee8d1cSJulian Grajkowski struct icp_qat_uclo_encap_page { 17478ee8d1cSJulian Grajkowski unsigned int def_page; 17578ee8d1cSJulian Grajkowski unsigned int page_region; 17678ee8d1cSJulian Grajkowski unsigned int beg_addr_v; 17778ee8d1cSJulian Grajkowski unsigned int beg_addr_p; 17878ee8d1cSJulian Grajkowski unsigned int micro_words_num; 17978ee8d1cSJulian Grajkowski unsigned int uwblock_num; 18078ee8d1cSJulian Grajkowski struct icp_qat_uclo_encap_uwblock *uwblock; 18178ee8d1cSJulian Grajkowski }; 18278ee8d1cSJulian Grajkowski 18378ee8d1cSJulian Grajkowski struct icp_qat_uclo_encapme { 18478ee8d1cSJulian Grajkowski struct icp_qat_uof_image *img_ptr; 18578ee8d1cSJulian Grajkowski struct icp_qat_uclo_encap_page *page; 18678ee8d1cSJulian Grajkowski unsigned int ae_reg_num; 18778ee8d1cSJulian Grajkowski struct icp_qat_uof_ae_reg *ae_reg; 18878ee8d1cSJulian Grajkowski unsigned int init_regsym_num; 18978ee8d1cSJulian Grajkowski struct icp_qat_uof_init_regsym *init_regsym; 19078ee8d1cSJulian Grajkowski unsigned int sbreak_num; 19178ee8d1cSJulian Grajkowski struct icp_qat_uof_sbreak *sbreak; 19278ee8d1cSJulian Grajkowski unsigned int uwords_num; 19378ee8d1cSJulian Grajkowski }; 19478ee8d1cSJulian Grajkowski 19578ee8d1cSJulian Grajkowski struct icp_qat_uclo_init_mem_table { 19678ee8d1cSJulian Grajkowski unsigned int entry_num; 19778ee8d1cSJulian Grajkowski struct icp_qat_uof_initmem *init_mem; 19878ee8d1cSJulian Grajkowski }; 19978ee8d1cSJulian Grajkowski 20078ee8d1cSJulian Grajkowski struct icp_qat_uclo_objhdr { 20178ee8d1cSJulian Grajkowski char *file_buff; 20278ee8d1cSJulian Grajkowski unsigned int checksum; 20378ee8d1cSJulian Grajkowski unsigned int size; 20478ee8d1cSJulian Grajkowski }; 20578ee8d1cSJulian Grajkowski 20678ee8d1cSJulian Grajkowski struct icp_qat_uof_strtable { 20778ee8d1cSJulian Grajkowski unsigned int table_len; 20878ee8d1cSJulian Grajkowski unsigned int reserved; 20978ee8d1cSJulian Grajkowski uint64_t strings; 21078ee8d1cSJulian Grajkowski }; 21178ee8d1cSJulian Grajkowski 21278ee8d1cSJulian Grajkowski struct icp_qat_uclo_objhandle { 21378ee8d1cSJulian Grajkowski unsigned int prod_type; 21478ee8d1cSJulian Grajkowski unsigned int prod_rev; 21578ee8d1cSJulian Grajkowski struct icp_qat_uclo_objhdr *obj_hdr; 21678ee8d1cSJulian Grajkowski struct icp_qat_uof_encap_obj encap_uof_obj; 21778ee8d1cSJulian Grajkowski struct icp_qat_uof_strtable str_table; 21878ee8d1cSJulian Grajkowski struct icp_qat_uclo_encapme ae_uimage[ICP_QAT_UCLO_MAX_UIMAGE]; 21978ee8d1cSJulian Grajkowski struct icp_qat_uclo_aedata ae_data[ICP_QAT_UCLO_MAX_AE]; 22078ee8d1cSJulian Grajkowski struct icp_qat_uclo_init_mem_table init_mem_tab; 22178ee8d1cSJulian Grajkowski struct icp_qat_uof_batch_init *lm_init_tab[ICP_QAT_UCLO_MAX_AE]; 22278ee8d1cSJulian Grajkowski struct icp_qat_uof_batch_init *umem_init_tab[ICP_QAT_UCLO_MAX_AE]; 22378ee8d1cSJulian Grajkowski int uimage_num; 22478ee8d1cSJulian Grajkowski int uword_in_bytes; 22578ee8d1cSJulian Grajkowski int global_inited; 22678ee8d1cSJulian Grajkowski unsigned int ae_num; 22778ee8d1cSJulian Grajkowski unsigned int ustore_phy_size; 22878ee8d1cSJulian Grajkowski void *obj_buf; 22978ee8d1cSJulian Grajkowski uint64_t *uword_buf; 23078ee8d1cSJulian Grajkowski }; 23178ee8d1cSJulian Grajkowski 23278ee8d1cSJulian Grajkowski struct icp_qat_uof_uword_block { 23378ee8d1cSJulian Grajkowski unsigned int start_addr; 23478ee8d1cSJulian Grajkowski unsigned int words_num; 23578ee8d1cSJulian Grajkowski unsigned int uword_offset; 23678ee8d1cSJulian Grajkowski unsigned int reserved; 23778ee8d1cSJulian Grajkowski }; 23878ee8d1cSJulian Grajkowski 23978ee8d1cSJulian Grajkowski struct icp_qat_uof_filehdr { 24078ee8d1cSJulian Grajkowski unsigned short file_id; 24178ee8d1cSJulian Grajkowski unsigned short reserved1; 24278ee8d1cSJulian Grajkowski char min_ver; 24378ee8d1cSJulian Grajkowski char maj_ver; 24478ee8d1cSJulian Grajkowski unsigned short reserved2; 24578ee8d1cSJulian Grajkowski unsigned short max_chunks; 24678ee8d1cSJulian Grajkowski unsigned short num_chunks; 24778ee8d1cSJulian Grajkowski }; 24878ee8d1cSJulian Grajkowski 24978ee8d1cSJulian Grajkowski struct icp_qat_uof_filechunkhdr { 25078ee8d1cSJulian Grajkowski char chunk_id[ICP_QAT_UOF_OBJID_LEN]; 25178ee8d1cSJulian Grajkowski unsigned int checksum; 25278ee8d1cSJulian Grajkowski unsigned int offset; 25378ee8d1cSJulian Grajkowski unsigned int size; 25478ee8d1cSJulian Grajkowski }; 25578ee8d1cSJulian Grajkowski 25678ee8d1cSJulian Grajkowski struct icp_qat_uof_objhdr { 25778ee8d1cSJulian Grajkowski unsigned int ac_dev_type; 25878ee8d1cSJulian Grajkowski unsigned short min_cpu_ver; 25978ee8d1cSJulian Grajkowski unsigned short max_cpu_ver; 26078ee8d1cSJulian Grajkowski short max_chunks; 26178ee8d1cSJulian Grajkowski short num_chunks; 26278ee8d1cSJulian Grajkowski unsigned int reserved1; 26378ee8d1cSJulian Grajkowski unsigned int reserved2; 26478ee8d1cSJulian Grajkowski }; 26578ee8d1cSJulian Grajkowski 26678ee8d1cSJulian Grajkowski struct icp_qat_uof_chunkhdr { 26778ee8d1cSJulian Grajkowski char chunk_id[ICP_QAT_UOF_OBJID_LEN]; 26878ee8d1cSJulian Grajkowski unsigned int offset; 26978ee8d1cSJulian Grajkowski unsigned int size; 27078ee8d1cSJulian Grajkowski }; 27178ee8d1cSJulian Grajkowski 27278ee8d1cSJulian Grajkowski struct icp_qat_uof_memvar_attr { 27378ee8d1cSJulian Grajkowski unsigned int offset_in_byte; 27478ee8d1cSJulian Grajkowski unsigned int value; 27578ee8d1cSJulian Grajkowski }; 27678ee8d1cSJulian Grajkowski 27778ee8d1cSJulian Grajkowski struct icp_qat_uof_initmem { 27878ee8d1cSJulian Grajkowski unsigned int sym_name; 27978ee8d1cSJulian Grajkowski char region; 28078ee8d1cSJulian Grajkowski char scope; 28178ee8d1cSJulian Grajkowski unsigned short reserved1; 28278ee8d1cSJulian Grajkowski unsigned int addr; 28378ee8d1cSJulian Grajkowski unsigned int num_in_bytes; 28478ee8d1cSJulian Grajkowski unsigned int val_attr_num; 28578ee8d1cSJulian Grajkowski }; 28678ee8d1cSJulian Grajkowski 28778ee8d1cSJulian Grajkowski struct icp_qat_uof_init_regsym { 28878ee8d1cSJulian Grajkowski unsigned int sym_name; 28978ee8d1cSJulian Grajkowski char init_type; 29078ee8d1cSJulian Grajkowski char value_type; 29178ee8d1cSJulian Grajkowski char reg_type; 29278ee8d1cSJulian Grajkowski unsigned char ctx; 29378ee8d1cSJulian Grajkowski unsigned int reg_addr; 29478ee8d1cSJulian Grajkowski unsigned int value; 29578ee8d1cSJulian Grajkowski }; 29678ee8d1cSJulian Grajkowski 29778ee8d1cSJulian Grajkowski struct icp_qat_uof_varmem_seg { 29878ee8d1cSJulian Grajkowski unsigned int sram_base; 29978ee8d1cSJulian Grajkowski unsigned int sram_size; 30078ee8d1cSJulian Grajkowski unsigned int sram_alignment; 30178ee8d1cSJulian Grajkowski unsigned int sdram_base; 30278ee8d1cSJulian Grajkowski unsigned int sdram_size; 30378ee8d1cSJulian Grajkowski unsigned int sdram_alignment; 30478ee8d1cSJulian Grajkowski unsigned int sdram1_base; 30578ee8d1cSJulian Grajkowski unsigned int sdram1_size; 30678ee8d1cSJulian Grajkowski unsigned int sdram1_alignment; 30778ee8d1cSJulian Grajkowski unsigned int scratch_base; 30878ee8d1cSJulian Grajkowski unsigned int scratch_size; 30978ee8d1cSJulian Grajkowski unsigned int scratch_alignment; 31078ee8d1cSJulian Grajkowski }; 31178ee8d1cSJulian Grajkowski 31278ee8d1cSJulian Grajkowski struct icp_qat_uof_gtid { 31378ee8d1cSJulian Grajkowski char tool_id[ICP_QAT_UOF_OBJID_LEN]; 31478ee8d1cSJulian Grajkowski int tool_ver; 31578ee8d1cSJulian Grajkowski unsigned int reserved1; 31678ee8d1cSJulian Grajkowski unsigned int reserved2; 31778ee8d1cSJulian Grajkowski }; 31878ee8d1cSJulian Grajkowski 31978ee8d1cSJulian Grajkowski struct icp_qat_uof_sbreak { 32078ee8d1cSJulian Grajkowski unsigned int page_num; 32178ee8d1cSJulian Grajkowski unsigned int virt_uaddr; 32278ee8d1cSJulian Grajkowski unsigned char sbreak_type; 32378ee8d1cSJulian Grajkowski unsigned char reg_type; 32478ee8d1cSJulian Grajkowski unsigned short reserved1; 32578ee8d1cSJulian Grajkowski unsigned int addr_offset; 32678ee8d1cSJulian Grajkowski unsigned int reg_addr; 32778ee8d1cSJulian Grajkowski }; 32878ee8d1cSJulian Grajkowski 32978ee8d1cSJulian Grajkowski struct icp_qat_uof_code_page { 33078ee8d1cSJulian Grajkowski unsigned int page_region; 33178ee8d1cSJulian Grajkowski unsigned int page_num; 33278ee8d1cSJulian Grajkowski unsigned char def_page; 33378ee8d1cSJulian Grajkowski unsigned char reserved2; 33478ee8d1cSJulian Grajkowski unsigned short reserved1; 33578ee8d1cSJulian Grajkowski unsigned int beg_addr_v; 33678ee8d1cSJulian Grajkowski unsigned int beg_addr_p; 33778ee8d1cSJulian Grajkowski unsigned int neigh_reg_tab_offset; 33878ee8d1cSJulian Grajkowski unsigned int uc_var_tab_offset; 33978ee8d1cSJulian Grajkowski unsigned int imp_var_tab_offset; 34078ee8d1cSJulian Grajkowski unsigned int imp_expr_tab_offset; 34178ee8d1cSJulian Grajkowski unsigned int code_area_offset; 34278ee8d1cSJulian Grajkowski }; 34378ee8d1cSJulian Grajkowski 34478ee8d1cSJulian Grajkowski struct icp_qat_uof_image { 34578ee8d1cSJulian Grajkowski unsigned int img_name; 34678ee8d1cSJulian Grajkowski unsigned int ae_assigned; 34778ee8d1cSJulian Grajkowski unsigned int ctx_assigned; 34878ee8d1cSJulian Grajkowski unsigned int ac_dev_type; 34978ee8d1cSJulian Grajkowski unsigned int entry_address; 35078ee8d1cSJulian Grajkowski unsigned int fill_pattern[2]; 35178ee8d1cSJulian Grajkowski unsigned int reloadable_size; 35278ee8d1cSJulian Grajkowski unsigned char sensitivity; 35378ee8d1cSJulian Grajkowski unsigned char reserved; 35478ee8d1cSJulian Grajkowski unsigned short ae_mode; 35578ee8d1cSJulian Grajkowski unsigned short max_ver; 35678ee8d1cSJulian Grajkowski unsigned short min_ver; 35778ee8d1cSJulian Grajkowski unsigned short image_attrib; 35878ee8d1cSJulian Grajkowski unsigned short reserved2; 35978ee8d1cSJulian Grajkowski unsigned short page_region_num; 36078ee8d1cSJulian Grajkowski unsigned short numpages; 36178ee8d1cSJulian Grajkowski unsigned int reg_tab_offset; 36278ee8d1cSJulian Grajkowski unsigned int init_reg_sym_tab; 36378ee8d1cSJulian Grajkowski unsigned int sbreak_tab; 36478ee8d1cSJulian Grajkowski unsigned int app_metadata; 36578ee8d1cSJulian Grajkowski }; 36678ee8d1cSJulian Grajkowski 36778ee8d1cSJulian Grajkowski struct icp_qat_uof_objtable { 36878ee8d1cSJulian Grajkowski unsigned int entry_num; 36978ee8d1cSJulian Grajkowski }; 37078ee8d1cSJulian Grajkowski 37178ee8d1cSJulian Grajkowski struct icp_qat_uof_ae_reg { 37278ee8d1cSJulian Grajkowski unsigned int name; 37378ee8d1cSJulian Grajkowski unsigned int vis_name; 37478ee8d1cSJulian Grajkowski unsigned short type; 37578ee8d1cSJulian Grajkowski unsigned short addr; 37678ee8d1cSJulian Grajkowski unsigned short access_mode; 37778ee8d1cSJulian Grajkowski unsigned char visible; 37878ee8d1cSJulian Grajkowski unsigned char reserved1; 37978ee8d1cSJulian Grajkowski unsigned short ref_count; 38078ee8d1cSJulian Grajkowski unsigned short reserved2; 38178ee8d1cSJulian Grajkowski unsigned int xo_id; 38278ee8d1cSJulian Grajkowski }; 38378ee8d1cSJulian Grajkowski 38478ee8d1cSJulian Grajkowski struct icp_qat_uof_code_area { 38578ee8d1cSJulian Grajkowski unsigned int micro_words_num; 38678ee8d1cSJulian Grajkowski unsigned int uword_block_tab; 38778ee8d1cSJulian Grajkowski }; 38878ee8d1cSJulian Grajkowski 38978ee8d1cSJulian Grajkowski struct icp_qat_uof_batch_init { 39078ee8d1cSJulian Grajkowski unsigned int ae; 39178ee8d1cSJulian Grajkowski unsigned int addr; 39278ee8d1cSJulian Grajkowski unsigned int *value; 39378ee8d1cSJulian Grajkowski unsigned int size; 39478ee8d1cSJulian Grajkowski struct icp_qat_uof_batch_init *next; 39578ee8d1cSJulian Grajkowski }; 39678ee8d1cSJulian Grajkowski 39778ee8d1cSJulian Grajkowski struct icp_qat_suof_img_hdr { 39878ee8d1cSJulian Grajkowski const char *simg_buf; 39978ee8d1cSJulian Grajkowski unsigned long simg_len; 40078ee8d1cSJulian Grajkowski const char *css_header; 40178ee8d1cSJulian Grajkowski const char *css_key; 40278ee8d1cSJulian Grajkowski const char *css_signature; 40378ee8d1cSJulian Grajkowski const char *css_simg; 40478ee8d1cSJulian Grajkowski unsigned long simg_size; 40578ee8d1cSJulian Grajkowski unsigned int ae_num; 40678ee8d1cSJulian Grajkowski unsigned int ae_mask; 40778ee8d1cSJulian Grajkowski unsigned int fw_type; 40878ee8d1cSJulian Grajkowski unsigned long simg_name; 40978ee8d1cSJulian Grajkowski unsigned long appmeta_data; 41078ee8d1cSJulian Grajkowski }; 41178ee8d1cSJulian Grajkowski 41278ee8d1cSJulian Grajkowski struct icp_qat_suof_img_tbl { 41378ee8d1cSJulian Grajkowski unsigned int num_simgs; 41478ee8d1cSJulian Grajkowski struct icp_qat_suof_img_hdr *simg_hdr; 41578ee8d1cSJulian Grajkowski }; 41678ee8d1cSJulian Grajkowski 41778ee8d1cSJulian Grajkowski struct icp_qat_suof_handle { 41878ee8d1cSJulian Grajkowski unsigned int file_id; 41978ee8d1cSJulian Grajkowski unsigned int check_sum; 42078ee8d1cSJulian Grajkowski char min_ver; 42178ee8d1cSJulian Grajkowski char maj_ver; 42278ee8d1cSJulian Grajkowski char fw_type; 42378ee8d1cSJulian Grajkowski const char *suof_buf; 42478ee8d1cSJulian Grajkowski unsigned int suof_size; 42578ee8d1cSJulian Grajkowski char *sym_str; 42678ee8d1cSJulian Grajkowski unsigned int sym_size; 42778ee8d1cSJulian Grajkowski struct icp_qat_suof_img_tbl img_table; 42878ee8d1cSJulian Grajkowski }; 42978ee8d1cSJulian Grajkowski 43078ee8d1cSJulian Grajkowski struct icp_qat_fw_auth_desc { 43178ee8d1cSJulian Grajkowski unsigned int img_len; 43278ee8d1cSJulian Grajkowski unsigned int ae_mask; 43378ee8d1cSJulian Grajkowski unsigned int css_hdr_high; 43478ee8d1cSJulian Grajkowski unsigned int css_hdr_low; 43578ee8d1cSJulian Grajkowski unsigned int img_high; 43678ee8d1cSJulian Grajkowski unsigned int img_low; 43778ee8d1cSJulian Grajkowski unsigned int signature_high; 43878ee8d1cSJulian Grajkowski unsigned int signature_low; 43978ee8d1cSJulian Grajkowski unsigned int fwsk_pub_high; 44078ee8d1cSJulian Grajkowski unsigned int fwsk_pub_low; 44178ee8d1cSJulian Grajkowski unsigned int img_ae_mode_data_high; 44278ee8d1cSJulian Grajkowski unsigned int img_ae_mode_data_low; 44378ee8d1cSJulian Grajkowski unsigned int img_ae_init_data_high; 44478ee8d1cSJulian Grajkowski unsigned int img_ae_init_data_low; 44578ee8d1cSJulian Grajkowski unsigned int img_ae_insts_high; 44678ee8d1cSJulian Grajkowski unsigned int img_ae_insts_low; 44778ee8d1cSJulian Grajkowski }; 44878ee8d1cSJulian Grajkowski 44978ee8d1cSJulian Grajkowski struct icp_qat_auth_chunk { 45078ee8d1cSJulian Grajkowski struct icp_qat_fw_auth_desc fw_auth_desc; 45178ee8d1cSJulian Grajkowski u64 chunk_size; 45278ee8d1cSJulian Grajkowski u64 chunk_bus_addr; 45378ee8d1cSJulian Grajkowski }; 45478ee8d1cSJulian Grajkowski 45578ee8d1cSJulian Grajkowski struct icp_qat_css_hdr { 45678ee8d1cSJulian Grajkowski unsigned int module_type; 45778ee8d1cSJulian Grajkowski unsigned int header_len; 45878ee8d1cSJulian Grajkowski unsigned int header_ver; 45978ee8d1cSJulian Grajkowski unsigned int module_id; 46078ee8d1cSJulian Grajkowski unsigned int module_vendor; 46178ee8d1cSJulian Grajkowski unsigned int date; 46278ee8d1cSJulian Grajkowski unsigned int size; 46378ee8d1cSJulian Grajkowski unsigned int key_size; 46478ee8d1cSJulian Grajkowski unsigned int module_size; 46578ee8d1cSJulian Grajkowski unsigned int exponent_size; 46678ee8d1cSJulian Grajkowski unsigned int fw_type; 46778ee8d1cSJulian Grajkowski unsigned int reserved[21]; 46878ee8d1cSJulian Grajkowski }; 46978ee8d1cSJulian Grajkowski 47078ee8d1cSJulian Grajkowski struct icp_qat_simg_ae_mode { 47178ee8d1cSJulian Grajkowski unsigned int file_id; 47278ee8d1cSJulian Grajkowski unsigned short maj_ver; 47378ee8d1cSJulian Grajkowski unsigned short min_ver; 47478ee8d1cSJulian Grajkowski unsigned int dev_type; 47578ee8d1cSJulian Grajkowski unsigned short devmax_ver; 47678ee8d1cSJulian Grajkowski unsigned short devmin_ver; 47778ee8d1cSJulian Grajkowski unsigned int ae_mask; 47878ee8d1cSJulian Grajkowski unsigned int ctx_enables; 47978ee8d1cSJulian Grajkowski char fw_type; 48078ee8d1cSJulian Grajkowski char ctx_mode; 48178ee8d1cSJulian Grajkowski char nn_mode; 48278ee8d1cSJulian Grajkowski char lm0_mode; 48378ee8d1cSJulian Grajkowski char lm1_mode; 48478ee8d1cSJulian Grajkowski char scs_mode; 48578ee8d1cSJulian Grajkowski char lm2_mode; 48678ee8d1cSJulian Grajkowski char lm3_mode; 48778ee8d1cSJulian Grajkowski char tindex_mode; 48878ee8d1cSJulian Grajkowski unsigned char reserved[7]; 48978ee8d1cSJulian Grajkowski char simg_name[256]; 49078ee8d1cSJulian Grajkowski char appmeta_data[256]; 49178ee8d1cSJulian Grajkowski }; 49278ee8d1cSJulian Grajkowski 49378ee8d1cSJulian Grajkowski struct icp_qat_suof_filehdr { 49478ee8d1cSJulian Grajkowski unsigned int file_id; 49578ee8d1cSJulian Grajkowski unsigned int check_sum; 49678ee8d1cSJulian Grajkowski char min_ver; 49778ee8d1cSJulian Grajkowski char maj_ver; 49878ee8d1cSJulian Grajkowski char fw_type; 49978ee8d1cSJulian Grajkowski char reserved; 50078ee8d1cSJulian Grajkowski unsigned short max_chunks; 50178ee8d1cSJulian Grajkowski unsigned short num_chunks; 50278ee8d1cSJulian Grajkowski }; 50378ee8d1cSJulian Grajkowski 50478ee8d1cSJulian Grajkowski struct icp_qat_suof_chunk_hdr { 50578ee8d1cSJulian Grajkowski char chunk_id[ICP_QAT_SUOF_OBJ_ID_LEN]; 50678ee8d1cSJulian Grajkowski u64 offset; 50778ee8d1cSJulian Grajkowski u64 size; 50878ee8d1cSJulian Grajkowski }; 50978ee8d1cSJulian Grajkowski 51078ee8d1cSJulian Grajkowski struct icp_qat_suof_strtable { 51178ee8d1cSJulian Grajkowski unsigned int tab_length; 51278ee8d1cSJulian Grajkowski unsigned int strings; 51378ee8d1cSJulian Grajkowski }; 51478ee8d1cSJulian Grajkowski 51578ee8d1cSJulian Grajkowski struct icp_qat_suof_objhdr { 51678ee8d1cSJulian Grajkowski unsigned int img_length; 51778ee8d1cSJulian Grajkowski unsigned int reserved; 51878ee8d1cSJulian Grajkowski }; 51978ee8d1cSJulian Grajkowski 52078ee8d1cSJulian Grajkowski struct icp_qat_mof_file_hdr { 52178ee8d1cSJulian Grajkowski unsigned int file_id; 52278ee8d1cSJulian Grajkowski unsigned int checksum; 52378ee8d1cSJulian Grajkowski char min_ver; 52478ee8d1cSJulian Grajkowski char maj_ver; 52578ee8d1cSJulian Grajkowski unsigned short reserved; 52678ee8d1cSJulian Grajkowski unsigned short max_chunks; 52778ee8d1cSJulian Grajkowski unsigned short num_chunks; 52878ee8d1cSJulian Grajkowski }; 52978ee8d1cSJulian Grajkowski 53078ee8d1cSJulian Grajkowski struct icp_qat_mof_chunkhdr { 53178ee8d1cSJulian Grajkowski char chunk_id[ICP_QAT_MOF_OBJ_ID_LEN]; 53278ee8d1cSJulian Grajkowski u64 offset; 53378ee8d1cSJulian Grajkowski u64 size; 53478ee8d1cSJulian Grajkowski }; 53578ee8d1cSJulian Grajkowski 53678ee8d1cSJulian Grajkowski struct icp_qat_mof_str_table { 53778ee8d1cSJulian Grajkowski unsigned int tab_len; 53878ee8d1cSJulian Grajkowski unsigned int strings; 53978ee8d1cSJulian Grajkowski }; 54078ee8d1cSJulian Grajkowski 54178ee8d1cSJulian Grajkowski struct icp_qat_mof_obj_hdr { 54278ee8d1cSJulian Grajkowski unsigned short max_chunks; 54378ee8d1cSJulian Grajkowski unsigned short num_chunks; 54478ee8d1cSJulian Grajkowski unsigned int reserved; 54578ee8d1cSJulian Grajkowski }; 54678ee8d1cSJulian Grajkowski 54778ee8d1cSJulian Grajkowski struct icp_qat_mof_obj_chunkhdr { 54878ee8d1cSJulian Grajkowski char chunk_id[ICP_QAT_MOF_OBJ_CHUNKID_LEN]; 54978ee8d1cSJulian Grajkowski u64 offset; 55078ee8d1cSJulian Grajkowski u64 size; 55178ee8d1cSJulian Grajkowski unsigned int name; 55278ee8d1cSJulian Grajkowski unsigned int reserved; 55378ee8d1cSJulian Grajkowski }; 55478ee8d1cSJulian Grajkowski 55578ee8d1cSJulian Grajkowski struct icp_qat_mof_objhdr { 55678ee8d1cSJulian Grajkowski char *obj_name; 55778ee8d1cSJulian Grajkowski const char *obj_buf; 55878ee8d1cSJulian Grajkowski unsigned int obj_size; 55978ee8d1cSJulian Grajkowski }; 56078ee8d1cSJulian Grajkowski 56178ee8d1cSJulian Grajkowski struct icp_qat_mof_table { 56278ee8d1cSJulian Grajkowski unsigned int num_objs; 56378ee8d1cSJulian Grajkowski struct icp_qat_mof_objhdr *obj_hdr; 56478ee8d1cSJulian Grajkowski }; 56578ee8d1cSJulian Grajkowski 56678ee8d1cSJulian Grajkowski struct icp_qat_mof_handle { 56778ee8d1cSJulian Grajkowski unsigned int file_id; 56878ee8d1cSJulian Grajkowski unsigned int checksum; 56978ee8d1cSJulian Grajkowski char min_ver; 57078ee8d1cSJulian Grajkowski char maj_ver; 57178ee8d1cSJulian Grajkowski const char *mof_buf; 57278ee8d1cSJulian Grajkowski u32 mof_size; 57378ee8d1cSJulian Grajkowski char *sym_str; 57478ee8d1cSJulian Grajkowski unsigned int sym_size; 57578ee8d1cSJulian Grajkowski const char *uobjs_hdr; 57678ee8d1cSJulian Grajkowski const char *sobjs_hdr; 57778ee8d1cSJulian Grajkowski struct icp_qat_mof_table obj_table; 57878ee8d1cSJulian Grajkowski }; 57978ee8d1cSJulian Grajkowski #endif 580