brintos

brintos / linux-shallow public Read only

0
0
Text · 4.2 KiB · 66fc083 Raw
195 lines · c
1/* SPDX-License-Identifier: GPL-2.02 *3 * Copyright 2017-2020 HabanaLabs, Ltd.4 * All Rights Reserved.5 *6 */7 8#ifndef GAUDI_PACKETS_H9#define GAUDI_PACKETS_H10 11#include <linux/types.h>12 13#define PACKET_HEADER_PACKET_ID_SHIFT		5614#define PACKET_HEADER_PACKET_ID_MASK		0x1F00000000000000ull15 16enum packet_id {17	PACKET_WREG_32 = 0x1,18	PACKET_WREG_BULK = 0x2,19	PACKET_MSG_LONG = 0x3,20	PACKET_MSG_SHORT = 0x4,21	PACKET_CP_DMA = 0x5,22	PACKET_REPEAT = 0x6,23	PACKET_MSG_PROT = 0x7,24	PACKET_FENCE = 0x8,25	PACKET_LIN_DMA = 0x9,26	PACKET_NOP = 0xA,27	PACKET_STOP = 0xB,28	PACKET_ARB_POINT = 0xC,29	PACKET_WAIT = 0xD,30	PACKET_LOAD_AND_EXE = 0xF,31	MAX_PACKET_ID = (PACKET_HEADER_PACKET_ID_MASK >>32				PACKET_HEADER_PACKET_ID_SHIFT) + 133};34 35#define GAUDI_PKT_CTL_OPCODE_SHIFT	2436#define GAUDI_PKT_CTL_OPCODE_MASK	0x1F00000037 38#define GAUDI_PKT_CTL_EB_SHIFT		2939#define GAUDI_PKT_CTL_EB_MASK		0x2000000040 41#define GAUDI_PKT_CTL_RB_SHIFT		3042#define GAUDI_PKT_CTL_RB_MASK		0x4000000043 44#define GAUDI_PKT_CTL_MB_SHIFT		3145#define GAUDI_PKT_CTL_MB_MASK		0x8000000046 47/* All packets have, at least, an 8-byte header, which contains48 * the packet type. The kernel driver uses the packet header for packet49 * validation and to perform any necessary required preparation before50 * sending them off to the hardware.51 */52struct gaudi_packet {53	__le64 header;54	/* The rest of the packet data follows. Use the corresponding55	 * packet_XXX struct to deference the data, based on packet type56	 */57	u8 contents[];58};59 60struct packet_nop {61	__le32 reserved;62	__le32 ctl;63};64 65struct packet_stop {66	__le32 reserved;67	__le32 ctl;68};69 70struct packet_wreg32 {71	__le32 value;72	__le32 ctl;73};74 75struct packet_wreg_bulk {76	__le32 size64;77	__le32 ctl;78	__le64 values[]; /* data starts here */79};80 81#define GAUDI_PKT_LONG_CTL_OP_SHIFT		2082#define GAUDI_PKT_LONG_CTL_OP_MASK		0x0030000083 84struct packet_msg_long {85	__le32 value;86	__le32 ctl;87	__le64 addr;88};89 90#define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_SHIFT	091#define GAUDI_PKT_SHORT_VAL_SOB_SYNC_VAL_MASK	0x00007FFF92 93#define GAUDI_PKT_SHORT_VAL_SOB_MOD_SHIFT	3194#define GAUDI_PKT_SHORT_VAL_SOB_MOD_MASK	0x8000000095 96#define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_SHIFT	097#define GAUDI_PKT_SHORT_VAL_MON_SYNC_GID_MASK	0x000000FF98 99#define GAUDI_PKT_SHORT_VAL_MON_MASK_SHIFT	8100#define GAUDI_PKT_SHORT_VAL_MON_MASK_MASK	0x0000FF00101 102#define GAUDI_PKT_SHORT_VAL_MON_MODE_SHIFT	16103#define GAUDI_PKT_SHORT_VAL_MON_MODE_MASK	0x00010000104 105#define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_SHIFT	17106#define GAUDI_PKT_SHORT_VAL_MON_SYNC_VAL_MASK	0xFFFE0000107 108#define GAUDI_PKT_SHORT_CTL_ADDR_SHIFT		0109#define GAUDI_PKT_SHORT_CTL_ADDR_MASK		0x0000FFFF110 111#define GAUDI_PKT_SHORT_CTL_OP_SHIFT		20112#define GAUDI_PKT_SHORT_CTL_OP_MASK		0x00300000113 114#define GAUDI_PKT_SHORT_CTL_BASE_SHIFT		22115#define GAUDI_PKT_SHORT_CTL_BASE_MASK		0x00C00000116 117struct packet_msg_short {118	__le32 value;119	__le32 ctl;120};121 122struct packet_msg_prot {123	__le32 value;124	__le32 ctl;125	__le64 addr;126};127 128#define GAUDI_PKT_FENCE_CFG_DEC_VAL_SHIFT	0129#define GAUDI_PKT_FENCE_CFG_DEC_VAL_MASK	0x0000000F130 131#define GAUDI_PKT_FENCE_CFG_TARGET_VAL_SHIFT	16132#define GAUDI_PKT_FENCE_CFG_TARGET_VAL_MASK	0x00FF0000133 134#define GAUDI_PKT_FENCE_CFG_ID_SHIFT		30135#define GAUDI_PKT_FENCE_CFG_ID_MASK		0xC0000000136 137#define GAUDI_PKT_FENCE_CTL_PRED_SHIFT		0138#define GAUDI_PKT_FENCE_CTL_PRED_MASK		0x0000001F139 140struct packet_fence {141	__le32 cfg;142	__le32 ctl;143};144 145#define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_SHIFT	0146#define GAUDI_PKT_LIN_DMA_CTL_WRCOMP_EN_MASK	0x00000001147 148#define GAUDI_PKT_LIN_DMA_CTL_LIN_SHIFT		3149#define GAUDI_PKT_LIN_DMA_CTL_LIN_MASK		0x00000008150 151#define GAUDI_PKT_LIN_DMA_CTL_MEMSET_SHIFT	4152#define GAUDI_PKT_LIN_DMA_CTL_MEMSET_MASK	0x00000010153 154#define GAUDI_PKT_LIN_DMA_DST_ADDR_SHIFT	0155#define GAUDI_PKT_LIN_DMA_DST_ADDR_MASK		0x00FFFFFFFFFFFFFFull156 157struct packet_lin_dma {158	__le32 tsize;159	__le32 ctl;160	__le64 src_addr;161	__le64 dst_addr;162};163 164struct packet_arb_point {165	__le32 cfg;166	__le32 ctl;167};168 169struct packet_repeat {170	__le32 cfg;171	__le32 ctl;172};173 174struct packet_wait {175	__le32 cfg;176	__le32 ctl;177};178 179#define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_SHIFT	0180#define GAUDI_PKT_LOAD_AND_EXE_CFG_DST_MASK	0x00000001181 182struct packet_load_and_exe {183	__le32 cfg;184	__le32 ctl;185	__le64 src_addr;186};187 188struct packet_cp_dma {189	__le32 tsize;190	__le32 ctl;191	__le64 src_addr;192};193 194#endif /* GAUDI_PACKETS_H */195