0001
0002
0003
0004
0005
0006
0007
0008 #ifndef GAUDI_PACKETS_H
0009 #define GAUDI_PACKETS_H
0010
0011 #include <linux/types.h>
0012
0013 #define PACKET_HEADER_PACKET_ID_SHIFT 56
0014 #define PACKET_HEADER_PACKET_ID_MASK 0x1F00000000000000ull
0015
0016 enum packet_id {
0017 PACKET_WREG_32 = 0x1,
0018 PACKET_WREG_BULK = 0x2,
0019 PACKET_MSG_LONG = 0x3,
0020 PACKET_MSG_SHORT = 0x4,
0021 PACKET_CP_DMA = 0x5,
0022 PACKET_REPEAT = 0x6,
0023 PACKET_MSG_PROT = 0x7,
0024 PACKET_FENCE = 0x8,
0025 PACKET_LIN_DMA = 0x9,
0026 PACKET_NOP = 0xA,
0027 PACKET_STOP = 0xB,
0028 PACKET_ARB_POINT = 0xC,
0029 PACKET_WAIT = 0xD,
0030 PACKET_LOAD_AND_EXE = 0xF,
0031 MAX_PACKET_ID = (PACKET_HEADER_PACKET_ID_MASK >>
0032 PACKET_HEADER_PACKET_ID_SHIFT) + 1
0033 };
0034
0035 #define GAUDI_PKT_CTL_OPCODE_SHIFT 24
0036 #define GAUDI_PKT_CTL_OPCODE_MASK 0x1F000000
0037
0038 #define GAUDI_PKT_CTL_EB_SHIFT 29
0039 #define GAUDI_PKT_CTL_EB_MASK 0x20000000
0040
0041 #define GAUDI_PKT_CTL_RB_SHIFT 30
0042 #define GAUDI_PKT_CTL_RB_MASK 0x40000000
0043
0044 #define GAUDI_PKT_CTL_MB_SHIFT 31
0045 #define GAUDI_PKT_CTL_MB_MASK 0x80000000
0046
0047
0048
0049
0050
0051
0052 struct gaudi_packet {
0053 __le64 header;
0054
0055
0056
0057 u8 contents[];
0058 };
0059
0060 struct packet_nop {
0061 __le32 reserved;
0062 __le32 ctl;
0063 };
0064
0065 struct packet_stop {
0066 __le32 reserved;
0067 __le32 ctl;
0068 };
0069
0070 struct packet_wreg32 {
0071 __le32 value;
0072 __le32 ctl;
0073 };
0074
0075 struct packet_wreg_bulk {
0076 __le32 size64;
0077 __le32 ctl;
0078 __le64 values[];
0079 };
0080
0081 #define GAUDI_PKT_LONG_CTL_OP_SHIFT 20
0082 #define GAUDI_PKT_LONG_CTL_OP_MASK 0x00300000
0083
0084 struct packet_msg_long {
0085 __le32 value;
0086 __le32 ctl;
0087 __le64 addr;
0088 };
0089
0090 #define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_SHIFT 0
0091 #define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_MASK 0x00007FFF
0092
0093 #define GAUDI_PKT_SHORT_VAL_SOB_MOD_SHIFT 31
0094 #define GAUDI_PKT_SHORT_VAL_SOB_MOD_MASK 0x80000000
0095
0096 #define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_SHIFT 0
0097 #define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_MASK 0x000000FF
0098
0099 #define GAUDI_PKT_SHORT_VAL_MON_MASK_SHIFT 8
0100 #define GAUDI_PKT_SHORT_VAL_MON_MASK_MASK 0x0000FF00
0101
0102 #define GAUDI_PKT_SHORT_VAL_MON_MODE_SHIFT 16
0103 #define GAUDI_PKT_SHORT_VAL_MON_MODE_MASK 0x00010000
0104
0105 #define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_SHIFT 17
0106 #define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_MASK 0xFFFE0000
0107
0108 #define GAUDI_PKT_SHORT_CTL_ADDR_SHIFT 0
0109 #define GAUDI_PKT_SHORT_CTL_ADDR_MASK 0x0000FFFF
0110
0111 #define GAUDI_PKT_SHORT_CTL_OP_SHIFT 20
0112 #define GAUDI_PKT_SHORT_CTL_OP_MASK 0x00300000
0113
0114 #define GAUDI_PKT_SHORT_CTL_BASE_SHIFT 22
0115 #define GAUDI_PKT_SHORT_CTL_BASE_MASK 0x00C00000
0116
0117 struct packet_msg_short {
0118 __le32 value;
0119 __le32 ctl;
0120 };
0121
0122 struct packet_msg_prot {
0123 __le32 value;
0124 __le32 ctl;
0125 __le64 addr;
0126 };
0127
0128 #define GAUDI_PKT_FENCE_CFG_DEC_VAL_SHIFT 0
0129 #define GAUDI_PKT_FENCE_CFG_DEC_VAL_MASK 0x0000000F
0130
0131 #define GAUDI_PKT_FENCE_CFG_TARGET_VAL_SHIFT 16
0132 #define GAUDI_PKT_FENCE_CFG_TARGET_VAL_MASK 0x00FF0000
0133
0134 #define GAUDI_PKT_FENCE_CFG_ID_SHIFT 30
0135 #define GAUDI_PKT_FENCE_CFG_ID_MASK 0xC0000000
0136
0137 #define GAUDI_PKT_FENCE_CTL_PRED_SHIFT 0
0138 #define GAUDI_PKT_FENCE_CTL_PRED_MASK 0x0000001F
0139
0140 struct packet_fence {
0141 __le32 cfg;
0142 __le32 ctl;
0143 };
0144
0145 #define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_SHIFT 0
0146 #define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_MASK 0x00000001
0147
0148 #define GAUDI_PKT_LIN_DMA_CTL_LIN_SHIFT 3
0149 #define GAUDI_PKT_LIN_DMA_CTL_LIN_MASK 0x00000008
0150
0151 #define GAUDI_PKT_LIN_DMA_CTL_MEMSET_SHIFT 4
0152 #define GAUDI_PKT_LIN_DMA_CTL_MEMSET_MASK 0x00000010
0153
0154 #define GAUDI_PKT_LIN_DMA_DST_ADDR_SHIFT 0
0155 #define GAUDI_PKT_LIN_DMA_DST_ADDR_MASK 0x00FFFFFFFFFFFFFFull
0156
0157 struct packet_lin_dma {
0158 __le32 tsize;
0159 __le32 ctl;
0160 __le64 src_addr;
0161 __le64 dst_addr;
0162 };
0163
0164 struct packet_arb_point {
0165 __le32 cfg;
0166 __le32 ctl;
0167 };
0168
0169 struct packet_repeat {
0170 __le32 cfg;
0171 __le32 ctl;
0172 };
0173
0174 struct packet_wait {
0175 __le32 cfg;
0176 __le32 ctl;
0177 };
0178
0179 #define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_SHIFT 0
0180 #define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_MASK 0x00000001
0181
0182 struct packet_load_and_exe {
0183 __le32 cfg;
0184 __le32 ctl;
0185 __le64 src_addr;
0186 };
0187
0188 struct packet_cp_dma {
0189 __le32 tsize;
0190 __le32 ctl;
0191 __le64 src_addr;
0192 };
0193
0194 #endif