summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/xe/regs/xe_guc_regs.h
blob: a5fd14307f94bfee308fa69a3955c25bbf616b47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2022 Intel Corporation
 */

#ifndef _XE_GUC_REGS_H_
#define _XE_GUC_REGS_H_

#include <linux/compiler.h>
#include <linux/types.h>

#include "regs/xe_reg_defs.h"

/* Definitions of GuC H/W registers, bits, etc */

#define DIST_DBS_POPULATED			XE_REG(0xd08)
#define   DOORBELLS_PER_SQIDI_MASK		REG_GENMASK(23, 16)
#define   SQIDIS_DOORBELL_EXIST_MASK		REG_GENMASK(15, 0)

#define DRBREGL(x)				XE_REG(0x1000 + (x) * 8)
#define   DRB_VALID				REG_BIT(0)
#define DRBREGU(x)				XE_REG(0x1000 + (x) * 8 + 4)

#define GTCR					XE_REG(0x4274)
#define   GTCR_INVALIDATE			REG_BIT(0)

#define GUC_ARAT_C6DIS				XE_REG(0xa178)

#define GUC_STATUS				XE_REG(0xc000)
#define   GS_AUTH_STATUS_MASK			REG_GENMASK(31, 30)
#define   GS_AUTH_STATUS_BAD			REG_FIELD_PREP(GS_AUTH_STATUS_MASK, 0x1)
#define   GS_AUTH_STATUS_GOOD			REG_FIELD_PREP(GS_AUTH_STATUS_MASK, 0x2)
#define   GS_MIA_MASK				REG_GENMASK(18, 16)
#define   GS_MIA_CORE_STATE			REG_FIELD_PREP(GS_MIA_MASK, 0x1)
#define   GS_MIA_HALT_REQUESTED			REG_FIELD_PREP(GS_MIA_MASK, 0x2)
#define   GS_MIA_ISR_ENTRY			REG_FIELD_PREP(GS_MIA_MASK, 0x4)
#define   GS_UKERNEL_MASK			REG_GENMASK(15, 8)
#define   GS_BOOTROM_MASK			REG_GENMASK(7, 1)
#define   GS_BOOTROM_RSA_FAILED			REG_FIELD_PREP(GS_BOOTROM_MASK, 0x50)
#define   GS_BOOTROM_JUMP_PASSED		REG_FIELD_PREP(GS_BOOTROM_MASK, 0x76)
#define   GS_MIA_IN_RESET			REG_BIT(0)

#define GUC_HEADER_INFO				XE_REG(0xc014)

#define GUC_WOPCM_SIZE				XE_REG(0xc050)
#define   GUC_WOPCM_SIZE_MASK			REG_GENMASK(31, 12)
#define   GUC_WOPCM_SIZE_LOCKED			REG_BIT(0)

#define GUC_SHIM_CONTROL			XE_REG(0xc064)
#define   GUC_MOCS_INDEX_MASK			REG_GENMASK(27, 24)
#define   GUC_SHIM_WC_ENABLE			REG_BIT(21)
#define   GUC_ENABLE_MIA_CLOCK_GATING		REG_BIT(15)
#define   GUC_ENABLE_READ_CACHE_FOR_WOPCM_DATA	REG_BIT(10)
#define   GUC_ENABLE_READ_CACHE_FOR_SRAM_DATA	REG_BIT(9)
#define   GUC_MSGCH_ENABLE			REG_BIT(4)
#define   GUC_ENABLE_MIA_CACHING		REG_BIT(2)
#define   GUC_ENABLE_READ_CACHE_LOGIC		REG_BIT(1)
#define   GUC_DISABLE_SRAM_INIT_TO_ZEROES	REG_BIT(0)

#define SOFT_SCRATCH(n)				XE_REG(0xc180 + (n) * 4)
#define SOFT_SCRATCH_COUNT			16

#define HUC_KERNEL_LOAD_INFO			XE_REG(0xc1dc)
#define   HUC_LOAD_SUCCESSFUL			REG_BIT(0)

#define UOS_RSA_SCRATCH(i)			XE_REG(0xc200 + (i) * 4)
#define UOS_RSA_SCRATCH_COUNT			64

