Path: blob/master/drivers/accel/habanalabs/include/gaudi/gaudi_packets.h
26445 views
/* SPDX-License-Identifier: GPL-2.01*2* Copyright 2017-2020 HabanaLabs, Ltd.3* All Rights Reserved.4*5*/67#ifndef GAUDI_PACKETS_H8#define GAUDI_PACKETS_H910#include <linux/types.h>1112#define PACKET_HEADER_PACKET_ID_SHIFT 5613#define PACKET_HEADER_PACKET_ID_MASK 0x1F00000000000000ull1415enum packet_id {16PACKET_WREG_32 = 0x1,17PACKET_WREG_BULK = 0x2,18PACKET_MSG_LONG = 0x3,19PACKET_MSG_SHORT = 0x4,20PACKET_CP_DMA = 0x5,21PACKET_REPEAT = 0x6,22PACKET_MSG_PROT = 0x7,23PACKET_FENCE = 0x8,24PACKET_LIN_DMA = 0x9,25PACKET_NOP = 0xA,26PACKET_STOP = 0xB,27PACKET_ARB_POINT = 0xC,28PACKET_WAIT = 0xD,29PACKET_LOAD_AND_EXE = 0xF,30MAX_PACKET_ID = (PACKET_HEADER_PACKET_ID_MASK >>31PACKET_HEADER_PACKET_ID_SHIFT) + 132};3334#define GAUDI_PKT_CTL_OPCODE_SHIFT 2435#define GAUDI_PKT_CTL_OPCODE_MASK 0x1F0000003637#define GAUDI_PKT_CTL_EB_SHIFT 2938#define GAUDI_PKT_CTL_EB_MASK 0x200000003940#define GAUDI_PKT_CTL_RB_SHIFT 3041#define GAUDI_PKT_CTL_RB_MASK 0x400000004243#define GAUDI_PKT_CTL_MB_SHIFT 3144#define GAUDI_PKT_CTL_MB_MASK 0x800000004546/* All packets have, at least, an 8-byte header, which contains47* the packet type. The kernel driver uses the packet header for packet48* validation and to perform any necessary required preparation before49* sending them off to the hardware.50*/51struct gaudi_packet {52__le64 header;53/* The rest of the packet data follows. Use the corresponding54* packet_XXX struct to deference the data, based on packet type55*/56u8 contents[];57};5859struct packet_nop {60__le32 reserved;61__le32 ctl;62};6364struct packet_stop {65__le32 reserved;66__le32 ctl;67};6869struct packet_wreg32 {70__le32 value;71__le32 ctl;72};7374struct packet_wreg_bulk {75__le32 size64;76__le32 ctl;77__le64 values[]; /* data starts here */78};7980#define GAUDI_PKT_LONG_CTL_OP_SHIFT 2081#define GAUDI_PKT_LONG_CTL_OP_MASK 0x003000008283struct packet_msg_long {84__le32 value;85__le32 ctl;86__le64 addr;87};8889#define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_SHIFT 090#define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_MASK 0x00007FFF9192#define GAUDI_PKT_SHORT_VAL_SOB_MOD_SHIFT 3193#define GAUDI_PKT_SHORT_VAL_SOB_MOD_MASK 0x800000009495#define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_SHIFT 096#define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_MASK 0x000000FF9798#define GAUDI_PKT_SHORT_VAL_MON_MASK_SHIFT 899#define GAUDI_PKT_SHORT_VAL_MON_MASK_MASK 0x0000FF00100101#define GAUDI_PKT_SHORT_VAL_MON_MODE_SHIFT 16102#define GAUDI_PKT_SHORT_VAL_MON_MODE_MASK 0x00010000103104#define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_SHIFT 17105#define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_MASK 0xFFFE0000106107#define GAUDI_PKT_SHORT_CTL_ADDR_SHIFT 0108#define GAUDI_PKT_SHORT_CTL_ADDR_MASK 0x0000FFFF109110#define GAUDI_PKT_SHORT_CTL_OP_SHIFT 20111#define GAUDI_PKT_SHORT_CTL_OP_MASK 0x00300000112113#define GAUDI_PKT_SHORT_CTL_BASE_SHIFT 22114#define GAUDI_PKT_SHORT_CTL_BASE_MASK 0x00C00000115116struct packet_msg_short {117__le32 value;118__le32 ctl;119};120121struct packet_msg_prot {122__le32 value;123__le32 ctl;124__le64 addr;125};126127#define GAUDI_PKT_FENCE_CFG_DEC_VAL_SHIFT 0128#define GAUDI_PKT_FENCE_CFG_DEC_VAL_MASK 0x0000000F129130#define GAUDI_PKT_FENCE_CFG_TARGET_VAL_SHIFT 16131#define GAUDI_PKT_FENCE_CFG_TARGET_VAL_MASK 0x00FF0000132133#define GAUDI_PKT_FENCE_CFG_ID_SHIFT 30134#define GAUDI_PKT_FENCE_CFG_ID_MASK 0xC0000000135136#define GAUDI_PKT_FENCE_CTL_PRED_SHIFT 0137#define GAUDI_PKT_FENCE_CTL_PRED_MASK 0x0000001F138139struct packet_fence {140__le32 cfg;141__le32 ctl;142};143144#define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_SHIFT 0145#define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_MASK 0x00000001146147#define GAUDI_PKT_LIN_DMA_CTL_LIN_SHIFT 3148#define GAUDI_PKT_LIN_DMA_CTL_LIN_MASK 0x00000008149150#define GAUDI_PKT_LIN_DMA_CTL_MEMSET_SHIFT 4151#define GAUDI_PKT_LIN_DMA_CTL_MEMSET_MASK 0x00000010152153#define GAUDI_PKT_LIN_DMA_DST_ADDR_SHIFT 0154#define GAUDI_PKT_LIN_DMA_DST_ADDR_MASK 0x00FFFFFFFFFFFFFFull155156struct packet_lin_dma {157__le32 tsize;158__le32 ctl;159__le64 src_addr;160__le64 dst_addr;161};162163struct packet_arb_point {164__le32 cfg;165__le32 ctl;166};167168struct packet_repeat {169__le32 cfg;170__le32 ctl;171};172173struct packet_wait {174__le32 cfg;175__le32 ctl;176};177178#define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_SHIFT 0179#define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_MASK 0x00000001180181struct packet_load_and_exe {182__le32 cfg;183__le32 ctl;184__le64 src_addr;185};186187struct packet_cp_dma {188__le32 tsize;189__le32 ctl;190__le64 src_addr;191};192193#endif /* GAUDI_PACKETS_H */194195196