1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef _USR_IDXD_H_ 8*8d67ca89SAndroid Build Coastguard Worker #define _USR_IDXD_H_ 9*8d67ca89SAndroid Build Coastguard Worker #include <stdint.h> 10*8d67ca89SAndroid Build Coastguard Worker enum idxd_scmd_stat { 11*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_DEV_ENABLED = 0x80000010, 12*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_DEV_NOT_ENABLED = 0x80000020, 13*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_ENABLED = 0x80000021, 14*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_DEV_DMA_ERR = 0x80020000, 15*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_GRP = 0x80030000, 16*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_NAME = 0x80040000, 17*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_SVM = 0x80050000, 18*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_THRESH = 0x80060000, 19*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_PORTAL_ERR = 0x80070000, 20*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_RES_ALLOC_ERR = 0x80080000, 21*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_PERCPU_ERR = 0x80090000, 22*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_DMA_CHAN_ERR = 0x800a0000, 23*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_CDEV_ERR = 0x800b0000, 24*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_SWQ_SUPPORT = 0x800c0000, 25*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NONE_CONFIGURED = 0x800d0000, 26*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_SIZE = 0x800e0000, 27*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_PRIV = 0x800f0000, 28*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_IRQ_ERR = 0x80100000, 29*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000, 30*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_DEV_EVL_ERR = 0x80120000, 31*8d67ca89SAndroid Build Coastguard Worker IDXD_SCMD_WQ_NO_DRV_NAME = 0x80200000, 32*8d67ca89SAndroid Build Coastguard Worker }; 33*8d67ca89SAndroid Build Coastguard Worker #define IDXD_SCMD_SOFTERR_MASK 0x80000000 34*8d67ca89SAndroid Build Coastguard Worker #define IDXD_SCMD_SOFTERR_SHIFT 16 35*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_FENCE 0x0001 36*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_BOF 0x0002 37*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CRAV 0x0004 38*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_RCR 0x0008 39*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_RCI 0x0010 40*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CRSTS 0x0020 41*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CR 0x0080 42*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CC 0x0100 43*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_ADDR1_TCS 0x0200 44*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_ADDR2_TCS 0x0400 45*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_ADDR3_TCS 0x0800 46*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CR_TCS 0x1000 47*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_STORD 0x2000 48*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_DRDBK 0x4000 49*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_DSTS 0x8000 50*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000 51*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000 52*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000 53*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000 54*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_SRC2_STS 0x100000 55*8d67ca89SAndroid Build Coastguard Worker #define IDXD_OP_FLAG_CRC_RFC3720 0x200000 56*8d67ca89SAndroid Build Coastguard Worker enum dsa_opcode { 57*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_NOOP = 0, 58*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_BATCH, 59*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DRAIN, 60*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_MEMMOVE, 61*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_MEMFILL, 62*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_COMPARE, 63*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_COMPVAL, 64*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_CR_DELTA, 65*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_AP_DELTA, 66*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DUALCAST, 67*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_TRANSL_FETCH, 68*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_CRCGEN = 0x10, 69*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_COPY_CRC, 70*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DIF_CHECK, 71*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DIF_INS, 72*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DIF_STRP, 73*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DIF_UPDT, 74*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_DIX_GEN = 0x17, 75*8d67ca89SAndroid Build Coastguard Worker DSA_OPCODE_CFLUSH = 0x20, 76*8d67ca89SAndroid Build Coastguard Worker }; 77*8d67ca89SAndroid Build Coastguard Worker enum iax_opcode { 78*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_NOOP = 0, 79*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_DRAIN = 2, 80*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_MEMMOVE, 81*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_DECOMPRESS = 0x42, 82*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_COMPRESS, 83*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_CRC64, 84*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_ZERO_DECOMP_32 = 0x48, 85*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_ZERO_DECOMP_16, 86*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_ZERO_COMP_32 = 0x4c, 87*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_ZERO_COMP_16, 88*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_SCAN = 0x50, 89*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_SET_MEMBER, 90*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_EXTRACT, 91*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_SELECT, 92*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_RLE_BURST, 93*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_FIND_UNIQUE, 94*8d67ca89SAndroid Build Coastguard Worker IAX_OPCODE_EXPAND, 95*8d67ca89SAndroid Build Coastguard Worker }; 96*8d67ca89SAndroid Build Coastguard Worker enum dsa_completion_status { 97*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_NONE = 0, 98*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_SUCCESS, 99*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_SUCCESS_PRED, 100*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_PAGE_FAULT_NOBOF, 101*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_PAGE_FAULT_IR, 102*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_BATCH_FAIL, 103*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_BATCH_PAGE_FAULT, 104*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DR_OFFSET_NOINC, 105*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DR_OFFSET_ERANGE, 106*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DIF_ERR, 107*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_BAD_OPCODE = 0x10, 108*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_INVALID_FLAGS, 109*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_NOZERO_RESERVE, 110*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_XFER_ERANGE, 111*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DESC_CNT_ERANGE, 112*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DR_ERANGE, 113*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_OVERLAP_BUFFERS, 114*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DCAST_ERR, 115*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DESCLIST_ALIGN, 116*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_INT_HANDLE_INVAL, 117*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_CRA_XLAT, 118*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_CRA_ALIGN, 119*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_ADDR_ALIGN, 120*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_PRIV_BAD, 121*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_TRAFFIC_CLASS_CONF, 122*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_PFAULT_RDBA, 123*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_HW_ERR1, 124*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_HW_ERR_DRB, 125*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_TRANSLATION_FAIL, 126*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_DRAIN_EVL = 0x26, 127*8d67ca89SAndroid Build Coastguard Worker DSA_COMP_BATCH_EVL_ERR, 128*8d67ca89SAndroid Build Coastguard Worker }; 129*8d67ca89SAndroid Build Coastguard Worker enum iax_completion_status { 130*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_NONE = 0, 131*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_SUCCESS, 132*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_PAGE_FAULT_IR = 0x04, 133*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_ANALYTICS_ERROR = 0x0a, 134*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_OUTBUF_OVERFLOW, 135*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_BAD_OPCODE = 0x10, 136*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_FLAGS, 137*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_NOZERO_RESERVE, 138*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_SIZE, 139*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_OVERLAP_BUFFERS = 0x16, 140*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INT_HANDLE_INVAL = 0x19, 141*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_CRA_XLAT, 142*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_CRA_ALIGN, 143*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_ADDR_ALIGN, 144*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_PRIV_BAD, 145*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_TRAFFIC_CLASS_CONF, 146*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_PFAULT_RDBA, 147*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_HW_ERR1, 148*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_HW_ERR_DRB, 149*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_TRANSLATION_FAIL, 150*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_PRS_TIMEOUT, 151*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_WATCHDOG, 152*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_COMP_FLAG = 0x30, 153*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_FILTER_FLAG, 154*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_INPUT_SIZE, 155*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_NUM_ELEMS, 156*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_SRC1_WIDTH, 157*8d67ca89SAndroid Build Coastguard Worker IAX_COMP_INVALID_INVERT_OUT, 158*8d67ca89SAndroid Build Coastguard Worker }; 159*8d67ca89SAndroid Build Coastguard Worker #define DSA_COMP_STATUS_MASK 0x7f 160*8d67ca89SAndroid Build Coastguard Worker #define DSA_COMP_STATUS_WRITE 0x80 161*8d67ca89SAndroid Build Coastguard Worker #define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK) 162*8d67ca89SAndroid Build Coastguard Worker struct dsa_hw_desc { 163*8d67ca89SAndroid Build Coastguard Worker uint32_t pasid : 20; 164*8d67ca89SAndroid Build Coastguard Worker uint32_t rsvd : 11; 165*8d67ca89SAndroid Build Coastguard Worker uint32_t priv : 1; 166*8d67ca89SAndroid Build Coastguard Worker uint32_t flags : 24; 167*8d67ca89SAndroid Build Coastguard Worker uint32_t opcode : 8; 168*8d67ca89SAndroid Build Coastguard Worker uint64_t completion_addr; 169*8d67ca89SAndroid Build Coastguard Worker union { 170*8d67ca89SAndroid Build Coastguard Worker uint64_t src_addr; 171*8d67ca89SAndroid Build Coastguard Worker uint64_t rdback_addr; 172*8d67ca89SAndroid Build Coastguard Worker uint64_t pattern; 173*8d67ca89SAndroid Build Coastguard Worker uint64_t desc_list_addr; 174*8d67ca89SAndroid Build Coastguard Worker uint64_t pattern_lower; 175*8d67ca89SAndroid Build Coastguard Worker uint64_t transl_fetch_addr; 176*8d67ca89SAndroid Build Coastguard Worker }; 177*8d67ca89SAndroid Build Coastguard Worker union { 178*8d67ca89SAndroid Build Coastguard Worker uint64_t dst_addr; 179*8d67ca89SAndroid Build Coastguard Worker uint64_t rdback_addr2; 180*8d67ca89SAndroid Build Coastguard Worker uint64_t src2_addr; 181*8d67ca89SAndroid Build Coastguard Worker uint64_t comp_pattern; 182*8d67ca89SAndroid Build Coastguard Worker }; 183*8d67ca89SAndroid Build Coastguard Worker union { 184*8d67ca89SAndroid Build Coastguard Worker uint32_t xfer_size; 185*8d67ca89SAndroid Build Coastguard Worker uint32_t desc_count; 186*8d67ca89SAndroid Build Coastguard Worker uint32_t region_size; 187*8d67ca89SAndroid Build Coastguard Worker }; 188*8d67ca89SAndroid Build Coastguard Worker uint16_t int_handle; 189*8d67ca89SAndroid Build Coastguard Worker uint16_t rsvd1; 190*8d67ca89SAndroid Build Coastguard Worker union { 191*8d67ca89SAndroid Build Coastguard Worker uint8_t expected_res; 192*8d67ca89SAndroid Build Coastguard Worker struct { 193*8d67ca89SAndroid Build Coastguard Worker uint64_t delta_addr; 194*8d67ca89SAndroid Build Coastguard Worker uint32_t max_delta_size; 195*8d67ca89SAndroid Build Coastguard Worker uint32_t delt_rsvd; 196*8d67ca89SAndroid Build Coastguard Worker uint8_t expected_res_mask; 197*8d67ca89SAndroid Build Coastguard Worker }; 198*8d67ca89SAndroid Build Coastguard Worker uint32_t delta_rec_size; 199*8d67ca89SAndroid Build Coastguard Worker uint64_t dest2; 200*8d67ca89SAndroid Build Coastguard Worker struct { 201*8d67ca89SAndroid Build Coastguard Worker uint32_t crc_seed; 202*8d67ca89SAndroid Build Coastguard Worker uint32_t crc_rsvd; 203*8d67ca89SAndroid Build Coastguard Worker uint64_t seed_addr; 204*8d67ca89SAndroid Build Coastguard Worker }; 205*8d67ca89SAndroid Build Coastguard Worker struct { 206*8d67ca89SAndroid Build Coastguard Worker uint8_t src_dif_flags; 207*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_chk_res; 208*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_chk_flags; 209*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_chk_res2[5]; 210*8d67ca89SAndroid Build Coastguard Worker uint32_t chk_ref_tag_seed; 211*8d67ca89SAndroid Build Coastguard Worker uint16_t chk_app_tag_mask; 212*8d67ca89SAndroid Build Coastguard Worker uint16_t chk_app_tag_seed; 213*8d67ca89SAndroid Build Coastguard Worker }; 214*8d67ca89SAndroid Build Coastguard Worker struct { 215*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_ins_res; 216*8d67ca89SAndroid Build Coastguard Worker uint8_t dest_dif_flag; 217*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_ins_flags; 218*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_ins_res2[13]; 219*8d67ca89SAndroid Build Coastguard Worker uint32_t ins_ref_tag_seed; 220*8d67ca89SAndroid Build Coastguard Worker uint16_t ins_app_tag_mask; 221*8d67ca89SAndroid Build Coastguard Worker uint16_t ins_app_tag_seed; 222*8d67ca89SAndroid Build Coastguard Worker }; 223*8d67ca89SAndroid Build Coastguard Worker struct { 224*8d67ca89SAndroid Build Coastguard Worker uint8_t src_upd_flags; 225*8d67ca89SAndroid Build Coastguard Worker uint8_t upd_dest_flags; 226*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_upd_flags; 227*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_upd_res[5]; 228*8d67ca89SAndroid Build Coastguard Worker uint32_t src_ref_tag_seed; 229*8d67ca89SAndroid Build Coastguard Worker uint16_t src_app_tag_mask; 230*8d67ca89SAndroid Build Coastguard Worker uint16_t src_app_tag_seed; 231*8d67ca89SAndroid Build Coastguard Worker uint32_t dest_ref_tag_seed; 232*8d67ca89SAndroid Build Coastguard Worker uint16_t dest_app_tag_mask; 233*8d67ca89SAndroid Build Coastguard Worker uint16_t dest_app_tag_seed; 234*8d67ca89SAndroid Build Coastguard Worker }; 235*8d67ca89SAndroid Build Coastguard Worker uint64_t pattern_upper; 236*8d67ca89SAndroid Build Coastguard Worker struct { 237*8d67ca89SAndroid Build Coastguard Worker uint64_t transl_fetch_res; 238*8d67ca89SAndroid Build Coastguard Worker uint32_t region_stride; 239*8d67ca89SAndroid Build Coastguard Worker }; 240*8d67ca89SAndroid Build Coastguard Worker struct { 241*8d67ca89SAndroid Build Coastguard Worker uint8_t dix_gen_res; 242*8d67ca89SAndroid Build Coastguard Worker uint8_t dest_dif_flags; 243*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_flags; 244*8d67ca89SAndroid Build Coastguard Worker uint8_t dix_gen_res2[13]; 245*8d67ca89SAndroid Build Coastguard Worker uint32_t ref_tag_seed; 246*8d67ca89SAndroid Build Coastguard Worker uint16_t app_tag_mask; 247*8d67ca89SAndroid Build Coastguard Worker uint16_t app_tag_seed; 248*8d67ca89SAndroid Build Coastguard Worker }; 249*8d67ca89SAndroid Build Coastguard Worker uint8_t op_specific[24]; 250*8d67ca89SAndroid Build Coastguard Worker }; 251*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 252*8d67ca89SAndroid Build Coastguard Worker struct iax_hw_desc { 253*8d67ca89SAndroid Build Coastguard Worker uint32_t pasid : 20; 254*8d67ca89SAndroid Build Coastguard Worker uint32_t rsvd : 11; 255*8d67ca89SAndroid Build Coastguard Worker uint32_t priv : 1; 256*8d67ca89SAndroid Build Coastguard Worker uint32_t flags : 24; 257*8d67ca89SAndroid Build Coastguard Worker uint32_t opcode : 8; 258*8d67ca89SAndroid Build Coastguard Worker uint64_t completion_addr; 259*8d67ca89SAndroid Build Coastguard Worker uint64_t src1_addr; 260*8d67ca89SAndroid Build Coastguard Worker uint64_t dst_addr; 261*8d67ca89SAndroid Build Coastguard Worker uint32_t src1_size; 262*8d67ca89SAndroid Build Coastguard Worker uint16_t int_handle; 263*8d67ca89SAndroid Build Coastguard Worker union { 264*8d67ca89SAndroid Build Coastguard Worker uint16_t compr_flags; 265*8d67ca89SAndroid Build Coastguard Worker uint16_t decompr_flags; 266*8d67ca89SAndroid Build Coastguard Worker }; 267*8d67ca89SAndroid Build Coastguard Worker uint64_t src2_addr; 268*8d67ca89SAndroid Build Coastguard Worker uint32_t max_dst_size; 269*8d67ca89SAndroid Build Coastguard Worker uint32_t src2_size; 270*8d67ca89SAndroid Build Coastguard Worker uint32_t filter_flags; 271*8d67ca89SAndroid Build Coastguard Worker uint32_t num_inputs; 272*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 273*8d67ca89SAndroid Build Coastguard Worker struct dsa_raw_desc { 274*8d67ca89SAndroid Build Coastguard Worker uint64_t field[8]; 275*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 276*8d67ca89SAndroid Build Coastguard Worker struct dsa_completion_record { 277*8d67ca89SAndroid Build Coastguard Worker volatile uint8_t status; 278*8d67ca89SAndroid Build Coastguard Worker union { 279*8d67ca89SAndroid Build Coastguard Worker uint8_t result; 280*8d67ca89SAndroid Build Coastguard Worker uint8_t dif_status; 281*8d67ca89SAndroid Build Coastguard Worker }; 282*8d67ca89SAndroid Build Coastguard Worker uint8_t fault_info; 283*8d67ca89SAndroid Build Coastguard Worker uint8_t rsvd; 284*8d67ca89SAndroid Build Coastguard Worker union { 285*8d67ca89SAndroid Build Coastguard Worker uint32_t bytes_completed; 286*8d67ca89SAndroid Build Coastguard Worker uint32_t descs_completed; 287*8d67ca89SAndroid Build Coastguard Worker }; 288*8d67ca89SAndroid Build Coastguard Worker uint64_t fault_addr; 289*8d67ca89SAndroid Build Coastguard Worker union { 290*8d67ca89SAndroid Build Coastguard Worker struct { 291*8d67ca89SAndroid Build Coastguard Worker uint32_t invalid_flags : 24; 292*8d67ca89SAndroid Build Coastguard Worker uint32_t rsvd2 : 8; 293*8d67ca89SAndroid Build Coastguard Worker }; 294*8d67ca89SAndroid Build Coastguard Worker uint32_t delta_rec_size; 295*8d67ca89SAndroid Build Coastguard Worker uint64_t crc_val; 296*8d67ca89SAndroid Build Coastguard Worker struct { 297*8d67ca89SAndroid Build Coastguard Worker uint32_t dif_chk_ref_tag; 298*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_chk_app_tag_mask; 299*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_chk_app_tag; 300*8d67ca89SAndroid Build Coastguard Worker }; 301*8d67ca89SAndroid Build Coastguard Worker struct { 302*8d67ca89SAndroid Build Coastguard Worker uint64_t dif_ins_res; 303*8d67ca89SAndroid Build Coastguard Worker uint32_t dif_ins_ref_tag; 304*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_ins_app_tag_mask; 305*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_ins_app_tag; 306*8d67ca89SAndroid Build Coastguard Worker }; 307*8d67ca89SAndroid Build Coastguard Worker struct { 308*8d67ca89SAndroid Build Coastguard Worker uint32_t dif_upd_src_ref_tag; 309*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_upd_src_app_tag_mask; 310*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_upd_src_app_tag; 311*8d67ca89SAndroid Build Coastguard Worker uint32_t dif_upd_dest_ref_tag; 312*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_upd_dest_app_tag_mask; 313*8d67ca89SAndroid Build Coastguard Worker uint16_t dif_upd_dest_app_tag; 314*8d67ca89SAndroid Build Coastguard Worker }; 315*8d67ca89SAndroid Build Coastguard Worker struct { 316*8d67ca89SAndroid Build Coastguard Worker uint64_t dix_gen_res; 317*8d67ca89SAndroid Build Coastguard Worker uint32_t dix_ref_tag; 318*8d67ca89SAndroid Build Coastguard Worker uint16_t dix_app_tag_mask; 319*8d67ca89SAndroid Build Coastguard Worker uint16_t dix_app_tag; 320*8d67ca89SAndroid Build Coastguard Worker }; 321*8d67ca89SAndroid Build Coastguard Worker uint8_t op_specific[16]; 322*8d67ca89SAndroid Build Coastguard Worker }; 323*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 324*8d67ca89SAndroid Build Coastguard Worker struct dsa_raw_completion_record { 325*8d67ca89SAndroid Build Coastguard Worker uint64_t field[4]; 326*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 327*8d67ca89SAndroid Build Coastguard Worker struct iax_completion_record { 328*8d67ca89SAndroid Build Coastguard Worker volatile uint8_t status; 329*8d67ca89SAndroid Build Coastguard Worker uint8_t error_code; 330*8d67ca89SAndroid Build Coastguard Worker uint8_t fault_info; 331*8d67ca89SAndroid Build Coastguard Worker uint8_t rsvd; 332*8d67ca89SAndroid Build Coastguard Worker uint32_t bytes_completed; 333*8d67ca89SAndroid Build Coastguard Worker uint64_t fault_addr; 334*8d67ca89SAndroid Build Coastguard Worker uint32_t invalid_flags; 335*8d67ca89SAndroid Build Coastguard Worker uint32_t rsvd2; 336*8d67ca89SAndroid Build Coastguard Worker uint32_t output_size; 337*8d67ca89SAndroid Build Coastguard Worker uint8_t output_bits; 338*8d67ca89SAndroid Build Coastguard Worker uint8_t rsvd3; 339*8d67ca89SAndroid Build Coastguard Worker uint16_t xor_csum; 340*8d67ca89SAndroid Build Coastguard Worker uint32_t crc; 341*8d67ca89SAndroid Build Coastguard Worker uint32_t min; 342*8d67ca89SAndroid Build Coastguard Worker uint32_t max; 343*8d67ca89SAndroid Build Coastguard Worker uint32_t sum; 344*8d67ca89SAndroid Build Coastguard Worker uint64_t rsvd4[2]; 345*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 346*8d67ca89SAndroid Build Coastguard Worker struct iax_raw_completion_record { 347*8d67ca89SAndroid Build Coastguard Worker uint64_t field[8]; 348*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 349*8d67ca89SAndroid Build Coastguard Worker #endif 350