#define DMA_ADDR_0_LOW				XE_REG(0xc300)
#define DMA_ADDR_0_HIGH				XE_REG(0xc304)
#define DMA_ADDR_1_LOW				XE_REG(0xc308)
#define DMA_ADDR_1_HIGH				XE_REG(0xc30c)
#define   DMA_ADDR_SPACE_MASK			REG_GENMASK(20, 16)
#define   DMA_ADDRESS_SPACE_WOPCM		REG_FIELD_PREP(DMA_ADDR_SPACE_MASK, 7)
#define   DMA_ADDRESS_SPACE_GGTT		REG_FIELD_PREP(DMA_ADDR_SPACE_MASK, 8)
#define DMA_COPY_SIZE				XE_REG(0xc310)
#define DMA_CTRL				XE_REG(0xc314)
#define   HUC_UKERNEL				REG_BIT(9)
#define   UOS_MOVE				REG_BIT(4)
#define   START_DMA				REG_BIT(0)
#define DMA_GUC_WOPCM_OFFSET			XE_REG(0xc340)
#define   GUC_WOPCM_OFFSET_SHIFT		14
#define   GUC_WOPCM_OFFSET_MASK			REG_GENMASK(31, GUC_WOPCM_OFFSET_SHIFT)
#define   HUC_LOADING_AGENT_GUC			REG_BIT(1)
#define   GUC_WOPCM_OFFSET_VALID		REG_BIT(0)
#define GUC_MAX_IDLE_COUNT			XE_REG(0xc3e4)

#define GUC_SEND_INTERRUPT			XE_REG(0xc4c8)
#define   GUC_SEND_TRIGGER			REG_BIT(0)

#define GUC_BCS_RCS_IER				XE_REG(0xc550)
#define GUC_VCS2_VCS1_IER			XE_REG(0xc554)
#define GUC_WD_VECS_IER				XE_REG(0xc558)
#define GUC_PM_P24C_IER				XE_REG(0xc55c)

#define GUC_TLB_INV_CR				XE_REG(0xcee8)
#define   GUC_TLB_INV_CR_INVALIDATE		REG_BIT(0)

#define HUC_STATUS2				XE_REG(0xd3b0)
#define   HUC_FW_VERIFIED			REG_BIT(7)

#define GT_PM_CONFIG				XE_REG(0x13816c)
#define   GT_DOORBELL_ENABLE			REG_BIT(0)

#define GUC_HOST_INTERRUPT			XE_REG(0x1901f0, XE_REG_OPTION_VF)

#define VF_SW_FLAG(n)				XE_REG(0x190240 + (n) * 4, XE_REG_OPTION_VF)
#define VF_SW_FLAG_COUNT			4

#define MED_GUC_HOST_INTERRUPT			XE_REG(0x190304, XE_REG_OPTION_VF)

#define MED_VF_SW_FLAG(n)			XE_REG(0x190310 + (n) * 4, XE_REG_OPTION_VF)
#define MED_VF_SW_FLAG_COUNT			4

#define GUC_TLB_INV_CR				XE_REG(0xcee8)
#define   GUC_TLB_INV_CR_INVALIDATE		REG_BIT(0)
#define PVC_GUC_TLB_INV_DESC0			XE_REG(0xcf7c)
#define   PVC_GUC_TLB_INV_DESC0_VALID		REG_BIT(0)
#define PVC_GUC_TLB_INV_DESC1			XE_REG(0xcf80)
#define   PVC_GUC_TLB_INV_DESC1_INVALIDATE	REG_BIT(6)

/* GuC Interrupt Vector */
#define GUC_INTR_GUC2HOST			REG_BIT(15)
#define GUC_INTR_EXEC_ERROR			REG_BIT(14)
#define GUC_INTR_DISPLAY_EVENT			REG_BIT(13)
#define GUC_INTR_SEM_SIG			REG_BIT(12)
#define GUC_INTR_IOMMU2GUC			REG_BIT(11)
#define GUC_INTR_DOORBELL_RANG			REG_BIT(10)
#define GUC_INTR_DMA_DONE			REG_BIT(9)
#define GUC_INTR_FATAL_ERROR			REG_BIT(8)
#define GUC_INTR_NOTIF_ERROR			REG_BIT(7)
#define GUC_INTR_SW_INT_6			REG_BIT(6)
#define GUC_INTR_SW_INT_5			REG_BIT(5)
#define GUC_INTR_SW_INT_4			REG_BIT(4)
#define GUC_INTR_SW_INT_3			REG_BIT(3)
#define GUC_INTR_SW_INT_2			REG_BIT(2)
#define GUC_INTR_SW_INT_1			REG_BIT(1)
#define GUC_INTR_SW_INT_0			REG_BIT(0)

#define GUC_NUM_DOORBELLS			256

/* format of the HW-monitored doorbell cacheline */
struct guc_doorbell_info {
	u32 db_status;
#define GUC_DOORBELL_DISABLED			0
#define GUC_DOORBELL_ENABLED			1

	u32 cookie;
	u32 reserved[14];
} __packed;

#endif