1*e65e175bSOded Gabbay /* SPDX-License-Identifier: GPL-2.0 2*e65e175bSOded Gabbay * 3*e65e175bSOded Gabbay * Copyright 2016-2018 HabanaLabs, Ltd. 4*e65e175bSOded Gabbay * All Rights Reserved. 5*e65e175bSOded Gabbay * 6*e65e175bSOded Gabbay */ 7*e65e175bSOded Gabbay 8*e65e175bSOded Gabbay #ifndef QMAN_IF_H 9*e65e175bSOded Gabbay #define QMAN_IF_H 10*e65e175bSOded Gabbay 11*e65e175bSOded Gabbay #include <linux/types.h> 12*e65e175bSOded Gabbay 13*e65e175bSOded Gabbay /* 14*e65e175bSOded Gabbay * PRIMARY QUEUE 15*e65e175bSOded Gabbay */ 16*e65e175bSOded Gabbay 17*e65e175bSOded Gabbay struct hl_bd { 18*e65e175bSOded Gabbay __le64 ptr; 19*e65e175bSOded Gabbay __le32 len; 20*e65e175bSOded Gabbay __le32 ctl; 21*e65e175bSOded Gabbay }; 22*e65e175bSOded Gabbay 23*e65e175bSOded Gabbay #define HL_BD_SIZE sizeof(struct hl_bd) 24*e65e175bSOded Gabbay 25*e65e175bSOded Gabbay /* 26*e65e175bSOded Gabbay * S/W CTL FIELDS. 27*e65e175bSOded Gabbay * 28*e65e175bSOded Gabbay * BD_CTL_REPEAT_VALID tells the CP whether the repeat field in the BD CTL is 29*e65e175bSOded Gabbay * valid. 1 means the repeat field is valid, 0 means not-valid, 30*e65e175bSOded Gabbay * i.e. repeat == 1 31*e65e175bSOded Gabbay */ 32*e65e175bSOded Gabbay #define BD_CTL_REPEAT_VALID_SHIFT 24 33*e65e175bSOded Gabbay #define BD_CTL_REPEAT_VALID_MASK 0x01000000 34*e65e175bSOded Gabbay 35*e65e175bSOded Gabbay #define BD_CTL_SHADOW_INDEX_SHIFT 0 36*e65e175bSOded Gabbay #define BD_CTL_SHADOW_INDEX_MASK 0x00000FFF 37*e65e175bSOded Gabbay 38*e65e175bSOded Gabbay /* 39*e65e175bSOded Gabbay * H/W CTL FIELDS 40*e65e175bSOded Gabbay */ 41*e65e175bSOded Gabbay 42*e65e175bSOded Gabbay #define BD_CTL_COMP_OFFSET_SHIFT 16 43*e65e175bSOded Gabbay #define BD_CTL_COMP_OFFSET_MASK 0x0FFF0000 44*e65e175bSOded Gabbay 45*e65e175bSOded Gabbay #define BD_CTL_COMP_DATA_SHIFT 0 46*e65e175bSOded Gabbay #define BD_CTL_COMP_DATA_MASK 0x0000FFFF 47*e65e175bSOded Gabbay 48*e65e175bSOded Gabbay /* 49*e65e175bSOded Gabbay * COMPLETION QUEUE 50*e65e175bSOded Gabbay */ 51*e65e175bSOded Gabbay 52*e65e175bSOded Gabbay struct hl_cq_entry { 53*e65e175bSOded Gabbay __le32 data; 54*e65e175bSOded Gabbay }; 55*e65e175bSOded Gabbay 56*e65e175bSOded Gabbay #define HL_CQ_ENTRY_SIZE sizeof(struct hl_cq_entry) 57*e65e175bSOded Gabbay 58*e65e175bSOded Gabbay #define CQ_ENTRY_READY_SHIFT 31 59*e65e175bSOded Gabbay #define CQ_ENTRY_READY_MASK 0x80000000 60*e65e175bSOded Gabbay 61*e65e175bSOded Gabbay #define CQ_ENTRY_SHADOW_INDEX_VALID_SHIFT 30 62*e65e175bSOded Gabbay #define CQ_ENTRY_SHADOW_INDEX_VALID_MASK 0x40000000 63*e65e175bSOded Gabbay 64*e65e175bSOded Gabbay #define CQ_ENTRY_SHADOW_INDEX_SHIFT BD_CTL_SHADOW_INDEX_SHIFT 65*e65e175bSOded Gabbay #define CQ_ENTRY_SHADOW_INDEX_MASK BD_CTL_SHADOW_INDEX_MASK 66*e65e175bSOded Gabbay 67*e65e175bSOded Gabbay 68*e65e175bSOded Gabbay #endif /* QMAN_IF_H */ 69