xref: /linux/drivers/gpu/drm/xe/regs/xe_gsc_regs.h (revision 260f6f4fda93c8485c8037865c941b42b9cba5d2)
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 
6 #ifndef _XE_GSC_REGS_H_
7 #define _XE_GSC_REGS_H_
8 
9 #include <linux/compiler.h>
10 #include <linux/types.h>
11 
12 #include "regs/xe_reg_defs.h"
13 
14 /* Definitions of GSC H/W registers, bits, etc */
15 
16 #define MTL_GSC_HECI1_BASE	0x00116000
17 #define MTL_GSC_HECI2_BASE	0x00117000
18 
19 #define DG1_GSC_HECI2_BASE	0x00259000
20 #define PVC_GSC_HECI2_BASE	0x00285000
21 #define DG2_GSC_HECI2_BASE	0x00374000
22 
23 #define HECI_H_CSR(base)	XE_REG((base) + 0x4)
24 #define   HECI_H_CSR_IE		REG_BIT(0)
25 #define   HECI_H_CSR_IS		REG_BIT(1)
26 #define   HECI_H_CSR_IG		REG_BIT(2)
27 #define   HECI_H_CSR_RDY	REG_BIT(3)
28 #define   HECI_H_CSR_RST	REG_BIT(4)
29 
30 /*
31  * The FWSTS register values are FW defined and can be different between
32  * HECI1 and HECI2
33  */
34 #define HECI_FWSTS1(base)				XE_REG((base) + 0xc40)
35 #define   HECI1_FWSTS1_CURRENT_STATE			REG_GENMASK(3, 0)
36 #define   HECI1_FWSTS1_CURRENT_STATE_RESET		0
37 #define   HECI1_FWSTS1_PROXY_STATE_NORMAL		5
38 #define   HECI1_FWSTS1_INIT_COMPLETE			REG_BIT(9)
39 #define HECI_FWSTS2(base)				XE_REG((base) + 0xc48)
40 #define HECI_FWSTS3(base)				XE_REG((base) + 0xc60)
41 #define HECI_FWSTS4(base)				XE_REG((base) + 0xc64)
42 #define HECI_FWSTS5(base)				XE_REG((base) + 0xc68)
43 #define   HECI1_FWSTS5_HUC_AUTH_DONE			REG_BIT(19)
44 #define HECI_FWSTS6(base)				XE_REG((base) + 0xc6c)
45 
46 #define HECI_H_GS1(base)	XE_REG((base) + 0xc4c)
47 #define   HECI_H_GS1_ER_PREP	REG_BIT(0)
48 
49 #define GSCI_TIMER_STATUS				XE_REG(0x11ca28)
50 #define   GSCI_TIMER_STATUS_VALUE			REG_GENMASK(1, 0)
51 #define   GSCI_TIMER_STATUS_RESET_IN_PROGRESS		0
52 #define   GSCI_TIMER_STATUS_TIMER_EXPIRED		1
53 #define   GSCI_TIMER_STATUS_RESET_COMPLETE		2
54 #define   GSCI_TIMER_STATUS_OUT_OF_RESET		3
55 
56 #endif
57