xref: /linux/drivers/gpu/drm/i915/display/skl_watermark_regs.h (revision 6e7fd890f1d6ac83805409e9c346240de2705584)
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 
6 #ifndef __SKL_WATERMARK_REGS_H__
7 #define __SKL_WATERMARK_REGS_H__
8 
9 #include "intel_display_reg_defs.h"
10 
11 #define _PIPEA_MBUS_DBOX_CTL			0x7003C
12 #define _PIPEB_MBUS_DBOX_CTL			0x7103C
13 #define PIPE_MBUS_DBOX_CTL(pipe)		_MMIO_PIPE(pipe, _PIPEA_MBUS_DBOX_CTL, \
14 							   _PIPEB_MBUS_DBOX_CTL)
15 #define MBUS_DBOX_B2B_TRANSACTIONS_MAX_MASK	REG_GENMASK(24, 20) /* tgl+ */
16 #define MBUS_DBOX_B2B_TRANSACTIONS_MAX(x)	REG_FIELD_PREP(MBUS_DBOX_B2B_TRANSACTIONS_MAX_MASK, x)
17 #define MBUS_DBOX_B2B_TRANSACTIONS_DELAY_MASK	REG_GENMASK(19, 17) /* tgl+ */
18 #define MBUS_DBOX_B2B_TRANSACTIONS_DELAY(x)	REG_FIELD_PREP(MBUS_DBOX_B2B_TRANSACTIONS_DELAY_MASK, x)
19 #define MBUS_DBOX_REGULATE_B2B_TRANSACTIONS_EN	REG_BIT(16) /* tgl+ */
20 #define MBUS_DBOX_BW_CREDIT_MASK		REG_GENMASK(15, 14)
21 #define MBUS_DBOX_BW_CREDIT(x)			REG_FIELD_PREP(MBUS_DBOX_BW_CREDIT_MASK, x)
22 #define MBUS_DBOX_BW_4CREDITS_MTL		REG_FIELD_PREP(MBUS_DBOX_BW_CREDIT_MASK, 0x2)
23 #define MBUS_DBOX_BW_8CREDITS_MTL		REG_FIELD_PREP(MBUS_DBOX_BW_CREDIT_MASK, 0x3)
24 #define MBUS_DBOX_B_CREDIT_MASK			REG_GENMASK(12, 8)
25 #define MBUS_DBOX_B_CREDIT(x)			REG_FIELD_PREP(MBUS_DBOX_B_CREDIT_MASK, x)
26 #define MBUS_DBOX_I_CREDIT_MASK			REG_GENMASK(7, 5)
27 #define MBUS_DBOX_I_CREDIT(x)			REG_FIELD_PREP(MBUS_DBOX_I_CREDIT_MASK, x)
28 #define MBUS_DBOX_A_CREDIT_MASK			REG_GENMASK(3, 0)
29 #define MBUS_DBOX_A_CREDIT(x)			REG_FIELD_PREP(MBUS_DBOX_A_CREDIT_MASK, x)
30 
31 #define MBUS_UBOX_CTL			_MMIO(0x4503C)
32 #define MBUS_BBOX_CTL_S1		_MMIO(0x45040)
33 #define MBUS_BBOX_CTL_S2		_MMIO(0x45044)
34 
35 #define MBUS_CTL				_MMIO(0x4438C)
36 #define   MBUS_JOIN				REG_BIT(31)
37 #define   MBUS_HASHING_MODE_MASK		REG_BIT(30)
38 #define   MBUS_HASHING_MODE_2x2			REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 0)
39 #define   MBUS_HASHING_MODE_1x4			REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 1)
40 #define   MBUS_JOIN_PIPE_SELECT_MASK		REG_GENMASK(28, 26)
41 #define   MBUS_JOIN_PIPE_SELECT(pipe)		REG_FIELD_PREP(MBUS_JOIN_PIPE_SELECT_MASK, pipe)
42 #define   MBUS_JOIN_PIPE_SELECT_NONE		MBUS_JOIN_PIPE_SELECT(7)
43 #define   MBUS_TRANSLATION_THROTTLE_MIN_MASK	REG_GENMASK(15, 13)
44 #define   MBUS_TRANSLATION_THROTTLE_MIN(val)	REG_FIELD_PREP(MBUS_TRANSLATION_THROTTLE_MIN_MASK, val)
45 
46 /*
47  * The below are numbered starting from "S1" on gen11/gen12, but starting
48  * with display 13, the bspec switches to a 0-based numbering scheme
49  * (although the addresses stay the same so new S0 = old S1, new S1 = old S2).
50  * We'll just use the 0-based numbering here for all platforms since it's the
51  * way things will be named by the hardware team going forward, plus it's more
52  * consistent with how most of the rest of our registers are named.
53  */
54 #define _DBUF_CTL_S0				0x45008
55 #define _DBUF_CTL_S1				0x44FE8
56 #define _DBUF_CTL_S2				0x44300
57 #define _DBUF_CTL_S3				0x44304
58 #define DBUF_CTL_S(slice)			_MMIO(_PICK(slice, \
59 							    _DBUF_CTL_S0, \
60 							    _DBUF_CTL_S1, \
61 							    _DBUF_CTL_S2, \
62 							    _DBUF_CTL_S3))
63 #define  DBUF_POWER_REQUEST			REG_BIT(31)
64 #define  DBUF_POWER_STATE			REG_BIT(30)
65 #define  DBUF_TRACKER_STATE_SERVICE_MASK	REG_GENMASK(23, 19)
66 #define  DBUF_TRACKER_STATE_SERVICE(x)		REG_FIELD_PREP(DBUF_TRACKER_STATE_SERVICE_MASK, x)
67 #define  DBUF_MIN_TRACKER_STATE_SERVICE_MASK	REG_GENMASK(18, 16) /* ADL-P+ */
68 #define  DBUF_MIN_TRACKER_STATE_SERVICE(x)		REG_FIELD_PREP(DBUF_MIN_TRACKER_STATE_SERVICE_MASK, x) /* ADL-P+ */
69 
70 #define MTL_LATENCY_LP0_LP1		_MMIO(0x45780)
71 #define MTL_LATENCY_LP2_LP3		_MMIO(0x45784)
72 #define MTL_LATENCY_LP4_LP5		_MMIO(0x45788)
73 #define  MTL_LATENCY_LEVEL_EVEN_MASK	REG_GENMASK(12, 0)
74 #define  MTL_LATENCY_LEVEL_ODD_MASK	REG_GENMASK(28, 16)
75 
76 #define MTL_LATENCY_SAGV		_MMIO(0x4578c)
77 #define   MTL_LATENCY_QCLK_SAGV		REG_GENMASK(12, 0)
78 
79 #define LNL_PKG_C_LATENCY		_MMIO(0x46460)
80 #define   LNL_ADDED_WAKE_TIME_MASK	REG_GENMASK(28, 16)
81 #define   LNL_PKG_C_LATENCY_MASK	REG_GENMASK(12, 0)
82 
83 #endif /* __SKL_WATERMARK_REGS_H__ */
84