xref: /linux/drivers/gpu/drm/xe/xe_pcode_api.h (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1dd08ebf6SMatthew Brost /* SPDX-License-Identifier: MIT */
2dd08ebf6SMatthew Brost /*
3dd08ebf6SMatthew Brost  * Copyright © 2022 Intel Corporation
4dd08ebf6SMatthew Brost  */
5dd08ebf6SMatthew Brost 
6dd08ebf6SMatthew Brost /* Internal to xe_pcode */
7dd08ebf6SMatthew Brost 
88cb49012SLucas De Marchi #include "regs/xe_reg_defs.h"
98cb49012SLucas De Marchi 
103512a78aSLucas De Marchi #define PCODE_MAILBOX			XE_REG(0x138124)
11dd08ebf6SMatthew Brost #define   PCODE_READY			REG_BIT(31)
12dd08ebf6SMatthew Brost #define   PCODE_MB_PARAM2		REG_GENMASK(23, 16)
13dd08ebf6SMatthew Brost #define   PCODE_MB_PARAM1		REG_GENMASK(15, 8)
14dd08ebf6SMatthew Brost #define   PCODE_MB_COMMAND		REG_GENMASK(7, 0)
15dd08ebf6SMatthew Brost #define   PCODE_ERROR_MASK		0xFF
16dd08ebf6SMatthew Brost #define     PCODE_SUCCESS		0x0
17dd08ebf6SMatthew Brost #define     PCODE_ILLEGAL_CMD		0x1
18dd08ebf6SMatthew Brost #define     PCODE_TIMEOUT		0x2
19dd08ebf6SMatthew Brost #define     PCODE_ILLEGAL_DATA		0x3
20dd08ebf6SMatthew Brost #define     PCODE_ILLEGAL_SUBCOMMAND	0x4
21dd08ebf6SMatthew Brost #define     PCODE_LOCKED		0x6
22dd08ebf6SMatthew Brost #define     PCODE_GT_RATIO_OUT_OF_RANGE	0x10
23dd08ebf6SMatthew Brost #define     PCODE_REJECTED		0x11
24dd08ebf6SMatthew Brost 
253512a78aSLucas De Marchi #define PCODE_DATA0			XE_REG(0x138128)
263512a78aSLucas De Marchi #define PCODE_DATA1			XE_REG(0x13812C)
27dd08ebf6SMatthew Brost 
28dd08ebf6SMatthew Brost /* Min Freq QOS Table */
29dd08ebf6SMatthew Brost #define   PCODE_WRITE_MIN_FREQ_TABLE	0x8
30dd08ebf6SMatthew Brost #define   PCODE_READ_MIN_FREQ_TABLE	0x9
31dd08ebf6SMatthew Brost #define   PCODE_FREQ_RING_RATIO_SHIFT	16
32dd08ebf6SMatthew Brost 
33dd08ebf6SMatthew Brost /* PCODE Init */
34dd08ebf6SMatthew Brost #define   DGFX_PCODE_STATUS		0x7E
35dd08ebf6SMatthew Brost #define     DGFX_GET_INIT_STATUS	0x0
36dd08ebf6SMatthew Brost #define     DGFX_INIT_STATUS_COMPLETE	0x1
370e414bf7SRaag Jadav #define     DGFX_LINK_DOWNGRADE_STATUS	REG_BIT(31)
38dd08ebf6SMatthew Brost 
3992d44a42SBadal Nilawar #define   PCODE_POWER_SETUP			0x7C
4092d44a42SBadal Nilawar #define     POWER_SETUP_SUBCOMMAND_READ_I1	0x4
4192d44a42SBadal Nilawar #define     POWER_SETUP_SUBCOMMAND_WRITE_I1	0x5
4292d44a42SBadal Nilawar #define	    POWER_SETUP_I1_WATTS		REG_BIT(31)
4392d44a42SBadal Nilawar #define	    POWER_SETUP_I1_SHIFT		6	/* 10.6 fixed point format */
4492d44a42SBadal Nilawar #define	    POWER_SETUP_I1_DATA_MASK		REG_GENMASK(15, 0)
4592d44a42SBadal Nilawar 
467596d839SKarthik Poosa #define	READ_PSYSGPU_POWER_LIMIT		0x6
477596d839SKarthik Poosa #define	WRITE_PSYSGPU_POWER_LIMIT		0x7
487596d839SKarthik Poosa #define	READ_PACKAGE_POWER_LIMIT		0x8
497596d839SKarthik Poosa #define	WRITE_PACKAGE_POWER_LIMIT		0x9
507596d839SKarthik Poosa #define	READ_PL_FROM_FW				0x1
517596d839SKarthik Poosa #define	READ_PL_FROM_PCODE			0x0
527596d839SKarthik Poosa 
53c332fba8SKarthik Poosa #define   PCODE_THERMAL_INFO			0x25
54c332fba8SKarthik Poosa #define     READ_THERMAL_LIMITS			0x0
553a0cb885SKarthik Poosa #define     READ_THERMAL_CONFIG			0x1
563a0cb885SKarthik Poosa #define     READ_THERMAL_DATA			0x2
57*8d251168SKarthik Poosa #define       PCIE_SENSOR_GROUP_ID		0x2
58*8d251168SKarthik Poosa #define       PCIE_SENSOR_MASK			REG_GENMASK(31, 16)
59c332fba8SKarthik Poosa 
60cdc36b66SRaag Jadav #define   PCODE_LATE_BINDING			0x5C
61cdc36b66SRaag Jadav #define     GET_CAPABILITY_STATUS		0x0
62cdc36b66SRaag Jadav #define       V1_FAN_SUPPORTED			REG_BIT(0)
63cdc36b66SRaag Jadav #define       VR_PARAMS_SUPPORTED		REG_BIT(3)
64cdc36b66SRaag Jadav #define       V1_FAN_PROVISIONED		REG_BIT(16)
65cdc36b66SRaag Jadav #define       VR_PARAMS_PROVISIONED		REG_BIT(19)
66cdc36b66SRaag Jadav #define     GET_VERSION_LOW			0x1
67cdc36b66SRaag Jadav #define     GET_VERSION_HIGH			0x2
68cdc36b66SRaag Jadav #define       MAJOR_VERSION_MASK		REG_GENMASK(31, 16)
69cdc36b66SRaag Jadav #define       MINOR_VERSION_MASK		REG_GENMASK(15, 0)
70cdc36b66SRaag Jadav #define       HOTFIX_VERSION_MASK		REG_GENMASK(31, 16)
71cdc36b66SRaag Jadav #define       BUILD_VERSION_MASK		REG_GENMASK(15, 0)
72cdc36b66SRaag Jadav #define       FAN_TABLE				1
73cdc36b66SRaag Jadav #define       VR_CONFIG				2
74cdc36b66SRaag Jadav 
754ae3aeabSSujaritha Sundaresan #define   PCODE_FREQUENCY_CONFIG		0x6e
764ae3aeabSSujaritha Sundaresan /* Frequency Config Sub Commands (param1) */
774ae3aeabSSujaritha Sundaresan #define     PCODE_MBOX_FC_SC_READ_FUSED_P0	0x0
784ae3aeabSSujaritha Sundaresan #define     PCODE_MBOX_FC_SC_READ_FUSED_PN	0x1
794ae3aeabSSujaritha Sundaresan /* Domain IDs (param2) */
804ae3aeabSSujaritha Sundaresan #define     PCODE_MBOX_DOMAIN_HBM		0x2
814ae3aeabSSujaritha Sundaresan 
8228f79ac6SRaag Jadav #define   FAN_SPEED_CONTROL			0x7D
8328f79ac6SRaag Jadav #define     FSC_READ_NUM_FANS			0x4
8428f79ac6SRaag Jadav 
855e940312SRiana Tauro #define PCODE_SCRATCH(x)		XE_REG(0x138320 + ((x) * 4))
865e940312SRiana Tauro /* PCODE_SCRATCH0 */
871987ea95SRiana Tauro #define   BREADCRUMB_VERSION		REG_GENMASK(31, 29)
885e940312SRiana Tauro #define   AUXINFO_REG_OFFSET		REG_GENMASK(17, 15)
895e940312SRiana Tauro #define   OVERFLOW_REG_OFFSET		REG_GENMASK(14, 12)
905e940312SRiana Tauro #define   HISTORY_TRACKING		REG_BIT(11)
915e940312SRiana Tauro #define   OVERFLOW_SUPPORT		REG_BIT(10)
925e940312SRiana Tauro #define   AUXINFO_SUPPORT		REG_BIT(9)
931987ea95SRiana Tauro #define   FDO_MODE			REG_BIT(4)
945e940312SRiana Tauro #define   BOOT_STATUS			REG_GENMASK(3, 1)
955e940312SRiana Tauro #define      CRITICAL_FAILURE		4
965e940312SRiana Tauro #define      NON_CRITICAL_FAILURE	7
975e940312SRiana Tauro 
985e940312SRiana Tauro /* Auxiliary info bits */
995e940312SRiana Tauro #define   AUXINFO_HISTORY_OFFSET	REG_GENMASK(31, 29)
1005e940312SRiana Tauro 
1010e414bf7SRaag Jadav #define BMG_PCIE_CAP			XE_REG(0x138340)
1020e414bf7SRaag Jadav #define   LINK_DOWNGRADE		REG_GENMASK(1, 0)
1030e414bf7SRaag Jadav #define     DOWNGRADE_CAPABLE		2
104