forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/gpu/drm/i915/i915_reg.h
....@@ -25,14 +25,17 @@
2525 #ifndef _I915_REG_H_
2626 #define _I915_REG_H_
2727
28
+#include <linux/bitfield.h>
29
+#include <linux/bits.h>
30
+
2831 /**
2932 * DOC: The i915 register macro definition style guide
3033 *
3134 * Follow the style described here for new macros, and while changing existing
3235 * macros. Do **not** mass change existing definitions just to update the style.
3336 *
34
- * Layout
35
- * ~~~~~~
37
+ * File Layout
38
+ * ~~~~~~~~~~~
3639 *
3740 * Keep helper macros near the top. For example, _PIPE() and friends.
3841 *
....@@ -59,15 +62,13 @@
5962 * significant to least significant bit. Indent the register content macros
6063 * using two extra spaces between ``#define`` and the macro name.
6164 *
62
- * For bit fields, define a ``_MASK`` and a ``_SHIFT`` macro. Define bit field
63
- * contents so that they are already shifted in place, and can be directly
64
- * OR'd. For convenience, function-like macros may be used to define bit fields,
65
- * but do note that the macros may be needed to read as well as write the
66
- * register contents.
65
+ * Define bit fields using ``REG_GENMASK(h, l)``. Define bit field contents
66
+ * using ``REG_FIELD_PREP(mask, value)``. This will define the values already
67
+ * shifted in place, so they can be directly OR'd together. For convenience,
68
+ * function-like macros may be used to define bit fields, but do note that the
69
+ * macros may be needed to read as well as write the register contents.
6770 *
68
- * Define bits using ``(1 << N)`` instead of ``BIT(N)``. We may change this in
69
- * the future, but this is the prevailing style. Do **not** add ``_BIT`` suffix
70
- * to the name.
71
+ * Define bits using ``REG_BIT(N)``. Do **not** add ``_BIT`` suffix to the name.
7172 *
7273 * Group the register and its contents together without blank lines, separate
7374 * from other registers and their contents with one blank line.
....@@ -105,26 +106,87 @@
105106 * #define _FOO_A 0xf000
106107 * #define _FOO_B 0xf001
107108 * #define FOO(pipe) _MMIO_PIPE(pipe, _FOO_A, _FOO_B)
108
- * #define FOO_ENABLE (1 << 31)
109
- * #define FOO_MODE_MASK (0xf << 16)
110
- * #define FOO_MODE_SHIFT 16
111
- * #define FOO_MODE_BAR (0 << 16)
112
- * #define FOO_MODE_BAZ (1 << 16)
113
- * #define FOO_MODE_QUX_SNB (2 << 16)
109
+ * #define FOO_ENABLE REG_BIT(31)
110
+ * #define FOO_MODE_MASK REG_GENMASK(19, 16)
111
+ * #define FOO_MODE_BAR REG_FIELD_PREP(FOO_MODE_MASK, 0)
112
+ * #define FOO_MODE_BAZ REG_FIELD_PREP(FOO_MODE_MASK, 1)
113
+ * #define FOO_MODE_QUX_SNB REG_FIELD_PREP(FOO_MODE_MASK, 2)
114114 *
115115 * #define BAR _MMIO(0xb000)
116116 * #define GEN8_BAR _MMIO(0xb888)
117117 */
118118
119
+/**
120
+ * REG_BIT() - Prepare a u32 bit value
121
+ * @__n: 0-based bit number
122
+ *
123
+ * Local wrapper for BIT() to force u32, with compile time checks.
124
+ *
125
+ * @return: Value with bit @__n set.
126
+ */
127
+#define REG_BIT(__n) \
128
+ ((u32)(BIT(__n) + \
129
+ BUILD_BUG_ON_ZERO(__is_constexpr(__n) && \
130
+ ((__n) < 0 || (__n) > 31))))
131
+
132
+/**
133
+ * REG_GENMASK() - Prepare a continuous u32 bitmask
134
+ * @__high: 0-based high bit
135
+ * @__low: 0-based low bit
136
+ *
137
+ * Local wrapper for GENMASK() to force u32, with compile time checks.
138
+ *
139
+ * @return: Continuous bitmask from @__high to @__low, inclusive.
140
+ */
141
+#define REG_GENMASK(__high, __low) \
142
+ ((u32)(GENMASK(__high, __low) + \
143
+ BUILD_BUG_ON_ZERO(__is_constexpr(__high) && \
144
+ __is_constexpr(__low) && \
145
+ ((__low) < 0 || (__high) > 31 || (__low) > (__high)))))
146
+
147
+/*
148
+ * Local integer constant expression version of is_power_of_2().
149
+ */
150
+#define IS_POWER_OF_2(__x) ((__x) && (((__x) & ((__x) - 1)) == 0))
151
+
152
+/**
153
+ * REG_FIELD_PREP() - Prepare a u32 bitfield value
154
+ * @__mask: shifted mask defining the field's length and position
155
+ * @__val: value to put in the field
156
+ *
157
+ * Local copy of FIELD_PREP() to generate an integer constant expression, force
158
+ * u32 and for consistency with REG_FIELD_GET(), REG_BIT() and REG_GENMASK().
159
+ *
160
+ * @return: @__val masked and shifted into the field defined by @__mask.
161
+ */
162
+#define REG_FIELD_PREP(__mask, __val) \
163
+ ((u32)((((typeof(__mask))(__val) << __bf_shf(__mask)) & (__mask)) + \
164
+ BUILD_BUG_ON_ZERO(!__is_constexpr(__mask)) + \
165
+ BUILD_BUG_ON_ZERO((__mask) == 0 || (__mask) > U32_MAX) + \
166
+ BUILD_BUG_ON_ZERO(!IS_POWER_OF_2((__mask) + (1ULL << __bf_shf(__mask)))) + \
167
+ BUILD_BUG_ON_ZERO(__builtin_choose_expr(__is_constexpr(__val), (~((__mask) >> __bf_shf(__mask)) & (__val)), 0))))
168
+
169
+/**
170
+ * REG_FIELD_GET() - Extract a u32 bitfield value
171
+ * @__mask: shifted mask defining the field's length and position
172
+ * @__val: value to extract the bitfield value from
173
+ *
174
+ * Local wrapper for FIELD_GET() to force u32 and for consistency with
175
+ * REG_FIELD_PREP(), REG_BIT() and REG_GENMASK().
176
+ *
177
+ * @return: Masked and shifted value of the field defined by @__mask in @__val.
178
+ */
179
+#define REG_FIELD_GET(__mask, __val) ((u32)FIELD_GET(__mask, __val))
180
+
119181 typedef struct {
120
- uint32_t reg;
182
+ u32 reg;
121183 } i915_reg_t;
122184
123185 #define _MMIO(r) ((const i915_reg_t){ .reg = (r) })
124186
125187 #define INVALID_MMIO_REG _MMIO(0)
126188
127
-static inline uint32_t i915_mmio_reg_offset(i915_reg_t reg)
189
+static __always_inline u32 i915_mmio_reg_offset(i915_reg_t reg)
128190 {
129191 return reg.reg;
130192 }
....@@ -138,6 +200,12 @@
138200 {
139201 return !i915_mmio_reg_equal(reg, INVALID_MMIO_REG);
140202 }
203
+
204
+#define VLV_DISPLAY_BASE 0x180000
205
+#define VLV_MIPI_BASE VLV_DISPLAY_BASE
206
+#define BXT_MIPI_BASE 0x60000
207
+
208
+#define DISPLAY_MMIO_BASE(dev_priv) (INTEL_INFO(dev_priv)->display_mmio_offset)
141209
142210 /*
143211 * Given the first two numbers __a and __b of arbitrarily many evenly spaced
....@@ -157,20 +225,39 @@
157225 /*
158226 * Named helper wrappers around _PICK_EVEN() and _PICK().
159227 */
160
-#define _PIPE(pipe, a, b) _PICK_EVEN(pipe, a, b)
161
-#define _MMIO_PIPE(pipe, a, b) _MMIO(_PIPE(pipe, a, b))
162
-#define _PLANE(plane, a, b) _PICK_EVEN(plane, a, b)
163
-#define _MMIO_PLANE(plane, a, b) _MMIO_PIPE(plane, a, b)
164
-#define _TRANS(tran, a, b) _PICK_EVEN(tran, a, b)
165
-#define _MMIO_TRANS(tran, a, b) _MMIO(_TRANS(tran, a, b))
166
-#define _PORT(port, a, b) _PICK_EVEN(port, a, b)
167
-#define _MMIO_PORT(port, a, b) _MMIO(_PORT(port, a, b))
168
-#define _MMIO_PIPE3(pipe, a, b, c) _MMIO(_PICK(pipe, a, b, c))
169
-#define _MMIO_PORT3(pipe, a, b, c) _MMIO(_PICK(pipe, a, b, c))
170
-#define _PLL(pll, a, b) _PICK_EVEN(pll, a, b)
171
-#define _MMIO_PLL(pll, a, b) _MMIO(_PLL(pll, a, b))
172
-#define _PHY3(phy, ...) _PICK(phy, __VA_ARGS__)
173
-#define _MMIO_PHY3(phy, a, b, c) _MMIO(_PHY3(phy, a, b, c))
228
+#define _PIPE(pipe, a, b) _PICK_EVEN(pipe, a, b)
229
+#define _PLANE(plane, a, b) _PICK_EVEN(plane, a, b)
230
+#define _TRANS(tran, a, b) _PICK_EVEN(tran, a, b)
231
+#define _PORT(port, a, b) _PICK_EVEN(port, a, b)
232
+#define _PLL(pll, a, b) _PICK_EVEN(pll, a, b)
233
+
234
+#define _MMIO_PIPE(pipe, a, b) _MMIO(_PIPE(pipe, a, b))
235
+#define _MMIO_PLANE(plane, a, b) _MMIO(_PLANE(plane, a, b))
236
+#define _MMIO_TRANS(tran, a, b) _MMIO(_TRANS(tran, a, b))
237
+#define _MMIO_PORT(port, a, b) _MMIO(_PORT(port, a, b))
238
+#define _MMIO_PLL(pll, a, b) _MMIO(_PLL(pll, a, b))
239
+
240
+#define _PHY3(phy, ...) _PICK(phy, __VA_ARGS__)
241
+
242
+#define _MMIO_PIPE3(pipe, a, b, c) _MMIO(_PICK(pipe, a, b, c))
243
+#define _MMIO_PORT3(pipe, a, b, c) _MMIO(_PICK(pipe, a, b, c))
244
+#define _MMIO_PHY3(phy, a, b, c) _MMIO(_PHY3(phy, a, b, c))
245
+#define _MMIO_PLL3(pll, a, b, c) _MMIO(_PICK(pll, a, b, c))
246
+
247
+/*
248
+ * Device info offset array based helpers for groups of registers with unevenly
249
+ * spaced base offsets.
250
+ */
251
+#define _MMIO_PIPE2(pipe, reg) _MMIO(INTEL_INFO(dev_priv)->pipe_offsets[pipe] - \
252
+ INTEL_INFO(dev_priv)->pipe_offsets[PIPE_A] + (reg) + \
253
+ DISPLAY_MMIO_BASE(dev_priv))
254
+#define _TRANS2(tran, reg) (INTEL_INFO(dev_priv)->trans_offsets[(tran)] - \
255
+ INTEL_INFO(dev_priv)->trans_offsets[TRANSCODER_A] + (reg) + \
256
+ DISPLAY_MMIO_BASE(dev_priv))
257
+#define _MMIO_TRANS2(tran, reg) _MMIO(_TRANS2(tran, reg))
258
+#define _CURSOR2(pipe, reg) _MMIO(INTEL_INFO(dev_priv)->cursor_offsets[(pipe)] - \
259
+ INTEL_INFO(dev_priv)->cursor_offsets[PIPE_A] + (reg) + \
260
+ DISPLAY_MMIO_BASE(dev_priv))
174261
175262 #define __MASKED_FIELD(mask, value) ((mask) << 16 | (value))
176263 #define _MASKED_FIELD(mask, value) ({ \
....@@ -184,29 +271,6 @@
184271 __MASKED_FIELD(mask, value); })
185272 #define _MASKED_BIT_ENABLE(a) ({ typeof(a) _a = (a); _MASKED_FIELD(_a, _a); })
186273 #define _MASKED_BIT_DISABLE(a) (_MASKED_FIELD((a), 0))
187
-
188
-/* Engine ID */
189
-
190
-#define RCS_HW 0
191
-#define VCS_HW 1
192
-#define BCS_HW 2
193
-#define VECS_HW 3
194
-#define VCS2_HW 4
195
-#define VCS3_HW 6
196
-#define VCS4_HW 7
197
-#define VECS2_HW 12
198
-
199
-/* Engine class */
200
-
201
-#define RENDER_CLASS 0
202
-#define VIDEO_DECODE_CLASS 1
203
-#define VIDEO_ENHANCEMENT_CLASS 2
204
-#define COPY_ENGINE_CLASS 3
205
-#define OTHER_CLASS 4
206
-#define MAX_ENGINE_CLASS 4
207
-
208
-#define OTHER_GTPM_INSTANCE 1
209
-#define MAX_ENGINE_INSTANCE 3
210274
211275 /* PCI config space */
212276
....@@ -330,20 +394,43 @@
330394 #define GEN11_GRDOM_MEDIA4 (1 << 8)
331395 #define GEN11_GRDOM_VECS (1 << 13)
332396 #define GEN11_GRDOM_VECS2 (1 << 14)
397
+#define GEN11_GRDOM_SFC0 (1 << 17)
398
+#define GEN11_GRDOM_SFC1 (1 << 18)
333399
334
-#define RING_PP_DIR_BASE(engine) _MMIO((engine)->mmio_base + 0x228)
335
-#define RING_PP_DIR_BASE_READ(engine) _MMIO((engine)->mmio_base + 0x518)
336
-#define RING_PP_DIR_DCLV(engine) _MMIO((engine)->mmio_base + 0x220)
400
+#define GEN11_VCS_SFC_RESET_BIT(instance) (GEN11_GRDOM_SFC0 << ((instance) >> 1))
401
+#define GEN11_VECS_SFC_RESET_BIT(instance) (GEN11_GRDOM_SFC0 << (instance))
402
+
403
+#define GEN11_VCS_SFC_FORCED_LOCK(engine) _MMIO((engine)->mmio_base + 0x88C)
404
+#define GEN11_VCS_SFC_FORCED_LOCK_BIT (1 << 0)
405
+#define GEN11_VCS_SFC_LOCK_STATUS(engine) _MMIO((engine)->mmio_base + 0x890)
406
+#define GEN11_VCS_SFC_USAGE_BIT (1 << 0)
407
+#define GEN11_VCS_SFC_LOCK_ACK_BIT (1 << 1)
408
+
409
+#define GEN11_VECS_SFC_FORCED_LOCK(engine) _MMIO((engine)->mmio_base + 0x201C)
410
+#define GEN11_VECS_SFC_FORCED_LOCK_BIT (1 << 0)
411
+#define GEN11_VECS_SFC_LOCK_ACK(engine) _MMIO((engine)->mmio_base + 0x2018)
412
+#define GEN11_VECS_SFC_LOCK_ACK_BIT (1 << 0)
413
+#define GEN11_VECS_SFC_USAGE(engine) _MMIO((engine)->mmio_base + 0x2014)
414
+#define GEN11_VECS_SFC_USAGE_BIT (1 << 0)
415
+
416
+#define GEN12_SFC_DONE(n) _MMIO(0x1cc000 + (n) * 0x1000)
417
+#define GEN12_SFC_DONE_MAX 4
418
+
419
+#define RING_PP_DIR_BASE(base) _MMIO((base) + 0x228)
420
+#define RING_PP_DIR_BASE_READ(base) _MMIO((base) + 0x518)
421
+#define RING_PP_DIR_DCLV(base) _MMIO((base) + 0x220)
337422 #define PP_DIR_DCLV_2G 0xffffffff
338423
339
-#define GEN8_RING_PDP_UDW(engine, n) _MMIO((engine)->mmio_base + 0x270 + (n) * 8 + 4)
340
-#define GEN8_RING_PDP_LDW(engine, n) _MMIO((engine)->mmio_base + 0x270 + (n) * 8)
424
+#define GEN8_RING_PDP_UDW(base, n) _MMIO((base) + 0x270 + (n) * 8 + 4)
425
+#define GEN8_RING_PDP_LDW(base, n) _MMIO((base) + 0x270 + (n) * 8)
341426
342427 #define GEN8_R_PWR_CLK_STATE _MMIO(0x20C8)
343428 #define GEN8_RPCS_ENABLE (1 << 31)
344429 #define GEN8_RPCS_S_CNT_ENABLE (1 << 18)
345430 #define GEN8_RPCS_S_CNT_SHIFT 15
346431 #define GEN8_RPCS_S_CNT_MASK (0x7 << GEN8_RPCS_S_CNT_SHIFT)
432
+#define GEN11_RPCS_S_CNT_SHIFT 12
433
+#define GEN11_RPCS_S_CNT_MASK (0x3f << GEN11_RPCS_S_CNT_SHIFT)
347434 #define GEN8_RPCS_SS_CNT_ENABLE (1 << 11)
348435 #define GEN8_RPCS_SS_CNT_SHIFT 8
349436 #define GEN8_RPCS_SS_CNT_MASK (0x7 << GEN8_RPCS_SS_CNT_SHIFT)
....@@ -463,7 +550,9 @@
463550 #define MI_PREDICATE_SRC0_UDW _MMIO(0x2400 + 4)
464551 #define MI_PREDICATE_SRC1 _MMIO(0x2408)
465552 #define MI_PREDICATE_SRC1_UDW _MMIO(0x2408 + 4)
466
-
553
+#define MI_PREDICATE_DATA _MMIO(0x2410)
554
+#define MI_PREDICATE_RESULT _MMIO(0x2418)
555
+#define MI_PREDICATE_RESULT_1 _MMIO(0x241c)
467556 #define MI_PREDICATE_RESULT_2 _MMIO(0x2214)
468557 #define LOWER_SLICE_ENABLED (1 << 0)
469558 #define LOWER_SLICE_DISABLED (0 << 0)
....@@ -472,6 +561,8 @@
472561 * Registers used only by the command parser
473562 */
474563 #define BCS_SWCTRL _MMIO(0x22200)
564
+#define BCS_SRC_Y REG_BIT(0)
565
+#define BCS_DST_Y REG_BIT(1)
475566
476567 /* There are 16 GPR registers */
477568 #define BCS_GPR(n) _MMIO(0x22600 + (n) * 8)
....@@ -585,6 +676,8 @@
585676 #define GEN7_OASTATUS2_MEM_SELECT_GGTT (1 << 0) /* 0: PPGTT, 1: GGTT */
586677
587678 #define GEN8_OASTATUS _MMIO(0x2b08)
679
+#define GEN8_OASTATUS_TAIL_POINTER_WRAP (1 << 17)
680
+#define GEN8_OASTATUS_HEAD_POINTER_WRAP (1 << 16)
588681 #define GEN8_OASTATUS_OVERRUN_STATUS (1 << 3)
589682 #define GEN8_OASTATUS_COUNTER_OVERFLOW (1 << 2)
590683 #define GEN8_OASTATUS_OABUFFER_OVERFLOW (1 << 1)
....@@ -603,6 +696,47 @@
603696 #define OABUFFER_SIZE_4M (5 << 3)
604697 #define OABUFFER_SIZE_8M (6 << 3)
605698 #define OABUFFER_SIZE_16M (7 << 3)
699
+
700
+#define GEN12_OA_TLB_INV_CR _MMIO(0xceec)
701
+
702
+/* Gen12 OAR unit */
703
+#define GEN12_OAR_OACONTROL _MMIO(0x2960)
704
+#define GEN12_OAR_OACONTROL_COUNTER_FORMAT_SHIFT 1
705
+#define GEN12_OAR_OACONTROL_COUNTER_ENABLE (1 << 0)
706
+
707
+#define GEN12_OACTXCONTROL _MMIO(0x2360)
708
+#define GEN12_OAR_OASTATUS _MMIO(0x2968)
709
+
710
+/* Gen12 OAG unit */
711
+#define GEN12_OAG_OAHEADPTR _MMIO(0xdb00)
712
+#define GEN12_OAG_OAHEADPTR_MASK 0xffffffc0
713
+#define GEN12_OAG_OATAILPTR _MMIO(0xdb04)
714
+#define GEN12_OAG_OATAILPTR_MASK 0xffffffc0
715
+
716
+#define GEN12_OAG_OABUFFER _MMIO(0xdb08)
717
+#define GEN12_OAG_OABUFFER_BUFFER_SIZE_MASK (0x7)
718
+#define GEN12_OAG_OABUFFER_BUFFER_SIZE_SHIFT (3)
719
+#define GEN12_OAG_OABUFFER_MEMORY_SELECT (1 << 0) /* 0: PPGTT, 1: GGTT */
720
+
721
+#define GEN12_OAG_OAGLBCTXCTRL _MMIO(0x2b28)
722
+#define GEN12_OAG_OAGLBCTXCTRL_TIMER_PERIOD_SHIFT 2
723
+#define GEN12_OAG_OAGLBCTXCTRL_TIMER_ENABLE (1 << 1)
724
+#define GEN12_OAG_OAGLBCTXCTRL_COUNTER_RESUME (1 << 0)
725
+
726
+#define GEN12_OAG_OACONTROL _MMIO(0xdaf4)
727
+#define GEN12_OAG_OACONTROL_OA_COUNTER_FORMAT_SHIFT 2
728
+#define GEN12_OAG_OACONTROL_OA_COUNTER_ENABLE (1 << 0)
729
+
730
+#define GEN12_OAG_OA_DEBUG _MMIO(0xdaf8)
731
+#define GEN12_OAG_OA_DEBUG_INCLUDE_CLK_RATIO (1 << 6)
732
+#define GEN12_OAG_OA_DEBUG_DISABLE_CLK_RATIO_REPORTS (1 << 5)
733
+#define GEN12_OAG_OA_DEBUG_DISABLE_GO_1_0_REPORTS (1 << 2)
734
+#define GEN12_OAG_OA_DEBUG_DISABLE_CTX_SWITCH_REPORTS (1 << 1)
735
+
736
+#define GEN12_OAG_OASTATUS _MMIO(0xdafc)
737
+#define GEN12_OAG_OASTATUS_COUNTER_OVERFLOW (1 << 2)
738
+#define GEN12_OAG_OASTATUS_BUFFER_OVERFLOW (1 << 1)
739
+#define GEN12_OAG_OASTATUS_REPORT_LOST (1 << 0)
606740
607741 /*
608742 * Flexible, Aggregate EU Counter Registers.
....@@ -736,7 +870,7 @@
736870
737871 #define OAREPORTTRIG1 _MMIO(0x2740)
738872 #define OAREPORTTRIG1_THRESHOLD_MASK 0xffff
739
-#define OAREPORTTRIG1_EDGE_LEVEL_TRIGER_SELECT_MASK 0xffff0000 /* 0=level */
873
+#define OAREPORTTRIG1_EDGE_LEVEL_TRIGGER_SELECT_MASK 0xffff0000 /* 0=level */
740874
741875 #define OAREPORTTRIG2 _MMIO(0x2744)
742876 #define OAREPORTTRIG2_INVERT_A_0 (1 << 0)
....@@ -789,7 +923,7 @@
789923
790924 #define OAREPORTTRIG5 _MMIO(0x2750)
791925 #define OAREPORTTRIG5_THRESHOLD_MASK 0xffff
792
-#define OAREPORTTRIG5_EDGE_LEVEL_TRIGER_SELECT_MASK 0xffff0000 /* 0=level */
926
+#define OAREPORTTRIG5_EDGE_LEVEL_TRIGGER_SELECT_MASK 0xffff0000 /* 0=level */
793927
794928 #define OAREPORTTRIG6 _MMIO(0x2754)
795929 #define OAREPORTTRIG6_INVERT_A_0 (1 << 0)
....@@ -840,6 +974,26 @@
840974 #define OAREPORTTRIG8_NOA_SELECT_6_SHIFT 24
841975 #define OAREPORTTRIG8_NOA_SELECT_7_SHIFT 28
842976
977
+/* Same layout as OASTARTTRIGX */
978
+#define GEN12_OAG_OASTARTTRIG1 _MMIO(0xd900)
979
+#define GEN12_OAG_OASTARTTRIG2 _MMIO(0xd904)
980
+#define GEN12_OAG_OASTARTTRIG3 _MMIO(0xd908)
981
+#define GEN12_OAG_OASTARTTRIG4 _MMIO(0xd90c)
982
+#define GEN12_OAG_OASTARTTRIG5 _MMIO(0xd910)
983
+#define GEN12_OAG_OASTARTTRIG6 _MMIO(0xd914)
984
+#define GEN12_OAG_OASTARTTRIG7 _MMIO(0xd918)
985
+#define GEN12_OAG_OASTARTTRIG8 _MMIO(0xd91c)
986
+
987
+/* Same layout as OAREPORTTRIGX */
988
+#define GEN12_OAG_OAREPORTTRIG1 _MMIO(0xd920)
989
+#define GEN12_OAG_OAREPORTTRIG2 _MMIO(0xd924)
990
+#define GEN12_OAG_OAREPORTTRIG3 _MMIO(0xd928)
991
+#define GEN12_OAG_OAREPORTTRIG4 _MMIO(0xd92c)
992
+#define GEN12_OAG_OAREPORTTRIG5 _MMIO(0xd930)
993
+#define GEN12_OAG_OAREPORTTRIG6 _MMIO(0xd934)
994
+#define GEN12_OAG_OAREPORTTRIG7 _MMIO(0xd938)
995
+#define GEN12_OAG_OAREPORTTRIG8 _MMIO(0xd93c)
996
+
843997 /* CECX_0 */
844998 #define OACEC_COMPARE_LESS_OR_EQUAL 6
845999 #define OACEC_COMPARE_NOT_EQUAL 5
....@@ -855,6 +1009,10 @@
8551009 #define OACEC_SELECT_NOA (0 << 19)
8561010 #define OACEC_SELECT_PREV (1 << 19)
8571011 #define OACEC_SELECT_BOOLEAN (2 << 19)
1012
+
1013
+/* 11-bit array 0: pass-through, 1: negated */
1014
+#define GEN12_OASCEC_NEGATE_MASK 0x7ff
1015
+#define GEN12_OASCEC_NEGATE_SHIFT 21
8581016
8591017 /* CECX_1 */
8601018 #define OACEC_MASK_MASK 0xffff
....@@ -877,6 +1035,42 @@
8771035 #define OACEC6_1 _MMIO(0x27a4)
8781036 #define OACEC7_0 _MMIO(0x27a8)
8791037 #define OACEC7_1 _MMIO(0x27ac)
1038
+
1039
+/* Same layout as CECX_Y */
1040
+#define GEN12_OAG_CEC0_0 _MMIO(0xd940)
1041
+#define GEN12_OAG_CEC0_1 _MMIO(0xd944)
1042
+#define GEN12_OAG_CEC1_0 _MMIO(0xd948)
1043
+#define GEN12_OAG_CEC1_1 _MMIO(0xd94c)
1044
+#define GEN12_OAG_CEC2_0 _MMIO(0xd950)
1045
+#define GEN12_OAG_CEC2_1 _MMIO(0xd954)
1046
+#define GEN12_OAG_CEC3_0 _MMIO(0xd958)
1047
+#define GEN12_OAG_CEC3_1 _MMIO(0xd95c)
1048
+#define GEN12_OAG_CEC4_0 _MMIO(0xd960)
1049
+#define GEN12_OAG_CEC4_1 _MMIO(0xd964)
1050
+#define GEN12_OAG_CEC5_0 _MMIO(0xd968)
1051
+#define GEN12_OAG_CEC5_1 _MMIO(0xd96c)
1052
+#define GEN12_OAG_CEC6_0 _MMIO(0xd970)
1053
+#define GEN12_OAG_CEC6_1 _MMIO(0xd974)
1054
+#define GEN12_OAG_CEC7_0 _MMIO(0xd978)
1055
+#define GEN12_OAG_CEC7_1 _MMIO(0xd97c)
1056
+
1057
+/* Same layout as CECX_Y + negate 11-bit array */
1058
+#define GEN12_OAG_SCEC0_0 _MMIO(0xdc00)
1059
+#define GEN12_OAG_SCEC0_1 _MMIO(0xdc04)
1060
+#define GEN12_OAG_SCEC1_0 _MMIO(0xdc08)
1061
+#define GEN12_OAG_SCEC1_1 _MMIO(0xdc0c)
1062
+#define GEN12_OAG_SCEC2_0 _MMIO(0xdc10)
1063
+#define GEN12_OAG_SCEC2_1 _MMIO(0xdc14)
1064
+#define GEN12_OAG_SCEC3_0 _MMIO(0xdc18)
1065
+#define GEN12_OAG_SCEC3_1 _MMIO(0xdc1c)
1066
+#define GEN12_OAG_SCEC4_0 _MMIO(0xdc20)
1067
+#define GEN12_OAG_SCEC4_1 _MMIO(0xdc24)
1068
+#define GEN12_OAG_SCEC5_0 _MMIO(0xdc28)
1069
+#define GEN12_OAG_SCEC5_1 _MMIO(0xdc2c)
1070
+#define GEN12_OAG_SCEC6_0 _MMIO(0xdc30)
1071
+#define GEN12_OAG_SCEC6_1 _MMIO(0xdc34)
1072
+#define GEN12_OAG_SCEC7_0 _MMIO(0xdc38)
1073
+#define GEN12_OAG_SCEC7_1 _MMIO(0xdc3c)
8801074
8811075 /* OA perf counters */
8821076 #define OA_PERFCNT1_LO _MMIO(0x91B8)
....@@ -958,11 +1152,16 @@
9581152 #define MICRO_BP3_COUNT_STATUS23 _MMIO(0x9838)
9591153 #define MICRO_BP_FIRED_ARMED _MMIO(0x983C)
9601154
1155
+#define GEN12_OAA_DBG_REG _MMIO(0xdc44)
1156
+#define GEN12_OAG_OA_PESS _MMIO(0x2b2c)
1157
+#define GEN12_OAG_SPCTR_CNF _MMIO(0xdc40)
1158
+
9611159 #define GDT_CHICKEN_BITS _MMIO(0x9840)
9621160 #define GT_NOA_ENABLE 0x00000080
9631161
9641162 #define NOA_DATA _MMIO(0x986C)
9651163 #define NOA_WRITE _MMIO(0x9888)
1164
+#define GEN10_NOA_WRITE_HIGH _MMIO(0x9884)
9661165
9671166 #define _GEN7_PIPEA_DE_LOAD_SL 0x70068
9681167 #define _GEN7_PIPEB_DE_LOAD_SL 0x71068
....@@ -1007,7 +1206,32 @@
10071206 /* See configdb bunit SB addr map */
10081207 #define BUNIT_REG_BISOC 0x11
10091208
1010
-#define PUNIT_REG_DSPFREQ 0x36
1209
+/* PUNIT_REG_*SSPM0 */
1210
+#define _SSPM0_SSC(val) ((val) << 0)
1211
+#define SSPM0_SSC_MASK _SSPM0_SSC(0x3)
1212
+#define SSPM0_SSC_PWR_ON _SSPM0_SSC(0x0)
1213
+#define SSPM0_SSC_CLK_GATE _SSPM0_SSC(0x1)
1214
+#define SSPM0_SSC_RESET _SSPM0_SSC(0x2)
1215
+#define SSPM0_SSC_PWR_GATE _SSPM0_SSC(0x3)
1216
+#define _SSPM0_SSS(val) ((val) << 24)
1217
+#define SSPM0_SSS_MASK _SSPM0_SSS(0x3)
1218
+#define SSPM0_SSS_PWR_ON _SSPM0_SSS(0x0)
1219
+#define SSPM0_SSS_CLK_GATE _SSPM0_SSS(0x1)
1220
+#define SSPM0_SSS_RESET _SSPM0_SSS(0x2)
1221
+#define SSPM0_SSS_PWR_GATE _SSPM0_SSS(0x3)
1222
+
1223
+/* PUNIT_REG_*SSPM1 */
1224
+#define SSPM1_FREQSTAT_SHIFT 24
1225
+#define SSPM1_FREQSTAT_MASK (0x1f << SSPM1_FREQSTAT_SHIFT)
1226
+#define SSPM1_FREQGUAR_SHIFT 8
1227
+#define SSPM1_FREQGUAR_MASK (0x1f << SSPM1_FREQGUAR_SHIFT)
1228
+#define SSPM1_FREQ_SHIFT 0
1229
+#define SSPM1_FREQ_MASK (0x1f << SSPM1_FREQ_SHIFT)
1230
+
1231
+#define PUNIT_REG_VEDSSPM0 0x32
1232
+#define PUNIT_REG_VEDSSPM1 0x33
1233
+
1234
+#define PUNIT_REG_DSPSSPM 0x36
10111235 #define DSPFREQSTAT_SHIFT_CHV 24
10121236 #define DSPFREQSTAT_MASK_CHV (0x1f << DSPFREQSTAT_SHIFT_CHV)
10131237 #define DSPFREQGUAR_SHIFT_CHV 8
....@@ -1032,129 +1256,28 @@
10321256 #define DP_SSS_RESET(pipe) _DP_SSS(0x2, (pipe))
10331257 #define DP_SSS_PWR_GATE(pipe) _DP_SSS(0x3, (pipe))
10341258
1035
-/*
1036
- * i915_power_well_id:
1037
- *
1038
- * Platform specific IDs used to look up power wells and - except for custom
1039
- * power wells - to define request/status register flag bit positions. As such
1040
- * the set of IDs on a given platform must be unique and except for custom
1041
- * power wells their value must stay fixed.
1042
- */
1043
-enum i915_power_well_id {
1044
- /*
1045
- * I830
1046
- * - custom power well
1047
- */
1048
- I830_DISP_PW_PIPES = 0,
1049
-
1050
- /*
1051
- * VLV/CHV
1052
- * - PUNIT_REG_PWRGT_CTRL (bit: id*2),
1053
- * PUNIT_REG_PWRGT_STATUS (bit: id*2) (PUNIT HAS v0.8)
1054
- */
1055
- PUNIT_POWER_WELL_RENDER = 0,
1056
- PUNIT_POWER_WELL_MEDIA = 1,
1057
- PUNIT_POWER_WELL_DISP2D = 3,
1058
- PUNIT_POWER_WELL_DPIO_CMN_BC = 5,
1059
- PUNIT_POWER_WELL_DPIO_TX_B_LANES_01 = 6,
1060
- PUNIT_POWER_WELL_DPIO_TX_B_LANES_23 = 7,
1061
- PUNIT_POWER_WELL_DPIO_TX_C_LANES_01 = 8,
1062
- PUNIT_POWER_WELL_DPIO_TX_C_LANES_23 = 9,
1063
- PUNIT_POWER_WELL_DPIO_RX0 = 10,
1064
- PUNIT_POWER_WELL_DPIO_RX1 = 11,
1065
- PUNIT_POWER_WELL_DPIO_CMN_D = 12,
1066
- /* - custom power well */
1067
- CHV_DISP_PW_PIPE_A, /* 13 */
1068
-
1069
- /*
1070
- * HSW/BDW
1071
- * - _HSW_PWR_WELL_CTL1-4 (status bit: id*2, req bit: id*2+1)
1072
- */
1073
- HSW_DISP_PW_GLOBAL = 15,
1074
-
1075
- /*
1076
- * GEN9+
1077
- * - _HSW_PWR_WELL_CTL1-4 (status bit: id*2, req bit: id*2+1)
1078
- */
1079
- SKL_DISP_PW_MISC_IO = 0,
1080
- SKL_DISP_PW_DDI_A_E,
1081
- GLK_DISP_PW_DDI_A = SKL_DISP_PW_DDI_A_E,
1082
- CNL_DISP_PW_DDI_A = SKL_DISP_PW_DDI_A_E,
1083
- SKL_DISP_PW_DDI_B,
1084
- SKL_DISP_PW_DDI_C,
1085
- SKL_DISP_PW_DDI_D,
1086
- CNL_DISP_PW_DDI_F = 6,
1087
-
1088
- GLK_DISP_PW_AUX_A = 8,
1089
- GLK_DISP_PW_AUX_B,
1090
- GLK_DISP_PW_AUX_C,
1091
- CNL_DISP_PW_AUX_A = GLK_DISP_PW_AUX_A,
1092
- CNL_DISP_PW_AUX_B = GLK_DISP_PW_AUX_B,
1093
- CNL_DISP_PW_AUX_C = GLK_DISP_PW_AUX_C,
1094
- CNL_DISP_PW_AUX_D,
1095
- CNL_DISP_PW_AUX_F,
1096
-
1097
- SKL_DISP_PW_1 = 14,
1098
- SKL_DISP_PW_2,
1099
-
1100
- /* - custom power wells */
1101
- BXT_DPIO_CMN_A,
1102
- BXT_DPIO_CMN_BC,
1103
- GLK_DPIO_CMN_C, /* 18 */
1104
-
1105
- /*
1106
- * GEN11+
1107
- * - _HSW_PWR_WELL_CTL1-4
1108
- * (status bit: (id&15)*2, req bit:(id&15)*2+1)
1109
- */
1110
- ICL_DISP_PW_1 = 0,
1111
- ICL_DISP_PW_2,
1112
- ICL_DISP_PW_3,
1113
- ICL_DISP_PW_4,
1114
-
1115
- /*
1116
- * - _HSW_PWR_WELL_CTL_AUX1/2/4
1117
- * (status bit: (id&15)*2, req bit:(id&15)*2+1)
1118
- */
1119
- ICL_DISP_PW_AUX_A = 16,
1120
- ICL_DISP_PW_AUX_B,
1121
- ICL_DISP_PW_AUX_C,
1122
- ICL_DISP_PW_AUX_D,
1123
- ICL_DISP_PW_AUX_E,
1124
- ICL_DISP_PW_AUX_F,
1125
-
1126
- ICL_DISP_PW_AUX_TBT1 = 24,
1127
- ICL_DISP_PW_AUX_TBT2,
1128
- ICL_DISP_PW_AUX_TBT3,
1129
- ICL_DISP_PW_AUX_TBT4,
1130
-
1131
- /*
1132
- * - _HSW_PWR_WELL_CTL_DDI1/2/4
1133
- * (status bit: (id&15)*2, req bit:(id&15)*2+1)
1134
- */
1135
- ICL_DISP_PW_DDI_A = 32,
1136
- ICL_DISP_PW_DDI_B,
1137
- ICL_DISP_PW_DDI_C,
1138
- ICL_DISP_PW_DDI_D,
1139
- ICL_DISP_PW_DDI_E,
1140
- ICL_DISP_PW_DDI_F, /* 37 */
1141
-
1142
- /*
1143
- * Multiple platforms.
1144
- * Must start following the highest ID of any platform.
1145
- * - custom power wells
1146
- */
1147
- SKL_DISP_PW_DC_OFF = 38,
1148
- I915_DISP_PW_ALWAYS_ON,
1149
-};
1259
+#define PUNIT_REG_ISPSSPM0 0x39
1260
+#define PUNIT_REG_ISPSSPM1 0x3a
11501261
11511262 #define PUNIT_REG_PWRGT_CTRL 0x60
11521263 #define PUNIT_REG_PWRGT_STATUS 0x61
1153
-#define PUNIT_PWRGT_MASK(power_well) (3 << ((power_well) * 2))
1154
-#define PUNIT_PWRGT_PWR_ON(power_well) (0 << ((power_well) * 2))
1155
-#define PUNIT_PWRGT_CLK_GATE(power_well) (1 << ((power_well) * 2))
1156
-#define PUNIT_PWRGT_RESET(power_well) (2 << ((power_well) * 2))
1157
-#define PUNIT_PWRGT_PWR_GATE(power_well) (3 << ((power_well) * 2))
1264
+#define PUNIT_PWRGT_MASK(pw_idx) (3 << ((pw_idx) * 2))
1265
+#define PUNIT_PWRGT_PWR_ON(pw_idx) (0 << ((pw_idx) * 2))
1266
+#define PUNIT_PWRGT_CLK_GATE(pw_idx) (1 << ((pw_idx) * 2))
1267
+#define PUNIT_PWRGT_RESET(pw_idx) (2 << ((pw_idx) * 2))
1268
+#define PUNIT_PWRGT_PWR_GATE(pw_idx) (3 << ((pw_idx) * 2))
1269
+
1270
+#define PUNIT_PWGT_IDX_RENDER 0
1271
+#define PUNIT_PWGT_IDX_MEDIA 1
1272
+#define PUNIT_PWGT_IDX_DISP2D 3
1273
+#define PUNIT_PWGT_IDX_DPIO_CMN_BC 5
1274
+#define PUNIT_PWGT_IDX_DPIO_TX_B_LANES_01 6
1275
+#define PUNIT_PWGT_IDX_DPIO_TX_B_LANES_23 7
1276
+#define PUNIT_PWGT_IDX_DPIO_TX_C_LANES_01 8
1277
+#define PUNIT_PWGT_IDX_DPIO_TX_C_LANES_23 9
1278
+#define PUNIT_PWGT_IDX_DPIO_RX0 10
1279
+#define PUNIT_PWGT_IDX_DPIO_RX1 11
1280
+#define PUNIT_PWGT_IDX_DPIO_CMN_D 12
11581281
11591282 #define PUNIT_REG_GPU_LFM 0xd3
11601283 #define PUNIT_REG_GPU_FREQ_REQ 0xd4
....@@ -1261,7 +1384,6 @@
12611384 #define DPIO_CMNRST (1 << 0)
12621385
12631386 #define DPIO_PHY(pipe) ((pipe) >> 1)
1264
-#define DPIO_PHY_IOSF_PORT(phy) (dev_priv->dpio_phy_iosf_port[phy])
12651387
12661388 /*
12671389 * Per pipe/PLL DPIO regs
....@@ -1718,35 +1840,6 @@
17181840 #define PHY_RESERVED (1 << 7)
17191841 #define BXT_PORT_CL1CM_DW0(phy) _BXT_PHY((phy), _PORT_CL1CM_DW0_BC)
17201842
1721
-#define CNL_PORT_CL1CM_DW5 _MMIO(0x162014)
1722
-#define CL_POWER_DOWN_ENABLE (1 << 4)
1723
-#define SUS_CLOCK_CONFIG (3 << 0)
1724
-
1725
-#define _ICL_PORT_CL_DW5_A 0x162014
1726
-#define _ICL_PORT_CL_DW5_B 0x6C014
1727
-#define ICL_PORT_CL_DW5(port) _MMIO_PORT(port, _ICL_PORT_CL_DW5_A, \
1728
- _ICL_PORT_CL_DW5_B)
1729
-
1730
-#define _CNL_PORT_CL_DW10_A 0x162028
1731
-#define _ICL_PORT_CL_DW10_B 0x6c028
1732
-#define ICL_PORT_CL_DW10(port) _MMIO_PORT(port, \
1733
- _CNL_PORT_CL_DW10_A, \
1734
- _ICL_PORT_CL_DW10_B)
1735
-#define PG_SEQ_DELAY_OVERRIDE_MASK (3 << 25)
1736
-#define PG_SEQ_DELAY_OVERRIDE_SHIFT 25
1737
-#define PG_SEQ_DELAY_OVERRIDE_ENABLE (1 << 24)
1738
-#define PWR_UP_ALL_LANES (0x0 << 4)
1739
-#define PWR_DOWN_LN_3_2_1 (0xe << 4)
1740
-#define PWR_DOWN_LN_3_2 (0xc << 4)
1741
-#define PWR_DOWN_LN_3 (0x8 << 4)
1742
-#define PWR_DOWN_LN_2_1_0 (0x7 << 4)
1743
-#define PWR_DOWN_LN_1_0 (0x3 << 4)
1744
-#define PWR_DOWN_LN_1 (0x2 << 4)
1745
-#define PWR_DOWN_LN_3_1 (0xa << 4)
1746
-#define PWR_DOWN_LN_3_1_0 (0xb << 4)
1747
-#define PWR_DOWN_LN_MASK (0xf << 4)
1748
-#define PWR_DOWN_LN_SHIFT 4
1749
-
17501843 #define _PORT_CL1CM_DW9_A 0x162024
17511844 #define _PORT_CL1CM_DW9_BC 0x6C024
17521845 #define IREF0RC_OFFSET_SHIFT 8
....@@ -1758,13 +1851,6 @@
17581851 #define IREF1RC_OFFSET_SHIFT 8
17591852 #define IREF1RC_OFFSET_MASK (0xFF << IREF1RC_OFFSET_SHIFT)
17601853 #define BXT_PORT_CL1CM_DW10(phy) _BXT_PHY((phy), _PORT_CL1CM_DW10_BC)
1761
-
1762
-#define _ICL_PORT_CL_DW12_A 0x162030
1763
-#define _ICL_PORT_CL_DW12_B 0x6C030
1764
-#define ICL_LANE_ENABLE_AUX (1 << 0)
1765
-#define ICL_PORT_CL_DW12(port) _MMIO_PORT((port), \
1766
- _ICL_PORT_CL_DW12_A, \
1767
- _ICL_PORT_CL_DW12_B)
17681854
17691855 #define _PORT_CL1CM_DW28_A 0x162070
17701856 #define _PORT_CL1CM_DW28_BC 0x6C070
....@@ -1778,6 +1864,82 @@
17781864 #define OCL2_LDOFUSE_PWR_DIS (1 << 6)
17791865 #define BXT_PORT_CL1CM_DW30(phy) _BXT_PHY((phy), _PORT_CL1CM_DW30_BC)
17801866
1867
+/*
1868
+ * CNL/ICL Port/COMBO-PHY Registers
1869
+ */
1870
+#define _ICL_COMBOPHY_A 0x162000
1871
+#define _ICL_COMBOPHY_B 0x6C000
1872
+#define _EHL_COMBOPHY_C 0x160000
1873
+#define _RKL_COMBOPHY_D 0x161000
1874
+#define _ICL_COMBOPHY(phy) _PICK(phy, _ICL_COMBOPHY_A, \
1875
+ _ICL_COMBOPHY_B, \
1876
+ _EHL_COMBOPHY_C, \
1877
+ _RKL_COMBOPHY_D)
1878
+
1879
+/* CNL/ICL Port CL_DW registers */
1880
+#define _ICL_PORT_CL_DW(dw, phy) (_ICL_COMBOPHY(phy) + \
1881
+ 4 * (dw))
1882
+
1883
+#define CNL_PORT_CL1CM_DW5 _MMIO(0x162014)
1884
+#define ICL_PORT_CL_DW5(phy) _MMIO(_ICL_PORT_CL_DW(5, phy))
1885
+#define CL_POWER_DOWN_ENABLE (1 << 4)
1886
+#define SUS_CLOCK_CONFIG (3 << 0)
1887
+
1888
+#define ICL_PORT_CL_DW10(phy) _MMIO(_ICL_PORT_CL_DW(10, phy))
1889
+#define PG_SEQ_DELAY_OVERRIDE_MASK (3 << 25)
1890
+#define PG_SEQ_DELAY_OVERRIDE_SHIFT 25
1891
+#define PG_SEQ_DELAY_OVERRIDE_ENABLE (1 << 24)
1892
+#define PWR_UP_ALL_LANES (0x0 << 4)
1893
+#define PWR_DOWN_LN_3_2_1 (0xe << 4)
1894
+#define PWR_DOWN_LN_3_2 (0xc << 4)
1895
+#define PWR_DOWN_LN_3 (0x8 << 4)
1896
+#define PWR_DOWN_LN_2_1_0 (0x7 << 4)
1897
+#define PWR_DOWN_LN_1_0 (0x3 << 4)
1898
+#define PWR_DOWN_LN_3_1 (0xa << 4)
1899
+#define PWR_DOWN_LN_3_1_0 (0xb << 4)
1900
+#define PWR_DOWN_LN_MASK (0xf << 4)
1901
+#define PWR_DOWN_LN_SHIFT 4
1902
+#define EDP4K2K_MODE_OVRD_EN (1 << 3)
1903
+#define EDP4K2K_MODE_OVRD_OPTIMIZED (1 << 2)
1904
+
1905
+#define ICL_PORT_CL_DW12(phy) _MMIO(_ICL_PORT_CL_DW(12, phy))
1906
+#define ICL_LANE_ENABLE_AUX (1 << 0)
1907
+
1908
+/* CNL/ICL Port COMP_DW registers */
1909
+#define _ICL_PORT_COMP 0x100
1910
+#define _ICL_PORT_COMP_DW(dw, phy) (_ICL_COMBOPHY(phy) + \
1911
+ _ICL_PORT_COMP + 4 * (dw))
1912
+
1913
+#define CNL_PORT_COMP_DW0 _MMIO(0x162100)
1914
+#define ICL_PORT_COMP_DW0(phy) _MMIO(_ICL_PORT_COMP_DW(0, phy))
1915
+#define COMP_INIT (1 << 31)
1916
+
1917
+#define CNL_PORT_COMP_DW1 _MMIO(0x162104)
1918
+#define ICL_PORT_COMP_DW1(phy) _MMIO(_ICL_PORT_COMP_DW(1, phy))
1919
+
1920
+#define CNL_PORT_COMP_DW3 _MMIO(0x16210c)
1921
+#define ICL_PORT_COMP_DW3(phy) _MMIO(_ICL_PORT_COMP_DW(3, phy))
1922
+#define PROCESS_INFO_DOT_0 (0 << 26)
1923
+#define PROCESS_INFO_DOT_1 (1 << 26)
1924
+#define PROCESS_INFO_DOT_4 (2 << 26)
1925
+#define PROCESS_INFO_MASK (7 << 26)
1926
+#define PROCESS_INFO_SHIFT 26
1927
+#define VOLTAGE_INFO_0_85V (0 << 24)
1928
+#define VOLTAGE_INFO_0_95V (1 << 24)
1929
+#define VOLTAGE_INFO_1_05V (2 << 24)
1930
+#define VOLTAGE_INFO_MASK (3 << 24)
1931
+#define VOLTAGE_INFO_SHIFT 24
1932
+
1933
+#define ICL_PORT_COMP_DW8(phy) _MMIO(_ICL_PORT_COMP_DW(8, phy))
1934
+#define IREFGEN (1 << 24)
1935
+
1936
+#define CNL_PORT_COMP_DW9 _MMIO(0x162124)
1937
+#define ICL_PORT_COMP_DW9(phy) _MMIO(_ICL_PORT_COMP_DW(9, phy))
1938
+
1939
+#define CNL_PORT_COMP_DW10 _MMIO(0x162128)
1940
+#define ICL_PORT_COMP_DW10(phy) _MMIO(_ICL_PORT_COMP_DW(10, phy))
1941
+
1942
+/* CNL/ICL Port PCS registers */
17811943 #define _CNL_PORT_PCS_DW1_GRP_AE 0x162304
17821944 #define _CNL_PORT_PCS_DW1_GRP_B 0x162384
17831945 #define _CNL_PORT_PCS_DW1_GRP_C 0x162B04
....@@ -1788,15 +1950,14 @@
17881950 #define _CNL_PORT_PCS_DW1_LN0_C 0x162C04
17891951 #define _CNL_PORT_PCS_DW1_LN0_D 0x162E04
17901952 #define _CNL_PORT_PCS_DW1_LN0_F 0x162804
1791
-#define CNL_PORT_PCS_DW1_GRP(port) _MMIO(_PICK(port, \
1953
+#define CNL_PORT_PCS_DW1_GRP(phy) _MMIO(_PICK(phy, \
17921954 _CNL_PORT_PCS_DW1_GRP_AE, \
17931955 _CNL_PORT_PCS_DW1_GRP_B, \
17941956 _CNL_PORT_PCS_DW1_GRP_C, \
17951957 _CNL_PORT_PCS_DW1_GRP_D, \
17961958 _CNL_PORT_PCS_DW1_GRP_AE, \
17971959 _CNL_PORT_PCS_DW1_GRP_F))
1798
-
1799
-#define CNL_PORT_PCS_DW1_LN0(port) _MMIO(_PICK(port, \
1960
+#define CNL_PORT_PCS_DW1_LN0(phy) _MMIO(_PICK(phy, \
18001961 _CNL_PORT_PCS_DW1_LN0_AE, \
18011962 _CNL_PORT_PCS_DW1_LN0_B, \
18021963 _CNL_PORT_PCS_DW1_LN0_C, \
....@@ -1804,24 +1965,25 @@
18041965 _CNL_PORT_PCS_DW1_LN0_AE, \
18051966 _CNL_PORT_PCS_DW1_LN0_F))
18061967
1807
-#define _ICL_PORT_PCS_DW1_GRP_A 0x162604
1808
-#define _ICL_PORT_PCS_DW1_GRP_B 0x6C604
1809
-#define _ICL_PORT_PCS_DW1_LN0_A 0x162804
1810
-#define _ICL_PORT_PCS_DW1_LN0_B 0x6C804
1811
-#define _ICL_PORT_PCS_DW1_AUX_A 0x162304
1812
-#define _ICL_PORT_PCS_DW1_AUX_B 0x6c304
1813
-#define ICL_PORT_PCS_DW1_GRP(port) _MMIO_PORT(port,\
1814
- _ICL_PORT_PCS_DW1_GRP_A, \
1815
- _ICL_PORT_PCS_DW1_GRP_B)
1816
-#define ICL_PORT_PCS_DW1_LN0(port) _MMIO_PORT(port, \
1817
- _ICL_PORT_PCS_DW1_LN0_A, \
1818
- _ICL_PORT_PCS_DW1_LN0_B)
1819
-#define ICL_PORT_PCS_DW1_AUX(port) _MMIO_PORT(port, \
1820
- _ICL_PORT_PCS_DW1_AUX_A, \
1821
- _ICL_PORT_PCS_DW1_AUX_B)
1968
+#define _ICL_PORT_PCS_AUX 0x300
1969
+#define _ICL_PORT_PCS_GRP 0x600
1970
+#define _ICL_PORT_PCS_LN(ln) (0x800 + (ln) * 0x100)
1971
+#define _ICL_PORT_PCS_DW_AUX(dw, phy) (_ICL_COMBOPHY(phy) + \
1972
+ _ICL_PORT_PCS_AUX + 4 * (dw))
1973
+#define _ICL_PORT_PCS_DW_GRP(dw, phy) (_ICL_COMBOPHY(phy) + \
1974
+ _ICL_PORT_PCS_GRP + 4 * (dw))
1975
+#define _ICL_PORT_PCS_DW_LN(dw, ln, phy) (_ICL_COMBOPHY(phy) + \
1976
+ _ICL_PORT_PCS_LN(ln) + 4 * (dw))
1977
+#define ICL_PORT_PCS_DW1_AUX(phy) _MMIO(_ICL_PORT_PCS_DW_AUX(1, phy))
1978
+#define ICL_PORT_PCS_DW1_GRP(phy) _MMIO(_ICL_PORT_PCS_DW_GRP(1, phy))
1979
+#define ICL_PORT_PCS_DW1_LN0(phy) _MMIO(_ICL_PORT_PCS_DW_LN(1, 0, phy))
1980
+#define DCC_MODE_SELECT_MASK (0x3 << 20)
1981
+#define DCC_MODE_SELECT_CONTINUOSLY (0x3 << 20)
18221982 #define COMMON_KEEPER_EN (1 << 26)
1983
+#define LATENCY_OPTIM_MASK (0x3 << 2)
1984
+#define LATENCY_OPTIM_VAL(x) ((x) << 2)
18231985
1824
-/* CNL Port TX registers */
1986
+/* CNL/ICL Port TX registers */
18251987 #define _CNL_PORT_TX_AE_GRP_OFFSET 0x162340
18261988 #define _CNL_PORT_TX_B_GRP_OFFSET 0x1623C0
18271989 #define _CNL_PORT_TX_C_GRP_OFFSET 0x162B40
....@@ -1832,7 +1994,7 @@
18321994 #define _CNL_PORT_TX_C_LN0_OFFSET 0x162C40
18331995 #define _CNL_PORT_TX_D_LN0_OFFSET 0x162E40
18341996 #define _CNL_PORT_TX_F_LN0_OFFSET 0x162840
1835
-#define _CNL_PORT_TX_DW_GRP(port, dw) (_PICK((port), \
1997
+#define _CNL_PORT_TX_DW_GRP(dw, port) (_PICK((port), \
18361998 _CNL_PORT_TX_AE_GRP_OFFSET, \
18371999 _CNL_PORT_TX_B_GRP_OFFSET, \
18382000 _CNL_PORT_TX_B_GRP_OFFSET, \
....@@ -1840,7 +2002,7 @@
18402002 _CNL_PORT_TX_AE_GRP_OFFSET, \
18412003 _CNL_PORT_TX_F_GRP_OFFSET) + \
18422004 4 * (dw))
1843
-#define _CNL_PORT_TX_DW_LN0(port, dw) (_PICK((port), \
2005
+#define _CNL_PORT_TX_DW_LN0(dw, port) (_PICK((port), \
18442006 _CNL_PORT_TX_AE_LN0_OFFSET, \
18452007 _CNL_PORT_TX_B_LN0_OFFSET, \
18462008 _CNL_PORT_TX_B_LN0_OFFSET, \
....@@ -1849,23 +2011,22 @@
18492011 _CNL_PORT_TX_F_LN0_OFFSET) + \
18502012 4 * (dw))
18512013
1852
-#define CNL_PORT_TX_DW2_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP((port), 2))
1853
-#define CNL_PORT_TX_DW2_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0((port), 2))
1854
-#define _ICL_PORT_TX_DW2_GRP_A 0x162688
1855
-#define _ICL_PORT_TX_DW2_GRP_B 0x6C688
1856
-#define _ICL_PORT_TX_DW2_LN0_A 0x162888
1857
-#define _ICL_PORT_TX_DW2_LN0_B 0x6C888
1858
-#define _ICL_PORT_TX_DW2_AUX_A 0x162388
1859
-#define _ICL_PORT_TX_DW2_AUX_B 0x6c388
1860
-#define ICL_PORT_TX_DW2_GRP(port) _MMIO_PORT(port, \
1861
- _ICL_PORT_TX_DW2_GRP_A, \
1862
- _ICL_PORT_TX_DW2_GRP_B)
1863
-#define ICL_PORT_TX_DW2_LN0(port) _MMIO_PORT(port, \
1864
- _ICL_PORT_TX_DW2_LN0_A, \
1865
- _ICL_PORT_TX_DW2_LN0_B)
1866
-#define ICL_PORT_TX_DW2_AUX(port) _MMIO_PORT(port, \
1867
- _ICL_PORT_TX_DW2_AUX_A, \
1868
- _ICL_PORT_TX_DW2_AUX_B)
2014
+#define _ICL_PORT_TX_AUX 0x380
2015
+#define _ICL_PORT_TX_GRP 0x680
2016
+#define _ICL_PORT_TX_LN(ln) (0x880 + (ln) * 0x100)
2017
+
2018
+#define _ICL_PORT_TX_DW_AUX(dw, phy) (_ICL_COMBOPHY(phy) + \
2019
+ _ICL_PORT_TX_AUX + 4 * (dw))
2020
+#define _ICL_PORT_TX_DW_GRP(dw, phy) (_ICL_COMBOPHY(phy) + \
2021
+ _ICL_PORT_TX_GRP + 4 * (dw))
2022
+#define _ICL_PORT_TX_DW_LN(dw, ln, phy) (_ICL_COMBOPHY(phy) + \
2023
+ _ICL_PORT_TX_LN(ln) + 4 * (dw))
2024
+
2025
+#define CNL_PORT_TX_DW2_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP(2, port))
2026
+#define CNL_PORT_TX_DW2_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0(2, port))
2027
+#define ICL_PORT_TX_DW2_AUX(phy) _MMIO(_ICL_PORT_TX_DW_AUX(2, phy))
2028
+#define ICL_PORT_TX_DW2_GRP(phy) _MMIO(_ICL_PORT_TX_DW_GRP(2, phy))
2029
+#define ICL_PORT_TX_DW2_LN0(phy) _MMIO(_ICL_PORT_TX_DW_LN(2, 0, phy))
18692030 #define SWING_SEL_UPPER(x) (((x) >> 3) << 15)
18702031 #define SWING_SEL_UPPER_MASK (1 << 15)
18712032 #define SWING_SEL_LOWER(x) (((x) & 0x7) << 11)
....@@ -1877,29 +2038,15 @@
18772038
18782039 #define _CNL_PORT_TX_DW4_LN0_AE 0x162450
18792040 #define _CNL_PORT_TX_DW4_LN1_AE 0x1624D0
1880
-#define CNL_PORT_TX_DW4_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP((port), 4))
1881
-#define CNL_PORT_TX_DW4_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0((port), 4))
1882
-#define CNL_PORT_TX_DW4_LN(port, ln) _MMIO(_CNL_PORT_TX_DW_LN0((port), 4) + \
2041
+#define CNL_PORT_TX_DW4_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP(4, (port)))
2042
+#define CNL_PORT_TX_DW4_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0(4, (port)))
2043
+#define CNL_PORT_TX_DW4_LN(ln, port) _MMIO(_CNL_PORT_TX_DW_LN0(4, (port)) + \
18832044 ((ln) * (_CNL_PORT_TX_DW4_LN1_AE - \
18842045 _CNL_PORT_TX_DW4_LN0_AE)))
1885
-#define _ICL_PORT_TX_DW4_GRP_A 0x162690
1886
-#define _ICL_PORT_TX_DW4_GRP_B 0x6C690
1887
-#define _ICL_PORT_TX_DW4_LN0_A 0x162890
1888
-#define _ICL_PORT_TX_DW4_LN1_A 0x162990
1889
-#define _ICL_PORT_TX_DW4_LN0_B 0x6C890
1890
-#define _ICL_PORT_TX_DW4_AUX_A 0x162390
1891
-#define _ICL_PORT_TX_DW4_AUX_B 0x6c390
1892
-#define ICL_PORT_TX_DW4_GRP(port) _MMIO_PORT(port, \
1893
- _ICL_PORT_TX_DW4_GRP_A, \
1894
- _ICL_PORT_TX_DW4_GRP_B)
1895
-#define ICL_PORT_TX_DW4_LN(port, ln) _MMIO(_PORT(port, \
1896
- _ICL_PORT_TX_DW4_LN0_A, \
1897
- _ICL_PORT_TX_DW4_LN0_B) + \
1898
- ((ln) * (_ICL_PORT_TX_DW4_LN1_A - \
1899
- _ICL_PORT_TX_DW4_LN0_A)))
1900
-#define ICL_PORT_TX_DW4_AUX(port) _MMIO_PORT(port, \
1901
- _ICL_PORT_TX_DW4_AUX_A, \
1902
- _ICL_PORT_TX_DW4_AUX_B)
2046
+#define ICL_PORT_TX_DW4_AUX(phy) _MMIO(_ICL_PORT_TX_DW_AUX(4, phy))
2047
+#define ICL_PORT_TX_DW4_GRP(phy) _MMIO(_ICL_PORT_TX_DW_GRP(4, phy))
2048
+#define ICL_PORT_TX_DW4_LN0(phy) _MMIO(_ICL_PORT_TX_DW_LN(4, 0, phy))
2049
+#define ICL_PORT_TX_DW4_LN(ln, phy) _MMIO(_ICL_PORT_TX_DW_LN(4, ln, phy))
19032050 #define LOADGEN_SELECT (1 << 31)
19042051 #define POST_CURSOR_1(x) ((x) << 12)
19052052 #define POST_CURSOR_1_MASK (0x3F << 12)
....@@ -1908,23 +2055,11 @@
19082055 #define CURSOR_COEFF(x) ((x) << 0)
19092056 #define CURSOR_COEFF_MASK (0x3F << 0)
19102057
1911
-#define CNL_PORT_TX_DW5_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP((port), 5))
1912
-#define CNL_PORT_TX_DW5_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0((port), 5))
1913
-#define _ICL_PORT_TX_DW5_GRP_A 0x162694
1914
-#define _ICL_PORT_TX_DW5_GRP_B 0x6C694
1915
-#define _ICL_PORT_TX_DW5_LN0_A 0x162894
1916
-#define _ICL_PORT_TX_DW5_LN0_B 0x6C894
1917
-#define _ICL_PORT_TX_DW5_AUX_A 0x162394
1918
-#define _ICL_PORT_TX_DW5_AUX_B 0x6c394
1919
-#define ICL_PORT_TX_DW5_GRP(port) _MMIO_PORT(port, \
1920
- _ICL_PORT_TX_DW5_GRP_A, \
1921
- _ICL_PORT_TX_DW5_GRP_B)
1922
-#define ICL_PORT_TX_DW5_LN0(port) _MMIO_PORT(port, \
1923
- _ICL_PORT_TX_DW5_LN0_A, \
1924
- _ICL_PORT_TX_DW5_LN0_B)
1925
-#define ICL_PORT_TX_DW5_AUX(port) _MMIO_PORT(port, \
1926
- _ICL_PORT_TX_DW5_AUX_A, \
1927
- _ICL_PORT_TX_DW5_AUX_B)
2058
+#define CNL_PORT_TX_DW5_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP(5, port))
2059
+#define CNL_PORT_TX_DW5_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0(5, port))
2060
+#define ICL_PORT_TX_DW5_AUX(phy) _MMIO(_ICL_PORT_TX_DW_AUX(5, phy))
2061
+#define ICL_PORT_TX_DW5_GRP(phy) _MMIO(_ICL_PORT_TX_DW_GRP(5, phy))
2062
+#define ICL_PORT_TX_DW5_LN0(phy) _MMIO(_ICL_PORT_TX_DW_LN(5, 0, phy))
19282063 #define TX_TRAINING_EN (1 << 31)
19292064 #define TAP2_DISABLE (1 << 30)
19302065 #define TAP3_DISABLE (1 << 29)
....@@ -1933,126 +2068,200 @@
19332068 #define RTERM_SELECT(x) ((x) << 3)
19342069 #define RTERM_SELECT_MASK (0x7 << 3)
19352070
1936
-#define CNL_PORT_TX_DW7_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP((port), 7))
1937
-#define CNL_PORT_TX_DW7_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0((port), 7))
2071
+#define CNL_PORT_TX_DW7_GRP(port) _MMIO(_CNL_PORT_TX_DW_GRP(7, (port)))
2072
+#define CNL_PORT_TX_DW7_LN0(port) _MMIO(_CNL_PORT_TX_DW_LN0(7, (port)))
2073
+#define ICL_PORT_TX_DW7_AUX(phy) _MMIO(_ICL_PORT_TX_DW_AUX(7, phy))
2074
+#define ICL_PORT_TX_DW7_GRP(phy) _MMIO(_ICL_PORT_TX_DW_GRP(7, phy))
2075
+#define ICL_PORT_TX_DW7_LN0(phy) _MMIO(_ICL_PORT_TX_DW_LN(7, 0, phy))
2076
+#define ICL_PORT_TX_DW7_LN(ln, phy) _MMIO(_ICL_PORT_TX_DW_LN(7, ln, phy))
19382077 #define N_SCALAR(x) ((x) << 24)
19392078 #define N_SCALAR_MASK (0x7F << 24)
19402079
1941
-#define _ICL_MG_PHY_PORT_LN(port, ln, ln0p1, ln0p2, ln1p1) \
1942
- _MMIO(_PORT((port) - PORT_C, ln0p1, ln0p2) + (ln) * ((ln1p1) - (ln0p1)))
2080
+#define ICL_PORT_TX_DW8_AUX(phy) _MMIO(_ICL_PORT_TX_DW_AUX(8, phy))
2081
+#define ICL_PORT_TX_DW8_GRP(phy) _MMIO(_ICL_PORT_TX_DW_GRP(8, phy))
2082
+#define ICL_PORT_TX_DW8_LN0(phy) _MMIO(_ICL_PORT_TX_DW_LN(8, 0, phy))
2083
+#define ICL_PORT_TX_DW8_ODCC_CLK_SEL REG_BIT(31)
2084
+#define ICL_PORT_TX_DW8_ODCC_CLK_DIV_SEL_MASK REG_GENMASK(30, 29)
2085
+#define ICL_PORT_TX_DW8_ODCC_CLK_DIV_SEL_DIV2 REG_FIELD_PREP(ICL_PORT_TX_DW8_ODCC_CLK_DIV_SEL_MASK, 0x1)
19432086
1944
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT1 0x16812C
1945
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN1_PORT1 0x16852C
1946
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT2 0x16912C
1947
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN1_PORT2 0x16952C
1948
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT3 0x16A12C
1949
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN1_PORT3 0x16A52C
1950
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT4 0x16B12C
1951
-#define _ICL_MG_TX_LINK_PARAMS_TX1LN1_PORT4 0x16B52C
1952
-#define ICL_PORT_MG_TX1_LINK_PARAMS(port, ln) \
1953
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT1, \
1954
- _ICL_MG_TX_LINK_PARAMS_TX1LN0_PORT2, \
1955
- _ICL_MG_TX_LINK_PARAMS_TX1LN1_PORT1)
2087
+#define _ICL_DPHY_CHKN_REG 0x194
2088
+#define ICL_DPHY_CHKN(port) _MMIO(_ICL_COMBOPHY(port) + _ICL_DPHY_CHKN_REG)
2089
+#define ICL_DPHY_CHKN_AFE_OVER_PPI_STRAP REG_BIT(7)
19562090
1957
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT1 0x1680AC
1958
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN1_PORT1 0x1684AC
1959
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT2 0x1690AC
1960
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN1_PORT2 0x1694AC
1961
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT3 0x16A0AC
1962
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN1_PORT3 0x16A4AC
1963
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT4 0x16B0AC
1964
-#define _ICL_MG_TX_LINK_PARAMS_TX2LN1_PORT4 0x16B4AC
1965
-#define ICL_PORT_MG_TX2_LINK_PARAMS(port, ln) \
1966
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT1, \
1967
- _ICL_MG_TX_LINK_PARAMS_TX2LN0_PORT2, \
1968
- _ICL_MG_TX_LINK_PARAMS_TX2LN1_PORT1)
1969
-#define CRI_USE_FS32 (1 << 5)
2091
+#define MG_PHY_PORT_LN(ln, tc_port, ln0p1, ln0p2, ln1p1) \
2092
+ _MMIO(_PORT(tc_port, ln0p1, ln0p2) + (ln) * ((ln1p1) - (ln0p1)))
19702093
1971
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT1 0x16814C
1972
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN1_PORT1 0x16854C
1973
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT2 0x16914C
1974
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN1_PORT2 0x16954C
1975
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT3 0x16A14C
1976
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN1_PORT3 0x16A54C
1977
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT4 0x16B14C
1978
-#define _ICL_MG_TX_PISO_READLOAD_TX1LN1_PORT4 0x16B54C
1979
-#define ICL_PORT_MG_TX1_PISO_READLOAD(port, ln) \
1980
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT1, \
1981
- _ICL_MG_TX_PISO_READLOAD_TX1LN0_PORT2, \
1982
- _ICL_MG_TX_PISO_READLOAD_TX1LN1_PORT1)
2094
+#define MG_TX_LINK_PARAMS_TX1LN0_PORT1 0x16812C
2095
+#define MG_TX_LINK_PARAMS_TX1LN1_PORT1 0x16852C
2096
+#define MG_TX_LINK_PARAMS_TX1LN0_PORT2 0x16912C
2097
+#define MG_TX_LINK_PARAMS_TX1LN1_PORT2 0x16952C
2098
+#define MG_TX_LINK_PARAMS_TX1LN0_PORT3 0x16A12C
2099
+#define MG_TX_LINK_PARAMS_TX1LN1_PORT3 0x16A52C
2100
+#define MG_TX_LINK_PARAMS_TX1LN0_PORT4 0x16B12C
2101
+#define MG_TX_LINK_PARAMS_TX1LN1_PORT4 0x16B52C
2102
+#define MG_TX1_LINK_PARAMS(ln, tc_port) \
2103
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_LINK_PARAMS_TX1LN0_PORT1, \
2104
+ MG_TX_LINK_PARAMS_TX1LN0_PORT2, \
2105
+ MG_TX_LINK_PARAMS_TX1LN1_PORT1)
19832106
1984
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT1 0x1680CC
1985
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN1_PORT1 0x1684CC
1986
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT2 0x1690CC
1987
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN1_PORT2 0x1694CC
1988
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT3 0x16A0CC
1989
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN1_PORT3 0x16A4CC
1990
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT4 0x16B0CC
1991
-#define _ICL_MG_TX_PISO_READLOAD_TX2LN1_PORT4 0x16B4CC
1992
-#define ICL_PORT_MG_TX2_PISO_READLOAD(port, ln) \
1993
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT1, \
1994
- _ICL_MG_TX_PISO_READLOAD_TX2LN0_PORT2, \
1995
- _ICL_MG_TX_PISO_READLOAD_TX2LN1_PORT1)
1996
-#define CRI_CALCINIT (1 << 1)
2107
+#define MG_TX_LINK_PARAMS_TX2LN0_PORT1 0x1680AC
2108
+#define MG_TX_LINK_PARAMS_TX2LN1_PORT1 0x1684AC
2109
+#define MG_TX_LINK_PARAMS_TX2LN0_PORT2 0x1690AC
2110
+#define MG_TX_LINK_PARAMS_TX2LN1_PORT2 0x1694AC
2111
+#define MG_TX_LINK_PARAMS_TX2LN0_PORT3 0x16A0AC
2112
+#define MG_TX_LINK_PARAMS_TX2LN1_PORT3 0x16A4AC
2113
+#define MG_TX_LINK_PARAMS_TX2LN0_PORT4 0x16B0AC
2114
+#define MG_TX_LINK_PARAMS_TX2LN1_PORT4 0x16B4AC
2115
+#define MG_TX2_LINK_PARAMS(ln, tc_port) \
2116
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_LINK_PARAMS_TX2LN0_PORT1, \
2117
+ MG_TX_LINK_PARAMS_TX2LN0_PORT2, \
2118
+ MG_TX_LINK_PARAMS_TX2LN1_PORT1)
2119
+#define CRI_USE_FS32 (1 << 5)
19972120
1998
-#define _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT1 0x168148
1999
-#define _ICL_MG_TX_SWINGCTRL_TX1LN1_PORT1 0x168548
2000
-#define _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT2 0x169148
2001
-#define _ICL_MG_TX_SWINGCTRL_TX1LN1_PORT2 0x169548
2002
-#define _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT3 0x16A148
2003
-#define _ICL_MG_TX_SWINGCTRL_TX1LN1_PORT3 0x16A548
2004
-#define _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT4 0x16B148
2005
-#define _ICL_MG_TX_SWINGCTRL_TX1LN1_PORT4 0x16B548
2006
-#define ICL_PORT_MG_TX1_SWINGCTRL(port, ln) \
2007
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT1, \
2008
- _ICL_MG_TX_SWINGCTRL_TX1LN0_PORT2, \
2009
- _ICL_MG_TX_SWINGCTRL_TX1LN1_PORT1)
2121
+#define MG_TX_PISO_READLOAD_TX1LN0_PORT1 0x16814C
2122
+#define MG_TX_PISO_READLOAD_TX1LN1_PORT1 0x16854C
2123
+#define MG_TX_PISO_READLOAD_TX1LN0_PORT2 0x16914C
2124
+#define MG_TX_PISO_READLOAD_TX1LN1_PORT2 0x16954C
2125
+#define MG_TX_PISO_READLOAD_TX1LN0_PORT3 0x16A14C
2126
+#define MG_TX_PISO_READLOAD_TX1LN1_PORT3 0x16A54C
2127
+#define MG_TX_PISO_READLOAD_TX1LN0_PORT4 0x16B14C
2128
+#define MG_TX_PISO_READLOAD_TX1LN1_PORT4 0x16B54C
2129
+#define MG_TX1_PISO_READLOAD(ln, tc_port) \
2130
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_PISO_READLOAD_TX1LN0_PORT1, \
2131
+ MG_TX_PISO_READLOAD_TX1LN0_PORT2, \
2132
+ MG_TX_PISO_READLOAD_TX1LN1_PORT1)
20102133
2011
-#define _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT1 0x1680C8
2012
-#define _ICL_MG_TX_SWINGCTRL_TX2LN1_PORT1 0x1684C8
2013
-#define _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT2 0x1690C8
2014
-#define _ICL_MG_TX_SWINGCTRL_TX2LN1_PORT2 0x1694C8
2015
-#define _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT3 0x16A0C8
2016
-#define _ICL_MG_TX_SWINGCTRL_TX2LN1_PORT3 0x16A4C8
2017
-#define _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT4 0x16B0C8
2018
-#define _ICL_MG_TX_SWINGCTRL_TX2LN1_PORT4 0x16B4C8
2019
-#define ICL_PORT_MG_TX2_SWINGCTRL(port, ln) \
2020
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT1, \
2021
- _ICL_MG_TX_SWINGCTRL_TX2LN0_PORT2, \
2022
- _ICL_MG_TX_SWINGCTRL_TX2LN1_PORT1)
2023
-#define CRI_TXDEEMPH_OVERRIDE_17_12(x) ((x) << 0)
2024
-#define CRI_TXDEEMPH_OVERRIDE_17_12_MASK (0x3F << 0)
2134
+#define MG_TX_PISO_READLOAD_TX2LN0_PORT1 0x1680CC
2135
+#define MG_TX_PISO_READLOAD_TX2LN1_PORT1 0x1684CC
2136
+#define MG_TX_PISO_READLOAD_TX2LN0_PORT2 0x1690CC
2137
+#define MG_TX_PISO_READLOAD_TX2LN1_PORT2 0x1694CC
2138
+#define MG_TX_PISO_READLOAD_TX2LN0_PORT3 0x16A0CC
2139
+#define MG_TX_PISO_READLOAD_TX2LN1_PORT3 0x16A4CC
2140
+#define MG_TX_PISO_READLOAD_TX2LN0_PORT4 0x16B0CC
2141
+#define MG_TX_PISO_READLOAD_TX2LN1_PORT4 0x16B4CC
2142
+#define MG_TX2_PISO_READLOAD(ln, tc_port) \
2143
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_PISO_READLOAD_TX2LN0_PORT1, \
2144
+ MG_TX_PISO_READLOAD_TX2LN0_PORT2, \
2145
+ MG_TX_PISO_READLOAD_TX2LN1_PORT1)
2146
+#define CRI_CALCINIT (1 << 1)
20252147
2026
-#define _ICL_MG_TX_DRVCTRL_TX1LN0_PORT1 0x168144
2027
-#define _ICL_MG_TX_DRVCTRL_TX1LN1_PORT1 0x168544
2028
-#define _ICL_MG_TX_DRVCTRL_TX1LN0_PORT2 0x169144
2029
-#define _ICL_MG_TX_DRVCTRL_TX1LN1_PORT2 0x169544
2030
-#define _ICL_MG_TX_DRVCTRL_TX1LN0_PORT3 0x16A144
2031
-#define _ICL_MG_TX_DRVCTRL_TX1LN1_PORT3 0x16A544
2032
-#define _ICL_MG_TX_DRVCTRL_TX1LN0_PORT4 0x16B144
2033
-#define _ICL_MG_TX_DRVCTRL_TX1LN1_PORT4 0x16B544
2034
-#define ICL_PORT_MG_TX1_DRVCTRL(port, ln) \
2035
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_DRVCTRL_TX1LN0_PORT1, \
2036
- _ICL_MG_TX_DRVCTRL_TX1LN0_PORT2, \
2037
- _ICL_MG_TX_DRVCTRL_TX1LN1_PORT1)
2148
+#define MG_TX_SWINGCTRL_TX1LN0_PORT1 0x168148
2149
+#define MG_TX_SWINGCTRL_TX1LN1_PORT1 0x168548
2150
+#define MG_TX_SWINGCTRL_TX1LN0_PORT2 0x169148
2151
+#define MG_TX_SWINGCTRL_TX1LN1_PORT2 0x169548
2152
+#define MG_TX_SWINGCTRL_TX1LN0_PORT3 0x16A148
2153
+#define MG_TX_SWINGCTRL_TX1LN1_PORT3 0x16A548
2154
+#define MG_TX_SWINGCTRL_TX1LN0_PORT4 0x16B148
2155
+#define MG_TX_SWINGCTRL_TX1LN1_PORT4 0x16B548
2156
+#define MG_TX1_SWINGCTRL(ln, tc_port) \
2157
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_SWINGCTRL_TX1LN0_PORT1, \
2158
+ MG_TX_SWINGCTRL_TX1LN0_PORT2, \
2159
+ MG_TX_SWINGCTRL_TX1LN1_PORT1)
20382160
2039
-#define _ICL_MG_TX_DRVCTRL_TX2LN0_PORT1 0x1680C4
2040
-#define _ICL_MG_TX_DRVCTRL_TX2LN1_PORT1 0x1684C4
2041
-#define _ICL_MG_TX_DRVCTRL_TX2LN0_PORT2 0x1690C4
2042
-#define _ICL_MG_TX_DRVCTRL_TX2LN1_PORT2 0x1694C4
2043
-#define _ICL_MG_TX_DRVCTRL_TX2LN0_PORT3 0x16A0C4
2044
-#define _ICL_MG_TX_DRVCTRL_TX2LN1_PORT3 0x16A4C4
2045
-#define _ICL_MG_TX_DRVCTRL_TX2LN0_PORT4 0x16B0C4
2046
-#define _ICL_MG_TX_DRVCTRL_TX2LN1_PORT4 0x16B4C4
2047
-#define ICL_PORT_MG_TX2_DRVCTRL(port, ln) \
2048
- _ICL_MG_PHY_PORT_LN(port, ln, _ICL_MG_TX_DRVCTRL_TX2LN0_PORT1, \
2049
- _ICL_MG_TX_DRVCTRL_TX2LN0_PORT2, \
2050
- _ICL_MG_TX_DRVCTRL_TX2LN1_PORT1)
2051
-#define CRI_TXDEEMPH_OVERRIDE_11_6(x) ((x) << 24)
2052
-#define CRI_TXDEEMPH_OVERRIDE_11_6_MASK (0x3F << 24)
2053
-#define CRI_TXDEEMPH_OVERRIDE_EN (1 << 22)
2054
-#define CRI_TXDEEMPH_OVERRIDE_5_0(x) ((x) << 16)
2055
-#define CRI_TXDEEMPH_OVERRIDE_5_0_MASK (0x3F << 16)
2161
+#define MG_TX_SWINGCTRL_TX2LN0_PORT1 0x1680C8
2162
+#define MG_TX_SWINGCTRL_TX2LN1_PORT1 0x1684C8
2163
+#define MG_TX_SWINGCTRL_TX2LN0_PORT2 0x1690C8
2164
+#define MG_TX_SWINGCTRL_TX2LN1_PORT2 0x1694C8
2165
+#define MG_TX_SWINGCTRL_TX2LN0_PORT3 0x16A0C8
2166
+#define MG_TX_SWINGCTRL_TX2LN1_PORT3 0x16A4C8
2167
+#define MG_TX_SWINGCTRL_TX2LN0_PORT4 0x16B0C8
2168
+#define MG_TX_SWINGCTRL_TX2LN1_PORT4 0x16B4C8
2169
+#define MG_TX2_SWINGCTRL(ln, tc_port) \
2170
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_SWINGCTRL_TX2LN0_PORT1, \
2171
+ MG_TX_SWINGCTRL_TX2LN0_PORT2, \
2172
+ MG_TX_SWINGCTRL_TX2LN1_PORT1)
2173
+#define CRI_TXDEEMPH_OVERRIDE_17_12(x) ((x) << 0)
2174
+#define CRI_TXDEEMPH_OVERRIDE_17_12_MASK (0x3F << 0)
2175
+
2176
+#define MG_TX_DRVCTRL_TX1LN0_TXPORT1 0x168144
2177
+#define MG_TX_DRVCTRL_TX1LN1_TXPORT1 0x168544
2178
+#define MG_TX_DRVCTRL_TX1LN0_TXPORT2 0x169144
2179
+#define MG_TX_DRVCTRL_TX1LN1_TXPORT2 0x169544
2180
+#define MG_TX_DRVCTRL_TX1LN0_TXPORT3 0x16A144
2181
+#define MG_TX_DRVCTRL_TX1LN1_TXPORT3 0x16A544
2182
+#define MG_TX_DRVCTRL_TX1LN0_TXPORT4 0x16B144
2183
+#define MG_TX_DRVCTRL_TX1LN1_TXPORT4 0x16B544
2184
+#define MG_TX1_DRVCTRL(ln, tc_port) \
2185
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_DRVCTRL_TX1LN0_TXPORT1, \
2186
+ MG_TX_DRVCTRL_TX1LN0_TXPORT2, \
2187
+ MG_TX_DRVCTRL_TX1LN1_TXPORT1)
2188
+
2189
+#define MG_TX_DRVCTRL_TX2LN0_PORT1 0x1680C4
2190
+#define MG_TX_DRVCTRL_TX2LN1_PORT1 0x1684C4
2191
+#define MG_TX_DRVCTRL_TX2LN0_PORT2 0x1690C4
2192
+#define MG_TX_DRVCTRL_TX2LN1_PORT2 0x1694C4
2193
+#define MG_TX_DRVCTRL_TX2LN0_PORT3 0x16A0C4
2194
+#define MG_TX_DRVCTRL_TX2LN1_PORT3 0x16A4C4
2195
+#define MG_TX_DRVCTRL_TX2LN0_PORT4 0x16B0C4
2196
+#define MG_TX_DRVCTRL_TX2LN1_PORT4 0x16B4C4
2197
+#define MG_TX2_DRVCTRL(ln, tc_port) \
2198
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_DRVCTRL_TX2LN0_PORT1, \
2199
+ MG_TX_DRVCTRL_TX2LN0_PORT2, \
2200
+ MG_TX_DRVCTRL_TX2LN1_PORT1)
2201
+#define CRI_TXDEEMPH_OVERRIDE_11_6(x) ((x) << 24)
2202
+#define CRI_TXDEEMPH_OVERRIDE_11_6_MASK (0x3F << 24)
2203
+#define CRI_TXDEEMPH_OVERRIDE_EN (1 << 22)
2204
+#define CRI_TXDEEMPH_OVERRIDE_5_0(x) ((x) << 16)
2205
+#define CRI_TXDEEMPH_OVERRIDE_5_0_MASK (0x3F << 16)
2206
+#define CRI_LOADGEN_SEL(x) ((x) << 12)
2207
+#define CRI_LOADGEN_SEL_MASK (0x3 << 12)
2208
+
2209
+#define MG_CLKHUB_LN0_PORT1 0x16839C
2210
+#define MG_CLKHUB_LN1_PORT1 0x16879C
2211
+#define MG_CLKHUB_LN0_PORT2 0x16939C
2212
+#define MG_CLKHUB_LN1_PORT2 0x16979C
2213
+#define MG_CLKHUB_LN0_PORT3 0x16A39C
2214
+#define MG_CLKHUB_LN1_PORT3 0x16A79C
2215
+#define MG_CLKHUB_LN0_PORT4 0x16B39C
2216
+#define MG_CLKHUB_LN1_PORT4 0x16B79C
2217
+#define MG_CLKHUB(ln, tc_port) \
2218
+ MG_PHY_PORT_LN(ln, tc_port, MG_CLKHUB_LN0_PORT1, \
2219
+ MG_CLKHUB_LN0_PORT2, \
2220
+ MG_CLKHUB_LN1_PORT1)
2221
+#define CFG_LOW_RATE_LKREN_EN (1 << 11)
2222
+
2223
+#define MG_TX_DCC_TX1LN0_PORT1 0x168110
2224
+#define MG_TX_DCC_TX1LN1_PORT1 0x168510
2225
+#define MG_TX_DCC_TX1LN0_PORT2 0x169110
2226
+#define MG_TX_DCC_TX1LN1_PORT2 0x169510
2227
+#define MG_TX_DCC_TX1LN0_PORT3 0x16A110
2228
+#define MG_TX_DCC_TX1LN1_PORT3 0x16A510
2229
+#define MG_TX_DCC_TX1LN0_PORT4 0x16B110
2230
+#define MG_TX_DCC_TX1LN1_PORT4 0x16B510
2231
+#define MG_TX1_DCC(ln, tc_port) \
2232
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_DCC_TX1LN0_PORT1, \
2233
+ MG_TX_DCC_TX1LN0_PORT2, \
2234
+ MG_TX_DCC_TX1LN1_PORT1)
2235
+#define MG_TX_DCC_TX2LN0_PORT1 0x168090
2236
+#define MG_TX_DCC_TX2LN1_PORT1 0x168490
2237
+#define MG_TX_DCC_TX2LN0_PORT2 0x169090
2238
+#define MG_TX_DCC_TX2LN1_PORT2 0x169490
2239
+#define MG_TX_DCC_TX2LN0_PORT3 0x16A090
2240
+#define MG_TX_DCC_TX2LN1_PORT3 0x16A490
2241
+#define MG_TX_DCC_TX2LN0_PORT4 0x16B090
2242
+#define MG_TX_DCC_TX2LN1_PORT4 0x16B490
2243
+#define MG_TX2_DCC(ln, tc_port) \
2244
+ MG_PHY_PORT_LN(ln, tc_port, MG_TX_DCC_TX2LN0_PORT1, \
2245
+ MG_TX_DCC_TX2LN0_PORT2, \
2246
+ MG_TX_DCC_TX2LN1_PORT1)
2247
+#define CFG_AMI_CK_DIV_OVERRIDE_VAL(x) ((x) << 25)
2248
+#define CFG_AMI_CK_DIV_OVERRIDE_VAL_MASK (0x3 << 25)
2249
+#define CFG_AMI_CK_DIV_OVERRIDE_EN (1 << 24)
2250
+
2251
+#define MG_DP_MODE_LN0_ACU_PORT1 0x1683A0
2252
+#define MG_DP_MODE_LN1_ACU_PORT1 0x1687A0
2253
+#define MG_DP_MODE_LN0_ACU_PORT2 0x1693A0
2254
+#define MG_DP_MODE_LN1_ACU_PORT2 0x1697A0
2255
+#define MG_DP_MODE_LN0_ACU_PORT3 0x16A3A0
2256
+#define MG_DP_MODE_LN1_ACU_PORT3 0x16A7A0
2257
+#define MG_DP_MODE_LN0_ACU_PORT4 0x16B3A0
2258
+#define MG_DP_MODE_LN1_ACU_PORT4 0x16B7A0
2259
+#define MG_DP_MODE(ln, tc_port) \
2260
+ MG_PHY_PORT_LN(ln, tc_port, MG_DP_MODE_LN0_ACU_PORT1, \
2261
+ MG_DP_MODE_LN0_ACU_PORT2, \
2262
+ MG_DP_MODE_LN1_ACU_PORT1)
2263
+#define MG_DP_MODE_CFG_DP_X2_MODE (1 << 7)
2264
+#define MG_DP_MODE_CFG_DP_X1_MODE (1 << 6)
20562265
20572266 /* The spec defines this only for BXT PHY0, but lets assume that this
20582267 * would exist for PHY1 too if it had a second channel.
....@@ -2062,53 +2271,20 @@
20622271 #define BXT_PORT_CL2CM_DW6(phy) _BXT_PHY((phy), _PORT_CL2CM_DW6_BC)
20632272 #define DW6_OLDO_DYN_PWR_DOWN_EN (1 << 28)
20642273
2065
-#define CNL_PORT_COMP_DW0 _MMIO(0x162100)
2066
-#define COMP_INIT (1 << 31)
2067
-#define CNL_PORT_COMP_DW1 _MMIO(0x162104)
2068
-#define CNL_PORT_COMP_DW3 _MMIO(0x16210c)
2069
-#define PROCESS_INFO_DOT_0 (0 << 26)
2070
-#define PROCESS_INFO_DOT_1 (1 << 26)
2071
-#define PROCESS_INFO_DOT_4 (2 << 26)
2072
-#define PROCESS_INFO_MASK (7 << 26)
2073
-#define PROCESS_INFO_SHIFT 26
2074
-#define VOLTAGE_INFO_0_85V (0 << 24)
2075
-#define VOLTAGE_INFO_0_95V (1 << 24)
2076
-#define VOLTAGE_INFO_1_05V (2 << 24)
2077
-#define VOLTAGE_INFO_MASK (3 << 24)
2078
-#define VOLTAGE_INFO_SHIFT 24
2079
-#define CNL_PORT_COMP_DW9 _MMIO(0x162124)
2080
-#define CNL_PORT_COMP_DW10 _MMIO(0x162128)
2081
-
2082
-#define _ICL_PORT_COMP_DW0_A 0x162100
2083
-#define _ICL_PORT_COMP_DW0_B 0x6C100
2084
-#define ICL_PORT_COMP_DW0(port) _MMIO_PORT(port, _ICL_PORT_COMP_DW0_A, \
2085
- _ICL_PORT_COMP_DW0_B)
2086
-#define _ICL_PORT_COMP_DW1_A 0x162104
2087
-#define _ICL_PORT_COMP_DW1_B 0x6C104
2088
-#define ICL_PORT_COMP_DW1(port) _MMIO_PORT(port, _ICL_PORT_COMP_DW1_A, \
2089
- _ICL_PORT_COMP_DW1_B)
2090
-#define _ICL_PORT_COMP_DW3_A 0x16210C
2091
-#define _ICL_PORT_COMP_DW3_B 0x6C10C
2092
-#define ICL_PORT_COMP_DW3(port) _MMIO_PORT(port, _ICL_PORT_COMP_DW3_A, \
2093
- _ICL_PORT_COMP_DW3_B)
2094
-#define _ICL_PORT_COMP_DW9_A 0x162124
2095
-#define _ICL_PORT_COMP_DW9_B 0x6C124
2096
-#define ICL_PORT_COMP_DW9(port) _MMIO_PORT(port, _ICL_PORT_COMP_DW9_A, \
2097
- _ICL_PORT_COMP_DW9_B)
2098
-#define _ICL_PORT_COMP_DW10_A 0x162128
2099
-#define _ICL_PORT_COMP_DW10_B 0x6C128
2100
-#define ICL_PORT_COMP_DW10(port) _MMIO_PORT(port, \
2101
- _ICL_PORT_COMP_DW10_A, \
2102
- _ICL_PORT_COMP_DW10_B)
2274
+#define FIA1_BASE 0x163000
2275
+#define FIA2_BASE 0x16E000
2276
+#define FIA3_BASE 0x16F000
2277
+#define _FIA(fia) _PICK((fia), FIA1_BASE, FIA2_BASE, FIA3_BASE)
2278
+#define _MMIO_FIA(fia, off) _MMIO(_FIA(fia) + (off))
21032279
21042280 /* ICL PHY DFLEX registers */
2105
-#define PORT_TX_DFLEXDPMLE1 _MMIO(0x1638C0)
2106
-#define DFLEXDPMLE1_DPMLETC_MASK(tc_port) (0xf << (4 * (tc_port)))
2107
-#define DFLEXDPMLE1_DPMLETC_ML0(tc_port) (1 << (4 * (tc_port)))
2108
-#define DFLEXDPMLE1_DPMLETC_ML1_0(tc_port) (3 << (4 * (tc_port)))
2109
-#define DFLEXDPMLE1_DPMLETC_ML3(tc_port) (8 << (4 * (tc_port)))
2110
-#define DFLEXDPMLE1_DPMLETC_ML3_2(tc_port) (12 << (4 * (tc_port)))
2111
-#define DFLEXDPMLE1_DPMLETC_ML3_0(tc_port) (15 << (4 * (tc_port)))
2281
+#define PORT_TX_DFLEXDPMLE1(fia) _MMIO_FIA((fia), 0x008C0)
2282
+#define DFLEXDPMLE1_DPMLETC_MASK(idx) (0xf << (4 * (idx)))
2283
+#define DFLEXDPMLE1_DPMLETC_ML0(idx) (1 << (4 * (idx)))
2284
+#define DFLEXDPMLE1_DPMLETC_ML1_0(idx) (3 << (4 * (idx)))
2285
+#define DFLEXDPMLE1_DPMLETC_ML3(idx) (8 << (4 * (idx)))
2286
+#define DFLEXDPMLE1_DPMLETC_ML3_2(idx) (12 << (4 * (idx)))
2287
+#define DFLEXDPMLE1_DPMLETC_ML3_0(idx) (15 << (4 * (idx)))
21122288
21132289 /* BXT PHY Ref registers */
21142290 #define _PORT_REF_DW3_A 0x16218C
....@@ -2355,8 +2531,10 @@
23552531 #define RING_HWS_PGA(base) _MMIO((base) + 0x80)
23562532 #define RING_HWS_PGA_GEN6(base) _MMIO((base) + 0x2080)
23572533 #define RING_RESET_CTL(base) _MMIO((base) + 0xd0)
2358
-#define RESET_CTL_REQUEST_RESET (1 << 0)
2359
-#define RESET_CTL_READY_TO_RESET (1 << 1)
2534
+#define RESET_CTL_CAT_ERROR REG_BIT(2)
2535
+#define RESET_CTL_READY_TO_RESET REG_BIT(1)
2536
+#define RESET_CTL_REQUEST_RESET REG_BIT(0)
2537
+
23602538 #define RING_SEMA_WAIT_POLL(base) _MMIO((base) + 0x24c)
23612539
23622540 #define HSW_GTT_CACHE_EN _MMIO(0x4024)
....@@ -2380,16 +2558,27 @@
23802558 #define RENDER_HWS_PGA_GEN7 _MMIO(0x04080)
23812559 #define RING_FAULT_REG(engine) _MMIO(0x4094 + 0x100 * (engine)->hw_id)
23822560 #define GEN8_RING_FAULT_REG _MMIO(0x4094)
2561
+#define GEN12_RING_FAULT_REG _MMIO(0xcec4)
23832562 #define GEN8_RING_FAULT_ENGINE_ID(x) (((x) >> 12) & 0x7)
23842563 #define RING_FAULT_GTTSEL_MASK (1 << 11)
23852564 #define RING_FAULT_SRCID(x) (((x) >> 3) & 0xff)
23862565 #define RING_FAULT_FAULT_TYPE(x) (((x) >> 1) & 0x3)
23872566 #define RING_FAULT_VALID (1 << 0)
23882567 #define DONE_REG _MMIO(0x40b0)
2568
+#define GEN12_GAM_DONE _MMIO(0xcf68)
23892569 #define GEN8_PRIVATE_PAT_LO _MMIO(0x40e0)
23902570 #define GEN8_PRIVATE_PAT_HI _MMIO(0x40e0 + 4)
23912571 #define GEN10_PAT_INDEX(index) _MMIO(0x40e0 + (index) * 4)
2572
+#define GEN12_PAT_INDEX(index) _MMIO(0x4800 + (index) * 4)
23922573 #define BSD_HWS_PGA_GEN7 _MMIO(0x04180)
2574
+#define GEN12_GFX_CCS_AUX_NV _MMIO(0x4208)
2575
+#define GEN12_VD0_AUX_NV _MMIO(0x4218)
2576
+#define GEN12_VD1_AUX_NV _MMIO(0x4228)
2577
+#define GEN12_VD2_AUX_NV _MMIO(0x4298)
2578
+#define GEN12_VD3_AUX_NV _MMIO(0x42A8)
2579
+#define GEN12_VE0_AUX_NV _MMIO(0x4238)
2580
+#define GEN12_VE1_AUX_NV _MMIO(0x42B8)
2581
+#define AUX_INV REG_BIT(0)
23932582 #define BLT_HWS_PGA_GEN7 _MMIO(0x04280)
23942583 #define VEBOX_HWS_PGA_GEN7 _MMIO(0x04380)
23952584 #define RING_ACTHD(base) _MMIO((base) + 0x74)
....@@ -2415,7 +2604,25 @@
24152604 #define RING_WAIT (1 << 11) /* gen3+, PRBx_CTL */
24162605 #define RING_WAIT_SEMAPHORE (1 << 10) /* gen6+ */
24172606
2607
+/* There are 16 64-bit CS General Purpose Registers per-engine on Gen8+ */
2608
+#define GEN8_RING_CS_GPR(base, n) _MMIO((base) + 0x600 + (n) * 8)
2609
+#define GEN8_RING_CS_GPR_UDW(base, n) _MMIO((base) + 0x600 + (n) * 8 + 4)
2610
+
24182611 #define RING_FORCE_TO_NONPRIV(base, i) _MMIO(((base) + 0x4D0) + (i) * 4)
2612
+#define RING_FORCE_TO_NONPRIV_ADDRESS_MASK REG_GENMASK(25, 2)
2613
+#define RING_FORCE_TO_NONPRIV_ACCESS_RW (0 << 28) /* CFL+ & Gen11+ */
2614
+#define RING_FORCE_TO_NONPRIV_ACCESS_RD (1 << 28)
2615
+#define RING_FORCE_TO_NONPRIV_ACCESS_WR (2 << 28)
2616
+#define RING_FORCE_TO_NONPRIV_ACCESS_INVALID (3 << 28)
2617
+#define RING_FORCE_TO_NONPRIV_ACCESS_MASK (3 << 28)
2618
+#define RING_FORCE_TO_NONPRIV_RANGE_1 (0 << 0) /* CFL+ & Gen11+ */
2619
+#define RING_FORCE_TO_NONPRIV_RANGE_4 (1 << 0)
2620
+#define RING_FORCE_TO_NONPRIV_RANGE_16 (2 << 0)
2621
+#define RING_FORCE_TO_NONPRIV_RANGE_64 (3 << 0)
2622
+#define RING_FORCE_TO_NONPRIV_RANGE_MASK (3 << 0)
2623
+#define RING_FORCE_TO_NONPRIV_MASK_VALID \
2624
+ (RING_FORCE_TO_NONPRIV_RANGE_MASK \
2625
+ | RING_FORCE_TO_NONPRIV_ACCESS_MASK)
24192626 #define RING_MAX_NONPRIV_SLOTS 12
24202627
24212628 #define GEN7_TLB_RD_ADDR _MMIO(0x4700)
....@@ -2425,6 +2632,7 @@
24252632
24262633 #define GEN8_GAMW_ECO_DEV_RW_IA _MMIO(0x4080)
24272634 #define GAMW_ECO_ENABLE_64K_IPS_FIELD 0xF
2635
+#define GAMW_ECO_DEV_CTX_RELOAD_DISABLE (1 << 7)
24282636
24292637 #define GAMT_CHKN_BIT_REG _MMIO(0x4ab8)
24302638 #define GAMT_CHKN_DISABLE_L3_COH_PIPE (1 << 31)
....@@ -2450,6 +2658,8 @@
24502658 #define IPEIR_I965 _MMIO(0x2064)
24512659 #define IPEHR_I965 _MMIO(0x2068)
24522660 #define GEN7_SC_INSTDONE _MMIO(0x7100)
2661
+#define GEN12_SC_INSTDONE_EXTRA _MMIO(0x7104)
2662
+#define GEN12_SC_INSTDONE_EXTRA2 _MMIO(0x7108)
24532663 #define GEN7_SAMPLER_INSTDONE _MMIO(0xe160)
24542664 #define GEN7_ROW_INSTDONE _MMIO(0xe164)
24552665 #define GEN8_MCR_SELECTOR _MMIO(0xfdc)
....@@ -2463,6 +2673,9 @@
24632673 #define GEN11_MCR_SUBSLICE_MASK GEN11_MCR_SUBSLICE(0x7)
24642674 #define RING_IPEIR(base) _MMIO((base) + 0x64)
24652675 #define RING_IPEHR(base) _MMIO((base) + 0x68)
2676
+#define RING_EIR(base) _MMIO((base) + 0xb0)
2677
+#define RING_EMR(base) _MMIO((base) + 0xb4)
2678
+#define RING_ESR(base) _MMIO((base) + 0xb8)
24662679 /*
24672680 * On GEN4, only the render ring INSTDONE exists and has a different
24682681 * layout than the GEN7+ version.
....@@ -2474,6 +2687,7 @@
24742687 #define RING_DMA_FADD_UDW(base) _MMIO((base) + 0x60) /* gen8+ */
24752688 #define RING_INSTPM(base) _MMIO((base) + 0xc0)
24762689 #define RING_MI_MODE(base) _MMIO((base) + 0x9c)
2690
+#define RING_CMD_BUF_CCTL(base) _MMIO((base) + 0x84)
24772691 #define INSTPS _MMIO(0x2070) /* 965+ only */
24782692 #define GEN4_INSTDONE1 _MMIO(0x207c) /* 965+ only, aka INSTDONE_2 on SNB */
24792693 #define ACTHD_I965 _MMIO(0x2074)
....@@ -2482,12 +2696,12 @@
24822696 #define HWS_START_ADDRESS_SHIFT 4
24832697 #define PWRCTXA _MMIO(0x2088) /* 965GM+ only */
24842698 #define PWRCTX_EN (1 << 0)
2485
-#define IPEIR _MMIO(0x2088)
2486
-#define IPEHR _MMIO(0x208c)
2699
+#define IPEIR(base) _MMIO((base) + 0x88)
2700
+#define IPEHR(base) _MMIO((base) + 0x8c)
24872701 #define GEN2_INSTDONE _MMIO(0x2090)
24882702 #define NOPID _MMIO(0x2094)
24892703 #define HWSTAM _MMIO(0x2098)
2490
-#define DMA_FADD_I8XX _MMIO(0x20d0)
2704
+#define DMA_FADD_I8XX(base) _MMIO((base) + 0xd0)
24912705 #define RING_BBSTATE(base) _MMIO((base) + 0x110)
24922706 #define RING_BB_PPGTT (1 << 5)
24932707 #define RING_SBBADDR(base) _MMIO((base) + 0x114) /* hsw+ */
....@@ -2515,8 +2729,17 @@
25152729
25162730 #define GEN8_FAULT_TLB_DATA0 _MMIO(0x4b10)
25172731 #define GEN8_FAULT_TLB_DATA1 _MMIO(0x4b14)
2732
+#define GEN12_FAULT_TLB_DATA0 _MMIO(0xceb8)
2733
+#define GEN12_FAULT_TLB_DATA1 _MMIO(0xcebc)
25182734 #define FAULT_VA_HIGH_BITS (0xf << 0)
25192735 #define FAULT_GTT_SEL (1 << 4)
2736
+
2737
+#define GEN12_GFX_TLB_INV_CR _MMIO(0xced8)
2738
+#define GEN12_VD_TLB_INV_CR _MMIO(0xcedc)
2739
+#define GEN12_VE_TLB_INV_CR _MMIO(0xcee0)
2740
+#define GEN12_BLT_TLB_INV_CR _MMIO(0xcee4)
2741
+
2742
+#define GEN12_AUX_ERR_DBG _MMIO(0x43f4)
25202743
25212744 #define FPGA_DBG _MMIO(0x42300)
25222745 #define FPGA_DBG_RM_NOCLAIM (1 << 31)
....@@ -2591,6 +2814,7 @@
25912814 /* chicken reg for WaConextSwitchWithConcurrentTLBInvalidate */
25922815 #define GEN9_CSFE_CHICKEN1_RCS _MMIO(0x20D4)
25932816 #define GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE (1 << 2)
2817
+#define GEN11_ENABLE_32_PLANE_MODE (1 << 7)
25942818
25952819 /* WaClearTdlStateAckDirtyBits */
25962820 #define GEN8_STATE_ACK _MMIO(0x20F0)
....@@ -2606,7 +2830,7 @@
26062830
26072831 #define GFX_MODE _MMIO(0x2520)
26082832 #define GFX_MODE_GEN7 _MMIO(0x229c)
2609
-#define RING_MODE_GEN7(engine) _MMIO((engine)->mmio_base + 0x29c)
2833
+#define RING_MODE_GEN7(base) _MMIO((base) + 0x29c)
26102834 #define GFX_RUN_LIST_ENABLE (1 << 15)
26112835 #define GFX_INTERRUPT_STEERING (1 << 14)
26122836 #define GFX_TLB_INVALIDATE_EXPLICIT (1 << 13)
....@@ -2623,17 +2847,15 @@
26232847
26242848 #define GEN11_GFX_DISABLE_LEGACY_MODE (1 << 3)
26252849
2626
-#define VLV_DISPLAY_BASE 0x180000
2627
-#define VLV_MIPI_BASE VLV_DISPLAY_BASE
2628
-#define BXT_MIPI_BASE 0x60000
2629
-
26302850 #define VLV_GU_CTL0 _MMIO(VLV_DISPLAY_BASE + 0x2030)
26312851 #define VLV_GU_CTL1 _MMIO(VLV_DISPLAY_BASE + 0x2034)
26322852 #define SCPD0 _MMIO(0x209c) /* 915+ only */
2633
-#define IER _MMIO(0x20a0)
2634
-#define IIR _MMIO(0x20a4)
2635
-#define IMR _MMIO(0x20a8)
2636
-#define ISR _MMIO(0x20ac)
2853
+#define SCPD_FBC_IGNORE_3D (1 << 6)
2854
+#define CSTATE_RENDER_CLOCK_GATE_DISABLE (1 << 5)
2855
+#define GEN2_IER _MMIO(0x20a0)
2856
+#define GEN2_IIR _MMIO(0x20a4)
2857
+#define GEN2_IMR _MMIO(0x20a8)
2858
+#define GEN2_ISR _MMIO(0x20ac)
26372859 #define VLV_GUNIT_CLOCK_GATE _MMIO(VLV_DISPLAY_BASE + 0x2060)
26382860 #define GINT_DIS (1 << 22)
26392861 #define GCFG_DIS (1 << 8)
....@@ -2664,7 +2886,7 @@
26642886 #define INSTPM_FORCE_ORDERING (1 << 7) /* GEN6+ */
26652887 #define INSTPM_TLB_INVALIDATE (1 << 9)
26662888 #define INSTPM_SYNC_FLUSH (1 << 5)
2667
-#define ACTHD _MMIO(0x20c8)
2889
+#define ACTHD(base) _MMIO((base) + 0xc8)
26682890 #define MEM_MODE _MMIO(0x20cc)
26692891 #define MEM_DISPLAY_B_TRICKLE_FEED_DISABLE (1 << 3) /* 830 only */
26702892 #define MEM_DISPLAY_A_TRICKLE_FEED_DISABLE (1 << 2) /* 830/845 only */
....@@ -2681,7 +2903,12 @@
26812903 #define LM_FIFO_WATERMARK 0x0000001F
26822904 #define MI_ARB_STATE _MMIO(0x20e4) /* 915+ only */
26832905
2684
-#define MBUS_ABOX_CTL _MMIO(0x45038)
2906
+#define _MBUS_ABOX0_CTL 0x45038
2907
+#define _MBUS_ABOX1_CTL 0x45048
2908
+#define _MBUS_ABOX2_CTL 0x4504C
2909
+#define MBUS_ABOX_CTL(x) _MMIO(_PICK(x, _MBUS_ABOX0_CTL, \
2910
+ _MBUS_ABOX1_CTL, \
2911
+ _MBUS_ABOX2_CTL))
26852912 #define MBUS_ABOX_BW_CREDIT_MASK (3 << 20)
26862913 #define MBUS_ABOX_BW_CREDIT(x) ((x) << 20)
26872914 #define MBUS_ABOX_B_CREDIT_MASK (0xF << 16)
....@@ -2705,6 +2932,12 @@
27052932 #define MBUS_UBOX_CTL _MMIO(0x4503C)
27062933 #define MBUS_BBOX_CTL_S1 _MMIO(0x45040)
27072934 #define MBUS_BBOX_CTL_S2 _MMIO(0x45044)
2935
+
2936
+#define HDPORT_STATE _MMIO(0x45050)
2937
+#define HDPORT_DPLL_USED_MASK REG_GENMASK(14, 12)
2938
+#define HDPORT_PHY_USED_DP(phy) REG_BIT(2 * (phy) + 2)
2939
+#define HDPORT_PHY_USED_HDMI(phy) REG_BIT(2 * (phy) + 1)
2940
+#define HDPORT_ENABLED REG_BIT(0)
27082941
27092942 /* Make render/texture TLB fetches lower priorty than associated data
27102943 * fetches. This is not turned on by default
....@@ -2785,6 +3018,7 @@
27853018 #define GFX_FLSH_CNTL_GEN6 _MMIO(0x101008)
27863019 #define GFX_FLSH_CNTL_EN (1 << 0)
27873020 #define ECOSKPD _MMIO(0x21d0)
3021
+#define ECO_CONSTANT_BUFFER_SR_DISABLE REG_BIT(4)
27883022 #define ECO_GATING_CX_ONLY (1 << 3)
27893023 #define ECO_FLIP_DONE (1 << 0)
27903024
....@@ -2802,11 +3036,15 @@
28023036
28033037 #define GEN6_RC_SLEEP_PSMI_CONTROL _MMIO(0x2050)
28043038 #define GEN6_PSMI_SLEEP_MSG_DISABLE (1 << 0)
3039
+#define GEN12_WAIT_FOR_EVENT_POWER_DOWN_DISABLE REG_BIT(7)
28053040 #define GEN8_RC_SEMA_IDLE_MSG_DISABLE (1 << 12)
28063041 #define GEN8_FF_DOP_CLOCK_GATE_DISABLE (1 << 10)
28073042
28083043 #define GEN6_RCS_PWR_FSM _MMIO(0x22ac)
28093044 #define GEN9_RCS_FE_FSM2 _MMIO(0x22a4)
3045
+
3046
+#define GEN10_CACHE_MODE_SS _MMIO(0xe420)
3047
+#define FLOAT_BLEND_OPTIMIZATION_ENABLE (1 << 4)
28103048
28113049 /* Fuse readout registers for GT */
28123050 #define HSW_PAVP_FUSE1 _MMIO(0x911C)
....@@ -2867,7 +3105,7 @@
28673105 #define GEN11_GT_VEBOX_VDBOX_DISABLE _MMIO(0x9140)
28683106 #define GEN11_GT_VDBOX_DISABLE_MASK 0xff
28693107 #define GEN11_GT_VEBOX_DISABLE_SHIFT 16
2870
-#define GEN11_GT_VEBOX_DISABLE_MASK (0xff << GEN11_GT_VEBOX_DISABLE_SHIFT)
3108
+#define GEN11_GT_VEBOX_DISABLE_MASK (0x0f << GEN11_GT_VEBOX_DISABLE_SHIFT)
28713109
28723110 #define GEN11_EU_DISABLE _MMIO(0x9134)
28733111 #define GEN11_EU_DIS_MASK 0xFF
....@@ -2876,6 +3114,8 @@
28763114 #define GEN11_GT_S_ENA_MASK 0xFF
28773115
28783116 #define GEN11_GT_SUBSLICE_DISABLE _MMIO(0x913C)
3117
+
3118
+#define GEN12_GT_DSS_ENABLE _MMIO(0x913C)
28793119
28803120 #define GEN6_BSD_SLEEP_PSMI_CONTROL _MMIO(0x12050)
28813121 #define GEN6_BSD_SLEEP_MSG_DISABLE (1 << 0)
....@@ -2900,10 +3140,11 @@
29003140 #define GT_BSD_CS_ERROR_INTERRUPT (1 << 15)
29013141 #define GT_BSD_USER_INTERRUPT (1 << 12)
29023142 #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT_S1 (1 << 11) /* hsw+; rsvd on snb, ivb, vlv */
3143
+#define GT_WAIT_SEMAPHORE_INTERRUPT REG_BIT(11) /* bdw+ */
29033144 #define GT_CONTEXT_SWITCH_INTERRUPT (1 << 8)
29043145 #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT (1 << 5) /* !snb */
29053146 #define GT_RENDER_PIPECTL_NOTIFY_INTERRUPT (1 << 4)
2906
-#define GT_RENDER_CS_MASTER_ERROR_INTERRUPT (1 << 3)
3147
+#define GT_CS_MASTER_ERROR_INTERRUPT REG_BIT(3)
29073148 #define GT_RENDER_SYNC_STATUS_INTERRUPT (1 << 2)
29083149 #define GT_RENDER_DEBUG_INTERRUPT (1 << 1)
29093150 #define GT_RENDER_USER_INTERRUPT (1 << 0)
....@@ -2975,6 +3216,7 @@
29753216 #define GEN7_FF_THREAD_MODE _MMIO(0x20a0)
29763217 #define GEN7_FF_SCHED_MASK 0x0077070
29773218 #define GEN8_FF_DS_REF_CNT_FFME (1 << 19)
3219
+#define GEN12_FF_TESSELATION_DOP_GATE_DISABLE BIT(19)
29783220 #define GEN7_FF_TS_SCHED_HS1 (0x5 << 16)
29793221 #define GEN7_FF_TS_SCHED_HS0 (0x3 << 16)
29803222 #define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1 << 16)
....@@ -2996,13 +3238,17 @@
29963238 #define FBC_CFB_BASE _MMIO(0x3200) /* 4k page aligned */
29973239 #define FBC_LL_BASE _MMIO(0x3204) /* 4k page aligned */
29983240 #define FBC_CONTROL _MMIO(0x3208)
2999
-#define FBC_CTL_EN (1 << 31)
3000
-#define FBC_CTL_PERIODIC (1 << 30)
3001
-#define FBC_CTL_INTERVAL_SHIFT (16)
3002
-#define FBC_CTL_UNCOMPRESSIBLE (1 << 14)
3003
-#define FBC_CTL_C3_IDLE (1 << 13)
3004
-#define FBC_CTL_STRIDE_SHIFT (5)
3005
-#define FBC_CTL_FENCENO_SHIFT (0)
3241
+#define FBC_CTL_EN REG_BIT(31)
3242
+#define FBC_CTL_PERIODIC REG_BIT(30)
3243
+#define FBC_CTL_INTERVAL_MASK REG_GENMASK(29, 16)
3244
+#define FBC_CTL_INTERVAL(x) REG_FIELD_PREP(FBC_CTL_INTERVAL_MASK, (x))
3245
+#define FBC_CTL_STOP_ON_MOD REG_BIT(15)
3246
+#define FBC_CTL_UNCOMPRESSIBLE REG_BIT(14) /* i915+ */
3247
+#define FBC_CTL_C3_IDLE REG_BIT(13) /* i945gm */
3248
+#define FBC_CTL_STRIDE_MASK REG_GENMASK(12, 5)
3249
+#define FBC_CTL_STRIDE(x) REG_FIELD_PREP(FBC_CTL_STRIDE_MASK, (x))
3250
+#define FBC_CTL_FENCENO_MASK REG_GENMASK(3, 0)
3251
+#define FBC_CTL_FENCENO(x) REG_FIELD_PREP(FBC_CTL_FENCENO_MASK, (x))
30063252 #define FBC_COMMAND _MMIO(0x320c)
30073253 #define FBC_CMD_COMPRESS (1 << 0)
30083254 #define FBC_STATUS _MMIO(0x3210)
....@@ -3070,6 +3316,7 @@
30703316 #define ILK_DPFC_FENCE_YOFF _MMIO(0x43218)
30713317 #define ILK_DPFC_CHICKEN _MMIO(0x43224)
30723318 #define ILK_DPFC_DISABLE_DUMMY0 (1 << 8)
3319
+#define ILK_DPFC_CHICKEN_COMP_DUMMY_PIXEL (1 << 14)
30733320 #define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1 << 23)
30743321 #define ILK_FBC_RT_BASE _MMIO(0x2128)
30753322 #define ILK_FBC_RT_VALID (1 << 0)
....@@ -3091,6 +3338,7 @@
30913338
30923339 /* Framebuffer compression for Ivybridge */
30933340 #define IVB_FBC_RT_BASE _MMIO(0x7020)
3341
+#define IVB_FBC_RT_BASE_UPPER _MMIO(0x7024)
30943342
30953343 #define IPS_CTL _MMIO(0x43408)
30963344 #define IPS_ENABLE (1 << 31)
....@@ -3102,18 +3350,9 @@
31023350 /*
31033351 * GPIO regs
31043352 */
3105
-#define GPIOA _MMIO(0x5010)
3106
-#define GPIOB _MMIO(0x5014)
3107
-#define GPIOC _MMIO(0x5018)
3108
-#define GPIOD _MMIO(0x501c)
3109
-#define GPIOE _MMIO(0x5020)
3110
-#define GPIOF _MMIO(0x5024)
3111
-#define GPIOG _MMIO(0x5028)
3112
-#define GPIOH _MMIO(0x502c)
3113
-#define GPIOJ _MMIO(0x5034)
3114
-#define GPIOK _MMIO(0x5038)
3115
-#define GPIOL _MMIO(0x503C)
3116
-#define GPIOM _MMIO(0x5040)
3353
+#define GPIO(gpio) _MMIO(dev_priv->gpio_mmio_base + 0x5010 + \
3354
+ 4 * (gpio))
3355
+
31173356 # define GPIO_CLOCK_DIR_MASK (1 << 0)
31183357 # define GPIO_CLOCK_DIR_IN (0 << 1)
31193358 # define GPIO_CLOCK_DIR_OUT (1 << 1)
....@@ -3137,25 +3376,7 @@
31373376 #define GMBUS_RATE_1MHZ (3 << 8) /* reserved on Pineview */
31383377 #define GMBUS_HOLD_EXT (1 << 7) /* 300ns hold time, rsvd on Pineview */
31393378 #define GMBUS_BYTE_CNT_OVERRIDE (1 << 6)
3140
-#define GMBUS_PIN_DISABLED 0
3141
-#define GMBUS_PIN_SSC 1
3142
-#define GMBUS_PIN_VGADDC 2
3143
-#define GMBUS_PIN_PANEL 3
3144
-#define GMBUS_PIN_DPD_CHV 3 /* HDMID_CHV */
3145
-#define GMBUS_PIN_DPC 4 /* HDMIC */
3146
-#define GMBUS_PIN_DPB 5 /* SDVO, HDMIB */
3147
-#define GMBUS_PIN_DPD 6 /* HDMID */
3148
-#define GMBUS_PIN_RESERVED 7 /* 7 reserved */
3149
-#define GMBUS_PIN_1_BXT 1 /* BXT+ (atom) and CNP+ (big core) */
3150
-#define GMBUS_PIN_2_BXT 2
3151
-#define GMBUS_PIN_3_BXT 3
3152
-#define GMBUS_PIN_4_CNP 4
3153
-#define GMBUS_PIN_9_TC1_ICP 9
3154
-#define GMBUS_PIN_10_TC2_ICP 10
3155
-#define GMBUS_PIN_11_TC3_ICP 11
3156
-#define GMBUS_PIN_12_TC4_ICP 12
31573379
3158
-#define GMBUS_NUM_PINS 13 /* including 0 */
31593380 #define GMBUS1 _MMIO(dev_priv->gpio_mmio_base + 0x5104) /* command/status */
31603381 #define GMBUS_SW_CLR_INT (1 << 31)
31613382 #define GMBUS_SW_RDY (1 << 30)
....@@ -3192,9 +3413,9 @@
31923413 /*
31933414 * Clock control & power management
31943415 */
3195
-#define _DPLL_A (dev_priv->info.display_mmio_offset + 0x6014)
3196
-#define _DPLL_B (dev_priv->info.display_mmio_offset + 0x6018)
3197
-#define _CHV_DPLL_C (dev_priv->info.display_mmio_offset + 0x6030)
3416
+#define _DPLL_A (DISPLAY_MMIO_BASE(dev_priv) + 0x6014)
3417
+#define _DPLL_B (DISPLAY_MMIO_BASE(dev_priv) + 0x6018)
3418
+#define _CHV_DPLL_C (DISPLAY_MMIO_BASE(dev_priv) + 0x6030)
31983419 #define DPLL(pipe) _MMIO_PIPE3((pipe), _DPLL_A, _DPLL_B, _CHV_DPLL_C)
31993420
32003421 #define VGA0 _MMIO(0x6000)
....@@ -3291,9 +3512,9 @@
32913512 #define SDVO_MULTIPLIER_SHIFT_HIRES 4
32923513 #define SDVO_MULTIPLIER_SHIFT_VGA 0
32933514
3294
-#define _DPLL_A_MD (dev_priv->info.display_mmio_offset + 0x601c)
3295
-#define _DPLL_B_MD (dev_priv->info.display_mmio_offset + 0x6020)
3296
-#define _CHV_DPLL_C_MD (dev_priv->info.display_mmio_offset + 0x603c)
3515
+#define _DPLL_A_MD (DISPLAY_MMIO_BASE(dev_priv) + 0x601c)
3516
+#define _DPLL_B_MD (DISPLAY_MMIO_BASE(dev_priv) + 0x6020)
3517
+#define _CHV_DPLL_C_MD (DISPLAY_MMIO_BASE(dev_priv) + 0x603c)
32973518 #define DPLL_MD(pipe) _MMIO_PIPE3((pipe), _DPLL_A_MD, _DPLL_B_MD, _CHV_DPLL_C_MD)
32983519
32993520 /*
....@@ -3365,7 +3586,7 @@
33653586 #define DSTATE_PLL_D3_OFF (1 << 3)
33663587 #define DSTATE_GFX_CLOCK_GATING (1 << 1)
33673588 #define DSTATE_DOT_CLOCK_GATING (1 << 0)
3368
-#define DSPCLK_GATE_D _MMIO(dev_priv->info.display_mmio_offset + 0x6200)
3589
+#define DSPCLK_GATE_D _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x6200)
33693590 # define DPUNIT_B_CLOCK_GATE_DISABLE (1 << 30) /* 965 */
33703591 # define VSUNIT_CLOCK_GATE_DISABLE (1 << 29) /* 965 */
33713592 # define VRHUNIT_CLOCK_GATE_DISABLE (1 << 28) /* 965 */
....@@ -3502,11 +3723,16 @@
35023723 /*
35033724 * Palette regs
35043725 */
3505
-#define PALETTE_A_OFFSET 0xa000
3506
-#define PALETTE_B_OFFSET 0xa800
3507
-#define CHV_PALETTE_C_OFFSET 0xc000
3508
-#define PALETTE(pipe, i) _MMIO(dev_priv->info.palette_offsets[pipe] + \
3509
- dev_priv->info.display_mmio_offset + (i) * 4)
3726
+#define _PALETTE_A 0xa000
3727
+#define _PALETTE_B 0xa800
3728
+#define _CHV_PALETTE_C 0xc000
3729
+#define PALETTE_RED_MASK REG_GENMASK(23, 16)
3730
+#define PALETTE_GREEN_MASK REG_GENMASK(15, 8)
3731
+#define PALETTE_BLUE_MASK REG_GENMASK(7, 0)
3732
+#define PALETTE(pipe, i) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + \
3733
+ _PICK((pipe), _PALETTE_A, \
3734
+ _PALETTE_B, _CHV_PALETTE_C) + \
3735
+ (i) * 4)
35103736
35113737 /* MCH MMIO space */
35123738
....@@ -3579,23 +3805,18 @@
35793805 #define MCH_SSKPD_WM0_MASK 0x3f
35803806 #define MCH_SSKPD_WM0_VAL 0xc
35813807
3582
-#define MCH_SECP_NRG_STTS _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x592c)
3583
-
35843808 /* Clocking configuration register */
35853809 #define CLKCFG _MMIO(MCHBAR_MIRROR_BASE + 0xc00)
3586
-#define CLKCFG_FSB_400 (5 << 0) /* hrawclk 100 */
3810
+#define CLKCFG_FSB_400 (0 << 0) /* hrawclk 100 */
3811
+#define CLKCFG_FSB_400_ALT (5 << 0) /* hrawclk 100 */
35873812 #define CLKCFG_FSB_533 (1 << 0) /* hrawclk 133 */
35883813 #define CLKCFG_FSB_667 (3 << 0) /* hrawclk 166 */
35893814 #define CLKCFG_FSB_800 (2 << 0) /* hrawclk 200 */
35903815 #define CLKCFG_FSB_1067 (6 << 0) /* hrawclk 266 */
35913816 #define CLKCFG_FSB_1067_ALT (0 << 0) /* hrawclk 266 */
35923817 #define CLKCFG_FSB_1333 (7 << 0) /* hrawclk 333 */
3593
-/*
3594
- * Note that on at least on ELK the below value is reported for both
3595
- * 333 and 400 MHz BIOS FSB setting, but given that the gmch datasheet
3596
- * lists only 200/266/333 MHz FSB as supported let's decode it as 333 MHz.
3597
- */
35983818 #define CLKCFG_FSB_1333_ALT (4 << 0) /* hrawclk 333 */
3819
+#define CLKCFG_FSB_1600_ALT (6 << 0) /* hrawclk 400 */
35993820 #define CLKCFG_FSB_MASK (7 << 0)
36003821 #define CLKCFG_MEM_533 (1 << 4)
36013822 #define CLKCFG_MEM_667 (2 << 4)
....@@ -3839,36 +4060,12 @@
38394060 #define GEN6_RP_STATE_LIMITS _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5994)
38404061 #define GEN6_RP_STATE_CAP _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5998)
38414062 #define BXT_RP_STATE_CAP _MMIO(0x138170)
3842
-
3843
-/*
3844
- * Make these a multiple of magic 25 to avoid SNB (eg. Dell XPS
3845
- * 8300) freezing up around GPU hangs. Looks as if even
3846
- * scheduling/timer interrupts start misbehaving if the RPS
3847
- * EI/thresholds are "bad", leading to a very sluggish or even
3848
- * frozen machine.
3849
- */
3850
-#define INTERVAL_1_28_US(us) roundup(((us) * 100) >> 7, 25)
3851
-#define INTERVAL_1_33_US(us) (((us) * 3) >> 2)
3852
-#define INTERVAL_0_833_US(us) (((us) * 6) / 5)
3853
-#define GT_INTERVAL_FROM_US(dev_priv, us) (INTEL_GEN(dev_priv) >= 9 ? \
3854
- (IS_GEN9_LP(dev_priv) ? \
3855
- INTERVAL_0_833_US(us) : \
3856
- INTERVAL_1_33_US(us)) : \
3857
- INTERVAL_1_28_US(us))
3858
-
3859
-#define INTERVAL_1_28_TO_US(interval) (((interval) << 7) / 100)
3860
-#define INTERVAL_1_33_TO_US(interval) (((interval) << 2) / 3)
3861
-#define INTERVAL_0_833_TO_US(interval) (((interval) * 5) / 6)
3862
-#define GT_PM_INTERVAL_TO_US(dev_priv, interval) (INTEL_GEN(dev_priv) >= 9 ? \
3863
- (IS_GEN9_LP(dev_priv) ? \
3864
- INTERVAL_0_833_TO_US(interval) : \
3865
- INTERVAL_1_33_TO_US(interval)) : \
3866
- INTERVAL_1_28_TO_US(interval))
4063
+#define GEN9_RP_STATE_LIMITS _MMIO(0x138148)
38674064
38684065 /*
38694066 * Logical Context regs
38704067 */
3871
-#define CCID _MMIO(0x2180)
4068
+#define CCID(base) _MMIO((base) + 0x180)
38724069 #define CCID_EN BIT(0)
38734070 #define CCID_EXTENDED_STATE_RESTORE BIT(2)
38744071 #define CCID_EXTENDED_STATE_SAVE BIT(3)
....@@ -3960,6 +4157,9 @@
39604157 #define PWM2_GATING_DIS (1 << 14)
39614158 #define PWM1_GATING_DIS (1 << 13)
39624159
4160
+#define GEN9_CLKGATE_DIS_3 _MMIO(0x46538)
4161
+#define TGL_VRH_GATING_DIS REG_BIT(31)
4162
+
39634163 #define GEN9_CLKGATE_DIS_4 _MMIO(0x4653C)
39644164 #define BXT_GMBUS_GATING_DIS (1 << 14)
39654165
....@@ -3983,12 +4183,23 @@
39834183 #define SARBUNIT_CLKGATE_DIS (1 << 5)
39844184 #define RCCUNIT_CLKGATE_DIS (1 << 7)
39854185 #define MSCUNIT_CLKGATE_DIS (1 << 10)
4186
+#define L3_CLKGATE_DIS REG_BIT(16)
4187
+#define L3_CR2X_CLKGATE_DIS REG_BIT(17)
39864188
39874189 #define SUBSLICE_UNIT_LEVEL_CLKGATE _MMIO(0x9524)
39884190 #define GWUNIT_CLKGATE_DIS (1 << 16)
39894191
4192
+#define SUBSLICE_UNIT_LEVEL_CLKGATE2 _MMIO(0x9528)
4193
+#define CPSSUNIT_CLKGATE_DIS REG_BIT(9)
4194
+
39904195 #define UNSLICE_UNIT_LEVEL_CLKGATE _MMIO(0x9434)
3991
-#define VFUNIT_CLKGATE_DIS (1 << 20)
4196
+#define VFUNIT_CLKGATE_DIS REG_BIT(20)
4197
+#define HSUNIT_CLKGATE_DIS REG_BIT(8)
4198
+#define VSUNIT_CLKGATE_DIS REG_BIT(3)
4199
+
4200
+#define UNSLICE_UNIT_LEVEL_CLKGATE2 _MMIO(0x94e4)
4201
+#define VSUNIT_CLKGATE_DIS_TGL REG_BIT(19)
4202
+#define PSDUNIT_CLKGATE_DIS REG_BIT(5)
39924203
39934204 #define INF_UNIT_LEVEL_CLKGATE _MMIO(0x9560)
39944205 #define CGPSF_CLKGATE_DIS (1 << 3)
....@@ -4000,6 +4211,15 @@
40004211 /* Pipe A CRC regs */
40014212 #define _PIPE_CRC_CTL_A 0x60050
40024213 #define PIPE_CRC_ENABLE (1 << 31)
4214
+/* skl+ source selection */
4215
+#define PIPE_CRC_SOURCE_PLANE_1_SKL (0 << 28)
4216
+#define PIPE_CRC_SOURCE_PLANE_2_SKL (2 << 28)
4217
+#define PIPE_CRC_SOURCE_DMUX_SKL (4 << 28)
4218
+#define PIPE_CRC_SOURCE_PLANE_3_SKL (6 << 28)
4219
+#define PIPE_CRC_SOURCE_PLANE_4_SKL (7 << 28)
4220
+#define PIPE_CRC_SOURCE_PLANE_5_SKL (5 << 28)
4221
+#define PIPE_CRC_SOURCE_PLANE_6_SKL (3 << 28)
4222
+#define PIPE_CRC_SOURCE_PLANE_7_SKL (1 << 28)
40034223 /* ivb+ source selection */
40044224 #define PIPE_CRC_SOURCE_PRIMARY_IVB (0 << 29)
40054225 #define PIPE_CRC_SOURCE_SPRITE_IVB (1 << 29)
....@@ -4071,6 +4291,7 @@
40714291 #define _VTOTAL_A 0x6000c
40724292 #define _VBLANK_A 0x60010
40734293 #define _VSYNC_A 0x60014
4294
+#define _EXITLINE_A 0x60018
40744295 #define _PIPEASRC 0x6001c
40754296 #define _BCLRPAT_A 0x60020
40764297 #define _VSYNCSHIFT_A 0x60028
....@@ -4088,15 +4309,28 @@
40884309 #define _VSYNCSHIFT_B 0x61028
40894310 #define _PIPE_MULT_B 0x6102c
40904311
4312
+/* DSI 0 timing regs */
4313
+#define _HTOTAL_DSI0 0x6b000
4314
+#define _HSYNC_DSI0 0x6b008
4315
+#define _VTOTAL_DSI0 0x6b00c
4316
+#define _VSYNC_DSI0 0x6b014
4317
+#define _VSYNCSHIFT_DSI0 0x6b028
4318
+
4319
+/* DSI 1 timing regs */
4320
+#define _HTOTAL_DSI1 0x6b800
4321
+#define _HSYNC_DSI1 0x6b808
4322
+#define _VTOTAL_DSI1 0x6b80c
4323
+#define _VSYNC_DSI1 0x6b814
4324
+#define _VSYNCSHIFT_DSI1 0x6b828
4325
+
40914326 #define TRANSCODER_A_OFFSET 0x60000
40924327 #define TRANSCODER_B_OFFSET 0x61000
40934328 #define TRANSCODER_C_OFFSET 0x62000
40944329 #define CHV_TRANSCODER_C_OFFSET 0x63000
4330
+#define TRANSCODER_D_OFFSET 0x63000
40954331 #define TRANSCODER_EDP_OFFSET 0x6f000
4096
-
4097
-#define _MMIO_TRANS2(pipe, reg) _MMIO(dev_priv->info.trans_offsets[(pipe)] - \
4098
- dev_priv->info.trans_offsets[TRANSCODER_A] + (reg) + \
4099
- dev_priv->info.display_mmio_offset)
4332
+#define TRANSCODER_DSI0_OFFSET 0x6b000
4333
+#define TRANSCODER_DSI1_OFFSET 0x6b800
41004334
41014335 #define HTOTAL(trans) _MMIO_TRANS2(trans, _HTOTAL_A)
41024336 #define HBLANK(trans) _MMIO_TRANS2(trans, _HBLANK_A)
....@@ -4109,46 +4343,112 @@
41094343 #define PIPESRC(trans) _MMIO_TRANS2(trans, _PIPEASRC)
41104344 #define PIPE_MULT(trans) _MMIO_TRANS2(trans, _PIPE_MULT_A)
41114345
4112
-/* VLV eDP PSR registers */
4113
-#define _PSRCTLA (VLV_DISPLAY_BASE + 0x60090)
4114
-#define _PSRCTLB (VLV_DISPLAY_BASE + 0x61090)
4115
-#define VLV_EDP_PSR_ENABLE (1 << 0)
4116
-#define VLV_EDP_PSR_RESET (1 << 1)
4117
-#define VLV_EDP_PSR_MODE_MASK (7 << 2)
4118
-#define VLV_EDP_PSR_MODE_HW_TIMER (1 << 3)
4119
-#define VLV_EDP_PSR_MODE_SW_TIMER (1 << 2)
4120
-#define VLV_EDP_PSR_SINGLE_FRAME_UPDATE (1 << 7)
4121
-#define VLV_EDP_PSR_ACTIVE_ENTRY (1 << 8)
4122
-#define VLV_EDP_PSR_SRC_TRANSMITTER_STATE (1 << 9)
4123
-#define VLV_EDP_PSR_DBL_FRAME (1 << 10)
4124
-#define VLV_EDP_PSR_FRAME_COUNT_MASK (0xff << 16)
4125
-#define VLV_EDP_PSR_IDLE_FRAME_SHIFT 16
4126
-#define VLV_PSRCTL(pipe) _MMIO_PIPE(pipe, _PSRCTLA, _PSRCTLB)
4346
+#define EXITLINE(trans) _MMIO_TRANS2(trans, _EXITLINE_A)
4347
+#define EXITLINE_ENABLE REG_BIT(31)
4348
+#define EXITLINE_MASK REG_GENMASK(12, 0)
4349
+#define EXITLINE_SHIFT 0
41274350
4128
-#define _VSCSDPA (VLV_DISPLAY_BASE + 0x600a0)
4129
-#define _VSCSDPB (VLV_DISPLAY_BASE + 0x610a0)
4130
-#define VLV_EDP_PSR_SDP_FREQ_MASK (3 << 30)
4131
-#define VLV_EDP_PSR_SDP_FREQ_ONCE (1 << 31)
4132
-#define VLV_EDP_PSR_SDP_FREQ_EVFRAME (1 << 30)
4133
-#define VLV_VSCSDP(pipe) _MMIO_PIPE(pipe, _VSCSDPA, _VSCSDPB)
4351
+/* VRR registers */
4352
+#define _TRANS_VRR_CTL_A 0x60420
4353
+#define _TRANS_VRR_CTL_B 0x61420
4354
+#define _TRANS_VRR_CTL_C 0x62420
4355
+#define _TRANS_VRR_CTL_D 0x63420
4356
+#define TRANS_VRR_CTL(trans) _MMIO_TRANS2(trans, _TRANS_VRR_CTL_A)
4357
+#define VRR_CTL_VRR_ENABLE REG_BIT(31)
4358
+#define VRR_CTL_IGN_MAX_SHIFT REG_BIT(30)
4359
+#define VRR_CTL_FLIP_LINE_EN REG_BIT(29)
4360
+#define VRR_CTL_LINE_COUNT_MASK REG_GENMASK(10, 3)
4361
+#define VRR_CTL_SW_FULLLINE_COUNT REG_BIT(0)
41344362
4135
-#define _PSRSTATA (VLV_DISPLAY_BASE + 0x60094)
4136
-#define _PSRSTATB (VLV_DISPLAY_BASE + 0x61094)
4137
-#define VLV_EDP_PSR_LAST_STATE_MASK (7 << 3)
4138
-#define VLV_EDP_PSR_CURR_STATE_MASK 7
4139
-#define VLV_EDP_PSR_DISABLED (0 << 0)
4140
-#define VLV_EDP_PSR_INACTIVE (1 << 0)
4141
-#define VLV_EDP_PSR_IN_TRANS_TO_ACTIVE (2 << 0)
4142
-#define VLV_EDP_PSR_ACTIVE_NORFB_UP (3 << 0)
4143
-#define VLV_EDP_PSR_ACTIVE_SF_UPDATE (4 << 0)
4144
-#define VLV_EDP_PSR_EXIT (5 << 0)
4145
-#define VLV_EDP_PSR_IN_TRANS (1 << 7)
4146
-#define VLV_PSRSTAT(pipe) _MMIO_PIPE(pipe, _PSRSTATA, _PSRSTATB)
4363
+#define _TRANS_VRR_VMAX_A 0x60424
4364
+#define _TRANS_VRR_VMAX_B 0x61424
4365
+#define _TRANS_VRR_VMAX_C 0x62424
4366
+#define _TRANS_VRR_VMAX_D 0x63424
4367
+#define TRANS_VRR_VMAX(trans) _MMIO_TRANS2(trans, _TRANS_VRR_VMAX_A)
4368
+#define VRR_VMAX_MASK REG_GENMASK(19, 0)
41474369
4148
-/* HSW+ eDP PSR registers */
4149
-#define HSW_EDP_PSR_BASE 0x64800
4150
-#define BDW_EDP_PSR_BASE 0x6f800
4151
-#define EDP_PSR_CTL _MMIO(dev_priv->psr_mmio_base + 0)
4370
+#define _TRANS_VRR_VMIN_A 0x60434
4371
+#define _TRANS_VRR_VMIN_B 0x61434
4372
+#define _TRANS_VRR_VMIN_C 0x62434
4373
+#define _TRANS_VRR_VMIN_D 0x63434
4374
+#define TRANS_VRR_VMIN(trans) _MMIO_TRANS2(trans, _TRANS_VRR_VMIN_A)
4375
+#define VRR_VMIN_MASK REG_GENMASK(15, 0)
4376
+
4377
+#define _TRANS_VRR_VMAXSHIFT_A 0x60428
4378
+#define _TRANS_VRR_VMAXSHIFT_B 0x61428
4379
+#define _TRANS_VRR_VMAXSHIFT_C 0x62428
4380
+#define _TRANS_VRR_VMAXSHIFT_D 0x63428
4381
+#define TRANS_VRR_VMAXSHIFT(trans) _MMIO_TRANS2(trans, \
4382
+ _TRANS_VRR_VMAXSHIFT_A)
4383
+#define VRR_VMAXSHIFT_DEC_MASK REG_GENMASK(29, 16)
4384
+#define VRR_VMAXSHIFT_DEC REG_BIT(16)
4385
+#define VRR_VMAXSHIFT_INC_MASK REG_GENMASK(12, 0)
4386
+
4387
+#define _TRANS_VRR_STATUS_A 0x6042C
4388
+#define _TRANS_VRR_STATUS_B 0x6142C
4389
+#define _TRANS_VRR_STATUS_C 0x6242C
4390
+#define _TRANS_VRR_STATUS_D 0x6342C
4391
+#define TRANS_VRR_STATUS(trans) _MMIO_TRANS2(trans, _TRANS_VRR_STATUS_A)
4392
+#define VRR_STATUS_VMAX_REACHED REG_BIT(31)
4393
+#define VRR_STATUS_NOFLIP_TILL_BNDR REG_BIT(30)
4394
+#define VRR_STATUS_FLIP_BEF_BNDR REG_BIT(29)
4395
+#define VRR_STATUS_NO_FLIP_FRAME REG_BIT(28)
4396
+#define VRR_STATUS_VRR_EN_LIVE REG_BIT(27)
4397
+#define VRR_STATUS_FLIPS_SERVICED REG_BIT(26)
4398
+#define VRR_STATUS_VBLANK_MASK REG_GENMASK(22, 20)
4399
+#define STATUS_FSM_IDLE REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 0)
4400
+#define STATUS_FSM_WAIT_TILL_FDB REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 1)
4401
+#define STATUS_FSM_WAIT_TILL_FS REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 2)
4402
+#define STATUS_FSM_WAIT_TILL_FLIP REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 3)
4403
+#define STATUS_FSM_PIPELINE_FILL REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 4)
4404
+#define STATUS_FSM_ACTIVE REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 5)
4405
+#define STATUS_FSM_LEGACY_VBLANK REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 6)
4406
+
4407
+#define _TRANS_VRR_VTOTAL_PREV_A 0x60480
4408
+#define _TRANS_VRR_VTOTAL_PREV_B 0x61480
4409
+#define _TRANS_VRR_VTOTAL_PREV_C 0x62480
4410
+#define _TRANS_VRR_VTOTAL_PREV_D 0x63480
4411
+#define TRANS_VRR_VTOTAL_PREV(trans) _MMIO_TRANS2(trans, \
4412
+ _TRANS_VRR_VTOTAL_PREV_A)
4413
+#define VRR_VTOTAL_FLIP_BEFR_BNDR REG_BIT(31)
4414
+#define VRR_VTOTAL_FLIP_AFTER_BNDR REG_BIT(30)
4415
+#define VRR_VTOTAL_FLIP_AFTER_DBLBUF REG_BIT(29)
4416
+#define VRR_VTOTAL_PREV_FRAME_MASK REG_GENMASK(19, 0)
4417
+
4418
+#define _TRANS_VRR_FLIPLINE_A 0x60438
4419
+#define _TRANS_VRR_FLIPLINE_B 0x61438
4420
+#define _TRANS_VRR_FLIPLINE_C 0x62438
4421
+#define _TRANS_VRR_FLIPLINE_D 0x63438
4422
+#define TRANS_VRR_FLIPLINE(trans) _MMIO_TRANS2(trans, \
4423
+ _TRANS_VRR_FLIPLINE_A)
4424
+#define VRR_FLIPLINE_MASK REG_GENMASK(19, 0)
4425
+
4426
+#define _TRANS_VRR_STATUS2_A 0x6043C
4427
+#define _TRANS_VRR_STATUS2_B 0x6143C
4428
+#define _TRANS_VRR_STATUS2_C 0x6243C
4429
+#define _TRANS_VRR_STATUS2_D 0x6343C
4430
+#define TRANS_VRR_STATUS2(trans) _MMIO_TRANS2(trans, _TRANS_VRR_STATUS2_A)
4431
+#define VRR_STATUS2_VERT_LN_CNT_MASK REG_GENMASK(19, 0)
4432
+
4433
+#define _TRANS_PUSH_A 0x60A70
4434
+#define _TRANS_PUSH_B 0x61A70
4435
+#define _TRANS_PUSH_C 0x62A70
4436
+#define _TRANS_PUSH_D 0x63A70
4437
+#define TRANS_PUSH(trans) _MMIO_TRANS2(trans, _TRANS_PUSH_A)
4438
+#define TRANS_PUSH_EN REG_BIT(31)
4439
+#define TRANS_PUSH_SEND REG_BIT(30)
4440
+
4441
+/*
4442
+ * HSW+ eDP PSR registers
4443
+ *
4444
+ * HSW PSR registers are relative to DDIA(_DDI_BUF_CTL_A + 0x800) with just one
4445
+ * instance of it
4446
+ */
4447
+#define _HSW_EDP_PSR_BASE 0x64800
4448
+#define _SRD_CTL_A 0x60800
4449
+#define _SRD_CTL_EDP 0x6f800
4450
+#define _PSR_ADJ(tran, reg) (_TRANS2(tran, reg) - dev_priv->hsw_psr_mmio_adjust)
4451
+#define EDP_PSR_CTL(tran) _MMIO(_PSR_ADJ(tran, _SRD_CTL_A))
41524452 #define EDP_PSR_ENABLE (1 << 31)
41534453 #define BDW_PSR_SINGLE_FRAME (1 << 30)
41544454 #define EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK (1 << 29) /* SW can't modify */
....@@ -4167,29 +4467,47 @@
41674467 #define EDP_PSR_TP2_TP3_TIME_100us (1 << 8)
41684468 #define EDP_PSR_TP2_TP3_TIME_2500us (2 << 8)
41694469 #define EDP_PSR_TP2_TP3_TIME_0us (3 << 8)
4470
+#define EDP_PSR_TP4_TIME_0US (3 << 6) /* ICL+ */
41704471 #define EDP_PSR_TP1_TIME_500us (0 << 4)
41714472 #define EDP_PSR_TP1_TIME_100us (1 << 4)
41724473 #define EDP_PSR_TP1_TIME_2500us (2 << 4)
41734474 #define EDP_PSR_TP1_TIME_0us (3 << 4)
41744475 #define EDP_PSR_IDLE_FRAME_SHIFT 0
41754476
4176
-/* Bspec claims those aren't shifted but stay at 0x64800 */
4477
+/*
4478
+ * Until TGL, IMR/IIR are fixed at 0x648xx. On TGL+ those registers are relative
4479
+ * to transcoder and bits defined for each one as if using no shift (i.e. as if
4480
+ * it was for TRANSCODER_EDP)
4481
+ */
41774482 #define EDP_PSR_IMR _MMIO(0x64834)
41784483 #define EDP_PSR_IIR _MMIO(0x64838)
4179
-#define EDP_PSR_ERROR(trans) (1 << (((trans) * 8 + 10) & 31))
4180
-#define EDP_PSR_POST_EXIT(trans) (1 << (((trans) * 8 + 9) & 31))
4181
-#define EDP_PSR_PRE_ENTRY(trans) (1 << (((trans) * 8 + 8) & 31))
4484
+#define _PSR_IMR_A 0x60814
4485
+#define _PSR_IIR_A 0x60818
4486
+#define TRANS_PSR_IMR(tran) _MMIO_TRANS2(tran, _PSR_IMR_A)
4487
+#define TRANS_PSR_IIR(tran) _MMIO_TRANS2(tran, _PSR_IIR_A)
4488
+#define _EDP_PSR_TRANS_SHIFT(trans) ((trans) == TRANSCODER_EDP ? \
4489
+ 0 : ((trans) - TRANSCODER_A + 1) * 8)
4490
+#define EDP_PSR_TRANS_MASK(trans) (0x7 << _EDP_PSR_TRANS_SHIFT(trans))
4491
+#define EDP_PSR_ERROR(trans) (0x4 << _EDP_PSR_TRANS_SHIFT(trans))
4492
+#define EDP_PSR_POST_EXIT(trans) (0x2 << _EDP_PSR_TRANS_SHIFT(trans))
4493
+#define EDP_PSR_PRE_ENTRY(trans) (0x1 << _EDP_PSR_TRANS_SHIFT(trans))
41824494
4183
-#define EDP_PSR_AUX_CTL _MMIO(dev_priv->psr_mmio_base + 0x10)
4495
+#define _SRD_AUX_CTL_A 0x60810
4496
+#define _SRD_AUX_CTL_EDP 0x6f810
4497
+#define EDP_PSR_AUX_CTL(tran) _MMIO(_PSR_ADJ(tran, _SRD_AUX_CTL_A))
41844498 #define EDP_PSR_AUX_CTL_TIME_OUT_MASK (3 << 26)
41854499 #define EDP_PSR_AUX_CTL_MESSAGE_SIZE_MASK (0x1f << 20)
41864500 #define EDP_PSR_AUX_CTL_PRECHARGE_2US_MASK (0xf << 16)
41874501 #define EDP_PSR_AUX_CTL_ERROR_INTERRUPT (1 << 11)
41884502 #define EDP_PSR_AUX_CTL_BIT_CLOCK_2X_MASK (0x7ff)
41894503
4190
-#define EDP_PSR_AUX_DATA(i) _MMIO(dev_priv->psr_mmio_base + 0x14 + (i) * 4) /* 5 registers */
4504
+#define _SRD_AUX_DATA_A 0x60814
4505
+#define _SRD_AUX_DATA_EDP 0x6f814
4506
+#define EDP_PSR_AUX_DATA(tran, i) _MMIO(_PSR_ADJ(tran, _SRD_AUX_DATA_A) + (i) + 4) /* 5 registers */
41914507
4192
-#define EDP_PSR_STATUS _MMIO(dev_priv->psr_mmio_base + 0x40)
4508
+#define _SRD_STATUS_A 0x60840
4509
+#define _SRD_STATUS_EDP 0x6f840
4510
+#define EDP_PSR_STATUS(tran) _MMIO(_PSR_ADJ(tran, _SRD_STATUS_A))
41934511 #define EDP_PSR_STATUS_STATE_MASK (7 << 29)
41944512 #define EDP_PSR_STATUS_STATE_SHIFT 29
41954513 #define EDP_PSR_STATUS_STATE_IDLE (0 << 29)
....@@ -4214,41 +4532,62 @@
42144532 #define EDP_PSR_STATUS_SENDING_TP1 (1 << 4)
42154533 #define EDP_PSR_STATUS_IDLE_MASK 0xf
42164534
4217
-#define EDP_PSR_PERF_CNT _MMIO(dev_priv->psr_mmio_base + 0x44)
4535
+#define _SRD_PERF_CNT_A 0x60844
4536
+#define _SRD_PERF_CNT_EDP 0x6f844
4537
+#define EDP_PSR_PERF_CNT(tran) _MMIO(_PSR_ADJ(tran, _SRD_PERF_CNT_A))
42184538 #define EDP_PSR_PERF_CNT_MASK 0xffffff
42194539
4220
-#define EDP_PSR_DEBUG _MMIO(dev_priv->psr_mmio_base + 0x60) /* PSR_MASK on SKL+ */
4540
+/* PSR_MASK on SKL+ */
4541
+#define _SRD_DEBUG_A 0x60860
4542
+#define _SRD_DEBUG_EDP 0x6f860
4543
+#define EDP_PSR_DEBUG(tran) _MMIO(_PSR_ADJ(tran, _SRD_DEBUG_A))
42214544 #define EDP_PSR_DEBUG_MASK_MAX_SLEEP (1 << 28)
42224545 #define EDP_PSR_DEBUG_MASK_LPSP (1 << 27)
42234546 #define EDP_PSR_DEBUG_MASK_MEMUP (1 << 26)
42244547 #define EDP_PSR_DEBUG_MASK_HPD (1 << 25)
4225
-#define EDP_PSR_DEBUG_MASK_DISP_REG_WRITE (1 << 16)
4548
+#define EDP_PSR_DEBUG_MASK_DISP_REG_WRITE (1 << 16) /* Reserved in ICL+ */
42264549 #define EDP_PSR_DEBUG_EXIT_ON_PIXEL_UNDERRUN (1 << 15) /* SKL+ */
42274550
4228
-#define EDP_PSR2_CTL _MMIO(0x6f900)
4229
-#define EDP_PSR2_ENABLE (1 << 31)
4230
-#define EDP_SU_TRACK_ENABLE (1 << 30)
4231
-#define EDP_Y_COORDINATE_VALID (1 << 26) /* GLK and CNL+ */
4232
-#define EDP_Y_COORDINATE_ENABLE (1 << 25) /* GLK and CNL+ */
4233
-#define EDP_MAX_SU_DISABLE_TIME(t) ((t) << 20)
4234
-#define EDP_MAX_SU_DISABLE_TIME_MASK (0x1f << 20)
4235
-#define EDP_PSR2_TP2_TIME_500us (0 << 8)
4236
-#define EDP_PSR2_TP2_TIME_100us (1 << 8)
4237
-#define EDP_PSR2_TP2_TIME_2500us (2 << 8)
4238
-#define EDP_PSR2_TP2_TIME_50us (3 << 8)
4239
-#define EDP_PSR2_TP2_TIME_MASK (3 << 8)
4240
-#define EDP_PSR2_FRAME_BEFORE_SU_SHIFT 4
4241
-#define EDP_PSR2_FRAME_BEFORE_SU_MASK (0xf << 4)
4242
-#define EDP_PSR2_FRAME_BEFORE_SU(a) ((a) << 4)
4243
-#define EDP_PSR2_IDLE_FRAME_MASK 0xf
4244
-#define EDP_PSR2_IDLE_FRAME_SHIFT 0
4551
+#define _PSR2_CTL_A 0x60900
4552
+#define _PSR2_CTL_EDP 0x6f900
4553
+#define EDP_PSR2_CTL(tran) _MMIO_TRANS2(tran, _PSR2_CTL_A)
4554
+#define EDP_PSR2_ENABLE (1 << 31)
4555
+#define EDP_SU_TRACK_ENABLE (1 << 30)
4556
+#define TGL_EDP_PSR2_BLOCK_COUNT_NUM_2 (0 << 28)
4557
+#define TGL_EDP_PSR2_BLOCK_COUNT_NUM_3 (1 << 28)
4558
+#define EDP_Y_COORDINATE_VALID (1 << 26) /* GLK and CNL+ */
4559
+#define EDP_Y_COORDINATE_ENABLE (1 << 25) /* GLK and CNL+ */
4560
+#define EDP_MAX_SU_DISABLE_TIME(t) ((t) << 20)
4561
+#define EDP_MAX_SU_DISABLE_TIME_MASK (0x1f << 20)
4562
+#define EDP_PSR2_IO_BUFFER_WAKE_MAX_LINES 8
4563
+#define EDP_PSR2_IO_BUFFER_WAKE(lines) ((EDP_PSR2_IO_BUFFER_WAKE_MAX_LINES - (lines)) << 13)
4564
+#define EDP_PSR2_IO_BUFFER_WAKE_MASK (3 << 13)
4565
+#define TGL_EDP_PSR2_IO_BUFFER_WAKE_MIN_LINES 5
4566
+#define TGL_EDP_PSR2_IO_BUFFER_WAKE(lines) (((lines) - TGL_EDP_PSR2_IO_BUFFER_WAKE_MIN_LINES) << 13)
4567
+#define TGL_EDP_PSR2_IO_BUFFER_WAKE_MASK (7 << 13)
4568
+#define EDP_PSR2_FAST_WAKE_MAX_LINES 8
4569
+#define EDP_PSR2_FAST_WAKE(lines) ((EDP_PSR2_FAST_WAKE_MAX_LINES - (lines)) << 11)
4570
+#define EDP_PSR2_FAST_WAKE_MASK (3 << 11)
4571
+#define TGL_EDP_PSR2_FAST_WAKE_MIN_LINES 5
4572
+#define TGL_EDP_PSR2_FAST_WAKE(lines) (((lines) - TGL_EDP_PSR2_FAST_WAKE_MIN_LINES) << 10)
4573
+#define TGL_EDP_PSR2_FAST_WAKE_MASK (7 << 10)
4574
+#define EDP_PSR2_TP2_TIME_500us (0 << 8)
4575
+#define EDP_PSR2_TP2_TIME_100us (1 << 8)
4576
+#define EDP_PSR2_TP2_TIME_2500us (2 << 8)
4577
+#define EDP_PSR2_TP2_TIME_50us (3 << 8)
4578
+#define EDP_PSR2_TP2_TIME_MASK (3 << 8)
4579
+#define EDP_PSR2_FRAME_BEFORE_SU_SHIFT 4
4580
+#define EDP_PSR2_FRAME_BEFORE_SU_MASK (0xf << 4)
4581
+#define EDP_PSR2_FRAME_BEFORE_SU(a) ((a) << 4)
4582
+#define EDP_PSR2_IDLE_FRAME_MASK 0xf
4583
+#define EDP_PSR2_IDLE_FRAME_SHIFT 0
42454584
42464585 #define _PSR_EVENT_TRANS_A 0x60848
42474586 #define _PSR_EVENT_TRANS_B 0x61848
42484587 #define _PSR_EVENT_TRANS_C 0x62848
42494588 #define _PSR_EVENT_TRANS_D 0x63848
4250
-#define _PSR_EVENT_TRANS_EDP 0x6F848
4251
-#define PSR_EVENT(trans) _MMIO_TRANS2(trans, _PSR_EVENT_TRANS_A)
4589
+#define _PSR_EVENT_TRANS_EDP 0x6f848
4590
+#define PSR_EVENT(tran) _MMIO_TRANS2(tran, _PSR_EVENT_TRANS_A)
42524591 #define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17)
42534592 #define PSR_EVENT_PSR2_DISABLED (1 << 16)
42544593 #define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15)
....@@ -4259,16 +4598,38 @@
42594598 #define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9)
42604599 #define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8)
42614600 #define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6)
4262
-#define PSR_EVENT_REGISTER_UPDATE (1 << 5)
4601
+#define PSR_EVENT_REGISTER_UPDATE (1 << 5) /* Reserved in ICL+ */
42634602 #define PSR_EVENT_HDCP_ENABLE (1 << 4)
42644603 #define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3)
42654604 #define PSR_EVENT_VBI_ENABLE (1 << 2)
42664605 #define PSR_EVENT_LPSP_MODE_EXIT (1 << 1)
42674606 #define PSR_EVENT_PSR_DISABLE (1 << 0)
42684607
4269
-#define EDP_PSR2_STATUS _MMIO(0x6f940)
4608
+#define _PSR2_STATUS_A 0x60940
4609
+#define _PSR2_STATUS_EDP 0x6f940
4610
+#define EDP_PSR2_STATUS(tran) _MMIO_TRANS2(tran, _PSR2_STATUS_A)
42704611 #define EDP_PSR2_STATUS_STATE_MASK (0xf << 28)
42714612 #define EDP_PSR2_STATUS_STATE_SHIFT 28
4613
+
4614
+#define _PSR2_SU_STATUS_A 0x60914
4615
+#define _PSR2_SU_STATUS_EDP 0x6f914
4616
+#define _PSR2_SU_STATUS(tran, index) _MMIO(_TRANS2(tran, _PSR2_SU_STATUS_A) + (index) * 4)
4617
+#define PSR2_SU_STATUS(tran, frame) (_PSR2_SU_STATUS(tran, (frame) / 3))
4618
+#define PSR2_SU_STATUS_SHIFT(frame) (((frame) % 3) * 10)
4619
+#define PSR2_SU_STATUS_MASK(frame) (0x3ff << PSR2_SU_STATUS_SHIFT(frame))
4620
+#define PSR2_SU_STATUS_FRAMES 8
4621
+
4622
+#define _PSR2_MAN_TRK_CTL_A 0x60910
4623
+#define _PSR2_MAN_TRK_CTL_EDP 0x6f910
4624
+#define PSR2_MAN_TRK_CTL(tran) _MMIO_TRANS2(tran, _PSR2_MAN_TRK_CTL_A)
4625
+#define PSR2_MAN_TRK_CTL_ENABLE REG_BIT(31)
4626
+#define PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR_MASK REG_GENMASK(30, 21)
4627
+#define PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR(val) REG_FIELD_PREP(PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR_MASK, val)
4628
+#define PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR_MASK REG_GENMASK(20, 11)
4629
+#define PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR(val) REG_FIELD_PREP(PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR_MASK, val)
4630
+#define PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME REG_BIT(3)
4631
+#define PSR2_MAN_TRK_CTL_SF_CONTINUOS_FULL_FRAME REG_BIT(2)
4632
+#define PSR2_MAN_TRK_CTL_SF_PARTIAL_FRAME_UPDATE REG_BIT(1)
42724633
42734634 /* VGA port control */
42744635 #define ADPA _MMIO(0x61100)
....@@ -4320,7 +4681,7 @@
43204681
43214682
43224683 /* Hotplug control (945+ only) */
4323
-#define PORT_HOTPLUG_EN _MMIO(dev_priv->info.display_mmio_offset + 0x61110)
4684
+#define PORT_HOTPLUG_EN _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61110)
43244685 #define PORTB_HOTPLUG_INT_EN (1 << 29)
43254686 #define PORTC_HOTPLUG_INT_EN (1 << 28)
43264687 #define PORTD_HOTPLUG_INT_EN (1 << 27)
....@@ -4350,7 +4711,7 @@
43504711 #define CRT_HOTPLUG_DETECT_VOLTAGE_325MV (0 << 2)
43514712 #define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2)
43524713
4353
-#define PORT_HOTPLUG_STAT _MMIO(dev_priv->info.display_mmio_offset + 0x61114)
4714
+#define PORT_HOTPLUG_STAT _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61114)
43544715 /*
43554716 * HDMI/DP bits are g4x+
43564717 *
....@@ -4432,7 +4793,7 @@
44324793
44334794 #define PORT_DFT_I9XX _MMIO(0x61150)
44344795 #define DC_BALANCE_RESET (1 << 25)
4435
-#define PORT_DFT2_G4X _MMIO(dev_priv->info.display_mmio_offset + 0x61154)
4796
+#define PORT_DFT2_G4X _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61154)
44364797 #define DC_BALANCE_RESET_VLV (1 << 31)
44374798 #define PIPE_SCRAMBLE_RESET_MASK ((1 << 14) | (0x3 << 0))
44384799 #define PIPE_C_SCRAMBLE_RESET (1 << 14) /* chv */
....@@ -4473,7 +4834,7 @@
44734834 #define HDMI_MODE_SELECT_HDMI (1 << 9) /* HDMI only */
44744835 #define HDMI_MODE_SELECT_DVI (0 << 9) /* HDMI only */
44754836 #define HDMI_COLOR_RANGE_16_235 (1 << 8) /* HDMI only */
4476
-#define SDVO_AUDIO_ENABLE (1 << 6)
4837
+#define HDMI_AUDIO_ENABLE (1 << 6) /* HDMI only */
44774838 /* VSYNC/HSYNC bits new with 965, default is to be set */
44784839 #define SDVO_VSYNC_ACTIVE_HIGH (1 << 4)
44794840 #define SDVO_HSYNC_ACTIVE_HIGH (1 << 3)
....@@ -4591,19 +4952,22 @@
45914952 * (Haswell and newer) to see which VIDEO_DIP_DATA byte corresponds to each byte
45924953 * of the infoframe structure specified by CEA-861. */
45934954 #define VIDEO_DIP_DATA_SIZE 32
4955
+#define VIDEO_DIP_GMP_DATA_SIZE 36
45944956 #define VIDEO_DIP_VSC_DATA_SIZE 36
4957
+#define VIDEO_DIP_PPS_DATA_SIZE 132
45954958 #define VIDEO_DIP_CTL _MMIO(0x61170)
45964959 /* Pre HSW: */
45974960 #define VIDEO_DIP_ENABLE (1 << 31)
45984961 #define VIDEO_DIP_PORT(port) ((port) << 29)
45994962 #define VIDEO_DIP_PORT_MASK (3 << 29)
4600
-#define VIDEO_DIP_ENABLE_GCP (1 << 25)
4963
+#define VIDEO_DIP_ENABLE_GCP (1 << 25) /* ilk+ */
46014964 #define VIDEO_DIP_ENABLE_AVI (1 << 21)
46024965 #define VIDEO_DIP_ENABLE_VENDOR (2 << 21)
4603
-#define VIDEO_DIP_ENABLE_GAMUT (4 << 21)
4966
+#define VIDEO_DIP_ENABLE_GAMUT (4 << 21) /* ilk+ */
46044967 #define VIDEO_DIP_ENABLE_SPD (8 << 21)
46054968 #define VIDEO_DIP_SELECT_AVI (0 << 19)
46064969 #define VIDEO_DIP_SELECT_VENDOR (1 << 19)
4970
+#define VIDEO_DIP_SELECT_GAMUT (2 << 19)
46074971 #define VIDEO_DIP_SELECT_SPD (3 << 19)
46084972 #define VIDEO_DIP_SELECT_MASK (3 << 19)
46094973 #define VIDEO_DIP_FREQ_ONCE (0 << 16)
....@@ -4611,22 +4975,21 @@
46114975 #define VIDEO_DIP_FREQ_2VSYNC (2 << 16)
46124976 #define VIDEO_DIP_FREQ_MASK (3 << 16)
46134977 /* HSW and later: */
4978
+#define VIDEO_DIP_ENABLE_DRM_GLK (1 << 28)
4979
+#define PSR_VSC_BIT_7_SET (1 << 27)
4980
+#define VSC_SELECT_MASK (0x3 << 25)
4981
+#define VSC_SELECT_SHIFT 25
4982
+#define VSC_DIP_HW_HEA_DATA (0 << 25)
4983
+#define VSC_DIP_HW_HEA_SW_DATA (1 << 25)
4984
+#define VSC_DIP_HW_DATA_SW_HEA (2 << 25)
4985
+#define VSC_DIP_SW_HEA_DATA (3 << 25)
4986
+#define VDIP_ENABLE_PPS (1 << 24)
46144987 #define VIDEO_DIP_ENABLE_VSC_HSW (1 << 20)
46154988 #define VIDEO_DIP_ENABLE_GCP_HSW (1 << 16)
46164989 #define VIDEO_DIP_ENABLE_AVI_HSW (1 << 12)
46174990 #define VIDEO_DIP_ENABLE_VS_HSW (1 << 8)
46184991 #define VIDEO_DIP_ENABLE_GMP_HSW (1 << 4)
46194992 #define VIDEO_DIP_ENABLE_SPD_HSW (1 << 0)
4620
-
4621
-#define DRM_DIP_ENABLE (1 << 28)
4622
-#define PSR_VSC_BIT_7_SET (1 << 27)
4623
-#define VSC_SELECT_MASK (0x3 << 26)
4624
-#define VSC_SELECT_SHIFT 26
4625
-#define VSC_DIP_HW_HEA_DATA (0 << 26)
4626
-#define VSC_DIP_HW_HEA_SW_DATA (1 << 26)
4627
-#define VSC_DIP_HW_DATA_SW_HEA (2 << 26)
4628
-#define VSC_DIP_SW_HEA_DATA (3 << 26)
4629
-#define VDIP_ENABLE_PPS (1 << 24)
46304993
46314994 /* Panel power sequencing */
46324995 #define PPS_BASE 0x61200
....@@ -4639,7 +5002,7 @@
46395002
46405003 #define _PP_STATUS 0x61200
46415004 #define PP_STATUS(pps_idx) _MMIO_PPS(pps_idx, _PP_STATUS)
4642
-#define PP_ON (1 << 31)
5005
+#define PP_ON REG_BIT(31)
46435006 /*
46445007 * Indicates that all dependencies of the panel are on:
46455008 *
....@@ -4647,69 +5010,60 @@
46475010 * - pipe enabled
46485011 * - LVDS/DVOB/DVOC on
46495012 */
4650
-#define PP_READY (1 << 30)
4651
-#define PP_SEQUENCE_NONE (0 << 28)
4652
-#define PP_SEQUENCE_POWER_UP (1 << 28)
4653
-#define PP_SEQUENCE_POWER_DOWN (2 << 28)
4654
-#define PP_SEQUENCE_MASK (3 << 28)
4655
-#define PP_SEQUENCE_SHIFT 28
4656
-#define PP_CYCLE_DELAY_ACTIVE (1 << 27)
4657
-#define PP_SEQUENCE_STATE_MASK 0x0000000f
4658
-#define PP_SEQUENCE_STATE_OFF_IDLE (0x0 << 0)
4659
-#define PP_SEQUENCE_STATE_OFF_S0_1 (0x1 << 0)
4660
-#define PP_SEQUENCE_STATE_OFF_S0_2 (0x2 << 0)
4661
-#define PP_SEQUENCE_STATE_OFF_S0_3 (0x3 << 0)
4662
-#define PP_SEQUENCE_STATE_ON_IDLE (0x8 << 0)
4663
-#define PP_SEQUENCE_STATE_ON_S1_0 (0x9 << 0)
4664
-#define PP_SEQUENCE_STATE_ON_S1_2 (0xa << 0)
4665
-#define PP_SEQUENCE_STATE_ON_S1_3 (0xb << 0)
4666
-#define PP_SEQUENCE_STATE_RESET (0xf << 0)
5013
+#define PP_READY REG_BIT(30)
5014
+#define PP_SEQUENCE_MASK REG_GENMASK(29, 28)
5015
+#define PP_SEQUENCE_NONE REG_FIELD_PREP(PP_SEQUENCE_MASK, 0)
5016
+#define PP_SEQUENCE_POWER_UP REG_FIELD_PREP(PP_SEQUENCE_MASK, 1)
5017
+#define PP_SEQUENCE_POWER_DOWN REG_FIELD_PREP(PP_SEQUENCE_MASK, 2)
5018
+#define PP_CYCLE_DELAY_ACTIVE REG_BIT(27)
5019
+#define PP_SEQUENCE_STATE_MASK REG_GENMASK(3, 0)
5020
+#define PP_SEQUENCE_STATE_OFF_IDLE REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x0)
5021
+#define PP_SEQUENCE_STATE_OFF_S0_1 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x1)
5022
+#define PP_SEQUENCE_STATE_OFF_S0_2 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x2)
5023
+#define PP_SEQUENCE_STATE_OFF_S0_3 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x3)
5024
+#define PP_SEQUENCE_STATE_ON_IDLE REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x8)
5025
+#define PP_SEQUENCE_STATE_ON_S1_1 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0x9)
5026
+#define PP_SEQUENCE_STATE_ON_S1_2 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0xa)
5027
+#define PP_SEQUENCE_STATE_ON_S1_3 REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0xb)
5028
+#define PP_SEQUENCE_STATE_RESET REG_FIELD_PREP(PP_SEQUENCE_STATE_MASK, 0xf)
46675029
46685030 #define _PP_CONTROL 0x61204
46695031 #define PP_CONTROL(pps_idx) _MMIO_PPS(pps_idx, _PP_CONTROL)
4670
-#define PANEL_UNLOCK_REGS (0xabcd << 16)
4671
-#define PANEL_UNLOCK_MASK (0xffff << 16)
4672
-#define BXT_POWER_CYCLE_DELAY_MASK 0x1f0
4673
-#define BXT_POWER_CYCLE_DELAY_SHIFT 4
4674
-#define EDP_FORCE_VDD (1 << 3)
4675
-#define EDP_BLC_ENABLE (1 << 2)
4676
-#define PANEL_POWER_RESET (1 << 1)
4677
-#define PANEL_POWER_OFF (0 << 0)
4678
-#define PANEL_POWER_ON (1 << 0)
5032
+#define PANEL_UNLOCK_MASK REG_GENMASK(31, 16)
5033
+#define PANEL_UNLOCK_REGS REG_FIELD_PREP(PANEL_UNLOCK_MASK, 0xabcd)
5034
+#define BXT_POWER_CYCLE_DELAY_MASK REG_GENMASK(8, 4)
5035
+#define EDP_FORCE_VDD REG_BIT(3)
5036
+#define EDP_BLC_ENABLE REG_BIT(2)
5037
+#define PANEL_POWER_RESET REG_BIT(1)
5038
+#define PANEL_POWER_ON REG_BIT(0)
46795039
46805040 #define _PP_ON_DELAYS 0x61208
46815041 #define PP_ON_DELAYS(pps_idx) _MMIO_PPS(pps_idx, _PP_ON_DELAYS)
4682
-#define PANEL_PORT_SELECT_SHIFT 30
4683
-#define PANEL_PORT_SELECT_MASK (3 << 30)
4684
-#define PANEL_PORT_SELECT_LVDS (0 << 30)
4685
-#define PANEL_PORT_SELECT_DPA (1 << 30)
4686
-#define PANEL_PORT_SELECT_DPC (2 << 30)
4687
-#define PANEL_PORT_SELECT_DPD (3 << 30)
4688
-#define PANEL_PORT_SELECT_VLV(port) ((port) << 30)
4689
-#define PANEL_POWER_UP_DELAY_MASK 0x1fff0000
4690
-#define PANEL_POWER_UP_DELAY_SHIFT 16
4691
-#define PANEL_LIGHT_ON_DELAY_MASK 0x1fff
4692
-#define PANEL_LIGHT_ON_DELAY_SHIFT 0
5042
+#define PANEL_PORT_SELECT_MASK REG_GENMASK(31, 30)
5043
+#define PANEL_PORT_SELECT_LVDS REG_FIELD_PREP(PANEL_PORT_SELECT_MASK, 0)
5044
+#define PANEL_PORT_SELECT_DPA REG_FIELD_PREP(PANEL_PORT_SELECT_MASK, 1)
5045
+#define PANEL_PORT_SELECT_DPC REG_FIELD_PREP(PANEL_PORT_SELECT_MASK, 2)
5046
+#define PANEL_PORT_SELECT_DPD REG_FIELD_PREP(PANEL_PORT_SELECT_MASK, 3)
5047
+#define PANEL_PORT_SELECT_VLV(port) REG_FIELD_PREP(PANEL_PORT_SELECT_MASK, port)
5048
+#define PANEL_POWER_UP_DELAY_MASK REG_GENMASK(28, 16)
5049
+#define PANEL_LIGHT_ON_DELAY_MASK REG_GENMASK(12, 0)
46935050
46945051 #define _PP_OFF_DELAYS 0x6120C
46955052 #define PP_OFF_DELAYS(pps_idx) _MMIO_PPS(pps_idx, _PP_OFF_DELAYS)
4696
-#define PANEL_POWER_DOWN_DELAY_MASK 0x1fff0000
4697
-#define PANEL_POWER_DOWN_DELAY_SHIFT 16
4698
-#define PANEL_LIGHT_OFF_DELAY_MASK 0x1fff
4699
-#define PANEL_LIGHT_OFF_DELAY_SHIFT 0
5053
+#define PANEL_POWER_DOWN_DELAY_MASK REG_GENMASK(28, 16)
5054
+#define PANEL_LIGHT_OFF_DELAY_MASK REG_GENMASK(12, 0)
47005055
47015056 #define _PP_DIVISOR 0x61210
47025057 #define PP_DIVISOR(pps_idx) _MMIO_PPS(pps_idx, _PP_DIVISOR)
4703
-#define PP_REFERENCE_DIVIDER_MASK 0xffffff00
4704
-#define PP_REFERENCE_DIVIDER_SHIFT 8
4705
-#define PANEL_POWER_CYCLE_DELAY_MASK 0x1f
4706
-#define PANEL_POWER_CYCLE_DELAY_SHIFT 0
5058
+#define PP_REFERENCE_DIVIDER_MASK REG_GENMASK(31, 8)
5059
+#define PANEL_POWER_CYCLE_DELAY_MASK REG_GENMASK(4, 0)
47075060
47085061 /* Panel fitting */
4709
-#define PFIT_CONTROL _MMIO(dev_priv->info.display_mmio_offset + 0x61230)
5062
+#define PFIT_CONTROL _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61230)
47105063 #define PFIT_ENABLE (1 << 31)
47115064 #define PFIT_PIPE_MASK (3 << 29)
47125065 #define PFIT_PIPE_SHIFT 29
5066
+#define PFIT_PIPE(pipe) ((pipe) << 29)
47135067 #define VERT_INTERP_DISABLE (0 << 10)
47145068 #define VERT_INTERP_BILINEAR (1 << 10)
47155069 #define VERT_INTERP_MASK (3 << 10)
....@@ -4724,7 +5078,7 @@
47245078 #define PFIT_SCALING_PROGRAMMED (1 << 26)
47255079 #define PFIT_SCALING_PILLAR (2 << 26)
47265080 #define PFIT_SCALING_LETTER (3 << 26)
4727
-#define PFIT_PGM_RATIOS _MMIO(dev_priv->info.display_mmio_offset + 0x61234)
5081
+#define PFIT_PGM_RATIOS _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61234)
47285082 /* Pre-965 */
47295083 #define PFIT_VERT_SCALE_SHIFT 20
47305084 #define PFIT_VERT_SCALE_MASK 0xfff00000
....@@ -4736,25 +5090,25 @@
47365090 #define PFIT_HORIZ_SCALE_SHIFT_965 0
47375091 #define PFIT_HORIZ_SCALE_MASK_965 0x00001fff
47385092
4739
-#define PFIT_AUTO_RATIOS _MMIO(dev_priv->info.display_mmio_offset + 0x61238)
5093
+#define PFIT_AUTO_RATIOS _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238)
47405094
4741
-#define _VLV_BLC_PWM_CTL2_A (dev_priv->info.display_mmio_offset + 0x61250)
4742
-#define _VLV_BLC_PWM_CTL2_B (dev_priv->info.display_mmio_offset + 0x61350)
5095
+#define _VLV_BLC_PWM_CTL2_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61250)
5096
+#define _VLV_BLC_PWM_CTL2_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61350)
47435097 #define VLV_BLC_PWM_CTL2(pipe) _MMIO_PIPE(pipe, _VLV_BLC_PWM_CTL2_A, \
47445098 _VLV_BLC_PWM_CTL2_B)
47455099
4746
-#define _VLV_BLC_PWM_CTL_A (dev_priv->info.display_mmio_offset + 0x61254)
4747
-#define _VLV_BLC_PWM_CTL_B (dev_priv->info.display_mmio_offset + 0x61354)
5100
+#define _VLV_BLC_PWM_CTL_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61254)
5101
+#define _VLV_BLC_PWM_CTL_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61354)
47485102 #define VLV_BLC_PWM_CTL(pipe) _MMIO_PIPE(pipe, _VLV_BLC_PWM_CTL_A, \
47495103 _VLV_BLC_PWM_CTL_B)
47505104
4751
-#define _VLV_BLC_HIST_CTL_A (dev_priv->info.display_mmio_offset + 0x61260)
4752
-#define _VLV_BLC_HIST_CTL_B (dev_priv->info.display_mmio_offset + 0x61360)
5105
+#define _VLV_BLC_HIST_CTL_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61260)
5106
+#define _VLV_BLC_HIST_CTL_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61360)
47535107 #define VLV_BLC_HIST_CTL(pipe) _MMIO_PIPE(pipe, _VLV_BLC_HIST_CTL_A, \
47545108 _VLV_BLC_HIST_CTL_B)
47555109
47565110 /* Backlight control */
4757
-#define BLC_PWM_CTL2 _MMIO(dev_priv->info.display_mmio_offset + 0x61250) /* 965+ only */
5111
+#define BLC_PWM_CTL2 _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61250) /* 965+ only */
47585112 #define BLM_PWM_ENABLE (1 << 31)
47595113 #define BLM_COMBINATION_MODE (1 << 30) /* gen4 only */
47605114 #define BLM_PIPE_SELECT (1 << 29)
....@@ -4777,7 +5131,7 @@
47775131 #define BLM_PHASE_IN_COUNT_MASK (0xff << 8)
47785132 #define BLM_PHASE_IN_INCR_SHIFT (0)
47795133 #define BLM_PHASE_IN_INCR_MASK (0xff << 0)
4780
-#define BLC_PWM_CTL _MMIO(dev_priv->info.display_mmio_offset + 0x61254)
5134
+#define BLC_PWM_CTL _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61254)
47815135 /*
47825136 * This is the most significant 15 bits of the number of backlight cycles in a
47835137 * complete cycle of the modulated backlight control.
....@@ -4799,7 +5153,7 @@
47995153 #define BACKLIGHT_DUTY_CYCLE_MASK_PNV (0xfffe)
48005154 #define BLM_POLARITY_PNV (1 << 0) /* pnv only */
48015155
4802
-#define BLC_HIST_CTL _MMIO(dev_priv->info.display_mmio_offset + 0x61260)
5156
+#define BLC_HIST_CTL _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61260)
48035157 #define BLM_HISTOGRAM_ENABLE (1 << 31)
48045158
48055159 /* New registers for PCH-split platforms. Safe where new bits show up, the
....@@ -4817,14 +5171,20 @@
48175171 #define BLM_PCH_POLARITY (1 << 29)
48185172 #define BLC_PWM_PCH_CTL2 _MMIO(0xc8254)
48195173
4820
-#define UTIL_PIN_CTL _MMIO(0x48400)
4821
-#define UTIL_PIN_ENABLE (1 << 31)
4822
-
4823
-#define UTIL_PIN_PIPE(x) ((x) << 29)
4824
-#define UTIL_PIN_PIPE_MASK (3 << 29)
4825
-#define UTIL_PIN_MODE_PWM (1 << 24)
4826
-#define UTIL_PIN_MODE_MASK (0xf << 24)
4827
-#define UTIL_PIN_POLARITY (1 << 22)
5174
+#define UTIL_PIN_CTL _MMIO(0x48400)
5175
+#define UTIL_PIN_ENABLE (1 << 31)
5176
+#define UTIL_PIN_PIPE_MASK (3 << 29)
5177
+#define UTIL_PIN_PIPE(x) ((x) << 29)
5178
+#define UTIL_PIN_MODE_MASK (0xf << 24)
5179
+#define UTIL_PIN_MODE_DATA (0 << 24)
5180
+#define UTIL_PIN_MODE_PWM (1 << 24)
5181
+#define UTIL_PIN_MODE_VBLANK (4 << 24)
5182
+#define UTIL_PIN_MODE_VSYNC (5 << 24)
5183
+#define UTIL_PIN_MODE_EYE_LEVEL (8 << 24)
5184
+#define UTIL_PIN_OUTPUT_DATA (1 << 23)
5185
+#define UTIL_PIN_POLARITY (1 << 22)
5186
+#define UTIL_PIN_DIRECTION_INPUT (1 << 19)
5187
+#define UTIL_PIN_INPUT_DATA (1 << 16)
48285188
48295189 /* BXT backlight register definition. */
48305190 #define _BXT_BLC_PWM_CTL1 0xC8250
....@@ -4874,6 +5234,7 @@
48745234 # define TV_OVERSAMPLE_NONE (2 << 18)
48755235 /* Selects 8x oversampling */
48765236 # define TV_OVERSAMPLE_8X (3 << 18)
5237
+# define TV_OVERSAMPLE_MASK (3 << 18)
48775238 /* Selects progressive mode rather than interlaced */
48785239 # define TV_PROGRESSIVE (1 << 17)
48795240 /* Sets the colorburst to PAL mode. Required for non-M PAL modes. */
....@@ -5423,47 +5784,11 @@
54235784 * is 20 bytes in each direction, hence the 5 fixed
54245785 * data registers
54255786 */
5426
-#define _DPA_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64010)
5427
-#define _DPA_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64014)
5428
-#define _DPA_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64018)
5429
-#define _DPA_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6401c)
5430
-#define _DPA_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64020)
5431
-#define _DPA_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64024)
5787
+#define _DPA_AUX_CH_CTL (DISPLAY_MMIO_BASE(dev_priv) + 0x64010)
5788
+#define _DPA_AUX_CH_DATA1 (DISPLAY_MMIO_BASE(dev_priv) + 0x64014)
54325789
5433
-#define _DPB_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64110)
5434
-#define _DPB_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64114)
5435
-#define _DPB_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64118)
5436
-#define _DPB_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6411c)
5437
-#define _DPB_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64120)
5438
-#define _DPB_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64124)
5439
-
5440
-#define _DPC_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64210)
5441
-#define _DPC_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64214)
5442
-#define _DPC_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64218)
5443
-#define _DPC_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6421c)
5444
-#define _DPC_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64220)
5445
-#define _DPC_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64224)
5446
-
5447
-#define _DPD_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64310)
5448
-#define _DPD_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64314)
5449
-#define _DPD_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64318)
5450
-#define _DPD_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6431c)
5451
-#define _DPD_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64320)
5452
-#define _DPD_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64324)
5453
-
5454
-#define _DPE_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64410)
5455
-#define _DPE_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64414)
5456
-#define _DPE_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64418)
5457
-#define _DPE_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6441c)
5458
-#define _DPE_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64420)
5459
-#define _DPE_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64424)
5460
-
5461
-#define _DPF_AUX_CH_CTL (dev_priv->info.display_mmio_offset + 0x64510)
5462
-#define _DPF_AUX_CH_DATA1 (dev_priv->info.display_mmio_offset + 0x64514)
5463
-#define _DPF_AUX_CH_DATA2 (dev_priv->info.display_mmio_offset + 0x64518)
5464
-#define _DPF_AUX_CH_DATA3 (dev_priv->info.display_mmio_offset + 0x6451c)
5465
-#define _DPF_AUX_CH_DATA4 (dev_priv->info.display_mmio_offset + 0x64520)
5466
-#define _DPF_AUX_CH_DATA5 (dev_priv->info.display_mmio_offset + 0x64524)
5790
+#define _DPB_AUX_CH_CTL (DISPLAY_MMIO_BASE(dev_priv) + 0x64110)
5791
+#define _DPB_AUX_CH_DATA1 (DISPLAY_MMIO_BASE(dev_priv) + 0x64114)
54675792
54685793 #define DP_AUX_CH_CTL(aux_ch) _MMIO_PORT(aux_ch, _DPA_AUX_CH_CTL, _DPB_AUX_CH_CTL)
54695794 #define DP_AUX_CH_DATA(aux_ch, i) _MMIO(_PORT(aux_ch, _DPA_AUX_CH_DATA1, _DPB_AUX_CH_DATA1) + (i) * 4) /* 5 registers */
....@@ -5492,6 +5817,7 @@
54925817 #define DP_AUX_CH_CTL_PSR_DATA_AUX_REG_SKL (1 << 14)
54935818 #define DP_AUX_CH_CTL_FS_DATA_AUX_REG_SKL (1 << 13)
54945819 #define DP_AUX_CH_CTL_GTC_DATA_AUX_REG_SKL (1 << 12)
5820
+#define DP_AUX_CH_CTL_TBT_IO (1 << 11)
54955821 #define DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL_MASK (0x1f << 5)
54965822 #define DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(c) (((c) - 1) << 5)
54975823 #define DP_AUX_CH_CTL_SYNC_PULSE_SKL(c) ((c) - 1)
....@@ -5560,13 +5886,20 @@
55605886 #define PIPECONF_DOUBLE_WIDE (1 << 30)
55615887 #define I965_PIPECONF_ACTIVE (1 << 30)
55625888 #define PIPECONF_DSI_PLL_LOCKED (1 << 29) /* vlv & pipe A only */
5563
-#define PIPECONF_FRAME_START_DELAY_MASK (3 << 27)
5889
+#define PIPECONF_FRAME_START_DELAY_MASK (3 << 27) /* pre-hsw */
5890
+#define PIPECONF_FRAME_START_DELAY(x) ((x) << 27) /* pre-hsw: 0-3 */
55645891 #define PIPECONF_SINGLE_WIDE 0
55655892 #define PIPECONF_PIPE_UNLOCKED 0
55665893 #define PIPECONF_PIPE_LOCKED (1 << 25)
5567
-#define PIPECONF_PALETTE 0
5568
-#define PIPECONF_GAMMA (1 << 24)
55695894 #define PIPECONF_FORCE_BORDER (1 << 25)
5895
+#define PIPECONF_GAMMA_MODE_MASK_I9XX (1 << 24) /* gmch */
5896
+#define PIPECONF_GAMMA_MODE_MASK_ILK (3 << 24) /* ilk-ivb */
5897
+#define PIPECONF_GAMMA_MODE_8BIT (0 << 24) /* gmch,ilk-ivb */
5898
+#define PIPECONF_GAMMA_MODE_10BIT (1 << 24) /* gmch,ilk-ivb */
5899
+#define PIPECONF_GAMMA_MODE_12BIT (2 << 24) /* ilk-ivb */
5900
+#define PIPECONF_GAMMA_MODE_SPLIT (3 << 24) /* ivb */
5901
+#define PIPECONF_GAMMA_MODE(x) ((x) << 24) /* pass in GAMMA_MODE_MODE_* */
5902
+#define PIPECONF_GAMMA_MODE_SHIFT 24
55705903 #define PIPECONF_INTERLACE_MASK (7 << 21)
55715904 #define PIPECONF_INTERLACE_MASK_HSW (3 << 21)
55725905 /* Note that pre-gen3 does not support interlaced display directly. Panel
....@@ -5588,6 +5921,11 @@
55885921 #define PIPECONF_CXSR_DOWNCLOCK (1 << 16)
55895922 #define PIPECONF_EDP_RR_MODE_SWITCH_VLV (1 << 14)
55905923 #define PIPECONF_COLOR_RANGE_SELECT (1 << 13)
5924
+#define PIPECONF_OUTPUT_COLORSPACE_MASK (3 << 11) /* ilk-ivb */
5925
+#define PIPECONF_OUTPUT_COLORSPACE_RGB (0 << 11) /* ilk-ivb */
5926
+#define PIPECONF_OUTPUT_COLORSPACE_YUV601 (1 << 11) /* ilk-ivb */
5927
+#define PIPECONF_OUTPUT_COLORSPACE_YUV709 (2 << 11) /* ilk-ivb */
5928
+#define PIPECONF_OUTPUT_COLORSPACE_YUV_HSW (1 << 11) /* hsw only */
55915929 #define PIPECONF_BPC_MASK (0x7 << 5)
55925930 #define PIPECONF_8BPC (0 << 5)
55935931 #define PIPECONF_10BPC (1 << 5)
....@@ -5653,6 +5991,7 @@
56535991 #define PIPE_A_OFFSET 0x70000
56545992 #define PIPE_B_OFFSET 0x71000
56555993 #define PIPE_C_OFFSET 0x72000
5994
+#define PIPE_D_OFFSET 0x73000
56565995 #define CHV_PIPE_C_OFFSET 0x74000
56575996 /*
56585997 * There's actually no pipe EDP. Some pipe registers have
....@@ -5662,9 +6001,9 @@
56626001 */
56636002 #define PIPE_EDP_OFFSET 0x7f000
56646003
5665
-#define _MMIO_PIPE2(pipe, reg) _MMIO(dev_priv->info.pipe_offsets[pipe] - \
5666
- dev_priv->info.pipe_offsets[PIPE_A] + (reg) + \
5667
- dev_priv->info.display_mmio_offset)
6004
+/* ICL DSI 0 and 1 */
6005
+#define PIPE_DSI0_OFFSET 0x7b000
6006
+#define PIPE_DSI1_OFFSET 0x7b800
56686007
56696008 #define PIPECONF(pipe) _MMIO_PIPE2(pipe, _PIPEACONF)
56706009 #define PIPEDSL(pipe) _MMIO_PIPE2(pipe, _PIPEADSL)
....@@ -5672,11 +6011,17 @@
56726011 #define PIPEFRAMEPIXEL(pipe) _MMIO_PIPE2(pipe, _PIPEAFRAMEPIXEL)
56736012 #define PIPESTAT(pipe) _MMIO_PIPE2(pipe, _PIPEASTAT)
56746013
6014
+#define _PIPEAGCMAX 0x70010
6015
+#define _PIPEBGCMAX 0x71010
6016
+#define PIPEGCMAX(pipe, i) _MMIO_PIPE2(pipe, _PIPEAGCMAX + (i) * 4)
6017
+
56756018 #define _PIPE_MISC_A 0x70030
56766019 #define _PIPE_MISC_B 0x71030
5677
-#define PIPEMISC_YUV420_ENABLE (1 << 27)
5678
-#define PIPEMISC_YUV420_MODE_FULL_BLEND (1 << 26)
6020
+#define PIPEMISC_YUV420_ENABLE (1 << 27) /* glk+ */
6021
+#define PIPEMISC_YUV420_MODE_FULL_BLEND (1 << 26) /* glk+ */
6022
+#define PIPEMISC_HDR_MODE_PRECISION (1 << 23) /* icl+ */
56796023 #define PIPEMISC_OUTPUT_COLORSPACE_YUV (1 << 11)
6024
+#define PIPEMISC_PIXEL_ROUNDING_TRUNC REG_BIT(8) /* tgl+ */
56806025 #define PIPEMISC_DITHER_BPC_MASK (7 << 5)
56816026 #define PIPEMISC_DITHER_8_BPC (0 << 5)
56826027 #define PIPEMISC_DITHER_10_BPC (1 << 5)
....@@ -5686,6 +6031,12 @@
56866031 #define PIPEMISC_DITHER_TYPE_MASK (3 << 2)
56876032 #define PIPEMISC_DITHER_TYPE_SP (0 << 2)
56886033 #define PIPEMISC(pipe) _MMIO_PIPE2(pipe, _PIPE_MISC_A)
6034
+
6035
+/* Skylake+ pipe bottom (background) color */
6036
+#define _SKL_BOTTOM_COLOR_A 0x70034
6037
+#define SKL_BOTTOM_COLOR_GAMMA_ENABLE (1 << 31)
6038
+#define SKL_BOTTOM_COLOR_CSC_ENABLE (1 << 30)
6039
+#define SKL_BOTTOM_COLOR(pipe) _MMIO_PIPE2(pipe, _SKL_BOTTOM_COLOR_A)
56896040
56906041 #define VLV_DPFLIPSTAT _MMIO(VLV_DISPLAY_BASE + 0x70028)
56916042 #define PIPEB_LINE_COMPARE_INT_EN (1 << 29)
....@@ -5738,7 +6089,7 @@
57386089 #define DPINVGTT_STATUS_MASK 0xff
57396090 #define DPINVGTT_STATUS_MASK_CHV 0xfff
57406091
5741
-#define DSPARB _MMIO(dev_priv->info.display_mmio_offset + 0x70030)
6092
+#define DSPARB _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70030)
57426093 #define DSPARB_CSTART_MASK (0x7f << 7)
57436094 #define DSPARB_CSTART_SHIFT 7
57446095 #define DSPARB_BSTART_MASK (0x7f)
....@@ -5773,7 +6124,7 @@
57736124 #define DSPARB_SPRITEF_MASK_VLV (0xff << 8)
57746125
57756126 /* pnv/gen4/g4x/vlv/chv */
5776
-#define DSPFW1 _MMIO(dev_priv->info.display_mmio_offset + 0x70034)
6127
+#define DSPFW1 _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70034)
57776128 #define DSPFW_SR_SHIFT 23
57786129 #define DSPFW_SR_MASK (0x1ff << 23)
57796130 #define DSPFW_CURSORB_SHIFT 16
....@@ -5784,7 +6135,7 @@
57846135 #define DSPFW_PLANEA_SHIFT 0
57856136 #define DSPFW_PLANEA_MASK (0x7f << 0)
57866137 #define DSPFW_PLANEA_MASK_VLV (0xff << 0) /* vlv/chv */
5787
-#define DSPFW2 _MMIO(dev_priv->info.display_mmio_offset + 0x70038)
6138
+#define DSPFW2 _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70038)
57886139 #define DSPFW_FBC_SR_EN (1 << 31) /* g4x */
57896140 #define DSPFW_FBC_SR_SHIFT 28
57906141 #define DSPFW_FBC_SR_MASK (0x7 << 28) /* g4x */
....@@ -5800,7 +6151,7 @@
58006151 #define DSPFW_SPRITEA_SHIFT 0
58016152 #define DSPFW_SPRITEA_MASK (0x7f << 0) /* g4x */
58026153 #define DSPFW_SPRITEA_MASK_VLV (0xff << 0) /* vlv/chv */
5803
-#define DSPFW3 _MMIO(dev_priv->info.display_mmio_offset + 0x7003c)
6154
+#define DSPFW3 _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x7003c)
58046155 #define DSPFW_HPLL_SR_EN (1 << 31)
58056156 #define PINEVIEW_SELF_REFRESH_EN (1 << 30)
58066157 #define DSPFW_CURSOR_SR_SHIFT 24
....@@ -5966,9 +6317,10 @@
59666317 #define _CUR_WM_TRANS_A_0 0x70168
59676318 #define _CUR_WM_TRANS_B_0 0x71168
59686319 #define PLANE_WM_EN (1 << 31)
6320
+#define PLANE_WM_IGNORE_LINES (1 << 30)
59696321 #define PLANE_WM_LINES_SHIFT 14
59706322 #define PLANE_WM_LINES_MASK 0x1f
5971
-#define PLANE_WM_BLOCKS_MASK 0x3ff
6323
+#define PLANE_WM_BLOCKS_MASK 0x7ff /* skl+: 10 bits, icl+ 11 bits */
59726324
59736325 #define _CUR_WM_0(pipe) _PIPE(pipe, _CUR_WM_A_0, _CUR_WM_B_0)
59746326 #define CUR_WM(pipe, level) _MMIO(_CUR_WM_0(pipe) + ((4) * (level)))
....@@ -6092,7 +6444,7 @@
60926444 #define MCURSOR_PIPE_SELECT_SHIFT 28
60936445 #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28)
60946446 #define MCURSOR_GAMMA_ENABLE (1 << 26)
6095
-#define MCURSOR_PIPE_CSC_ENABLE (1 << 24)
6447
+#define MCURSOR_PIPE_CSC_ENABLE (1 << 24) /* ilk+ */
60966448 #define MCURSOR_ROTATE_180 (1 << 15)
60976449 #define MCURSOR_TRICKLE_FEED_DISABLE (1 << 14)
60986450 #define _CURABASE 0x70084
....@@ -6113,10 +6465,6 @@
61136465 #define _CURBBASE_IVB 0x71084
61146466 #define _CURBPOS_IVB 0x71088
61156467
6116
-#define _CURSOR2(pipe, reg) _MMIO(dev_priv->info.cursor_offsets[(pipe)] - \
6117
- dev_priv->info.cursor_offsets[PIPE_A] + (reg) + \
6118
- dev_priv->info.display_mmio_offset)
6119
-
61206468 #define CURCNTR(pipe) _CURSOR2(pipe, _CURACNTR)
61216469 #define CURBASE(pipe) _CURSOR2(pipe, _CURABASE)
61226470 #define CURPOS(pipe) _CURSOR2(pipe, _CURAPOS)
....@@ -6128,6 +6476,7 @@
61286476 #define CHV_CURSOR_C_OFFSET 0x700e0
61296477 #define IVB_CURSOR_B_OFFSET 0x71080
61306478 #define IVB_CURSOR_C_OFFSET 0x72080
6479
+#define TGL_CURSOR_D_OFFSET 0x73080
61316480
61326481 /* Display A control */
61336482 #define _DSPACNTR 0x70180
....@@ -6146,12 +6495,13 @@
61466495 #define DISPPLANE_RGBX101010 (0x8 << 26)
61476496 #define DISPPLANE_RGBA101010 (0x9 << 26)
61486497 #define DISPPLANE_BGRX101010 (0xa << 26)
6498
+#define DISPPLANE_BGRA101010 (0xb << 26)
61496499 #define DISPPLANE_RGBX161616 (0xc << 26)
61506500 #define DISPPLANE_RGBX888 (0xe << 26)
61516501 #define DISPPLANE_RGBA888 (0xf << 26)
61526502 #define DISPPLANE_STEREO_ENABLE (1 << 25)
61536503 #define DISPPLANE_STEREO_DISABLE 0
6154
-#define DISPPLANE_PIPE_CSC_ENABLE (1 << 24)
6504
+#define DISPPLANE_PIPE_CSC_ENABLE (1 << 24) /* ilk+ */
61556505 #define DISPPLANE_SEL_PIPE_SHIFT 24
61566506 #define DISPPLANE_SEL_PIPE_MASK (3 << DISPPLANE_SEL_PIPE_SHIFT)
61576507 #define DISPPLANE_SEL_PIPE(pipe) ((pipe) << DISPPLANE_SEL_PIPE_SHIFT)
....@@ -6174,6 +6524,7 @@
61746524 #define _DSPATILEOFF 0x701A4 /* 965+ only */
61756525 #define _DSPAOFFSET 0x701A4 /* HSW */
61766526 #define _DSPASURFLIVE 0x701AC
6527
+#define _DSPAGAMC 0x701E0
61776528
61786529 #define DSPCNTR(plane) _MMIO_PIPE2(plane, _DSPACNTR)
61796530 #define DSPADDR(plane) _MMIO_PIPE2(plane, _DSPAADDR)
....@@ -6185,6 +6536,7 @@
61856536 #define DSPLINOFF(plane) DSPADDR(plane)
61866537 #define DSPOFFSET(plane) _MMIO_PIPE2(plane, _DSPAOFFSET)
61876538 #define DSPSURFLIVE(plane) _MMIO_PIPE2(plane, _DSPASURFLIVE)
6539
+#define DSPGAMC(plane, i) _MMIO(_PIPE2(plane, _DSPAGAMC) + (5 - (i)) * 4) /* plane C only, 6 x u0.8 */
61886540
61896541 /* CHV pipe B blender and primary plane */
61906542 #define _CHV_BLEND_A 0x60a00
....@@ -6220,35 +6572,39 @@
62206572 * [10:1f] all
62216573 * [30:32] all
62226574 */
6223
-#define SWF0(i) _MMIO(dev_priv->info.display_mmio_offset + 0x70410 + (i) * 4)
6224
-#define SWF1(i) _MMIO(dev_priv->info.display_mmio_offset + 0x71410 + (i) * 4)
6225
-#define SWF3(i) _MMIO(dev_priv->info.display_mmio_offset + 0x72414 + (i) * 4)
6575
+#define SWF0(i) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x70410 + (i) * 4)
6576
+#define SWF1(i) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x71410 + (i) * 4)
6577
+#define SWF3(i) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x72414 + (i) * 4)
62266578 #define SWF_ILK(i) _MMIO(0x4F000 + (i) * 4)
62276579
62286580 /* Pipe B */
6229
-#define _PIPEBDSL (dev_priv->info.display_mmio_offset + 0x71000)
6230
-#define _PIPEBCONF (dev_priv->info.display_mmio_offset + 0x71008)
6231
-#define _PIPEBSTAT (dev_priv->info.display_mmio_offset + 0x71024)
6581
+#define _PIPEBDSL (DISPLAY_MMIO_BASE(dev_priv) + 0x71000)
6582
+#define _PIPEBCONF (DISPLAY_MMIO_BASE(dev_priv) + 0x71008)
6583
+#define _PIPEBSTAT (DISPLAY_MMIO_BASE(dev_priv) + 0x71024)
62326584 #define _PIPEBFRAMEHIGH 0x71040
62336585 #define _PIPEBFRAMEPIXEL 0x71044
6234
-#define _PIPEB_FRMCOUNT_G4X (dev_priv->info.display_mmio_offset + 0x71040)
6235
-#define _PIPEB_FLIPCOUNT_G4X (dev_priv->info.display_mmio_offset + 0x71044)
6586
+#define _PIPEB_FRMCOUNT_G4X (DISPLAY_MMIO_BASE(dev_priv) + 0x71040)
6587
+#define _PIPEB_FLIPCOUNT_G4X (DISPLAY_MMIO_BASE(dev_priv) + 0x71044)
62366588
62376589
62386590 /* Display B control */
6239
-#define _DSPBCNTR (dev_priv->info.display_mmio_offset + 0x71180)
6591
+#define _DSPBCNTR (DISPLAY_MMIO_BASE(dev_priv) + 0x71180)
62406592 #define DISPPLANE_ALPHA_TRANS_ENABLE (1 << 15)
62416593 #define DISPPLANE_ALPHA_TRANS_DISABLE 0
62426594 #define DISPPLANE_SPRITE_ABOVE_DISPLAY 0
62436595 #define DISPPLANE_SPRITE_ABOVE_OVERLAY (1)
6244
-#define _DSPBADDR (dev_priv->info.display_mmio_offset + 0x71184)
6245
-#define _DSPBSTRIDE (dev_priv->info.display_mmio_offset + 0x71188)
6246
-#define _DSPBPOS (dev_priv->info.display_mmio_offset + 0x7118C)
6247
-#define _DSPBSIZE (dev_priv->info.display_mmio_offset + 0x71190)
6248
-#define _DSPBSURF (dev_priv->info.display_mmio_offset + 0x7119C)
6249
-#define _DSPBTILEOFF (dev_priv->info.display_mmio_offset + 0x711A4)
6250
-#define _DSPBOFFSET (dev_priv->info.display_mmio_offset + 0x711A4)
6251
-#define _DSPBSURFLIVE (dev_priv->info.display_mmio_offset + 0x711AC)
6596
+#define _DSPBADDR (DISPLAY_MMIO_BASE(dev_priv) + 0x71184)
6597
+#define _DSPBSTRIDE (DISPLAY_MMIO_BASE(dev_priv) + 0x71188)
6598
+#define _DSPBPOS (DISPLAY_MMIO_BASE(dev_priv) + 0x7118C)
6599
+#define _DSPBSIZE (DISPLAY_MMIO_BASE(dev_priv) + 0x71190)
6600
+#define _DSPBSURF (DISPLAY_MMIO_BASE(dev_priv) + 0x7119C)
6601
+#define _DSPBTILEOFF (DISPLAY_MMIO_BASE(dev_priv) + 0x711A4)
6602
+#define _DSPBOFFSET (DISPLAY_MMIO_BASE(dev_priv) + 0x711A4)
6603
+#define _DSPBSURFLIVE (DISPLAY_MMIO_BASE(dev_priv) + 0x711AC)
6604
+
6605
+/* ICL DSI 0 and 1 */
6606
+#define _PIPEDSI0CONF 0x7b008
6607
+#define _PIPEDSI1CONF 0x7b808
62526608
62536609 /* Sprite A control */
62546610 #define _DVSACNTR 0x72180
....@@ -6283,6 +6639,7 @@
62836639 #define _DVSAKEYMAXVAL 0x721a0
62846640 #define _DVSATILEOFF 0x721a4
62856641 #define _DVSASURFLIVE 0x721ac
6642
+#define _DVSAGAMC_G4X 0x721e0 /* g4x */
62866643 #define _DVSASCALE 0x72204
62876644 #define DVS_SCALE_ENABLE (1 << 31)
62886645 #define DVS_FILTER_MASK (3 << 29)
....@@ -6291,7 +6648,8 @@
62916648 #define DVS_FILTER_SOFTENING (2 << 29)
62926649 #define DVS_VERTICAL_OFFSET_HALF (1 << 28) /* must be enabled below */
62936650 #define DVS_VERTICAL_OFFSET_ENABLE (1 << 27)
6294
-#define _DVSAGAMC 0x72300
6651
+#define _DVSAGAMC_ILK 0x72300 /* ilk/snb */
6652
+#define _DVSAGAMCMAX_ILK 0x72340 /* ilk/snb */
62956653
62966654 #define _DVSBCNTR 0x73180
62976655 #define _DVSBLINOFF 0x73184
....@@ -6304,8 +6662,10 @@
63046662 #define _DVSBKEYMAXVAL 0x731a0
63056663 #define _DVSBTILEOFF 0x731a4
63066664 #define _DVSBSURFLIVE 0x731ac
6665
+#define _DVSBGAMC_G4X 0x731e0 /* g4x */
63076666 #define _DVSBSCALE 0x73204
6308
-#define _DVSBGAMC 0x73300
6667
+#define _DVSBGAMC_ILK 0x73300 /* ilk/snb */
6668
+#define _DVSBGAMCMAX_ILK 0x73340 /* ilk/snb */
63096669
63106670 #define DVSCNTR(pipe) _MMIO_PIPE(pipe, _DVSACNTR, _DVSBCNTR)
63116671 #define DVSLINOFF(pipe) _MMIO_PIPE(pipe, _DVSALINOFF, _DVSBLINOFF)
....@@ -6319,6 +6679,9 @@
63196679 #define DVSKEYVAL(pipe) _MMIO_PIPE(pipe, _DVSAKEYVAL, _DVSBKEYVAL)
63206680 #define DVSKEYMSK(pipe) _MMIO_PIPE(pipe, _DVSAKEYMSK, _DVSBKEYMSK)
63216681 #define DVSSURFLIVE(pipe) _MMIO_PIPE(pipe, _DVSASURFLIVE, _DVSBSURFLIVE)
6682
+#define DVSGAMC_G4X(pipe, i) _MMIO(_PIPE(pipe, _DVSAGAMC_G4X, _DVSBGAMC_G4X) + (5 - (i)) * 4) /* 6 x u0.8 */
6683
+#define DVSGAMC_ILK(pipe, i) _MMIO(_PIPE(pipe, _DVSAGAMC_ILK, _DVSBGAMC_ILK) + (i) * 4) /* 16 x u0.10 */
6684
+#define DVSGAMCMAX_ILK(pipe, i) _MMIO(_PIPE(pipe, _DVSAGAMCMAX_ILK, _DVSBGAMCMAX_ILK) + (i) * 4) /* 3 x u1.10 */
63226685
63236686 #define _SPRA_CTL 0x70280
63246687 #define SPRITE_ENABLE (1 << 31)
....@@ -6343,7 +6706,7 @@
63436706 #define SPRITE_YUV_ORDER_VYUY (3 << 16)
63446707 #define SPRITE_ROTATE_180 (1 << 15)
63456708 #define SPRITE_TRICKLE_FEED_DISABLE (1 << 14)
6346
-#define SPRITE_INT_GAMMA_ENABLE (1 << 13)
6709
+#define SPRITE_INT_GAMMA_DISABLE (1 << 13)
63476710 #define SPRITE_TILED (1 << 10)
63486711 #define SPRITE_DEST_KEY (1 << 2)
63496712 #define _SPRA_LINOFF 0x70284
....@@ -6366,6 +6729,8 @@
63666729 #define SPRITE_VERTICAL_OFFSET_HALF (1 << 28) /* must be enabled below */
63676730 #define SPRITE_VERTICAL_OFFSET_ENABLE (1 << 27)
63686731 #define _SPRA_GAMC 0x70400
6732
+#define _SPRA_GAMC16 0x70440
6733
+#define _SPRA_GAMC17 0x7044c
63696734
63706735 #define _SPRB_CTL 0x71280
63716736 #define _SPRB_LINOFF 0x71284
....@@ -6381,6 +6746,8 @@
63816746 #define _SPRB_SURFLIVE 0x712ac
63826747 #define _SPRB_SCALE 0x71304
63836748 #define _SPRB_GAMC 0x71400
6749
+#define _SPRB_GAMC16 0x71440
6750
+#define _SPRB_GAMC17 0x7144c
63846751
63856752 #define SPRCTL(pipe) _MMIO_PIPE(pipe, _SPRA_CTL, _SPRB_CTL)
63866753 #define SPRLINOFF(pipe) _MMIO_PIPE(pipe, _SPRA_LINOFF, _SPRB_LINOFF)
....@@ -6394,19 +6761,24 @@
63946761 #define SPRTILEOFF(pipe) _MMIO_PIPE(pipe, _SPRA_TILEOFF, _SPRB_TILEOFF)
63956762 #define SPROFFSET(pipe) _MMIO_PIPE(pipe, _SPRA_OFFSET, _SPRB_OFFSET)
63966763 #define SPRSCALE(pipe) _MMIO_PIPE(pipe, _SPRA_SCALE, _SPRB_SCALE)
6397
-#define SPRGAMC(pipe) _MMIO_PIPE(pipe, _SPRA_GAMC, _SPRB_GAMC)
6764
+#define SPRGAMC(pipe, i) _MMIO(_PIPE(pipe, _SPRA_GAMC, _SPRB_GAMC) + (i) * 4) /* 16 x u0.10 */
6765
+#define SPRGAMC16(pipe, i) _MMIO(_PIPE(pipe, _SPRA_GAMC16, _SPRB_GAMC16) + (i) * 4) /* 3 x u1.10 */
6766
+#define SPRGAMC17(pipe, i) _MMIO(_PIPE(pipe, _SPRA_GAMC17, _SPRB_GAMC17) + (i) * 4) /* 3 x u2.10 */
63986767 #define SPRSURFLIVE(pipe) _MMIO_PIPE(pipe, _SPRA_SURFLIVE, _SPRB_SURFLIVE)
63996768
64006769 #define _SPACNTR (VLV_DISPLAY_BASE + 0x72180)
64016770 #define SP_ENABLE (1 << 31)
64026771 #define SP_GAMMA_ENABLE (1 << 30)
64036772 #define SP_PIXFORMAT_MASK (0xf << 26)
6404
-#define SP_FORMAT_YUV422 (0 << 26)
6405
-#define SP_FORMAT_BGR565 (5 << 26)
6406
-#define SP_FORMAT_BGRX8888 (6 << 26)
6407
-#define SP_FORMAT_BGRA8888 (7 << 26)
6408
-#define SP_FORMAT_RGBX1010102 (8 << 26)
6409
-#define SP_FORMAT_RGBA1010102 (9 << 26)
6773
+#define SP_FORMAT_YUV422 (0x0 << 26)
6774
+#define SP_FORMAT_8BPP (0x2 << 26)
6775
+#define SP_FORMAT_BGR565 (0x5 << 26)
6776
+#define SP_FORMAT_BGRX8888 (0x6 << 26)
6777
+#define SP_FORMAT_BGRA8888 (0x7 << 26)
6778
+#define SP_FORMAT_RGBX1010102 (0x8 << 26)
6779
+#define SP_FORMAT_RGBA1010102 (0x9 << 26)
6780
+#define SP_FORMAT_BGRX1010102 (0xa << 26) /* CHV pipe B */
6781
+#define SP_FORMAT_BGRA1010102 (0xb << 26) /* CHV pipe B */
64106782 #define SP_FORMAT_RGBX8888 (0xe << 26)
64116783 #define SP_FORMAT_RGBA8888 (0xf << 26)
64126784 #define SP_ALPHA_PREMULTIPLY (1 << 23) /* CHV pipe B */
....@@ -6437,7 +6809,7 @@
64376809 #define _SPACLRC1 (VLV_DISPLAY_BASE + 0x721d4)
64386810 #define SP_SH_SIN(x) (((x) & 0x7ff) << 16) /* s4.7 */
64396811 #define SP_SH_COS(x) (x) /* u3.7 */
6440
-#define _SPAGAMC (VLV_DISPLAY_BASE + 0x721f4)
6812
+#define _SPAGAMC (VLV_DISPLAY_BASE + 0x721e0)
64416813
64426814 #define _SPBCNTR (VLV_DISPLAY_BASE + 0x72280)
64436815 #define _SPBLINOFF (VLV_DISPLAY_BASE + 0x72284)
....@@ -6452,10 +6824,12 @@
64526824 #define _SPBCONSTALPHA (VLV_DISPLAY_BASE + 0x722a8)
64536825 #define _SPBCLRC0 (VLV_DISPLAY_BASE + 0x722d0)
64546826 #define _SPBCLRC1 (VLV_DISPLAY_BASE + 0x722d4)
6455
-#define _SPBGAMC (VLV_DISPLAY_BASE + 0x722f4)
6827
+#define _SPBGAMC (VLV_DISPLAY_BASE + 0x722e0)
64566828
6829
+#define _VLV_SPR(pipe, plane_id, reg_a, reg_b) \
6830
+ _PIPE((pipe) * 2 + (plane_id) - PLANE_SPRITE0, (reg_a), (reg_b))
64576831 #define _MMIO_VLV_SPR(pipe, plane_id, reg_a, reg_b) \
6458
- _MMIO_PIPE((pipe) * 2 + (plane_id) - PLANE_SPRITE0, (reg_a), (reg_b))
6832
+ _MMIO(_VLV_SPR((pipe), (plane_id), (reg_a), (reg_b)))
64596833
64606834 #define SPCNTR(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACNTR, _SPBCNTR)
64616835 #define SPLINOFF(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPALINOFF, _SPBLINOFF)
....@@ -6470,7 +6844,7 @@
64706844 #define SPCONSTALPHA(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACONSTALPHA, _SPBCONSTALPHA)
64716845 #define SPCLRC0(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACLRC0, _SPBCLRC0)
64726846 #define SPCLRC1(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACLRC1, _SPBCLRC1)
6473
-#define SPGAMC(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPAGAMC, _SPBGAMC)
6847
+#define SPGAMC(pipe, plane_id, i) _MMIO(_VLV_SPR((pipe), (plane_id), _SPAGAMC, _SPBGAMC) + (5 - (i)) * 4) /* 6 x u0.10 */
64746848
64756849 /*
64766850 * CHV pipe B sprite CSC
....@@ -6525,18 +6899,28 @@
65256899 #define PLANE_CTL_FORMAT_YUV422 (0 << 24)
65266900 #define PLANE_CTL_FORMAT_NV12 (1 << 24)
65276901 #define PLANE_CTL_FORMAT_XRGB_2101010 (2 << 24)
6902
+#define PLANE_CTL_FORMAT_P010 (3 << 24)
65286903 #define PLANE_CTL_FORMAT_XRGB_8888 (4 << 24)
6904
+#define PLANE_CTL_FORMAT_P012 (5 << 24)
65296905 #define PLANE_CTL_FORMAT_XRGB_16161616F (6 << 24)
6530
-#define PLANE_CTL_FORMAT_AYUV (8 << 24)
6906
+#define PLANE_CTL_FORMAT_P016 (7 << 24)
6907
+#define PLANE_CTL_FORMAT_XYUV (8 << 24)
65316908 #define PLANE_CTL_FORMAT_INDEXED (12 << 24)
65326909 #define PLANE_CTL_FORMAT_RGB_565 (14 << 24)
65336910 #define ICL_PLANE_CTL_FORMAT_MASK (0x1f << 23)
65346911 #define PLANE_CTL_PIPE_CSC_ENABLE (1 << 23) /* Pre-GLK */
6912
+#define PLANE_CTL_FORMAT_Y210 (1 << 23)
6913
+#define PLANE_CTL_FORMAT_Y212 (3 << 23)
6914
+#define PLANE_CTL_FORMAT_Y216 (5 << 23)
6915
+#define PLANE_CTL_FORMAT_Y410 (7 << 23)
6916
+#define PLANE_CTL_FORMAT_Y412 (9 << 23)
6917
+#define PLANE_CTL_FORMAT_Y416 (0xb << 23)
65356918 #define PLANE_CTL_KEY_ENABLE_MASK (0x3 << 21)
65366919 #define PLANE_CTL_KEY_ENABLE_SOURCE (1 << 21)
65376920 #define PLANE_CTL_KEY_ENABLE_DESTINATION (2 << 21)
65386921 #define PLANE_CTL_ORDER_BGRX (0 << 20)
65396922 #define PLANE_CTL_ORDER_RGBX (1 << 20)
6923
+#define PLANE_CTL_YUV420_Y_PLANE (1 << 19)
65406924 #define PLANE_CTL_YUV_TO_RGB_CSC_FORMAT_BT709 (1 << 18)
65416925 #define PLANE_CTL_YUV422_ORDER_MASK (0x3 << 16)
65426926 #define PLANE_CTL_YUV422_YUYV (0 << 16)
....@@ -6545,6 +6929,7 @@
65456929 #define PLANE_CTL_YUV422_VYUY (3 << 16)
65466930 #define PLANE_CTL_RENDER_DECOMPRESSION_ENABLE (1 << 15)
65476931 #define PLANE_CTL_TRICKLE_FEED_DISABLE (1 << 14)
6932
+#define PLANE_CTL_CLEAR_COLOR_DISABLE (1 << 13) /* TGL+ */
65486933 #define PLANE_CTL_PLANE_GAMMA_DISABLE (1 << 13) /* Pre-GLK */
65496934 #define PLANE_CTL_TILED_MASK (0x7 << 10)
65506935 #define PLANE_CTL_TILED_LINEAR (0 << 10)
....@@ -6552,6 +6937,7 @@
65526937 #define PLANE_CTL_TILED_Y (4 << 10)
65536938 #define PLANE_CTL_TILED_YF (5 << 10)
65546939 #define PLANE_CTL_FLIP_HORIZONTAL (1 << 8)
6940
+#define PLANE_CTL_MEDIA_DECOMPRESSION_ENABLE (1 << 4) /* TGL+ */
65556941 #define PLANE_CTL_ALPHA_MASK (0x3 << 4) /* Pre-GLK */
65566942 #define PLANE_CTL_ALPHA_DISABLE (0 << 4)
65576943 #define PLANE_CTL_ALPHA_SW_PREMULTIPLY (2 << 4)
....@@ -6580,20 +6966,38 @@
65806966 #define _PLANE_KEYVAL_2_A 0x70294
65816967 #define _PLANE_KEYMSK_1_A 0x70198
65826968 #define _PLANE_KEYMSK_2_A 0x70298
6969
+#define PLANE_KEYMSK_ALPHA_ENABLE (1 << 31)
65836970 #define _PLANE_KEYMAX_1_A 0x701a0
65846971 #define _PLANE_KEYMAX_2_A 0x702a0
6972
+#define PLANE_KEYMAX_ALPHA(a) ((a) << 24)
65856973 #define _PLANE_AUX_DIST_1_A 0x701c0
65866974 #define _PLANE_AUX_DIST_2_A 0x702c0
65876975 #define _PLANE_AUX_OFFSET_1_A 0x701c4
65886976 #define _PLANE_AUX_OFFSET_2_A 0x702c4
6977
+#define _PLANE_CUS_CTL_1_A 0x701c8
6978
+#define _PLANE_CUS_CTL_2_A 0x702c8
6979
+#define PLANE_CUS_ENABLE (1 << 31)
6980
+#define PLANE_CUS_PLANE_4_RKL (0 << 30)
6981
+#define PLANE_CUS_PLANE_5_RKL (1 << 30)
6982
+#define PLANE_CUS_PLANE_6 (0 << 30)
6983
+#define PLANE_CUS_PLANE_7 (1 << 30)
6984
+#define PLANE_CUS_HPHASE_SIGN_NEGATIVE (1 << 19)
6985
+#define PLANE_CUS_HPHASE_0 (0 << 16)
6986
+#define PLANE_CUS_HPHASE_0_25 (1 << 16)
6987
+#define PLANE_CUS_HPHASE_0_5 (2 << 16)
6988
+#define PLANE_CUS_VPHASE_SIGN_NEGATIVE (1 << 15)
6989
+#define PLANE_CUS_VPHASE_0 (0 << 12)
6990
+#define PLANE_CUS_VPHASE_0_25 (1 << 12)
6991
+#define PLANE_CUS_VPHASE_0_5 (2 << 12)
65896992 #define _PLANE_COLOR_CTL_1_A 0x701CC /* GLK+ */
65906993 #define _PLANE_COLOR_CTL_2_A 0x702CC /* GLK+ */
65916994 #define _PLANE_COLOR_CTL_3_A 0x703CC /* GLK+ */
65926995 #define PLANE_COLOR_PIPE_GAMMA_ENABLE (1 << 30) /* Pre-ICL */
65936996 #define PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE (1 << 28)
6997
+#define PLANE_COLOR_INPUT_CSC_ENABLE (1 << 20) /* ICL+ */
65946998 #define PLANE_COLOR_PIPE_CSC_ENABLE (1 << 23) /* Pre-ICL */
65956999 #define PLANE_COLOR_CSC_MODE_BYPASS (0 << 17)
6596
-#define PLANE_COLOR_CSC_MODE_YUV601_TO_RGB709 (1 << 17)
7000
+#define PLANE_COLOR_CSC_MODE_YUV601_TO_RGB601 (1 << 17)
65977001 #define PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709 (2 << 17)
65987002 #define PLANE_COLOR_CSC_MODE_YUV2020_TO_RGB2020 (3 << 17)
65997003 #define PLANE_COLOR_CSC_MODE_RGB709_TO_RGB2020 (4 << 17)
....@@ -6607,6 +7011,55 @@
66077011 #define _PLANE_NV12_BUF_CFG_1_A 0x70278
66087012 #define _PLANE_NV12_BUF_CFG_2_A 0x70378
66097013
7014
+/* Input CSC Register Definitions */
7015
+#define _PLANE_INPUT_CSC_RY_GY_1_A 0x701E0
7016
+#define _PLANE_INPUT_CSC_RY_GY_2_A 0x702E0
7017
+
7018
+#define _PLANE_INPUT_CSC_RY_GY_1_B 0x711E0
7019
+#define _PLANE_INPUT_CSC_RY_GY_2_B 0x712E0
7020
+
7021
+#define _PLANE_INPUT_CSC_RY_GY_1(pipe) \
7022
+ _PIPE(pipe, _PLANE_INPUT_CSC_RY_GY_1_A, \
7023
+ _PLANE_INPUT_CSC_RY_GY_1_B)
7024
+#define _PLANE_INPUT_CSC_RY_GY_2(pipe) \
7025
+ _PIPE(pipe, _PLANE_INPUT_CSC_RY_GY_2_A, \
7026
+ _PLANE_INPUT_CSC_RY_GY_2_B)
7027
+
7028
+#define PLANE_INPUT_CSC_COEFF(pipe, plane, index) \
7029
+ _MMIO_PLANE(plane, _PLANE_INPUT_CSC_RY_GY_1(pipe) + (index) * 4, \
7030
+ _PLANE_INPUT_CSC_RY_GY_2(pipe) + (index) * 4)
7031
+
7032
+#define _PLANE_INPUT_CSC_PREOFF_HI_1_A 0x701F8
7033
+#define _PLANE_INPUT_CSC_PREOFF_HI_2_A 0x702F8
7034
+
7035
+#define _PLANE_INPUT_CSC_PREOFF_HI_1_B 0x711F8
7036
+#define _PLANE_INPUT_CSC_PREOFF_HI_2_B 0x712F8
7037
+
7038
+#define _PLANE_INPUT_CSC_PREOFF_HI_1(pipe) \
7039
+ _PIPE(pipe, _PLANE_INPUT_CSC_PREOFF_HI_1_A, \
7040
+ _PLANE_INPUT_CSC_PREOFF_HI_1_B)
7041
+#define _PLANE_INPUT_CSC_PREOFF_HI_2(pipe) \
7042
+ _PIPE(pipe, _PLANE_INPUT_CSC_PREOFF_HI_2_A, \
7043
+ _PLANE_INPUT_CSC_PREOFF_HI_2_B)
7044
+#define PLANE_INPUT_CSC_PREOFF(pipe, plane, index) \
7045
+ _MMIO_PLANE(plane, _PLANE_INPUT_CSC_PREOFF_HI_1(pipe) + (index) * 4, \
7046
+ _PLANE_INPUT_CSC_PREOFF_HI_2(pipe) + (index) * 4)
7047
+
7048
+#define _PLANE_INPUT_CSC_POSTOFF_HI_1_A 0x70204
7049
+#define _PLANE_INPUT_CSC_POSTOFF_HI_2_A 0x70304
7050
+
7051
+#define _PLANE_INPUT_CSC_POSTOFF_HI_1_B 0x71204
7052
+#define _PLANE_INPUT_CSC_POSTOFF_HI_2_B 0x71304
7053
+
7054
+#define _PLANE_INPUT_CSC_POSTOFF_HI_1(pipe) \
7055
+ _PIPE(pipe, _PLANE_INPUT_CSC_POSTOFF_HI_1_A, \
7056
+ _PLANE_INPUT_CSC_POSTOFF_HI_1_B)
7057
+#define _PLANE_INPUT_CSC_POSTOFF_HI_2(pipe) \
7058
+ _PIPE(pipe, _PLANE_INPUT_CSC_POSTOFF_HI_2_A, \
7059
+ _PLANE_INPUT_CSC_POSTOFF_HI_2_B)
7060
+#define PLANE_INPUT_CSC_POSTOFF(pipe, plane, index) \
7061
+ _MMIO_PLANE(plane, _PLANE_INPUT_CSC_POSTOFF_HI_1(pipe) + (index) * 4, \
7062
+ _PLANE_INPUT_CSC_POSTOFF_HI_2(pipe) + (index) * 4)
66107063
66117064 #define _PLANE_CTL_1_B 0x71180
66127065 #define _PLANE_CTL_2_B 0x71280
....@@ -6686,8 +7139,7 @@
66867139
66877140 #define _PLANE_BUF_CFG_1_B 0x7127c
66887141 #define _PLANE_BUF_CFG_2_B 0x7137c
6689
-#define SKL_DDB_ENTRY_MASK 0x3FF
6690
-#define ICL_DDB_ENTRY_MASK 0x7FF
7142
+#define DDB_ENTRY_MASK 0x7FF /* skl+: 10 bits, icl+ 11 bits */
66917143 #define DDB_ENTRY_END_SHIFT 16
66927144 #define _PLANE_BUF_CFG_1(pipe) \
66937145 _PIPE(pipe, _PLANE_BUF_CFG_1_A, _PLANE_BUF_CFG_1_B)
....@@ -6723,6 +7175,15 @@
67237175 #define PLANE_AUX_OFFSET(pipe, plane) \
67247176 _MMIO_PLANE(plane, _PLANE_AUX_OFFSET_1(pipe), _PLANE_AUX_OFFSET_2(pipe))
67257177
7178
+#define _PLANE_CUS_CTL_1_B 0x711c8
7179
+#define _PLANE_CUS_CTL_2_B 0x712c8
7180
+#define _PLANE_CUS_CTL_1(pipe) \
7181
+ _PIPE(pipe, _PLANE_CUS_CTL_1_A, _PLANE_CUS_CTL_1_B)
7182
+#define _PLANE_CUS_CTL_2(pipe) \
7183
+ _PIPE(pipe, _PLANE_CUS_CTL_2_A, _PLANE_CUS_CTL_2_B)
7184
+#define PLANE_CUS_CTL(pipe, plane) \
7185
+ _MMIO_PLANE(plane, _PLANE_CUS_CTL_1(pipe), _PLANE_CUS_CTL_2(pipe))
7186
+
67267187 #define _PLANE_COLOR_CTL_1_B 0x711CC
67277188 #define _PLANE_COLOR_CTL_2_B 0x712CC
67287189 #define _PLANE_COLOR_CTL_3_B 0x713CC
....@@ -6733,7 +7194,52 @@
67337194 #define PLANE_COLOR_CTL(pipe, plane) \
67347195 _MMIO_PLANE(plane, _PLANE_COLOR_CTL_1(pipe), _PLANE_COLOR_CTL_2(pipe))
67357196
6736
-#/* SKL new cursor registers */
7197
+#define _SEL_FETCH_PLANE_BASE_1_A 0x70890
7198
+#define _SEL_FETCH_PLANE_BASE_2_A 0x708B0
7199
+#define _SEL_FETCH_PLANE_BASE_3_A 0x708D0
7200
+#define _SEL_FETCH_PLANE_BASE_4_A 0x708F0
7201
+#define _SEL_FETCH_PLANE_BASE_5_A 0x70920
7202
+#define _SEL_FETCH_PLANE_BASE_6_A 0x70940
7203
+#define _SEL_FETCH_PLANE_BASE_7_A 0x70960
7204
+#define _SEL_FETCH_PLANE_BASE_CUR_A 0x70880
7205
+#define _SEL_FETCH_PLANE_BASE_1_B 0x71890
7206
+
7207
+#define _SEL_FETCH_PLANE_BASE_A(plane) _PICK(plane, \
7208
+ _SEL_FETCH_PLANE_BASE_1_A, \
7209
+ _SEL_FETCH_PLANE_BASE_2_A, \
7210
+ _SEL_FETCH_PLANE_BASE_3_A, \
7211
+ _SEL_FETCH_PLANE_BASE_4_A, \
7212
+ _SEL_FETCH_PLANE_BASE_5_A, \
7213
+ _SEL_FETCH_PLANE_BASE_6_A, \
7214
+ _SEL_FETCH_PLANE_BASE_7_A, \
7215
+ _SEL_FETCH_PLANE_BASE_CUR_A)
7216
+#define _SEL_FETCH_PLANE_BASE_1(pipe) _PIPE(pipe, _SEL_FETCH_PLANE_BASE_1_A, _SEL_FETCH_PLANE_BASE_1_B)
7217
+#define _SEL_FETCH_PLANE_BASE(pipe, plane) (_SEL_FETCH_PLANE_BASE_1(pipe) - \
7218
+ _SEL_FETCH_PLANE_BASE_1_A + \
7219
+ _SEL_FETCH_PLANE_BASE_A(plane))
7220
+
7221
+#define _SEL_FETCH_PLANE_CTL_1_A 0x70890
7222
+#define PLANE_SEL_FETCH_CTL(pipe, plane) _MMIO(_SEL_FETCH_PLANE_BASE(pipe, plane) + \
7223
+ _SEL_FETCH_PLANE_CTL_1_A - \
7224
+ _SEL_FETCH_PLANE_BASE_1_A)
7225
+#define PLANE_SEL_FETCH_CTL_ENABLE REG_BIT(31)
7226
+
7227
+#define _SEL_FETCH_PLANE_POS_1_A 0x70894
7228
+#define PLANE_SEL_FETCH_POS(pipe, plane) _MMIO(_SEL_FETCH_PLANE_BASE(pipe, plane) + \
7229
+ _SEL_FETCH_PLANE_POS_1_A - \
7230
+ _SEL_FETCH_PLANE_BASE_1_A)
7231
+
7232
+#define _SEL_FETCH_PLANE_SIZE_1_A 0x70898
7233
+#define PLANE_SEL_FETCH_SIZE(pipe, plane) _MMIO(_SEL_FETCH_PLANE_BASE(pipe, plane) + \
7234
+ _SEL_FETCH_PLANE_SIZE_1_A - \
7235
+ _SEL_FETCH_PLANE_BASE_1_A)
7236
+
7237
+#define _SEL_FETCH_PLANE_OFFSET_1_A 0x7089C
7238
+#define PLANE_SEL_FETCH_OFFSET(pipe, plane) _MMIO(_SEL_FETCH_PLANE_BASE(pipe, plane) + \
7239
+ _SEL_FETCH_PLANE_OFFSET_1_A - \
7240
+ _SEL_FETCH_PLANE_BASE_1_A)
7241
+
7242
+/* SKL new cursor registers */
67377243 #define _CUR_BUF_CFG_A 0x7017c
67387244 #define _CUR_BUF_CFG_B 0x7117c
67397245 #define CUR_BUF_CFG(pipe) _MMIO_PIPE(pipe, _CUR_BUF_CFG_A, _CUR_BUF_CFG_B)
....@@ -6876,11 +7382,12 @@
68767382 #define _PS_2B_CTRL 0x68A80
68777383 #define _PS_1C_CTRL 0x69180
68787384 #define PS_SCALER_EN (1 << 31)
6879
-#define PS_SCALER_MODE_MASK (3 << 28)
6880
-#define PS_SCALER_MODE_DYN (0 << 28)
6881
-#define PS_SCALER_MODE_HQ (1 << 28)
7385
+#define SKL_PS_SCALER_MODE_MASK (3 << 28)
7386
+#define SKL_PS_SCALER_MODE_DYN (0 << 28)
7387
+#define SKL_PS_SCALER_MODE_HQ (1 << 28)
68827388 #define SKL_PS_SCALER_MODE_NV12 (2 << 28)
68837389 #define PS_SCALER_MODE_PLANAR (1 << 29)
7390
+#define PS_SCALER_MODE_NORMAL (0 << 29)
68847391 #define PS_PLANE_SEL_MASK (7 << 25)
68857392 #define PS_PLANE_SEL(plane) (((plane) + 1) << 25)
68867393 #define PS_FILTER_MASK (3 << 23)
....@@ -6897,6 +7404,8 @@
68977404 #define PS_VADAPT_MODE_LEAST_ADAPT (0 << 5)
68987405 #define PS_VADAPT_MODE_MOD_ADAPT (1 << 5)
68997406 #define PS_VADAPT_MODE_MOST_ADAPT (3 << 5)
7407
+#define PS_PLANE_Y_SEL_MASK (7 << 5)
7408
+#define PS_PLANE_Y_SEL(plane) (((plane) + 1) << 5)
69007409
69017410 #define _PS_PWR_GATE_1A 0x68160
69027411 #define _PS_PWR_GATE_2A 0x68260
....@@ -6991,16 +7500,34 @@
69917500 /* legacy palette */
69927501 #define _LGC_PALETTE_A 0x4a000
69937502 #define _LGC_PALETTE_B 0x4a800
7503
+#define LGC_PALETTE_RED_MASK REG_GENMASK(23, 16)
7504
+#define LGC_PALETTE_GREEN_MASK REG_GENMASK(15, 8)
7505
+#define LGC_PALETTE_BLUE_MASK REG_GENMASK(7, 0)
69947506 #define LGC_PALETTE(pipe, i) _MMIO(_PIPE(pipe, _LGC_PALETTE_A, _LGC_PALETTE_B) + (i) * 4)
7507
+
7508
+/* ilk/snb precision palette */
7509
+#define _PREC_PALETTE_A 0x4b000
7510
+#define _PREC_PALETTE_B 0x4c000
7511
+#define PREC_PALETTE_RED_MASK REG_GENMASK(29, 20)
7512
+#define PREC_PALETTE_GREEN_MASK REG_GENMASK(19, 10)
7513
+#define PREC_PALETTE_BLUE_MASK REG_GENMASK(9, 0)
7514
+#define PREC_PALETTE(pipe, i) _MMIO(_PIPE(pipe, _PREC_PALETTE_A, _PREC_PALETTE_B) + (i) * 4)
7515
+
7516
+#define _PREC_PIPEAGCMAX 0x4d000
7517
+#define _PREC_PIPEBGCMAX 0x4d010
7518
+#define PREC_PIPEGCMAX(pipe, i) _MMIO(_PIPE(pipe, _PIPEAGCMAX, _PIPEBGCMAX) + (i) * 4)
69957519
69967520 #define _GAMMA_MODE_A 0x4a480
69977521 #define _GAMMA_MODE_B 0x4ac80
69987522 #define GAMMA_MODE(pipe) _MMIO_PIPE(pipe, _GAMMA_MODE_A, _GAMMA_MODE_B)
6999
-#define GAMMA_MODE_MODE_MASK (3 << 0)
7000
-#define GAMMA_MODE_MODE_8BIT (0 << 0)
7001
-#define GAMMA_MODE_MODE_10BIT (1 << 0)
7002
-#define GAMMA_MODE_MODE_12BIT (2 << 0)
7003
-#define GAMMA_MODE_MODE_SPLIT (3 << 0)
7523
+#define PRE_CSC_GAMMA_ENABLE (1 << 31)
7524
+#define POST_CSC_GAMMA_ENABLE (1 << 30)
7525
+#define GAMMA_MODE_MODE_MASK (3 << 0)
7526
+#define GAMMA_MODE_MODE_8BIT (0 << 0)
7527
+#define GAMMA_MODE_MODE_10BIT (1 << 0)
7528
+#define GAMMA_MODE_MODE_12BIT (2 << 0)
7529
+#define GAMMA_MODE_MODE_SPLIT (3 << 0) /* ivb-bdw */
7530
+#define GAMMA_MODE_MODE_12BIT_MULTI_SEGMENTED (3 << 0) /* icl + */
70047531
70057532 /* DMC/CSR */
70067533 #define CSR_PROGRAM(i) _MMIO(0x80000 + (i) * 4)
....@@ -7016,6 +7543,11 @@
70167543 #define SKL_CSR_DC3_DC5_COUNT _MMIO(0x80030)
70177544 #define SKL_CSR_DC5_DC6_COUNT _MMIO(0x8002C)
70187545 #define BXT_CSR_DC3_DC5_COUNT _MMIO(0x80038)
7546
+#define TGL_DMC_DEBUG_DC5_COUNT _MMIO(0x101084)
7547
+#define TGL_DMC_DEBUG_DC6_COUNT _MMIO(0x101088)
7548
+
7549
+#define TGL_DMC_DEBUG3 _MMIO(0x101090)
7550
+#define DG1_DMC_DEBUG3 _MMIO(0x13415c)
70197551
70207552 /* Display Internal Timeout Register */
70217553 #define RM_TIMEOUT _MMIO(0x42060)
....@@ -7099,8 +7631,8 @@
70997631 #define GEN8_GT_VECS_IRQ (1 << 6)
71007632 #define GEN8_GT_GUC_IRQ (1 << 5)
71017633 #define GEN8_GT_PM_IRQ (1 << 4)
7102
-#define GEN8_GT_VCS2_IRQ (1 << 3)
7103
-#define GEN8_GT_VCS1_IRQ (1 << 2)
7634
+#define GEN8_GT_VCS1_IRQ (1 << 3) /* NB: VCS2 in bspec! */
7635
+#define GEN8_GT_VCS0_IRQ (1 << 2) /* NB: VCS1 in bpsec! */
71047636 #define GEN8_GT_BCS_IRQ (1 << 1)
71057637 #define GEN8_GT_RCS_IRQ (1 << 0)
71067638
....@@ -7109,20 +7641,10 @@
71097641 #define GEN8_GT_IIR(which) _MMIO(0x44308 + (0x10 * (which)))
71107642 #define GEN8_GT_IER(which) _MMIO(0x4430c + (0x10 * (which)))
71117643
7112
-#define GEN9_GUC_TO_HOST_INT_EVENT (1 << 31)
7113
-#define GEN9_GUC_EXEC_ERROR_EVENT (1 << 30)
7114
-#define GEN9_GUC_DISPLAY_EVENT (1 << 29)
7115
-#define GEN9_GUC_SEMA_SIGNAL_EVENT (1 << 28)
7116
-#define GEN9_GUC_IOMMU_MSG_EVENT (1 << 27)
7117
-#define GEN9_GUC_DB_RING_EVENT (1 << 26)
7118
-#define GEN9_GUC_DMA_DONE_EVENT (1 << 25)
7119
-#define GEN9_GUC_FATAL_ERROR_EVENT (1 << 24)
7120
-#define GEN9_GUC_NOTIFICATION_EVENT (1 << 23)
7121
-
71227644 #define GEN8_RCS_IRQ_SHIFT 0
71237645 #define GEN8_BCS_IRQ_SHIFT 16
7124
-#define GEN8_VCS1_IRQ_SHIFT 0
7125
-#define GEN8_VCS2_IRQ_SHIFT 16
7646
+#define GEN8_VCS0_IRQ_SHIFT 0 /* NB: VCS1 in bspec! */
7647
+#define GEN8_VCS1_IRQ_SHIFT 16 /* NB: VCS2 in bpsec! */
71267648 #define GEN8_VECS_IRQ_SHIFT 0
71277649 #define GEN8_WD_IRQ_SHIFT 16
71287650
....@@ -7142,6 +7664,9 @@
71427664 #define GEN8_PIPE_VSYNC (1 << 1)
71437665 #define GEN8_PIPE_VBLANK (1 << 0)
71447666 #define GEN9_PIPE_CURSOR_FAULT (1 << 11)
7667
+#define GEN11_PIPE_PLANE7_FAULT (1 << 22)
7668
+#define GEN11_PIPE_PLANE6_FAULT (1 << 21)
7669
+#define GEN11_PIPE_PLANE5_FAULT (1 << 20)
71457670 #define GEN9_PIPE_PLANE4_FAULT (1 << 10)
71467671 #define GEN9_PIPE_PLANE3_FAULT (1 << 9)
71477672 #define GEN9_PIPE_PLANE2_FAULT (1 << 8)
....@@ -7161,16 +7686,28 @@
71617686 GEN9_PIPE_PLANE3_FAULT | \
71627687 GEN9_PIPE_PLANE2_FAULT | \
71637688 GEN9_PIPE_PLANE1_FAULT)
7689
+#define GEN11_DE_PIPE_IRQ_FAULT_ERRORS \
7690
+ (GEN9_DE_PIPE_IRQ_FAULT_ERRORS | \
7691
+ GEN11_PIPE_PLANE7_FAULT | \
7692
+ GEN11_PIPE_PLANE6_FAULT | \
7693
+ GEN11_PIPE_PLANE5_FAULT)
7694
+#define RKL_DE_PIPE_IRQ_FAULT_ERRORS \
7695
+ (GEN9_DE_PIPE_IRQ_FAULT_ERRORS | \
7696
+ GEN11_PIPE_PLANE5_FAULT)
71647697
71657698 #define GEN8_DE_PORT_ISR _MMIO(0x44440)
71667699 #define GEN8_DE_PORT_IMR _MMIO(0x44444)
71677700 #define GEN8_DE_PORT_IIR _MMIO(0x44448)
71687701 #define GEN8_DE_PORT_IER _MMIO(0x4444c)
7702
+#define DSI1_NON_TE (1 << 31)
7703
+#define DSI0_NON_TE (1 << 30)
71697704 #define ICL_AUX_CHANNEL_E (1 << 29)
71707705 #define CNL_AUX_CHANNEL_F (1 << 28)
71717706 #define GEN9_AUX_CHANNEL_D (1 << 27)
71727707 #define GEN9_AUX_CHANNEL_C (1 << 26)
71737708 #define GEN9_AUX_CHANNEL_B (1 << 25)
7709
+#define DSI1_TE (1 << 24)
7710
+#define DSI0_TE (1 << 23)
71747711 #define BXT_DE_PORT_HP_DDIC (1 << 5)
71757712 #define BXT_DE_PORT_HP_DDIB (1 << 4)
71767713 #define BXT_DE_PORT_HP_DDIA (1 << 3)
....@@ -7180,6 +7717,15 @@
71807717 #define GEN8_PORT_DP_A_HOTPLUG (1 << 3)
71817718 #define BXT_DE_PORT_GMBUS (1 << 1)
71827719 #define GEN8_AUX_CHANNEL_A (1 << 0)
7720
+#define TGL_DE_PORT_AUX_USBC6 (1 << 13)
7721
+#define TGL_DE_PORT_AUX_USBC5 (1 << 12)
7722
+#define TGL_DE_PORT_AUX_USBC4 (1 << 11)
7723
+#define TGL_DE_PORT_AUX_USBC3 (1 << 10)
7724
+#define TGL_DE_PORT_AUX_USBC2 (1 << 9)
7725
+#define TGL_DE_PORT_AUX_USBC1 (1 << 8)
7726
+#define TGL_DE_PORT_AUX_DDIC (1 << 2)
7727
+#define TGL_DE_PORT_AUX_DDIB (1 << 1)
7728
+#define TGL_DE_PORT_AUX_DDIA (1 << 0)
71837729
71847730 #define GEN8_DE_MISC_ISR _MMIO(0x44460)
71857731 #define GEN8_DE_MISC_IMR _MMIO(0x44464)
....@@ -7208,6 +7754,10 @@
72087754 #define GEN11_GT_DW1_IRQ (1 << 1)
72097755 #define GEN11_GT_DW0_IRQ (1 << 0)
72107756
7757
+#define DG1_MSTR_UNIT_INTR _MMIO(0x190008)
7758
+#define DG1_MSTR_IRQ REG_BIT(31)
7759
+#define DG1_MSTR_UNIT(u) REG_BIT(u)
7760
+
72117761 #define GEN11_DISPLAY_INT_CTL _MMIO(0x44200)
72127762 #define GEN11_DISPLAY_IRQ_ENABLE (1 << 31)
72137763 #define GEN11_AUDIO_CODEC_IRQ (1 << 24)
....@@ -7223,22 +7773,20 @@
72237773 #define GEN11_DE_HPD_IMR _MMIO(0x44474)
72247774 #define GEN11_DE_HPD_IIR _MMIO(0x44478)
72257775 #define GEN11_DE_HPD_IER _MMIO(0x4447c)
7226
-#define GEN11_TC4_HOTPLUG (1 << 19)
7227
-#define GEN11_TC3_HOTPLUG (1 << 18)
7228
-#define GEN11_TC2_HOTPLUG (1 << 17)
7229
-#define GEN11_TC1_HOTPLUG (1 << 16)
7230
-#define GEN11_DE_TC_HOTPLUG_MASK (GEN11_TC4_HOTPLUG | \
7231
- GEN11_TC3_HOTPLUG | \
7232
- GEN11_TC2_HOTPLUG | \
7233
- GEN11_TC1_HOTPLUG)
7234
-#define GEN11_TBT4_HOTPLUG (1 << 3)
7235
-#define GEN11_TBT3_HOTPLUG (1 << 2)
7236
-#define GEN11_TBT2_HOTPLUG (1 << 1)
7237
-#define GEN11_TBT1_HOTPLUG (1 << 0)
7238
-#define GEN11_DE_TBT_HOTPLUG_MASK (GEN11_TBT4_HOTPLUG | \
7239
- GEN11_TBT3_HOTPLUG | \
7240
- GEN11_TBT2_HOTPLUG | \
7241
- GEN11_TBT1_HOTPLUG)
7776
+#define GEN11_TC_HOTPLUG(tc_port) (1 << ((tc_port) + 16))
7777
+#define GEN11_DE_TC_HOTPLUG_MASK (GEN11_TC_HOTPLUG(PORT_TC6) | \
7778
+ GEN11_TC_HOTPLUG(PORT_TC5) | \
7779
+ GEN11_TC_HOTPLUG(PORT_TC4) | \
7780
+ GEN11_TC_HOTPLUG(PORT_TC3) | \
7781
+ GEN11_TC_HOTPLUG(PORT_TC2) | \
7782
+ GEN11_TC_HOTPLUG(PORT_TC1))
7783
+#define GEN11_TBT_HOTPLUG(tc_port) (1 << (tc_port))
7784
+#define GEN11_DE_TBT_HOTPLUG_MASK (GEN11_TBT_HOTPLUG(PORT_TC6) | \
7785
+ GEN11_TBT_HOTPLUG(PORT_TC5) | \
7786
+ GEN11_TBT_HOTPLUG(PORT_TC4) | \
7787
+ GEN11_TBT_HOTPLUG(PORT_TC3) | \
7788
+ GEN11_TBT_HOTPLUG(PORT_TC2) | \
7789
+ GEN11_TBT_HOTPLUG(PORT_TC1))
72427790
72437791 #define GEN11_TBT_HOTPLUG_CTL _MMIO(0x44030)
72447792 #define GEN11_TC_HOTPLUG_CTL _MMIO(0x44038)
....@@ -7269,6 +7817,9 @@
72697817 #define GEN11_INTR_ENGINE_CLASS(x) (((x) & GENMASK(18, 16)) >> 16)
72707818 #define GEN11_INTR_ENGINE_INSTANCE(x) (((x) & GENMASK(25, 20)) >> 20)
72717819 #define GEN11_INTR_ENGINE_INTR(x) ((x) & 0xffff)
7820
+/* irq instances for OTHER_CLASS */
7821
+#define OTHER_GUC_INSTANCE 0
7822
+#define OTHER_GTPM_INSTANCE 1
72727823
72737824 #define GEN11_INTR_IDENTITY_REG(x) _MMIO(0x190060 + ((x) * 4))
72747825
....@@ -7294,6 +7845,9 @@
72947845 #define GEN11_CRYPTO_RSVD_INTR_MASK _MMIO(0x1900f0)
72957846 #define GEN11_GUNIT_CSME_INTR_MASK _MMIO(0x1900f4)
72967847
7848
+#define ENGINE1_MASK REG_GENMASK(31, 16)
7849
+#define ENGINE0_MASK REG_GENMASK(15, 0)
7850
+
72977851 #define ILK_DISPLAY_CHICKEN2 _MMIO(0x42004)
72987852 /* Required on all Ironlake and Sandybridge according to the B-Spec. */
72997853 #define ILK_ELPIN_409_SELECT (1 << 25)
....@@ -7308,6 +7862,10 @@
73087862 #define ILK_eDP_A_DISABLE (1 << 24)
73097863 #define HSW_CDCLK_LIMIT (1 << 24)
73107864 #define ILK_DESKTOP (1 << 23)
7865
+#define HSW_CPU_SSC_ENABLE (1 << 21)
7866
+
7867
+#define FUSE_STRAP3 _MMIO(0x42020)
7868
+#define HSW_REF_CLK_SELECT (1 << 1)
73117869
73127870 #define ILK_DSPCLK_GATE_D _MMIO(0x42020)
73137871 #define ILK_VRHUNIT_CLOCK_GATE_DISABLE (1 << 28)
....@@ -7320,11 +7878,13 @@
73207878 # define CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE (1 << 5)
73217879 # define CHICKEN3_DGMG_DONE_FIX_DISABLE (1 << 2)
73227880
7323
-#define CHICKEN_PAR1_1 _MMIO(0x42080)
7881
+#define CHICKEN_PAR1_1 _MMIO(0x42080)
7882
+#define DIS_RAM_BYPASS_PSR2_MAN_TRACK (1 << 16)
73247883 #define SKL_DE_COMPRESSED_HASH_MODE (1 << 15)
7325
-#define DPA_MASK_VBLANK_SRD (1 << 15)
7326
-#define FORCE_ARB_IDLE_PLANES (1 << 14)
7327
-#define SKL_EDP_PSR_FIX_RDWRAP (1 << 3)
7884
+#define DPA_MASK_VBLANK_SRD (1 << 15)
7885
+#define FORCE_ARB_IDLE_PLANES (1 << 14)
7886
+#define SKL_EDP_PSR_FIX_RDWRAP (1 << 3)
7887
+#define IGNORE_PSR2_HW_TRACKING (1 << 1)
73287888
73297889 #define CHICKEN_PAR2_1 _MMIO(0x42090)
73307890 #define KVM_CONFIG_CHANGE_NOTIFICATION_SELECT (1 << 14)
....@@ -7345,9 +7905,19 @@
73457905 #define BDW_DPRS_MASK_VBLANK_SRD (1 << 0)
73467906 #define CHICKEN_PIPESL_1(pipe) _MMIO_PIPE(pipe, _CHICKEN_PIPESL_1_A, _CHICKEN_PIPESL_1_B)
73477907
7348
-#define CHICKEN_TRANS_A 0x420c0
7349
-#define CHICKEN_TRANS_B 0x420c4
7350
-#define CHICKEN_TRANS(trans) _MMIO_TRANS(trans, CHICKEN_TRANS_A, CHICKEN_TRANS_B)
7908
+#define _CHICKEN_TRANS_A 0x420c0
7909
+#define _CHICKEN_TRANS_B 0x420c4
7910
+#define _CHICKEN_TRANS_C 0x420c8
7911
+#define _CHICKEN_TRANS_EDP 0x420cc
7912
+#define _CHICKEN_TRANS_D 0x420d8
7913
+#define CHICKEN_TRANS(trans) _MMIO(_PICK((trans), \
7914
+ [TRANSCODER_EDP] = _CHICKEN_TRANS_EDP, \
7915
+ [TRANSCODER_A] = _CHICKEN_TRANS_A, \
7916
+ [TRANSCODER_B] = _CHICKEN_TRANS_B, \
7917
+ [TRANSCODER_C] = _CHICKEN_TRANS_C, \
7918
+ [TRANSCODER_D] = _CHICKEN_TRANS_D))
7919
+#define HSW_FRAME_START_DELAY_MASK (3 << 27)
7920
+#define HSW_FRAME_START_DELAY(x) ((x) << 27) /* 0-3 */
73517921 #define VSC_DATA_SEL_SOFTWARE_CONTROL (1 << 25) /* GLK and CNL+ */
73527922 #define DDI_TRAINING_OVERRIDE_ENABLE (1 << 19)
73537923 #define DDI_TRAINING_OVERRIDE_VALUE (1 << 18)
....@@ -7363,31 +7933,59 @@
73637933 #define DISP_ARB_CTL2 _MMIO(0x45004)
73647934 #define DISP_DATA_PARTITION_5_6 (1 << 6)
73657935 #define DISP_IPC_ENABLE (1 << 3)
7366
-#define DBUF_CTL _MMIO(0x45008)
7367
-#define DBUF_CTL_S1 _MMIO(0x45008)
7368
-#define DBUF_CTL_S2 _MMIO(0x44FE8)
7936
+#define _DBUF_CTL_S1 0x45008
7937
+#define _DBUF_CTL_S2 0x44FE8
7938
+#define DBUF_CTL_S(slice) _MMIO(_PICK_EVEN(slice, _DBUF_CTL_S1, _DBUF_CTL_S2))
73697939 #define DBUF_POWER_REQUEST (1 << 31)
73707940 #define DBUF_POWER_STATE (1 << 30)
73717941 #define GEN7_MSG_CTL _MMIO(0x45010)
73727942 #define WAIT_FOR_PCH_RESET_ACK (1 << 1)
73737943 #define WAIT_FOR_PCH_FLR_ACK (1 << 0)
7944
+
7945
+#define _BW_BUDDY0_CTL 0x45130
7946
+#define _BW_BUDDY1_CTL 0x45140
7947
+#define BW_BUDDY_CTL(x) _MMIO(_PICK_EVEN(x, \
7948
+ _BW_BUDDY0_CTL, \
7949
+ _BW_BUDDY1_CTL))
7950
+#define BW_BUDDY_DISABLE REG_BIT(31)
7951
+#define BW_BUDDY_TLB_REQ_TIMER_MASK REG_GENMASK(21, 16)
7952
+#define BW_BUDDY_TLB_REQ_TIMER(x) REG_FIELD_PREP(BW_BUDDY_TLB_REQ_TIMER_MASK, x)
7953
+
7954
+#define _BW_BUDDY0_PAGE_MASK 0x45134
7955
+#define _BW_BUDDY1_PAGE_MASK 0x45144
7956
+#define BW_BUDDY_PAGE_MASK(x) _MMIO(_PICK_EVEN(x, \
7957
+ _BW_BUDDY0_PAGE_MASK, \
7958
+ _BW_BUDDY1_PAGE_MASK))
7959
+
73747960 #define HSW_NDE_RSTWRN_OPT _MMIO(0x46408)
73757961 #define RESET_PCH_HANDSHAKE_ENABLE (1 << 4)
73767962
73777963 #define GEN8_CHICKEN_DCPR_1 _MMIO(0x46430)
73787964 #define SKL_SELECT_ALTERNATE_DC_EXIT (1 << 30)
7965
+#define CNL_DELAY_PMRSP (1 << 22)
73797966 #define MASK_WAKEMEM (1 << 13)
73807967 #define CNL_DDI_CLOCK_REG_ACCESS_ON (1 << 7)
73817968
7969
+#define GEN11_CHICKEN_DCPR_2 _MMIO(0x46434)
7970
+#define DCPR_MASK_MAXLATENCY_MEMUP_CLR REG_BIT(27)
7971
+#define DCPR_MASK_LPMODE REG_BIT(26)
7972
+#define DCPR_SEND_RESP_IMM REG_BIT(25)
7973
+#define DCPR_CLEAR_MEMSTAT_DIS REG_BIT(24)
7974
+
73827975 #define SKL_DFSM _MMIO(0x51000)
7383
-#define SKL_DFSM_CDCLK_LIMIT_MASK (3 << 23)
7384
-#define SKL_DFSM_CDCLK_LIMIT_675 (0 << 23)
7385
-#define SKL_DFSM_CDCLK_LIMIT_540 (1 << 23)
7386
-#define SKL_DFSM_CDCLK_LIMIT_450 (2 << 23)
7387
-#define SKL_DFSM_CDCLK_LIMIT_337_5 (3 << 23)
7388
-#define SKL_DFSM_PIPE_A_DISABLE (1 << 30)
7389
-#define SKL_DFSM_PIPE_B_DISABLE (1 << 21)
7390
-#define SKL_DFSM_PIPE_C_DISABLE (1 << 28)
7976
+#define SKL_DFSM_DISPLAY_PM_DISABLE (1 << 27)
7977
+#define SKL_DFSM_DISPLAY_HDCP_DISABLE (1 << 25)
7978
+#define SKL_DFSM_CDCLK_LIMIT_MASK (3 << 23)
7979
+#define SKL_DFSM_CDCLK_LIMIT_675 (0 << 23)
7980
+#define SKL_DFSM_CDCLK_LIMIT_540 (1 << 23)
7981
+#define SKL_DFSM_CDCLK_LIMIT_450 (2 << 23)
7982
+#define SKL_DFSM_CDCLK_LIMIT_337_5 (3 << 23)
7983
+#define ICL_DFSM_DMC_DISABLE (1 << 23)
7984
+#define SKL_DFSM_PIPE_A_DISABLE (1 << 30)
7985
+#define SKL_DFSM_PIPE_B_DISABLE (1 << 21)
7986
+#define SKL_DFSM_PIPE_C_DISABLE (1 << 28)
7987
+#define TGL_DFSM_PIPE_D_DISABLE (1 << 22)
7988
+#define CNL_DFSM_DISPLAY_DSC_DISABLE (1 << 7)
73917989
73927990 #define SKL_DSSM _MMIO(0x51004)
73937991 #define CNL_DSSM_CDCLK_PLL_REFCLK_24MHz (1 << 31)
....@@ -7404,7 +8002,10 @@
74048002 #define GEN9_POOLED_EU_LOAD_BALANCING_FIX_DISABLE (1 << 10)
74058003
74068004 #define GEN9_CS_DEBUG_MODE1 _MMIO(0x20ec)
8005
+#define FF_DOP_CLOCK_GATE_DISABLE REG_BIT(1)
74078006 #define GEN9_CTX_PREEMPT_REG _MMIO(0x2248)
8007
+#define GEN12_DISABLE_POSH_BUSY_FF_DOP_CG REG_BIT(11)
8008
+
74088009 #define GEN8_CS_CHICKEN1 _MMIO(0x2580)
74098010 #define GEN9_PREEMPT_3D_OBJECT_LEVEL (1 << 0)
74108011 #define GEN9_PREEMPT_GPGPU_LEVEL(hi, lo) (((hi) << 2) | ((lo) << 1))
....@@ -7415,7 +8016,7 @@
74158016
74168017 /* GEN7 chicken */
74178018 #define GEN7_COMMON_SLICE_CHICKEN1 _MMIO(0x7010)
7418
- #define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC ((1 << 10) | (1 << 26))
8019
+ #define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC (1 << 10)
74198020 #define GEN9_RHWO_OPTIMIZATION_DISABLE (1 << 14)
74208021
74218022 #define COMMON_SLICE_CHICKEN2 _MMIO(0x7014)
....@@ -7424,8 +8025,12 @@
74248025 #define GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION (1 << 8)
74258026 #define GEN8_CSC2_SBE_VUE_CACHE_CONSERVATIVE (1 << 0)
74268027
8028
+#define GEN8_L3CNTLREG _MMIO(0x7034)
8029
+ #define GEN8_ERRDETBCTRL (1 << 9)
8030
+
74278031 #define GEN11_COMMON_SLICE_CHICKEN3 _MMIO(0x7304)
74288032 #define GEN11_BLEND_EMB_FIX_DISABLE_IN_RCC (1 << 11)
8033
+ #define GEN12_DISABLE_CPS_AWARE_COLOR_PIPE (1 << 9)
74298034
74308035 #define HIZ_CHICKEN _MMIO(0x7018)
74318036 # define CHV_HZ_8X8_MODE_IN_1X (1 << 15)
....@@ -7436,6 +8041,10 @@
74368041
74378042 #define GEN9_SLICE_COMMON_ECO_CHICKEN1 _MMIO(0x731c)
74388043 #define GEN11_STATE_CACHE_REDIRECT_TO_CS (1 << 11)
8044
+
8045
+#define GEN7_SARCHKMD _MMIO(0xB000)
8046
+#define GEN7_DISABLE_DEMAND_PREFETCH (1 << 31)
8047
+#define GEN7_DISABLE_SAMPLER_PREFETCH (1 << 30)
74398048
74408049 #define GEN7_L3SQCREG1 _MMIO(0xB010)
74418050 #define VLV_B0_WA_L3SQCREG1_VALUE 0x00D30000
....@@ -7464,6 +8073,9 @@
74648073
74658074 #define GEN7_L3SQCREG4 _MMIO(0xb034)
74668075 #define L3SQ_URB_READ_CAM_MATCH_DISABLE (1 << 27)
8076
+
8077
+#define GEN11_SCRATCH2 _MMIO(0xb140)
8078
+#define GEN11_COHERENT_PARTIAL_WRITE_MERGE_ENABLE (1 << 19)
74678079
74688080 #define GEN8_L3SQCREG4 _MMIO(0xb118)
74698081 #define GEN11_LQSC_CLEAN_EVICT_DISABLE (1 << 6)
....@@ -7501,14 +8113,23 @@
75018113 #define GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE (1 << 2)
75028114
75038115 /*GEN11 chicken */
7504
-#define _PIPEA_CHICKEN 0x70038
7505
-#define _PIPEB_CHICKEN 0x71038
7506
-#define _PIPEC_CHICKEN 0x72038
7507
-#define PER_PIXEL_ALPHA_BYPASS_EN (1 << 7)
7508
-#define PIPE_CHICKEN(pipe) _MMIO_PIPE(pipe, _PIPEA_CHICKEN,\
7509
- _PIPEB_CHICKEN)
8116
+#define _PIPEA_CHICKEN 0x70038
8117
+#define _PIPEB_CHICKEN 0x71038
8118
+#define _PIPEC_CHICKEN 0x72038
8119
+#define PIPE_CHICKEN(pipe) _MMIO_PIPE(pipe, _PIPEA_CHICKEN,\
8120
+ _PIPEB_CHICKEN)
8121
+#define PIXEL_ROUNDING_TRUNC_FB_PASSTHRU (1 << 15)
8122
+#define PER_PIXEL_ALPHA_BYPASS_EN (1 << 7)
8123
+
8124
+#define FF_MODE2 _MMIO(0x6604)
8125
+#define FF_MODE2_GS_TIMER_MASK REG_GENMASK(31, 24)
8126
+#define FF_MODE2_GS_TIMER_224 REG_FIELD_PREP(FF_MODE2_GS_TIMER_MASK, 224)
8127
+#define FF_MODE2_TDS_TIMER_MASK REG_GENMASK(23, 16)
8128
+#define FF_MODE2_TDS_TIMER_128 REG_FIELD_PREP(FF_MODE2_TDS_TIMER_MASK, 4)
75108129
75118130 /* PCH */
8131
+
8132
+#define PCH_DISPLAY_BASE 0xc0000u
75128133
75138134 /* south display engine interrupt: IBX */
75148135 #define SDE_AUDIO_POWER_D (1 << 27)
....@@ -7599,20 +8220,25 @@
75998220 SDE_FDI_RXB_CPT | \
76008221 SDE_FDI_RXA_CPT)
76018222
7602
-/* south display engine interrupt: ICP */
7603
-#define SDE_TC4_HOTPLUG_ICP (1 << 27)
7604
-#define SDE_TC3_HOTPLUG_ICP (1 << 26)
7605
-#define SDE_TC2_HOTPLUG_ICP (1 << 25)
7606
-#define SDE_TC1_HOTPLUG_ICP (1 << 24)
8223
+/* south display engine interrupt: ICP/TGP */
76078224 #define SDE_GMBUS_ICP (1 << 23)
7608
-#define SDE_DDIB_HOTPLUG_ICP (1 << 17)
7609
-#define SDE_DDIA_HOTPLUG_ICP (1 << 16)
7610
-#define SDE_DDI_MASK_ICP (SDE_DDIB_HOTPLUG_ICP | \
7611
- SDE_DDIA_HOTPLUG_ICP)
7612
-#define SDE_TC_MASK_ICP (SDE_TC4_HOTPLUG_ICP | \
7613
- SDE_TC3_HOTPLUG_ICP | \
7614
- SDE_TC2_HOTPLUG_ICP | \
7615
- SDE_TC1_HOTPLUG_ICP)
8225
+#define SDE_TC_HOTPLUG_ICP(tc_port) (1 << ((tc_port) + 24))
8226
+#define SDE_DDI_HOTPLUG_ICP(port) (1 << ((port) + 16))
8227
+#define SDE_DDI_MASK_ICP (SDE_DDI_HOTPLUG_ICP(PORT_B) | \
8228
+ SDE_DDI_HOTPLUG_ICP(PORT_A))
8229
+#define SDE_TC_MASK_ICP (SDE_TC_HOTPLUG_ICP(PORT_TC4) | \
8230
+ SDE_TC_HOTPLUG_ICP(PORT_TC3) | \
8231
+ SDE_TC_HOTPLUG_ICP(PORT_TC2) | \
8232
+ SDE_TC_HOTPLUG_ICP(PORT_TC1))
8233
+#define SDE_DDI_MASK_TGP (SDE_DDI_HOTPLUG_ICP(PORT_C) | \
8234
+ SDE_DDI_HOTPLUG_ICP(PORT_B) | \
8235
+ SDE_DDI_HOTPLUG_ICP(PORT_A))
8236
+#define SDE_TC_MASK_TGP (SDE_TC_HOTPLUG_ICP(PORT_TC6) | \
8237
+ SDE_TC_HOTPLUG_ICP(PORT_TC5) | \
8238
+ SDE_TC_HOTPLUG_ICP(PORT_TC4) | \
8239
+ SDE_TC_HOTPLUG_ICP(PORT_TC3) | \
8240
+ SDE_TC_HOTPLUG_ICP(PORT_TC2) | \
8241
+ SDE_TC_HOTPLUG_ICP(PORT_TC1))
76168242
76178243 #define SDEISR _MMIO(0xc4000)
76188244 #define SDEIMR _MMIO(0xc4004)
....@@ -7679,22 +8305,20 @@
76798305 * SHOTPLUG_CTL_DDI and SHOTPLUG_CTL_TC.
76808306 */
76818307
7682
-#define SHOTPLUG_CTL_DDI _MMIO(0xc4030)
7683
-#define ICP_DDIB_HPD_ENABLE (1 << 7)
7684
-#define ICP_DDIB_HPD_STATUS_MASK (3 << 4)
7685
-#define ICP_DDIB_HPD_NO_DETECT (0 << 4)
7686
-#define ICP_DDIB_HPD_SHORT_DETECT (1 << 4)
7687
-#define ICP_DDIB_HPD_LONG_DETECT (2 << 4)
7688
-#define ICP_DDIB_HPD_SHORT_LONG_DETECT (3 << 4)
7689
-#define ICP_DDIA_HPD_ENABLE (1 << 3)
7690
-#define ICP_DDIA_HPD_STATUS_MASK (3 << 0)
7691
-#define ICP_DDIA_HPD_NO_DETECT (0 << 0)
7692
-#define ICP_DDIA_HPD_SHORT_DETECT (1 << 0)
7693
-#define ICP_DDIA_HPD_LONG_DETECT (2 << 0)
7694
-#define ICP_DDIA_HPD_SHORT_LONG_DETECT (3 << 0)
8308
+#define SHOTPLUG_CTL_DDI _MMIO(0xc4030)
8309
+#define SHOTPLUG_CTL_DDI_HPD_ENABLE(port) (0x8 << (4 * (port)))
8310
+#define SHOTPLUG_CTL_DDI_HPD_STATUS_MASK(port) (0x3 << (4 * (port)))
8311
+#define SHOTPLUG_CTL_DDI_HPD_NO_DETECT(port) (0x0 << (4 * (port)))
8312
+#define SHOTPLUG_CTL_DDI_HPD_SHORT_DETECT(port) (0x1 << (4 * (port)))
8313
+#define SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(port) (0x2 << (4 * (port)))
8314
+#define SHOTPLUG_CTL_DDI_HPD_SHORT_LONG_DETECT(port) (0x3 << (4 * (port)))
76958315
76968316 #define SHOTPLUG_CTL_TC _MMIO(0xc4034)
76978317 #define ICP_TC_HPD_ENABLE(tc_port) (8 << (tc_port) * 4)
8318
+
8319
+#define SHPD_FILTER_CNT _MMIO(0xc4038)
8320
+#define SHPD_FILTER_CNT_500_ADJ 0x001D9
8321
+
76988322 /* Icelake DSC Rate Control Range Parameter Registers */
76998323 #define DSCA_RC_RANGE_PARAMETERS_0 _MMIO(0x6B240)
77008324 #define DSCA_RC_RANGE_PARAMETERS_0_UDW _MMIO(0x6B240 + 4)
....@@ -7802,19 +8426,18 @@
78028426 #define ICP_TC_HPD_LONG_DETECT(tc_port) (2 << (tc_port) * 4)
78038427 #define ICP_TC_HPD_SHORT_DETECT(tc_port) (1 << (tc_port) * 4)
78048428
7805
-#define PCH_GPIOA _MMIO(0xc5010)
7806
-#define PCH_GPIOB _MMIO(0xc5014)
7807
-#define PCH_GPIOC _MMIO(0xc5018)
7808
-#define PCH_GPIOD _MMIO(0xc501c)
7809
-#define PCH_GPIOE _MMIO(0xc5020)
7810
-#define PCH_GPIOF _MMIO(0xc5024)
7811
-
7812
-#define PCH_GMBUS0 _MMIO(0xc5100)
7813
-#define PCH_GMBUS1 _MMIO(0xc5104)
7814
-#define PCH_GMBUS2 _MMIO(0xc5108)
7815
-#define PCH_GMBUS3 _MMIO(0xc510c)
7816
-#define PCH_GMBUS4 _MMIO(0xc5110)
7817
-#define PCH_GMBUS5 _MMIO(0xc5120)
8429
+#define ICP_DDI_HPD_ENABLE_MASK (SHOTPLUG_CTL_DDI_HPD_ENABLE(PORT_B) | \
8430
+ SHOTPLUG_CTL_DDI_HPD_ENABLE(PORT_A))
8431
+#define ICP_TC_HPD_ENABLE_MASK (ICP_TC_HPD_ENABLE(PORT_TC4) | \
8432
+ ICP_TC_HPD_ENABLE(PORT_TC3) | \
8433
+ ICP_TC_HPD_ENABLE(PORT_TC2) | \
8434
+ ICP_TC_HPD_ENABLE(PORT_TC1))
8435
+#define TGP_DDI_HPD_ENABLE_MASK (SHOTPLUG_CTL_DDI_HPD_ENABLE(PORT_C) | \
8436
+ SHOTPLUG_CTL_DDI_HPD_ENABLE(PORT_B) | \
8437
+ SHOTPLUG_CTL_DDI_HPD_ENABLE(PORT_A))
8438
+#define TGP_TC_HPD_ENABLE_MASK (ICP_TC_HPD_ENABLE(PORT_TC6) | \
8439
+ ICP_TC_HPD_ENABLE(PORT_TC5) | \
8440
+ ICP_TC_HPD_ENABLE_MASK)
78188441
78198442 #define _PCH_DPLL_A 0xc6014
78208443 #define _PCH_DPLL_B 0xc6018
....@@ -7862,8 +8485,7 @@
78628485 #define CNP_RAWCLK_DIV_MASK (0x3ff << 16)
78638486 #define CNP_RAWCLK_DIV(div) ((div) << 16)
78648487 #define CNP_RAWCLK_FRAC_MASK (0xf << 26)
7865
-#define CNP_RAWCLK_FRAC(frac) ((frac) << 26)
7866
-#define ICP_RAWCLK_DEN(den) ((den) << 26)
8488
+#define CNP_RAWCLK_DEN(den) ((den) << 26)
78678489 #define ICP_RAWCLK_NUM(num) ((num) << 11)
78688490
78698491 #define PCH_DPLL_TMR_CFG _MMIO(0xc6208)
....@@ -7954,6 +8576,7 @@
79548576 #define _HSW_VIDEO_DIP_SPD_DATA_A 0x602A0
79558577 #define _HSW_VIDEO_DIP_GMP_DATA_A 0x602E0
79568578 #define _HSW_VIDEO_DIP_VSC_DATA_A 0x60320
8579
+#define _GLK_VIDEO_DIP_DRM_DATA_A 0x60440
79578580 #define _HSW_VIDEO_DIP_AVI_ECC_A 0x60240
79588581 #define _HSW_VIDEO_DIP_VS_ECC_A 0x60280
79598582 #define _HSW_VIDEO_DIP_SPD_ECC_A 0x602C0
....@@ -7967,6 +8590,7 @@
79678590 #define _HSW_VIDEO_DIP_SPD_DATA_B 0x612A0
79688591 #define _HSW_VIDEO_DIP_GMP_DATA_B 0x612E0
79698592 #define _HSW_VIDEO_DIP_VSC_DATA_B 0x61320
8593
+#define _GLK_VIDEO_DIP_DRM_DATA_B 0x61440
79708594 #define _HSW_VIDEO_DIP_BVI_ECC_B 0x61240
79718595 #define _HSW_VIDEO_DIP_VS_ECC_B 0x61280
79728596 #define _HSW_VIDEO_DIP_SPD_ECC_B 0x612C0
....@@ -7986,11 +8610,13 @@
79868610 #define _ICL_VIDEO_DIP_PPS_ECC_B 0x613D4
79878611
79888612 #define HSW_TVIDEO_DIP_CTL(trans) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_CTL_A)
8613
+#define HSW_TVIDEO_DIP_GCP(trans) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_GCP_A)
79898614 #define HSW_TVIDEO_DIP_AVI_DATA(trans, i) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_AVI_DATA_A + (i) * 4)
79908615 #define HSW_TVIDEO_DIP_VS_DATA(trans, i) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_VS_DATA_A + (i) * 4)
79918616 #define HSW_TVIDEO_DIP_SPD_DATA(trans, i) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_SPD_DATA_A + (i) * 4)
7992
-#define HSW_TVIDEO_DIP_GCP(trans) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_GCP_A)
8617
+#define HSW_TVIDEO_DIP_GMP_DATA(trans, i) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_GMP_DATA_A + (i) * 4)
79938618 #define HSW_TVIDEO_DIP_VSC_DATA(trans, i) _MMIO_TRANS2(trans, _HSW_VIDEO_DIP_VSC_DATA_A + (i) * 4)
8619
+#define GLK_TVIDEO_DIP_DRM_DATA(trans, i) _MMIO_TRANS2(trans, _GLK_VIDEO_DIP_DRM_DATA_A + (i) * 4)
79948620 #define ICL_VIDEO_DIP_PPS_DATA(trans, i) _MMIO_TRANS2(trans, _ICL_VIDEO_DIP_PPS_DATA_A + (i) * 4)
79958621 #define ICL_VIDEO_DIP_PPS_ECC(trans, i) _MMIO_TRANS2(trans, _ICL_VIDEO_DIP_PPS_ECC_A + (i) * 4)
79968622
....@@ -8043,10 +8669,8 @@
80438669 #define TRANS_STATE_MASK (1 << 30)
80448670 #define TRANS_STATE_DISABLE (0 << 30)
80458671 #define TRANS_STATE_ENABLE (1 << 30)
8046
-#define TRANS_FSYNC_DELAY_HB1 (0 << 27)
8047
-#define TRANS_FSYNC_DELAY_HB2 (1 << 27)
8048
-#define TRANS_FSYNC_DELAY_HB3 (2 << 27)
8049
-#define TRANS_FSYNC_DELAY_HB4 (3 << 27)
8672
+#define TRANS_FRAME_START_DELAY_MASK (3 << 27) /* ibx */
8673
+#define TRANS_FRAME_START_DELAY(x) ((x) << 27) /* ibx: 0-3 */
80508674 #define TRANS_INTERLACE_MASK (7 << 21)
80518675 #define TRANS_PROGRESSIVE (0 << 21)
80528676 #define TRANS_INTERLACED (3 << 21)
....@@ -8067,6 +8691,7 @@
80678691 #define TRANS_CHICKEN2_TIMING_OVERRIDE (1 << 31)
80688692 #define TRANS_CHICKEN2_FDI_POLARITY_REVERSED (1 << 29)
80698693 #define TRANS_CHICKEN2_FRAME_START_DELAY_MASK (3 << 27)
8694
+#define TRANS_CHICKEN2_FRAME_START_DELAY(x) ((x) << 27) /* 0-3 */
80708695 #define TRANS_CHICKEN2_DISABLE_DEEP_COLOR_COUNTER (1 << 26)
80718696 #define TRANS_CHICKEN2_DISABLE_DEEP_COLOR_MODESWITCH (1 << 25)
80728697
....@@ -8078,6 +8703,7 @@
80788703 #define FDI_BC_BIFURCATION_SELECT (1 << 12)
80798704 #define CHASSIS_CLK_REQ_DURATION_MASK (0xf << 8)
80808705 #define CHASSIS_CLK_REQ_DURATION(x) ((x) << 8)
8706
+#define SBCLK_RUN_REFCLK_DIS (1 << 7)
80818707 #define SPT_PWM_GRANULARITY (1 << 0)
80828708 #define SOUTH_CHICKEN2 _MMIO(0xc2004)
80838709 #define FDI_MPHY_IOSFSB_RESET_STATUS (1 << 13)
....@@ -8095,6 +8721,7 @@
80958721 #define PCH_GMBUSUNIT_CLOCK_GATE_DISABLE (1 << 31)
80968722 #define PCH_DPLUNIT_CLOCK_GATE_DISABLE (1 << 30)
80978723 #define PCH_DPLSUNIT_CLOCK_GATE_DISABLE (1 << 29)
8724
+#define PCH_DPMGUNIT_CLOCK_GATE_DISABLE (1 << 15)
80988725 #define PCH_CPUNIT_CLOCK_GATE_DISABLE (1 << 14)
80998726 #define CNP_PWM_CGE_GATING_DISABLE (1 << 13)
81008727 #define PCH_LP_PARTITION_LEVEL_DISABLE (1 << 12)
....@@ -8497,8 +9124,11 @@
84979124 #define GEN9_MEDIA_PG_IDLE_HYSTERESIS _MMIO(0xA0C4)
84989125 #define GEN9_RENDER_PG_IDLE_HYSTERESIS _MMIO(0xA0C8)
84999126 #define GEN9_PG_ENABLE _MMIO(0xA210)
8500
-#define GEN9_RENDER_PG_ENABLE (1 << 0)
8501
-#define GEN9_MEDIA_PG_ENABLE (1 << 1)
9127
+#define GEN9_RENDER_PG_ENABLE REG_BIT(0)
9128
+#define GEN9_MEDIA_PG_ENABLE REG_BIT(1)
9129
+#define GEN11_MEDIA_SAMPLER_PG_ENABLE REG_BIT(2)
9130
+#define VDN_HCP_POWERGATE_ENABLE(n) REG_BIT(3 + 2 * (n))
9131
+#define VDN_MFX_POWERGATE_ENABLE(n) REG_BIT(4 + 2 * (n))
85029132 #define GEN8_PUSHBUS_CONTROL _MMIO(0xA248)
85039133 #define GEN8_PUSHBUS_ENABLE _MMIO(0xA250)
85049134 #define GEN8_PUSHBUS_SHIFT _MMIO(0xA25C)
....@@ -8513,13 +9143,20 @@
85139143 #define GEN6_PMIER _MMIO(0x4402C)
85149144 #define GEN6_PM_MBOX_EVENT (1 << 25)
85159145 #define GEN6_PM_THERMAL_EVENT (1 << 24)
9146
+
9147
+/*
9148
+ * For Gen11 these are in the upper word of the GPM_WGBOXPERF
9149
+ * registers. Shifting is handled on accessing the imr and ier.
9150
+ */
85169151 #define GEN6_PM_RP_DOWN_TIMEOUT (1 << 6)
85179152 #define GEN6_PM_RP_UP_THRESHOLD (1 << 5)
85189153 #define GEN6_PM_RP_DOWN_THRESHOLD (1 << 4)
85199154 #define GEN6_PM_RP_UP_EI_EXPIRED (1 << 2)
85209155 #define GEN6_PM_RP_DOWN_EI_EXPIRED (1 << 1)
8521
-#define GEN6_PM_RPS_EVENTS (GEN6_PM_RP_UP_THRESHOLD | \
8522
- GEN6_PM_RP_DOWN_THRESHOLD | \
9156
+#define GEN6_PM_RPS_EVENTS (GEN6_PM_RP_UP_EI_EXPIRED | \
9157
+ GEN6_PM_RP_UP_THRESHOLD | \
9158
+ GEN6_PM_RP_DOWN_EI_EXPIRED | \
9159
+ GEN6_PM_RP_DOWN_THRESHOLD | \
85239160 GEN6_PM_RP_DOWN_TIMEOUT)
85249161
85259162 #define GEN7_GT_SCRATCH(i) _MMIO(0x4F100 + (i) * 4)
....@@ -8555,6 +9192,9 @@
85559192 #define GEN6_PCODE_UNIMPLEMENTED_CMD 0xFF
85569193 #define GEN7_PCODE_TIMEOUT 0x2
85579194 #define GEN7_PCODE_ILLEGAL_DATA 0x3
9195
+#define GEN11_PCODE_ILLEGAL_SUBCOMMAND 0x4
9196
+#define GEN11_PCODE_LOCKED 0x6
9197
+#define GEN11_PCODE_REJECTED 0x11
85589198 #define GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE 0x10
85599199 #define GEN6_PCODE_WRITE_RC6VIDS 0x4
85609200 #define GEN6_PCODE_READ_RC6VIDS 0x5
....@@ -8573,10 +9213,21 @@
85739213 #define GEN6_PCODE_WRITE_MIN_FREQ_TABLE 0x8
85749214 #define GEN6_PCODE_READ_MIN_FREQ_TABLE 0x9
85759215 #define GEN6_READ_OC_PARAMS 0xc
9216
+#define ICL_PCODE_MEM_SUBSYSYSTEM_INFO 0xd
9217
+#define ICL_PCODE_MEM_SS_READ_GLOBAL_INFO (0x0 << 8)
9218
+#define ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point) (((point) << 16) | (0x1 << 8))
9219
+#define ICL_PCODE_SAGV_DE_MEM_SS_CONFIG 0xe
9220
+#define ICL_PCODE_POINTS_RESTRICTED 0x0
9221
+#define ICL_PCODE_POINTS_RESTRICTED_MASK 0x1
85769222 #define GEN6_PCODE_READ_D_COMP 0x10
85779223 #define GEN6_PCODE_WRITE_D_COMP 0x11
9224
+#define ICL_PCODE_EXIT_TCCOLD 0x12
85789225 #define HSW_PCODE_DE_WRITE_FREQ_REQ 0x17
85799226 #define DISPLAY_IPS_CONTROL 0x19
9227
+#define TGL_PCODE_TCCOLD 0x26
9228
+#define TGL_PCODE_EXIT_TCCOLD_DATA_L_EXIT_FAILED REG_BIT(0)
9229
+#define TGL_PCODE_EXIT_TCCOLD_DATA_L_BLOCK_REQ 0
9230
+#define TGL_PCODE_EXIT_TCCOLD_DATA_L_UNBLOCK_REQ REG_BIT(0)
85809231 /* See also IPS_CTL */
85819232 #define IPS_PCODE_CONTROL (1 << 30)
85829233 #define HSW_PCODE_DYNAMIC_DUTY_CYCLE_CONTROL 0x1A
....@@ -8584,6 +9235,10 @@
85849235 #define GEN9_SAGV_DISABLE 0x0
85859236 #define GEN9_SAGV_IS_DISABLED 0x1
85869237 #define GEN9_SAGV_ENABLE 0x3
9238
+#define DG1_PCODE_STATUS 0x7E
9239
+#define DG1_UNCORE_GET_INIT_STATUS 0x0
9240
+#define DG1_UNCORE_INIT_STATUS_COMPLETE 0x1
9241
+#define GEN12_PCODE_READ_SAGV_BLOCK_TIME_US 0x23
85879242 #define GEN6_PCODE_DATA _MMIO(0x138128)
85889243 #define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8
85899244 #define GEN6_PCODE_FREQ_RING_RATIO_SHIFT 16
....@@ -8661,8 +9316,9 @@
86619316 #define GEN11_LSN_UNSLCVC_GAFS_HALF_CL2_MAXALLOC (1 << 9)
86629317 #define GEN11_LSN_UNSLCVC_GAFS_HALF_SF_MAXALLOC (1 << 7)
86639318
8664
-#define GAMW_ECO_DEV_RW_IA_REG _MMIO(0x4080)
8665
-#define GAMW_ECO_DEV_CTX_RELOAD_DISABLE (1 << 7)
9319
+#define GEN10_SAMPLER_MODE _MMIO(0xE18C)
9320
+#define ENABLE_SMALLPL REG_BIT(15)
9321
+#define GEN11_SAMPLER_ENABLE_HEADLESS_MSG REG_BIT(5)
86669322
86679323 /* IVYBRIDGE DPF */
86689324 #define GEN7_L3CDERRST1(slice) _MMIO(0xB008 + (slice) * 0x200) /* L3CD Error Status 1 */
....@@ -8699,11 +9355,18 @@
86999355 #define THROTTLE_12_5 (7 << 2)
87009356 #define DISABLE_EARLY_EOT (1 << 1)
87019357
8702
-#define GEN7_ROW_CHICKEN2 _MMIO(0xe4f4)
9358
+#define GEN7_ROW_CHICKEN2 _MMIO(0xe4f4)
9359
+#define GEN12_DISABLE_EARLY_READ REG_BIT(14)
9360
+#define GEN12_PUSH_CONST_DEREF_HOLD_DIS REG_BIT(8)
9361
+
87039362 #define GEN7_ROW_CHICKEN2_GT2 _MMIO(0xf4f4)
87049363 #define DOP_CLOCK_GATING_DISABLE (1 << 0)
87059364 #define PUSH_CONSTANT_DEREF_DISABLE (1 << 8)
87069365 #define GEN11_TDL_CLOCK_GATING_FIX_DISABLE (1 << 1)
9366
+
9367
+#define GEN9_ROW_CHICKEN4 _MMIO(0xe48c)
9368
+#define GEN12_DISABLE_TDL_PUSH REG_BIT(9)
9369
+#define GEN11_DIS_PICK_2ND_EU REG_BIT(7)
87079370
87089371 #define HSW_ROW_CHICKEN3 _MMIO(0xe49c)
87099372 #define HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE (1 << 6)
....@@ -8724,7 +9387,7 @@
87249387 #define GEN9_ENABLE_GPGPU_PREEMPTION (1 << 2)
87259388
87269389 /* Audio */
8727
-#define G4X_AUD_VID_DID _MMIO(dev_priv->info.display_mmio_offset + 0x62020)
9390
+#define G4X_AUD_VID_DID _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x62020)
87289391 #define INTEL_AUDIO_DEVCL 0x808629FB
87299392 #define INTEL_AUDIO_DEVBLC 0x80862801
87309393 #define INTEL_AUDIO_DEVCTG 0x80862802
....@@ -8805,37 +9468,41 @@
88059468 #define AUD_CONFIG_PIXEL_CLOCK_HDMI_74250 (7 << 16)
88069469 #define AUD_CONFIG_PIXEL_CLOCK_HDMI_148352 (8 << 16)
88079470 #define AUD_CONFIG_PIXEL_CLOCK_HDMI_148500 (9 << 16)
9471
+#define AUD_CONFIG_PIXEL_CLOCK_HDMI_296703 (10 << 16)
9472
+#define AUD_CONFIG_PIXEL_CLOCK_HDMI_297000 (11 << 16)
9473
+#define AUD_CONFIG_PIXEL_CLOCK_HDMI_593407 (12 << 16)
9474
+#define AUD_CONFIG_PIXEL_CLOCK_HDMI_594000 (13 << 16)
88089475 #define AUD_CONFIG_DISABLE_NCTS (1 << 3)
88099476
88109477 /* HSW Audio */
88119478 #define _HSW_AUD_CONFIG_A 0x65000
88129479 #define _HSW_AUD_CONFIG_B 0x65100
8813
-#define HSW_AUD_CFG(pipe) _MMIO_PIPE(pipe, _HSW_AUD_CONFIG_A, _HSW_AUD_CONFIG_B)
9480
+#define HSW_AUD_CFG(trans) _MMIO_TRANS(trans, _HSW_AUD_CONFIG_A, _HSW_AUD_CONFIG_B)
88149481
88159482 #define _HSW_AUD_MISC_CTRL_A 0x65010
88169483 #define _HSW_AUD_MISC_CTRL_B 0x65110
8817
-#define HSW_AUD_MISC_CTRL(pipe) _MMIO_PIPE(pipe, _HSW_AUD_MISC_CTRL_A, _HSW_AUD_MISC_CTRL_B)
9484
+#define HSW_AUD_MISC_CTRL(trans) _MMIO_TRANS(trans, _HSW_AUD_MISC_CTRL_A, _HSW_AUD_MISC_CTRL_B)
88189485
88199486 #define _HSW_AUD_M_CTS_ENABLE_A 0x65028
88209487 #define _HSW_AUD_M_CTS_ENABLE_B 0x65128
8821
-#define HSW_AUD_M_CTS_ENABLE(pipe) _MMIO_PIPE(pipe, _HSW_AUD_M_CTS_ENABLE_A, _HSW_AUD_M_CTS_ENABLE_B)
9488
+#define HSW_AUD_M_CTS_ENABLE(trans) _MMIO_TRANS(trans, _HSW_AUD_M_CTS_ENABLE_A, _HSW_AUD_M_CTS_ENABLE_B)
88229489 #define AUD_M_CTS_M_VALUE_INDEX (1 << 21)
88239490 #define AUD_M_CTS_M_PROG_ENABLE (1 << 20)
88249491 #define AUD_CONFIG_M_MASK 0xfffff
88259492
88269493 #define _HSW_AUD_DIP_ELD_CTRL_ST_A 0x650b4
88279494 #define _HSW_AUD_DIP_ELD_CTRL_ST_B 0x651b4
8828
-#define HSW_AUD_DIP_ELD_CTRL(pipe) _MMIO_PIPE(pipe, _HSW_AUD_DIP_ELD_CTRL_ST_A, _HSW_AUD_DIP_ELD_CTRL_ST_B)
9495
+#define HSW_AUD_DIP_ELD_CTRL(trans) _MMIO_TRANS(trans, _HSW_AUD_DIP_ELD_CTRL_ST_A, _HSW_AUD_DIP_ELD_CTRL_ST_B)
88299496
88309497 /* Audio Digital Converter */
88319498 #define _HSW_AUD_DIG_CNVT_1 0x65080
88329499 #define _HSW_AUD_DIG_CNVT_2 0x65180
8833
-#define AUD_DIG_CNVT(pipe) _MMIO_PIPE(pipe, _HSW_AUD_DIG_CNVT_1, _HSW_AUD_DIG_CNVT_2)
9500
+#define AUD_DIG_CNVT(trans) _MMIO_TRANS(trans, _HSW_AUD_DIG_CNVT_1, _HSW_AUD_DIG_CNVT_2)
88349501 #define DIP_PORT_SEL_MASK 0x3
88359502
88369503 #define _HSW_AUD_EDID_DATA_A 0x65050
88379504 #define _HSW_AUD_EDID_DATA_B 0x65150
8838
-#define HSW_AUD_EDID_DATA(pipe) _MMIO_PIPE(pipe, _HSW_AUD_EDID_DATA_A, _HSW_AUD_EDID_DATA_B)
9505
+#define HSW_AUD_EDID_DATA(trans) _MMIO_TRANS(trans, _HSW_AUD_EDID_DATA_A, _HSW_AUD_EDID_DATA_B)
88399506
88409507 #define HSW_AUD_PIPE_CONV_CFG _MMIO(0x6507c)
88419508 #define HSW_AUD_PIN_ELD_CP_VLD _MMIO(0x650c0)
....@@ -8847,46 +9514,117 @@
88479514 #define HSW_AUD_CHICKENBIT _MMIO(0x65f10)
88489515 #define SKL_AUD_CODEC_WAKE_SIGNAL (1 << 15)
88499516
8850
-/* HSW Power Wells */
8851
-#define _HSW_PWR_WELL_CTL1 0x45400
8852
-#define _HSW_PWR_WELL_CTL2 0x45404
8853
-#define _HSW_PWR_WELL_CTL3 0x45408
8854
-#define _HSW_PWR_WELL_CTL4 0x4540C
9517
+#define AUD_FREQ_CNTRL _MMIO(0x65900)
9518
+#define AUD_PIN_BUF_CTL _MMIO(0x48414)
9519
+#define AUD_PIN_BUF_ENABLE REG_BIT(31)
88559520
8856
-#define _ICL_PWR_WELL_CTL_AUX1 0x45440
8857
-#define _ICL_PWR_WELL_CTL_AUX2 0x45444
8858
-#define _ICL_PWR_WELL_CTL_AUX4 0x4544C
9521
+/* Display Audio Config Reg */
9522
+#define AUD_CONFIG_BE _MMIO(0x65ef0)
9523
+#define HBLANK_EARLY_ENABLE_ICL(pipe) (0x1 << (20 - (pipe)))
9524
+#define HBLANK_EARLY_ENABLE_TGL(pipe) (0x1 << (24 + (pipe)))
9525
+#define HBLANK_START_COUNT_MASK(pipe) (0x7 << (3 + ((pipe) * 6)))
9526
+#define HBLANK_START_COUNT(pipe, val) (((val) & 0x7) << (3 + ((pipe)) * 6))
9527
+#define NUMBER_SAMPLES_PER_LINE_MASK(pipe) (0x3 << ((pipe) * 6))
9528
+#define NUMBER_SAMPLES_PER_LINE(pipe, val) (((val) & 0x3) << ((pipe) * 6))
88599529
8860
-#define _ICL_PWR_WELL_CTL_DDI1 0x45450
8861
-#define _ICL_PWR_WELL_CTL_DDI2 0x45454
8862
-#define _ICL_PWR_WELL_CTL_DDI4 0x4545C
9530
+#define HBLANK_START_COUNT_8 0
9531
+#define HBLANK_START_COUNT_16 1
9532
+#define HBLANK_START_COUNT_32 2
9533
+#define HBLANK_START_COUNT_64 3
9534
+#define HBLANK_START_COUNT_96 4
9535
+#define HBLANK_START_COUNT_128 5
88639536
88649537 /*
8865
- * Each power well control register contains up to 16 (request, status) HW
8866
- * flag tuples. The register index and HW flag shift is determined by the
8867
- * power well ID (see i915_power_well_id). There are 4 possible sources of
8868
- * power well requests each source having its own set of control registers:
8869
- * BIOS, DRIVER, KVMR, DEBUG.
9538
+ * HSW - ICL power wells
9539
+ *
9540
+ * Platforms have up to 3 power well control register sets, each set
9541
+ * controlling up to 16 power wells via a request/status HW flag tuple:
9542
+ * - main (HSW_PWR_WELL_CTL[1-4])
9543
+ * - AUX (ICL_PWR_WELL_CTL_AUX[1-4])
9544
+ * - DDI (ICL_PWR_WELL_CTL_DDI[1-4])
9545
+ * Each control register set consists of up to 4 registers used by different
9546
+ * sources that can request a power well to be enabled:
9547
+ * - BIOS (HSW_PWR_WELL_CTL1/ICL_PWR_WELL_CTL_AUX1/ICL_PWR_WELL_CTL_DDI1)
9548
+ * - DRIVER (HSW_PWR_WELL_CTL2/ICL_PWR_WELL_CTL_AUX2/ICL_PWR_WELL_CTL_DDI2)
9549
+ * - KVMR (HSW_PWR_WELL_CTL3) (only in the main register set)
9550
+ * - DEBUG (HSW_PWR_WELL_CTL4/ICL_PWR_WELL_CTL_AUX4/ICL_PWR_WELL_CTL_DDI4)
88709551 */
8871
-#define _HSW_PW_REG_IDX(pw) ((pw) >> 4)
8872
-#define _HSW_PW_SHIFT(pw) (((pw) & 0xf) * 2)
8873
-#define HSW_PWR_WELL_CTL_BIOS(pw) _MMIO(_PICK(_HSW_PW_REG_IDX(pw), \
8874
- _HSW_PWR_WELL_CTL1, \
8875
- _ICL_PWR_WELL_CTL_AUX1, \
8876
- _ICL_PWR_WELL_CTL_DDI1))
8877
-#define HSW_PWR_WELL_CTL_DRIVER(pw) _MMIO(_PICK(_HSW_PW_REG_IDX(pw), \
8878
- _HSW_PWR_WELL_CTL2, \
8879
- _ICL_PWR_WELL_CTL_AUX2, \
8880
- _ICL_PWR_WELL_CTL_DDI2))
8881
-/* KVMR doesn't have a reg for AUX or DDI power well control */
8882
-#define HSW_PWR_WELL_CTL_KVMR _MMIO(_HSW_PWR_WELL_CTL3)
8883
-#define HSW_PWR_WELL_CTL_DEBUG(pw) _MMIO(_PICK(_HSW_PW_REG_IDX(pw), \
8884
- _HSW_PWR_WELL_CTL4, \
8885
- _ICL_PWR_WELL_CTL_AUX4, \
8886
- _ICL_PWR_WELL_CTL_DDI4))
9552
+#define HSW_PWR_WELL_CTL1 _MMIO(0x45400)
9553
+#define HSW_PWR_WELL_CTL2 _MMIO(0x45404)
9554
+#define HSW_PWR_WELL_CTL3 _MMIO(0x45408)
9555
+#define HSW_PWR_WELL_CTL4 _MMIO(0x4540C)
9556
+#define HSW_PWR_WELL_CTL_REQ(pw_idx) (0x2 << ((pw_idx) * 2))
9557
+#define HSW_PWR_WELL_CTL_STATE(pw_idx) (0x1 << ((pw_idx) * 2))
88879558
8888
-#define HSW_PWR_WELL_CTL_REQ(pw) (1 << (_HSW_PW_SHIFT(pw) + 1))
8889
-#define HSW_PWR_WELL_CTL_STATE(pw) (1 << _HSW_PW_SHIFT(pw))
9559
+/* HSW/BDW power well */
9560
+#define HSW_PW_CTL_IDX_GLOBAL 15
9561
+
9562
+/* SKL/BXT/GLK/CNL power wells */
9563
+#define SKL_PW_CTL_IDX_PW_2 15
9564
+#define SKL_PW_CTL_IDX_PW_1 14
9565
+#define CNL_PW_CTL_IDX_AUX_F 12
9566
+#define CNL_PW_CTL_IDX_AUX_D 11
9567
+#define GLK_PW_CTL_IDX_AUX_C 10
9568
+#define GLK_PW_CTL_IDX_AUX_B 9
9569
+#define GLK_PW_CTL_IDX_AUX_A 8
9570
+#define CNL_PW_CTL_IDX_DDI_F 6
9571
+#define SKL_PW_CTL_IDX_DDI_D 4
9572
+#define SKL_PW_CTL_IDX_DDI_C 3
9573
+#define SKL_PW_CTL_IDX_DDI_B 2
9574
+#define SKL_PW_CTL_IDX_DDI_A_E 1
9575
+#define GLK_PW_CTL_IDX_DDI_A 1
9576
+#define SKL_PW_CTL_IDX_MISC_IO 0
9577
+
9578
+/* ICL/TGL - power wells */
9579
+#define TGL_PW_CTL_IDX_PW_5 4
9580
+#define ICL_PW_CTL_IDX_PW_4 3
9581
+#define ICL_PW_CTL_IDX_PW_3 2
9582
+#define ICL_PW_CTL_IDX_PW_2 1
9583
+#define ICL_PW_CTL_IDX_PW_1 0
9584
+
9585
+#define ICL_PWR_WELL_CTL_AUX1 _MMIO(0x45440)
9586
+#define ICL_PWR_WELL_CTL_AUX2 _MMIO(0x45444)
9587
+#define ICL_PWR_WELL_CTL_AUX4 _MMIO(0x4544C)
9588
+#define TGL_PW_CTL_IDX_AUX_TBT6 14
9589
+#define TGL_PW_CTL_IDX_AUX_TBT5 13
9590
+#define TGL_PW_CTL_IDX_AUX_TBT4 12
9591
+#define ICL_PW_CTL_IDX_AUX_TBT4 11
9592
+#define TGL_PW_CTL_IDX_AUX_TBT3 11
9593
+#define ICL_PW_CTL_IDX_AUX_TBT3 10
9594
+#define TGL_PW_CTL_IDX_AUX_TBT2 10
9595
+#define ICL_PW_CTL_IDX_AUX_TBT2 9
9596
+#define TGL_PW_CTL_IDX_AUX_TBT1 9
9597
+#define ICL_PW_CTL_IDX_AUX_TBT1 8
9598
+#define TGL_PW_CTL_IDX_AUX_TC6 8
9599
+#define TGL_PW_CTL_IDX_AUX_TC5 7
9600
+#define TGL_PW_CTL_IDX_AUX_TC4 6
9601
+#define ICL_PW_CTL_IDX_AUX_F 5
9602
+#define TGL_PW_CTL_IDX_AUX_TC3 5
9603
+#define ICL_PW_CTL_IDX_AUX_E 4
9604
+#define TGL_PW_CTL_IDX_AUX_TC2 4
9605
+#define ICL_PW_CTL_IDX_AUX_D 3
9606
+#define TGL_PW_CTL_IDX_AUX_TC1 3
9607
+#define ICL_PW_CTL_IDX_AUX_C 2
9608
+#define ICL_PW_CTL_IDX_AUX_B 1
9609
+#define ICL_PW_CTL_IDX_AUX_A 0
9610
+
9611
+#define ICL_PWR_WELL_CTL_DDI1 _MMIO(0x45450)
9612
+#define ICL_PWR_WELL_CTL_DDI2 _MMIO(0x45454)
9613
+#define ICL_PWR_WELL_CTL_DDI4 _MMIO(0x4545C)
9614
+#define TGL_PW_CTL_IDX_DDI_TC6 8
9615
+#define TGL_PW_CTL_IDX_DDI_TC5 7
9616
+#define TGL_PW_CTL_IDX_DDI_TC4 6
9617
+#define ICL_PW_CTL_IDX_DDI_F 5
9618
+#define TGL_PW_CTL_IDX_DDI_TC3 5
9619
+#define ICL_PW_CTL_IDX_DDI_E 4
9620
+#define TGL_PW_CTL_IDX_DDI_TC2 4
9621
+#define ICL_PW_CTL_IDX_DDI_D 3
9622
+#define TGL_PW_CTL_IDX_DDI_TC1 3
9623
+#define ICL_PW_CTL_IDX_DDI_C 2
9624
+#define ICL_PW_CTL_IDX_DDI_B 1
9625
+#define ICL_PW_CTL_IDX_DDI_A 0
9626
+
9627
+/* HSW - power well misc debug registers */
88909628 #define HSW_PWR_WELL_CTL5 _MMIO(0x45410)
88919629 #define HSW_PWR_WELL_ENABLE_SINGLE_STEP (1 << 31)
88929630 #define HSW_PWR_WELL_PWR_GATE_OVERRIDE (1 << 20)
....@@ -8898,28 +9636,47 @@
88989636 SKL_PG0,
88999637 SKL_PG1,
89009638 SKL_PG2,
9639
+ ICL_PG3,
9640
+ ICL_PG4,
89019641 };
89029642
89039643 #define SKL_FUSE_STATUS _MMIO(0x42000)
89049644 #define SKL_FUSE_DOWNLOAD_STATUS (1 << 31)
8905
-/* PG0 (HW control->no power well ID), PG1..PG2 (SKL_DISP_PW1..SKL_DISP_PW2) */
8906
-#define SKL_PW_TO_PG(pw) ((pw) - SKL_DISP_PW_1 + SKL_PG1)
8907
-/* PG0 (HW control->no power well ID), PG1..PG4 (ICL_DISP_PW1..ICL_DISP_PW4) */
8908
-#define ICL_PW_TO_PG(pw) ((pw) - ICL_DISP_PW_1 + SKL_PG1)
9645
+/*
9646
+ * PG0 is HW controlled, so doesn't have a corresponding power well control knob
9647
+ * SKL_DISP_PW1_IDX..SKL_DISP_PW2_IDX -> PG1..PG2
9648
+ */
9649
+#define SKL_PW_CTL_IDX_TO_PG(pw_idx) \
9650
+ ((pw_idx) - SKL_PW_CTL_IDX_PW_1 + SKL_PG1)
9651
+/*
9652
+ * PG0 is HW controlled, so doesn't have a corresponding power well control knob
9653
+ * ICL_DISP_PW1_IDX..ICL_DISP_PW4_IDX -> PG1..PG4
9654
+ */
9655
+#define ICL_PW_CTL_IDX_TO_PG(pw_idx) \
9656
+ ((pw_idx) - ICL_PW_CTL_IDX_PW_1 + SKL_PG1)
89099657 #define SKL_FUSE_PG_DIST_STATUS(pg) (1 << (27 - (pg)))
89109658
8911
-#define _CNL_AUX_REG_IDX(pw) ((pw) - 9)
9659
+#define _CNL_AUX_REG_IDX(pw_idx) ((pw_idx) - GLK_PW_CTL_IDX_AUX_B)
89129660 #define _CNL_AUX_ANAOVRD1_B 0x162250
89139661 #define _CNL_AUX_ANAOVRD1_C 0x162210
89149662 #define _CNL_AUX_ANAOVRD1_D 0x1622D0
89159663 #define _CNL_AUX_ANAOVRD1_F 0x162A90
8916
-#define CNL_AUX_ANAOVRD1(pw) _MMIO(_PICK(_CNL_AUX_REG_IDX(pw), \
9664
+#define CNL_AUX_ANAOVRD1(pw_idx) _MMIO(_PICK(_CNL_AUX_REG_IDX(pw_idx), \
89179665 _CNL_AUX_ANAOVRD1_B, \
89189666 _CNL_AUX_ANAOVRD1_C, \
89199667 _CNL_AUX_ANAOVRD1_D, \
89209668 _CNL_AUX_ANAOVRD1_F))
89219669 #define CNL_AUX_ANAOVRD1_ENABLE (1 << 16)
89229670 #define CNL_AUX_ANAOVRD1_LDO_BYPASS (1 << 23)
9671
+
9672
+#define _ICL_AUX_REG_IDX(pw_idx) ((pw_idx) - ICL_PW_CTL_IDX_AUX_A)
9673
+#define _ICL_AUX_ANAOVRD1_A 0x162398
9674
+#define _ICL_AUX_ANAOVRD1_B 0x6C398
9675
+#define ICL_AUX_ANAOVRD1(pw_idx) _MMIO(_PICK(_ICL_AUX_REG_IDX(pw_idx), \
9676
+ _ICL_AUX_ANAOVRD1_A, \
9677
+ _ICL_AUX_ANAOVRD1_B))
9678
+#define ICL_AUX_ANAOVRD1_LDO_BYPASS (1 << 7)
9679
+#define ICL_AUX_ANAOVRD1_ENABLE (1 << 0)
89239680
89249681 /* HDCP Key Registers */
89259682 #define HDCP_KEY_CONF _MMIO(0x66c00)
....@@ -8937,12 +9694,20 @@
89379694
89389695 /* HDCP Repeater Registers */
89399696 #define HDCP_REP_CTL _MMIO(0x66d00)
9697
+#define HDCP_TRANSA_REP_PRESENT BIT(31)
9698
+#define HDCP_TRANSB_REP_PRESENT BIT(30)
9699
+#define HDCP_TRANSC_REP_PRESENT BIT(29)
9700
+#define HDCP_TRANSD_REP_PRESENT BIT(28)
89409701 #define HDCP_DDIB_REP_PRESENT BIT(30)
89419702 #define HDCP_DDIA_REP_PRESENT BIT(29)
89429703 #define HDCP_DDIC_REP_PRESENT BIT(28)
89439704 #define HDCP_DDID_REP_PRESENT BIT(27)
89449705 #define HDCP_DDIF_REP_PRESENT BIT(26)
89459706 #define HDCP_DDIE_REP_PRESENT BIT(25)
9707
+#define HDCP_TRANSA_SHA1_M0 (1 << 20)
9708
+#define HDCP_TRANSB_SHA1_M0 (2 << 20)
9709
+#define HDCP_TRANSC_SHA1_M0 (3 << 20)
9710
+#define HDCP_TRANSD_SHA1_M0 (4 << 20)
89469711 #define HDCP_DDIB_SHA1_M0 (1 << 20)
89479712 #define HDCP_DDIA_SHA1_M0 (2 << 20)
89489713 #define HDCP_DDIC_SHA1_M0 (3 << 20)
....@@ -8982,15 +9747,92 @@
89829747 _PORTE_HDCP_AUTHENC, \
89839748 _PORTF_HDCP_AUTHENC) + (x))
89849749 #define PORT_HDCP_CONF(port) _PORT_HDCP_AUTHENC(port, 0x0)
9750
+#define _TRANSA_HDCP_CONF 0x66400
9751
+#define _TRANSB_HDCP_CONF 0x66500
9752
+#define TRANS_HDCP_CONF(trans) _MMIO_TRANS(trans, _TRANSA_HDCP_CONF, \
9753
+ _TRANSB_HDCP_CONF)
9754
+#define HDCP_CONF(dev_priv, trans, port) \
9755
+ (INTEL_GEN(dev_priv) >= 12 ? \
9756
+ TRANS_HDCP_CONF(trans) : \
9757
+ PORT_HDCP_CONF(port))
9758
+
89859759 #define HDCP_CONF_CAPTURE_AN BIT(0)
89869760 #define HDCP_CONF_AUTH_AND_ENC (BIT(1) | BIT(0))
89879761 #define PORT_HDCP_ANINIT(port) _PORT_HDCP_AUTHENC(port, 0x4)
9762
+#define _TRANSA_HDCP_ANINIT 0x66404
9763
+#define _TRANSB_HDCP_ANINIT 0x66504
9764
+#define TRANS_HDCP_ANINIT(trans) _MMIO_TRANS(trans, \
9765
+ _TRANSA_HDCP_ANINIT, \
9766
+ _TRANSB_HDCP_ANINIT)
9767
+#define HDCP_ANINIT(dev_priv, trans, port) \
9768
+ (INTEL_GEN(dev_priv) >= 12 ? \
9769
+ TRANS_HDCP_ANINIT(trans) : \
9770
+ PORT_HDCP_ANINIT(port))
9771
+
89889772 #define PORT_HDCP_ANLO(port) _PORT_HDCP_AUTHENC(port, 0x8)
9773
+#define _TRANSA_HDCP_ANLO 0x66408
9774
+#define _TRANSB_HDCP_ANLO 0x66508
9775
+#define TRANS_HDCP_ANLO(trans) _MMIO_TRANS(trans, _TRANSA_HDCP_ANLO, \
9776
+ _TRANSB_HDCP_ANLO)
9777
+#define HDCP_ANLO(dev_priv, trans, port) \
9778
+ (INTEL_GEN(dev_priv) >= 12 ? \
9779
+ TRANS_HDCP_ANLO(trans) : \
9780
+ PORT_HDCP_ANLO(port))
9781
+
89899782 #define PORT_HDCP_ANHI(port) _PORT_HDCP_AUTHENC(port, 0xC)
9783
+#define _TRANSA_HDCP_ANHI 0x6640C
9784
+#define _TRANSB_HDCP_ANHI 0x6650C
9785
+#define TRANS_HDCP_ANHI(trans) _MMIO_TRANS(trans, _TRANSA_HDCP_ANHI, \
9786
+ _TRANSB_HDCP_ANHI)
9787
+#define HDCP_ANHI(dev_priv, trans, port) \
9788
+ (INTEL_GEN(dev_priv) >= 12 ? \
9789
+ TRANS_HDCP_ANHI(trans) : \
9790
+ PORT_HDCP_ANHI(port))
9791
+
89909792 #define PORT_HDCP_BKSVLO(port) _PORT_HDCP_AUTHENC(port, 0x10)
9793
+#define _TRANSA_HDCP_BKSVLO 0x66410
9794
+#define _TRANSB_HDCP_BKSVLO 0x66510
9795
+#define TRANS_HDCP_BKSVLO(trans) _MMIO_TRANS(trans, \
9796
+ _TRANSA_HDCP_BKSVLO, \
9797
+ _TRANSB_HDCP_BKSVLO)
9798
+#define HDCP_BKSVLO(dev_priv, trans, port) \
9799
+ (INTEL_GEN(dev_priv) >= 12 ? \
9800
+ TRANS_HDCP_BKSVLO(trans) : \
9801
+ PORT_HDCP_BKSVLO(port))
9802
+
89919803 #define PORT_HDCP_BKSVHI(port) _PORT_HDCP_AUTHENC(port, 0x14)
9804
+#define _TRANSA_HDCP_BKSVHI 0x66414
9805
+#define _TRANSB_HDCP_BKSVHI 0x66514
9806
+#define TRANS_HDCP_BKSVHI(trans) _MMIO_TRANS(trans, \
9807
+ _TRANSA_HDCP_BKSVHI, \
9808
+ _TRANSB_HDCP_BKSVHI)
9809
+#define HDCP_BKSVHI(dev_priv, trans, port) \
9810
+ (INTEL_GEN(dev_priv) >= 12 ? \
9811
+ TRANS_HDCP_BKSVHI(trans) : \
9812
+ PORT_HDCP_BKSVHI(port))
9813
+
89929814 #define PORT_HDCP_RPRIME(port) _PORT_HDCP_AUTHENC(port, 0x18)
9815
+#define _TRANSA_HDCP_RPRIME 0x66418
9816
+#define _TRANSB_HDCP_RPRIME 0x66518
9817
+#define TRANS_HDCP_RPRIME(trans) _MMIO_TRANS(trans, \
9818
+ _TRANSA_HDCP_RPRIME, \
9819
+ _TRANSB_HDCP_RPRIME)
9820
+#define HDCP_RPRIME(dev_priv, trans, port) \
9821
+ (INTEL_GEN(dev_priv) >= 12 ? \
9822
+ TRANS_HDCP_RPRIME(trans) : \
9823
+ PORT_HDCP_RPRIME(port))
9824
+
89939825 #define PORT_HDCP_STATUS(port) _PORT_HDCP_AUTHENC(port, 0x1C)
9826
+#define _TRANSA_HDCP_STATUS 0x6641C
9827
+#define _TRANSB_HDCP_STATUS 0x6651C
9828
+#define TRANS_HDCP_STATUS(trans) _MMIO_TRANS(trans, \
9829
+ _TRANSA_HDCP_STATUS, \
9830
+ _TRANSB_HDCP_STATUS)
9831
+#define HDCP_STATUS(dev_priv, trans, port) \
9832
+ (INTEL_GEN(dev_priv) >= 12 ? \
9833
+ TRANS_HDCP_STATUS(trans) : \
9834
+ PORT_HDCP_STATUS(port))
9835
+
89949836 #define HDCP_STATUS_STREAM_A_ENC BIT(31)
89959837 #define HDCP_STATUS_STREAM_B_ENC BIT(30)
89969838 #define HDCP_STATUS_STREAM_C_ENC BIT(29)
....@@ -9003,19 +9845,79 @@
90039845 #define HDCP_STATUS_CIPHER BIT(16)
90049846 #define HDCP_STATUS_FRAME_CNT(x) (((x) >> 8) & 0xff)
90059847
9848
+/* HDCP2.2 Registers */
9849
+#define _PORTA_HDCP2_BASE 0x66800
9850
+#define _PORTB_HDCP2_BASE 0x66500
9851
+#define _PORTC_HDCP2_BASE 0x66600
9852
+#define _PORTD_HDCP2_BASE 0x66700
9853
+#define _PORTE_HDCP2_BASE 0x66A00
9854
+#define _PORTF_HDCP2_BASE 0x66900
9855
+#define _PORT_HDCP2_BASE(port, x) _MMIO(_PICK((port), \
9856
+ _PORTA_HDCP2_BASE, \
9857
+ _PORTB_HDCP2_BASE, \
9858
+ _PORTC_HDCP2_BASE, \
9859
+ _PORTD_HDCP2_BASE, \
9860
+ _PORTE_HDCP2_BASE, \
9861
+ _PORTF_HDCP2_BASE) + (x))
9862
+#define PORT_HDCP2_AUTH(port) _PORT_HDCP2_BASE(port, 0x98)
9863
+#define _TRANSA_HDCP2_AUTH 0x66498
9864
+#define _TRANSB_HDCP2_AUTH 0x66598
9865
+#define TRANS_HDCP2_AUTH(trans) _MMIO_TRANS(trans, _TRANSA_HDCP2_AUTH, \
9866
+ _TRANSB_HDCP2_AUTH)
9867
+#define AUTH_LINK_AUTHENTICATED BIT(31)
9868
+#define AUTH_LINK_TYPE BIT(30)
9869
+#define AUTH_FORCE_CLR_INPUTCTR BIT(19)
9870
+#define AUTH_CLR_KEYS BIT(18)
9871
+#define HDCP2_AUTH(dev_priv, trans, port) \
9872
+ (INTEL_GEN(dev_priv) >= 12 ? \
9873
+ TRANS_HDCP2_AUTH(trans) : \
9874
+ PORT_HDCP2_AUTH(port))
9875
+
9876
+#define PORT_HDCP2_CTL(port) _PORT_HDCP2_BASE(port, 0xB0)
9877
+#define _TRANSA_HDCP2_CTL 0x664B0
9878
+#define _TRANSB_HDCP2_CTL 0x665B0
9879
+#define TRANS_HDCP2_CTL(trans) _MMIO_TRANS(trans, _TRANSA_HDCP2_CTL, \
9880
+ _TRANSB_HDCP2_CTL)
9881
+#define CTL_LINK_ENCRYPTION_REQ BIT(31)
9882
+#define HDCP2_CTL(dev_priv, trans, port) \
9883
+ (INTEL_GEN(dev_priv) >= 12 ? \
9884
+ TRANS_HDCP2_CTL(trans) : \
9885
+ PORT_HDCP2_CTL(port))
9886
+
9887
+#define PORT_HDCP2_STATUS(port) _PORT_HDCP2_BASE(port, 0xB4)
9888
+#define _TRANSA_HDCP2_STATUS 0x664B4
9889
+#define _TRANSB_HDCP2_STATUS 0x665B4
9890
+#define TRANS_HDCP2_STATUS(trans) _MMIO_TRANS(trans, \
9891
+ _TRANSA_HDCP2_STATUS, \
9892
+ _TRANSB_HDCP2_STATUS)
9893
+#define LINK_TYPE_STATUS BIT(22)
9894
+#define LINK_AUTH_STATUS BIT(21)
9895
+#define LINK_ENCRYPTION_STATUS BIT(20)
9896
+#define HDCP2_STATUS(dev_priv, trans, port) \
9897
+ (INTEL_GEN(dev_priv) >= 12 ? \
9898
+ TRANS_HDCP2_STATUS(trans) : \
9899
+ PORT_HDCP2_STATUS(port))
9900
+
90069901 /* Per-pipe DDI Function Control */
90079902 #define _TRANS_DDI_FUNC_CTL_A 0x60400
90089903 #define _TRANS_DDI_FUNC_CTL_B 0x61400
90099904 #define _TRANS_DDI_FUNC_CTL_C 0x62400
9905
+#define _TRANS_DDI_FUNC_CTL_D 0x63400
90109906 #define _TRANS_DDI_FUNC_CTL_EDP 0x6F400
9907
+#define _TRANS_DDI_FUNC_CTL_DSI0 0x6b400
9908
+#define _TRANS_DDI_FUNC_CTL_DSI1 0x6bc00
90119909 #define TRANS_DDI_FUNC_CTL(tran) _MMIO_TRANS2(tran, _TRANS_DDI_FUNC_CTL_A)
90129910
90139911 #define TRANS_DDI_FUNC_ENABLE (1 << 31)
90149912 /* Those bits are ignored by pipe EDP since it can only connect to DDI A */
9015
-#define TRANS_DDI_PORT_MASK (7 << 28)
90169913 #define TRANS_DDI_PORT_SHIFT 28
9017
-#define TRANS_DDI_SELECT_PORT(x) ((x) << 28)
9018
-#define TRANS_DDI_PORT_NONE (0 << 28)
9914
+#define TGL_TRANS_DDI_PORT_SHIFT 27
9915
+#define TRANS_DDI_PORT_MASK (7 << TRANS_DDI_PORT_SHIFT)
9916
+#define TGL_TRANS_DDI_PORT_MASK (0xf << TGL_TRANS_DDI_PORT_SHIFT)
9917
+#define TRANS_DDI_SELECT_PORT(x) ((x) << TRANS_DDI_PORT_SHIFT)
9918
+#define TGL_TRANS_DDI_SELECT_PORT(x) (((x) + 1) << TGL_TRANS_DDI_PORT_SHIFT)
9919
+#define TRANS_DDI_FUNC_CTL_VAL_TO_PORT(val) (((val) & TRANS_DDI_PORT_MASK) >> TRANS_DDI_PORT_SHIFT)
9920
+#define TGL_TRANS_DDI_FUNC_CTL_VAL_TO_PORT(val) ((((val) & TGL_TRANS_DDI_PORT_MASK) >> TGL_TRANS_DDI_PORT_SHIFT) - 1)
90199921 #define TRANS_DDI_MODE_SELECT_MASK (7 << 24)
90209922 #define TRANS_DDI_MODE_SELECT_HDMI (0 << 24)
90219923 #define TRANS_DDI_MODE_SELECT_DVI (1 << 24)
....@@ -9027,13 +9929,20 @@
90279929 #define TRANS_DDI_BPC_10 (1 << 20)
90289930 #define TRANS_DDI_BPC_6 (2 << 20)
90299931 #define TRANS_DDI_BPC_12 (3 << 20)
9932
+#define TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK REG_GENMASK(19, 18) /* bdw-cnl */
9933
+#define TRANS_DDI_PORT_SYNC_MASTER_SELECT(x) REG_FIELD_PREP(TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK, (x))
90309934 #define TRANS_DDI_PVSYNC (1 << 17)
90319935 #define TRANS_DDI_PHSYNC (1 << 16)
9936
+#define TRANS_DDI_PORT_SYNC_ENABLE REG_BIT(15) /* bdw-cnl */
90329937 #define TRANS_DDI_EDP_INPUT_MASK (7 << 12)
90339938 #define TRANS_DDI_EDP_INPUT_A_ON (0 << 12)
90349939 #define TRANS_DDI_EDP_INPUT_A_ONOFF (4 << 12)
90359940 #define TRANS_DDI_EDP_INPUT_B_ONOFF (5 << 12)
90369941 #define TRANS_DDI_EDP_INPUT_C_ONOFF (6 << 12)
9942
+#define TRANS_DDI_EDP_INPUT_D_ONOFF (7 << 12)
9943
+#define TRANS_DDI_MST_TRANSPORT_SELECT_MASK REG_GENMASK(11, 10)
9944
+#define TRANS_DDI_MST_TRANSPORT_SELECT(trans) \
9945
+ REG_FIELD_PREP(TRANS_DDI_MST_TRANSPORT_SELECT_MASK, trans)
90379946 #define TRANS_DDI_HDCP_SIGNALLING (1 << 9)
90389947 #define TRANS_DDI_DP_VC_PAYLOAD_ALLOC (1 << 8)
90399948 #define TRANS_DDI_HDMI_SCRAMBLER_CTS_ENABLE (1 << 7)
....@@ -9045,11 +9954,25 @@
90459954 | TRANS_DDI_HDMI_SCRAMBLER_RESET_FREQ \
90469955 | TRANS_DDI_HDMI_SCRAMBLING)
90479956
9957
+#define _TRANS_DDI_FUNC_CTL2_A 0x60404
9958
+#define _TRANS_DDI_FUNC_CTL2_B 0x61404
9959
+#define _TRANS_DDI_FUNC_CTL2_C 0x62404
9960
+#define _TRANS_DDI_FUNC_CTL2_EDP 0x6f404
9961
+#define _TRANS_DDI_FUNC_CTL2_DSI0 0x6b404
9962
+#define _TRANS_DDI_FUNC_CTL2_DSI1 0x6bc04
9963
+#define TRANS_DDI_FUNC_CTL2(tran) _MMIO_TRANS2(tran, _TRANS_DDI_FUNC_CTL2_A)
9964
+#define PORT_SYNC_MODE_ENABLE REG_BIT(4)
9965
+#define PORT_SYNC_MODE_MASTER_SELECT_MASK REG_GENMASK(2, 0)
9966
+#define PORT_SYNC_MODE_MASTER_SELECT(x) REG_FIELD_PREP(PORT_SYNC_MODE_MASTER_SELECT_MASK, (x))
9967
+
90489968 /* DisplayPort Transport Control */
90499969 #define _DP_TP_CTL_A 0x64040
90509970 #define _DP_TP_CTL_B 0x64140
9971
+#define _TGL_DP_TP_CTL_A 0x60540
90519972 #define DP_TP_CTL(port) _MMIO_PORT(port, _DP_TP_CTL_A, _DP_TP_CTL_B)
9973
+#define TGL_DP_TP_CTL(tran) _MMIO_TRANS2((tran), _TGL_DP_TP_CTL_A)
90529974 #define DP_TP_CTL_ENABLE (1 << 31)
9975
+#define DP_TP_CTL_FEC_ENABLE (1 << 30)
90539976 #define DP_TP_CTL_MODE_SST (0 << 27)
90549977 #define DP_TP_CTL_MODE_MST (1 << 27)
90559978 #define DP_TP_CTL_FORCE_ACT (1 << 25)
....@@ -9067,7 +9990,10 @@
90679990 /* DisplayPort Transport Status */
90689991 #define _DP_TP_STATUS_A 0x64044
90699992 #define _DP_TP_STATUS_B 0x64144
9993
+#define _TGL_DP_TP_STATUS_A 0x60544
90709994 #define DP_TP_STATUS(port) _MMIO_PORT(port, _DP_TP_STATUS_A, _DP_TP_STATUS_B)
9995
+#define TGL_DP_TP_STATUS(tran) _MMIO_TRANS2((tran), _TGL_DP_TP_STATUS_A)
9996
+#define DP_TP_STATUS_FEC_ENABLE_LIVE (1 << 28)
90719997 #define DP_TP_STATUS_IDLE_DONE (1 << 25)
90729998 #define DP_TP_STATUS_ACT_SENT (1 << 24)
90739999 #define DP_TP_STATUS_MODE_STATUS_MST (1 << 23)
....@@ -9097,6 +10023,24 @@
909710023 #define DDI_BUF_TRANS_LO(port, i) _MMIO(_PORT(port, _DDI_BUF_TRANS_A, _DDI_BUF_TRANS_B) + (i) * 8)
909810024 #define DDI_BUF_BALANCE_LEG_ENABLE (1 << 31)
909910025 #define DDI_BUF_TRANS_HI(port, i) _MMIO(_PORT(port, _DDI_BUF_TRANS_A, _DDI_BUF_TRANS_B) + (i) * 8 + 4)
10026
+
10027
+/* DDI DP Compliance Control */
10028
+#define _DDI_DP_COMP_CTL_A 0x605F0
10029
+#define _DDI_DP_COMP_CTL_B 0x615F0
10030
+#define DDI_DP_COMP_CTL(pipe) _MMIO_PIPE(pipe, _DDI_DP_COMP_CTL_A, _DDI_DP_COMP_CTL_B)
10031
+#define DDI_DP_COMP_CTL_ENABLE (1 << 31)
10032
+#define DDI_DP_COMP_CTL_D10_2 (0 << 28)
10033
+#define DDI_DP_COMP_CTL_SCRAMBLED_0 (1 << 28)
10034
+#define DDI_DP_COMP_CTL_PRBS7 (2 << 28)
10035
+#define DDI_DP_COMP_CTL_CUSTOM80 (3 << 28)
10036
+#define DDI_DP_COMP_CTL_HBR2 (4 << 28)
10037
+#define DDI_DP_COMP_CTL_SCRAMBLED_1 (5 << 28)
10038
+#define DDI_DP_COMP_CTL_HBR2_RESET (0xFC << 0)
10039
+
10040
+/* DDI DP Compliance Pattern */
10041
+#define _DDI_DP_COMP_PAT_A 0x605F4
10042
+#define _DDI_DP_COMP_PAT_B 0x615F4
10043
+#define DDI_DP_COMP_PAT(pipe, i) _MMIO(_PIPE(pipe, _DDI_DP_COMP_PAT_A, _DDI_DP_COMP_PAT_B) + (i) * 4)
910010044
910110045 /* Sideband Interface (SBI) is programmed indirectly, via
910210046 * SBI_ADDR, which contains the register offset; and SBI_DATA,
....@@ -9147,24 +10091,28 @@
914710091 /* SPLL */
914810092 #define SPLL_CTL _MMIO(0x46020)
914910093 #define SPLL_PLL_ENABLE (1 << 31)
9150
-#define SPLL_PLL_SSC (1 << 28)
9151
-#define SPLL_PLL_NON_SSC (2 << 28)
9152
-#define SPLL_PLL_LCPLL (3 << 28)
9153
-#define SPLL_PLL_REF_MASK (3 << 28)
9154
-#define SPLL_PLL_FREQ_810MHz (0 << 26)
9155
-#define SPLL_PLL_FREQ_1350MHz (1 << 26)
9156
-#define SPLL_PLL_FREQ_2700MHz (2 << 26)
9157
-#define SPLL_PLL_FREQ_MASK (3 << 26)
10094
+#define SPLL_REF_BCLK (0 << 28)
10095
+#define SPLL_REF_MUXED_SSC (1 << 28) /* CPU SSC if fused enabled, PCH SSC otherwise */
10096
+#define SPLL_REF_NON_SSC_HSW (2 << 28)
10097
+#define SPLL_REF_PCH_SSC_BDW (2 << 28)
10098
+#define SPLL_REF_LCPLL (3 << 28)
10099
+#define SPLL_REF_MASK (3 << 28)
10100
+#define SPLL_FREQ_810MHz (0 << 26)
10101
+#define SPLL_FREQ_1350MHz (1 << 26)
10102
+#define SPLL_FREQ_2700MHz (2 << 26)
10103
+#define SPLL_FREQ_MASK (3 << 26)
915810104
915910105 /* WRPLL */
916010106 #define _WRPLL_CTL1 0x46040
916110107 #define _WRPLL_CTL2 0x46060
916210108 #define WRPLL_CTL(pll) _MMIO_PIPE(pll, _WRPLL_CTL1, _WRPLL_CTL2)
916310109 #define WRPLL_PLL_ENABLE (1 << 31)
9164
-#define WRPLL_PLL_SSC (1 << 28)
9165
-#define WRPLL_PLL_NON_SSC (2 << 28)
9166
-#define WRPLL_PLL_LCPLL (3 << 28)
9167
-#define WRPLL_PLL_REF_MASK (3 << 28)
10110
+#define WRPLL_REF_BCLK (0 << 28)
10111
+#define WRPLL_REF_PCH_SSC (1 << 28)
10112
+#define WRPLL_REF_MUXED_SSC_BDW (2 << 28) /* CPU SSC if fused enabled, PCH SSC otherwise */
10113
+#define WRPLL_REF_SPECIAL_HSW (2 << 28) /* muxed SSC (ULT), non-SSC (non-ULT) */
10114
+#define WRPLL_REF_LCPLL (3 << 28)
10115
+#define WRPLL_REF_MASK (3 << 28)
916810116 /* WRPLL divider programming */
916910117 #define WRPLL_DIVIDER_REFERENCE(x) ((x) << 0)
917010118 #define WRPLL_DIVIDER_REF_MASK (0xff)
....@@ -9206,6 +10154,9 @@
920610154 /* For each transcoder, we need to select the corresponding port clock */
920710155 #define TRANS_CLK_SEL_DISABLED (0x0 << 29)
920810156 #define TRANS_CLK_SEL_PORT(x) (((x) + 1) << 29)
10157
+#define TGL_TRANS_CLK_SEL_DISABLED (0x0 << 28)
10158
+#define TGL_TRANS_CLK_SEL_PORT(x) (((x) + 1) << 28)
10159
+
920910160
921010161 #define CDCLK_FREQ _MMIO(0x46200)
921110162
....@@ -9214,19 +10165,16 @@
921410165 #define _TRANSC_MSA_MISC 0x62410
921510166 #define _TRANS_EDP_MSA_MISC 0x6f410
921610167 #define TRANS_MSA_MISC(tran) _MMIO_TRANS2(tran, _TRANSA_MSA_MISC)
9217
-
9218
-#define TRANS_MSA_SYNC_CLK (1 << 0)
9219
-#define TRANS_MSA_6_BPC (0 << 5)
9220
-#define TRANS_MSA_8_BPC (1 << 5)
9221
-#define TRANS_MSA_10_BPC (2 << 5)
9222
-#define TRANS_MSA_12_BPC (3 << 5)
9223
-#define TRANS_MSA_16_BPC (4 << 5)
9224
-#define TRANS_MSA_CEA_RANGE (1 << 3)
10168
+/* See DP_MSA_MISC_* for the bit definitions */
922510169
922610170 /* LCPLL Control */
922710171 #define LCPLL_CTL _MMIO(0x130040)
922810172 #define LCPLL_PLL_DISABLE (1 << 31)
922910173 #define LCPLL_PLL_LOCK (1 << 30)
10174
+#define LCPLL_REF_NON_SSC (0 << 28)
10175
+#define LCPLL_REF_BCLK (2 << 28)
10176
+#define LCPLL_REF_PCH_SSC (3 << 28)
10177
+#define LCPLL_REF_MASK (3 << 28)
923010178 #define LCPLL_CLK_FREQ_MASK (3 << 26)
923110179 #define LCPLL_CLK_FREQ_450 (0 << 26)
923210180 #define LCPLL_CLK_FREQ_54O_BDW (1 << 26)
....@@ -9258,7 +10206,10 @@
925810206 #define BXT_CDCLK_CD2X_PIPE(pipe) ((pipe) << 20)
925910207 #define CDCLK_DIVMUX_CD_OVERRIDE (1 << 19)
926010208 #define BXT_CDCLK_CD2X_PIPE_NONE BXT_CDCLK_CD2X_PIPE(3)
10209
+#define ICL_CDCLK_CD2X_PIPE(pipe) (_PICK(pipe, 0, 2, 6) << 19)
926110210 #define ICL_CDCLK_CD2X_PIPE_NONE (7 << 19)
10211
+#define TGL_CDCLK_CD2X_PIPE(pipe) BXT_CDCLK_CD2X_PIPE(pipe)
10212
+#define TGL_CDCLK_CD2X_PIPE_NONE ICL_CDCLK_CD2X_PIPE_NONE
926210213 #define BXT_CDCLK_SSA_PRECHARGE_ENABLE (1 << 16)
926310214 #define CDCLK_FREQ_DECIMAL_MASK (0x7ff)
926410215
....@@ -9330,13 +10281,27 @@
933010281 * CNL Clocks
933110282 */
933210283 #define DPCLKA_CFGCR0 _MMIO(0x6C200)
9333
-#define DPCLKA_CFGCR0_ICL _MMIO(0x164280)
933410284 #define DPCLKA_CFGCR0_DDI_CLK_OFF(port) (1 << ((port) == PORT_F ? 23 : \
933510285 (port) + 10))
933610286 #define DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(port) ((port) == PORT_F ? 21 : \
933710287 (port) * 2)
933810288 #define DPCLKA_CFGCR0_DDI_CLK_SEL_MASK(port) (3 << DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(port))
933910289 #define DPCLKA_CFGCR0_DDI_CLK_SEL(pll, port) ((pll) << DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(port))
10290
+
10291
+#define ICL_DPCLKA_CFGCR0 _MMIO(0x164280)
10292
+#define ICL_DPCLKA_CFGCR0_DDI_CLK_OFF(phy) (1 << _PICK(phy, 10, 11, 24))
10293
+#define RKL_DPCLKA_CFGCR0_DDI_CLK_OFF(phy) REG_BIT((phy) + 10)
10294
+#define ICL_DPCLKA_CFGCR0_TC_CLK_OFF(tc_port) (1 << ((tc_port) < PORT_TC4 ? \
10295
+ (tc_port) + 12 : \
10296
+ (tc_port) - PORT_TC4 + 21))
10297
+#define ICL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy) ((phy) * 2)
10298
+#define ICL_DPCLKA_CFGCR0_DDI_CLK_SEL_MASK(phy) (3 << ICL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy))
10299
+#define ICL_DPCLKA_CFGCR0_DDI_CLK_SEL(pll, phy) ((pll) << ICL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy))
10300
+#define RKL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy) _PICK(phy, 0, 2, 4, 27)
10301
+#define RKL_DPCLKA_CFGCR0_DDI_CLK_SEL_MASK(phy) \
10302
+ (3 << RKL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy))
10303
+#define RKL_DPCLKA_CFGCR0_DDI_CLK_SEL(pll, phy) \
10304
+ ((pll) << RKL_DPCLKA_CFGCR0_DDI_CLK_SEL_SHIFT(phy))
934010305
934110306 /* CNL PLL */
934210307 #define DPLL0_ENABLE 0x46010
....@@ -9354,7 +10319,7 @@
935410319 #define _MG_PLL3_ENABLE 0x46038
935510320 #define _MG_PLL4_ENABLE 0x4603C
935610321 /* Bits are the same as DPLL0_ENABLE */
9357
-#define MG_PLL_ENABLE(port) _MMIO_PORT((port) - PORT_C, _MG_PLL1_ENABLE, \
10322
+#define MG_PLL_ENABLE(tc_port) _MMIO_PORT((tc_port), _MG_PLL1_ENABLE, \
935810323 _MG_PLL2_ENABLE)
935910324
936010325 #define _MG_REFCLKIN_CTL_PORT1 0x16892C
....@@ -9363,9 +10328,9 @@
936310328 #define _MG_REFCLKIN_CTL_PORT4 0x16B92C
936410329 #define MG_REFCLKIN_CTL_OD_2_MUX(x) ((x) << 8)
936510330 #define MG_REFCLKIN_CTL_OD_2_MUX_MASK (0x7 << 8)
9366
-#define MG_REFCLKIN_CTL(port) _MMIO_PORT((port) - PORT_C, \
9367
- _MG_REFCLKIN_CTL_PORT1, \
9368
- _MG_REFCLKIN_CTL_PORT2)
10331
+#define MG_REFCLKIN_CTL(tc_port) _MMIO_PORT((tc_port), \
10332
+ _MG_REFCLKIN_CTL_PORT1, \
10333
+ _MG_REFCLKIN_CTL_PORT2)
936910334
937010335 #define _MG_CLKTOP2_CORECLKCTL1_PORT1 0x1688D8
937110336 #define _MG_CLKTOP2_CORECLKCTL1_PORT2 0x1698D8
....@@ -9375,9 +10340,9 @@
937510340 #define MG_CLKTOP2_CORECLKCTL1_B_DIVRATIO_MASK (0xff << 16)
937610341 #define MG_CLKTOP2_CORECLKCTL1_A_DIVRATIO(x) ((x) << 8)
937710342 #define MG_CLKTOP2_CORECLKCTL1_A_DIVRATIO_MASK (0xff << 8)
9378
-#define MG_CLKTOP2_CORECLKCTL1(port) _MMIO_PORT((port) - PORT_C, \
9379
- _MG_CLKTOP2_CORECLKCTL1_PORT1, \
9380
- _MG_CLKTOP2_CORECLKCTL1_PORT2)
10343
+#define MG_CLKTOP2_CORECLKCTL1(tc_port) _MMIO_PORT((tc_port), \
10344
+ _MG_CLKTOP2_CORECLKCTL1_PORT1, \
10345
+ _MG_CLKTOP2_CORECLKCTL1_PORT2)
938110346
938210347 #define _MG_CLKTOP2_HSCLKCTL_PORT1 0x1688D4
938310348 #define _MG_CLKTOP2_HSCLKCTL_PORT2 0x1698D4
....@@ -9387,23 +10352,30 @@
938710352 #define MG_CLKTOP2_HSCLKCTL_CORE_INPUTSEL_MASK (0x1 << 16)
938810353 #define MG_CLKTOP2_HSCLKCTL_TLINEDRV_CLKSEL(x) ((x) << 14)
938910354 #define MG_CLKTOP2_HSCLKCTL_TLINEDRV_CLKSEL_MASK (0x3 << 14)
9390
-#define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO(x) ((x) << 12)
939110355 #define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_MASK (0x3 << 12)
10356
+#define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_2 (0 << 12)
10357
+#define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_3 (1 << 12)
10358
+#define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_5 (2 << 12)
10359
+#define MG_CLKTOP2_HSCLKCTL_HSDIV_RATIO_7 (3 << 12)
939210360 #define MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO(x) ((x) << 8)
10361
+#define MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO_SHIFT 8
939310362 #define MG_CLKTOP2_HSCLKCTL_DSDIV_RATIO_MASK (0xf << 8)
9394
-#define MG_CLKTOP2_HSCLKCTL(port) _MMIO_PORT((port) - PORT_C, \
9395
- _MG_CLKTOP2_HSCLKCTL_PORT1, \
9396
- _MG_CLKTOP2_HSCLKCTL_PORT2)
10363
+#define MG_CLKTOP2_HSCLKCTL(tc_port) _MMIO_PORT((tc_port), \
10364
+ _MG_CLKTOP2_HSCLKCTL_PORT1, \
10365
+ _MG_CLKTOP2_HSCLKCTL_PORT2)
939710366
939810367 #define _MG_PLL_DIV0_PORT1 0x168A00
939910368 #define _MG_PLL_DIV0_PORT2 0x169A00
940010369 #define _MG_PLL_DIV0_PORT3 0x16AA00
940110370 #define _MG_PLL_DIV0_PORT4 0x16BA00
940210371 #define MG_PLL_DIV0_FRACNEN_H (1 << 30)
10372
+#define MG_PLL_DIV0_FBDIV_FRAC_MASK (0x3fffff << 8)
10373
+#define MG_PLL_DIV0_FBDIV_FRAC_SHIFT 8
940310374 #define MG_PLL_DIV0_FBDIV_FRAC(x) ((x) << 8)
10375
+#define MG_PLL_DIV0_FBDIV_INT_MASK (0xff << 0)
940410376 #define MG_PLL_DIV0_FBDIV_INT(x) ((x) << 0)
9405
-#define MG_PLL_DIV0(port) _MMIO_PORT((port) - PORT_C, _MG_PLL_DIV0_PORT1, \
9406
- _MG_PLL_DIV0_PORT2)
10377
+#define MG_PLL_DIV0(tc_port) _MMIO_PORT((tc_port), _MG_PLL_DIV0_PORT1, \
10378
+ _MG_PLL_DIV0_PORT2)
940710379
940810380 #define _MG_PLL_DIV1_PORT1 0x168A04
940910381 #define _MG_PLL_DIV1_PORT2 0x169A04
....@@ -9415,9 +10387,10 @@
941510387 #define MG_PLL_DIV1_DITHER_DIV_4 (2 << 12)
941610388 #define MG_PLL_DIV1_DITHER_DIV_8 (3 << 12)
941710389 #define MG_PLL_DIV1_NDIVRATIO(x) ((x) << 4)
10390
+#define MG_PLL_DIV1_FBPREDIV_MASK (0xf << 0)
941810391 #define MG_PLL_DIV1_FBPREDIV(x) ((x) << 0)
9419
-#define MG_PLL_DIV1(port) _MMIO_PORT((port) - PORT_C, _MG_PLL_DIV1_PORT1, \
9420
- _MG_PLL_DIV1_PORT2)
10392
+#define MG_PLL_DIV1(tc_port) _MMIO_PORT((tc_port), _MG_PLL_DIV1_PORT1, \
10393
+ _MG_PLL_DIV1_PORT2)
942110394
942210395 #define _MG_PLL_LF_PORT1 0x168A08
942310396 #define _MG_PLL_LF_PORT2 0x169A08
....@@ -9429,8 +10402,8 @@
942910402 #define MG_PLL_LF_GAINCTRL(x) ((x) << 16)
943010403 #define MG_PLL_LF_INT_COEFF(x) ((x) << 8)
943110404 #define MG_PLL_LF_PROP_COEFF(x) ((x) << 0)
9432
-#define MG_PLL_LF(port) _MMIO_PORT((port) - PORT_C, _MG_PLL_LF_PORT1, \
9433
- _MG_PLL_LF_PORT2)
10405
+#define MG_PLL_LF(tc_port) _MMIO_PORT((tc_port), _MG_PLL_LF_PORT1, \
10406
+ _MG_PLL_LF_PORT2)
943410407
943510408 #define _MG_PLL_FRAC_LOCK_PORT1 0x168A0C
943610409 #define _MG_PLL_FRAC_LOCK_PORT2 0x169A0C
....@@ -9442,9 +10415,9 @@
944210415 #define MG_PLL_FRAC_LOCK_DCODITHEREN (1 << 10)
944310416 #define MG_PLL_FRAC_LOCK_FEEDFWRDCAL_EN (1 << 8)
944410417 #define MG_PLL_FRAC_LOCK_FEEDFWRDGAIN(x) ((x) << 0)
9445
-#define MG_PLL_FRAC_LOCK(port) _MMIO_PORT((port) - PORT_C, \
9446
- _MG_PLL_FRAC_LOCK_PORT1, \
9447
- _MG_PLL_FRAC_LOCK_PORT2)
10418
+#define MG_PLL_FRAC_LOCK(tc_port) _MMIO_PORT((tc_port), \
10419
+ _MG_PLL_FRAC_LOCK_PORT1, \
10420
+ _MG_PLL_FRAC_LOCK_PORT2)
944810421
944910422 #define _MG_PLL_SSC_PORT1 0x168A10
945010423 #define _MG_PLL_SSC_PORT2 0x169A10
....@@ -9456,8 +10429,8 @@
945610429 #define MG_PLL_SSC_STEPNUM(x) ((x) << 10)
945710430 #define MG_PLL_SSC_FLLEN (1 << 9)
945810431 #define MG_PLL_SSC_STEPSIZE(x) ((x) << 0)
9459
-#define MG_PLL_SSC(port) _MMIO_PORT((port) - PORT_C, _MG_PLL_SSC_PORT1, \
9460
- _MG_PLL_SSC_PORT2)
10432
+#define MG_PLL_SSC(tc_port) _MMIO_PORT((tc_port), _MG_PLL_SSC_PORT1, \
10433
+ _MG_PLL_SSC_PORT2)
946110434
946210435 #define _MG_PLL_BIAS_PORT1 0x168A14
946310436 #define _MG_PLL_BIAS_PORT2 0x169A14
....@@ -9476,8 +10449,8 @@
947610449 #define MG_PLL_BIAS_VREF_RDAC_MASK (0x7 << 5)
947710450 #define MG_PLL_BIAS_IREFTRIM(x) ((x) << 0)
947810451 #define MG_PLL_BIAS_IREFTRIM_MASK (0x1f << 0)
9479
-#define MG_PLL_BIAS(port) _MMIO_PORT((port) - PORT_C, _MG_PLL_BIAS_PORT1, \
9480
- _MG_PLL_BIAS_PORT2)
10452
+#define MG_PLL_BIAS(tc_port) _MMIO_PORT((tc_port), _MG_PLL_BIAS_PORT1, \
10453
+ _MG_PLL_BIAS_PORT2)
948110454
948210455 #define _MG_PLL_TDC_COLDST_BIAS_PORT1 0x168A18
948310456 #define _MG_PLL_TDC_COLDST_BIAS_PORT2 0x169A18
....@@ -9488,9 +10461,9 @@
948810461 #define MG_PLL_TDC_COLDST_COLDSTART (1 << 16)
948910462 #define MG_PLL_TDC_TDCOVCCORR_EN (1 << 2)
949010463 #define MG_PLL_TDC_TDCSEL(x) ((x) << 0)
9491
-#define MG_PLL_TDC_COLDST_BIAS(port) _MMIO_PORT((port) - PORT_C, \
9492
- _MG_PLL_TDC_COLDST_BIAS_PORT1, \
9493
- _MG_PLL_TDC_COLDST_BIAS_PORT2)
10464
+#define MG_PLL_TDC_COLDST_BIAS(tc_port) _MMIO_PORT((tc_port), \
10465
+ _MG_PLL_TDC_COLDST_BIAS_PORT1, \
10466
+ _MG_PLL_TDC_COLDST_BIAS_PORT2)
949410467
949510468 #define _CNL_DPLL0_CFGCR0 0x6C000
949610469 #define _CNL_DPLL1_CFGCR0 0x6C080
....@@ -9524,7 +10497,7 @@
952410497 #define DPLL_CFGCR1_KDIV(x) ((x) << 6)
952510498 #define DPLL_CFGCR1_KDIV_1 (1 << 6)
952610499 #define DPLL_CFGCR1_KDIV_2 (2 << 6)
9527
-#define DPLL_CFGCR1_KDIV_4 (4 << 6)
10500
+#define DPLL_CFGCR1_KDIV_3 (4 << 6)
952810501 #define DPLL_CFGCR1_PDIV_MASK (0xf << 2)
952910502 #define DPLL_CFGCR1_PDIV_SHIFT (2)
953010503 #define DPLL_CFGCR1_PDIV(x) ((x) << 2)
....@@ -9534,6 +10507,7 @@
953410507 #define DPLL_CFGCR1_PDIV_7 (8 << 2)
953510508 #define DPLL_CFGCR1_CENTRAL_FREQ (3 << 0)
953610509 #define DPLL_CFGCR1_CENTRAL_FREQ_8400 (3 << 0)
10510
+#define TGL_DPLL_CFGCR1_CFSELOVRD_NORMAL_XTAL (0 << 0)
953710511 #define CNL_DPLL_CFGCR1(pll) _MMIO_PLL(pll, _CNL_DPLL0_CFGCR1, _CNL_DPLL1_CFGCR1)
953810512
953910513 #define _ICL_DPLL0_CFGCR0 0x164000
....@@ -9545,6 +10519,184 @@
954510519 #define _ICL_DPLL1_CFGCR1 0x164084
954610520 #define ICL_DPLL_CFGCR1(pll) _MMIO_PLL(pll, _ICL_DPLL0_CFGCR1, \
954710521 _ICL_DPLL1_CFGCR1)
10522
+
10523
+#define _TGL_DPLL0_CFGCR0 0x164284
10524
+#define _TGL_DPLL1_CFGCR0 0x16428C
10525
+#define _TGL_TBTPLL_CFGCR0 0x16429C
10526
+#define TGL_DPLL_CFGCR0(pll) _MMIO_PLL3(pll, _TGL_DPLL0_CFGCR0, \
10527
+ _TGL_DPLL1_CFGCR0, \
10528
+ _TGL_TBTPLL_CFGCR0)
10529
+#define RKL_DPLL_CFGCR0(pll) _MMIO_PLL(pll, _TGL_DPLL0_CFGCR0, \
10530
+ _TGL_DPLL1_CFGCR0)
10531
+
10532
+#define _TGL_DPLL0_CFGCR1 0x164288
10533
+#define _TGL_DPLL1_CFGCR1 0x164290
10534
+#define _TGL_TBTPLL_CFGCR1 0x1642A0
10535
+#define TGL_DPLL_CFGCR1(pll) _MMIO_PLL3(pll, _TGL_DPLL0_CFGCR1, \
10536
+ _TGL_DPLL1_CFGCR1, \
10537
+ _TGL_TBTPLL_CFGCR1)
10538
+#define RKL_DPLL_CFGCR1(pll) _MMIO_PLL(pll, _TGL_DPLL0_CFGCR1, \
10539
+ _TGL_DPLL1_CFGCR1)
10540
+
10541
+#define _DKL_PHY1_BASE 0x168000
10542
+#define _DKL_PHY2_BASE 0x169000
10543
+#define _DKL_PHY3_BASE 0x16A000
10544
+#define _DKL_PHY4_BASE 0x16B000
10545
+#define _DKL_PHY5_BASE 0x16C000
10546
+#define _DKL_PHY6_BASE 0x16D000
10547
+
10548
+/* DEKEL PHY MMIO Address = Phy base + (internal address & ~index_mask) */
10549
+#define _DKL_PLL_DIV0 0x200
10550
+#define DKL_PLL_DIV0_INTEG_COEFF(x) ((x) << 16)
10551
+#define DKL_PLL_DIV0_INTEG_COEFF_MASK (0x1F << 16)
10552
+#define DKL_PLL_DIV0_PROP_COEFF(x) ((x) << 12)
10553
+#define DKL_PLL_DIV0_PROP_COEFF_MASK (0xF << 12)
10554
+#define DKL_PLL_DIV0_FBPREDIV_SHIFT (8)
10555
+#define DKL_PLL_DIV0_FBPREDIV(x) ((x) << DKL_PLL_DIV0_FBPREDIV_SHIFT)
10556
+#define DKL_PLL_DIV0_FBPREDIV_MASK (0xF << DKL_PLL_DIV0_FBPREDIV_SHIFT)
10557
+#define DKL_PLL_DIV0_FBDIV_INT(x) ((x) << 0)
10558
+#define DKL_PLL_DIV0_FBDIV_INT_MASK (0xFF << 0)
10559
+#define DKL_PLL_DIV0(tc_port) _MMIO(_PORT(tc_port, _DKL_PHY1_BASE, \
10560
+ _DKL_PHY2_BASE) + \
10561
+ _DKL_PLL_DIV0)
10562
+
10563
+#define _DKL_PLL_DIV1 0x204
10564
+#define DKL_PLL_DIV1_IREF_TRIM(x) ((x) << 16)
10565
+#define DKL_PLL_DIV1_IREF_TRIM_MASK (0x1F << 16)
10566
+#define DKL_PLL_DIV1_TDC_TARGET_CNT(x) ((x) << 0)
10567
+#define DKL_PLL_DIV1_TDC_TARGET_CNT_MASK (0xFF << 0)
10568
+#define DKL_PLL_DIV1(tc_port) _MMIO(_PORT(tc_port, _DKL_PHY1_BASE, \
10569
+ _DKL_PHY2_BASE) + \
10570
+ _DKL_PLL_DIV1)
10571
+
10572
+#define _DKL_PLL_SSC 0x210
10573
+#define DKL_PLL_SSC_IREF_NDIV_RATIO(x) ((x) << 29)
10574
+#define DKL_PLL_SSC_IREF_NDIV_RATIO_MASK (0x7 << 29)
10575
+#define DKL_PLL_SSC_STEP_LEN(x) ((x) << 16)
10576
+#define DKL_PLL_SSC_STEP_LEN_MASK (0xFF << 16)
10577
+#define DKL_PLL_SSC_STEP_NUM(x) ((x) << 11)
10578
+#define DKL_PLL_SSC_STEP_NUM_MASK (0x7 << 11)
10579
+#define DKL_PLL_SSC_EN (1 << 9)
10580
+#define DKL_PLL_SSC(tc_port) _MMIO(_PORT(tc_port, _DKL_PHY1_BASE, \
10581
+ _DKL_PHY2_BASE) + \
10582
+ _DKL_PLL_SSC)
10583
+
10584
+#define _DKL_PLL_BIAS 0x214
10585
+#define DKL_PLL_BIAS_FRAC_EN_H (1 << 30)
10586
+#define DKL_PLL_BIAS_FBDIV_SHIFT (8)
10587
+#define DKL_PLL_BIAS_FBDIV_FRAC(x) ((x) << DKL_PLL_BIAS_FBDIV_SHIFT)
10588
+#define DKL_PLL_BIAS_FBDIV_FRAC_MASK (0x3FFFFF << DKL_PLL_BIAS_FBDIV_SHIFT)
10589
+#define DKL_PLL_BIAS(tc_port) _MMIO(_PORT(tc_port, _DKL_PHY1_BASE, \
10590
+ _DKL_PHY2_BASE) + \
10591
+ _DKL_PLL_BIAS)
10592
+
10593
+#define _DKL_PLL_TDC_COLDST_BIAS 0x218
10594
+#define DKL_PLL_TDC_SSC_STEP_SIZE(x) ((x) << 8)
10595
+#define DKL_PLL_TDC_SSC_STEP_SIZE_MASK (0xFF << 8)
10596
+#define DKL_PLL_TDC_FEED_FWD_GAIN(x) ((x) << 0)
10597
+#define DKL_PLL_TDC_FEED_FWD_GAIN_MASK (0xFF << 0)
10598
+#define DKL_PLL_TDC_COLDST_BIAS(tc_port) _MMIO(_PORT(tc_port, \
10599
+ _DKL_PHY1_BASE, \
10600
+ _DKL_PHY2_BASE) + \
10601
+ _DKL_PLL_TDC_COLDST_BIAS)
10602
+
10603
+#define _DKL_REFCLKIN_CTL 0x12C
10604
+/* Bits are the same as MG_REFCLKIN_CTL */
10605
+#define DKL_REFCLKIN_CTL(tc_port) _MMIO(_PORT(tc_port, \
10606
+ _DKL_PHY1_BASE, \
10607
+ _DKL_PHY2_BASE) + \
10608
+ _DKL_REFCLKIN_CTL)
10609
+
10610
+#define _DKL_CLKTOP2_HSCLKCTL 0xD4
10611
+/* Bits are the same as MG_CLKTOP2_HSCLKCTL */
10612
+#define DKL_CLKTOP2_HSCLKCTL(tc_port) _MMIO(_PORT(tc_port, \
10613
+ _DKL_PHY1_BASE, \
10614
+ _DKL_PHY2_BASE) + \
10615
+ _DKL_CLKTOP2_HSCLKCTL)
10616
+
10617
+#define _DKL_CLKTOP2_CORECLKCTL1 0xD8
10618
+/* Bits are the same as MG_CLKTOP2_CORECLKCTL1 */
10619
+#define DKL_CLKTOP2_CORECLKCTL1(tc_port) _MMIO(_PORT(tc_port, \
10620
+ _DKL_PHY1_BASE, \
10621
+ _DKL_PHY2_BASE) + \
10622
+ _DKL_CLKTOP2_CORECLKCTL1)
10623
+
10624
+#define _DKL_TX_DPCNTL0 0x2C0
10625
+#define DKL_TX_PRESHOOT_COEFF(x) ((x) << 13)
10626
+#define DKL_TX_PRESHOOT_COEFF_MASK (0x1f << 13)
10627
+#define DKL_TX_DE_EMPHASIS_COEFF(x) ((x) << 8)
10628
+#define DKL_TX_DE_EMPAHSIS_COEFF_MASK (0x1f << 8)
10629
+#define DKL_TX_VSWING_CONTROL(x) ((x) << 0)
10630
+#define DKL_TX_VSWING_CONTROL_MASK (0x7 << 0)
10631
+#define DKL_TX_DPCNTL0(tc_port) _MMIO(_PORT(tc_port, \
10632
+ _DKL_PHY1_BASE, \
10633
+ _DKL_PHY2_BASE) + \
10634
+ _DKL_TX_DPCNTL0)
10635
+
10636
+#define _DKL_TX_DPCNTL1 0x2C4
10637
+/* Bits are the same as DKL_TX_DPCNTRL0 */
10638
+#define DKL_TX_DPCNTL1(tc_port) _MMIO(_PORT(tc_port, \
10639
+ _DKL_PHY1_BASE, \
10640
+ _DKL_PHY2_BASE) + \
10641
+ _DKL_TX_DPCNTL1)
10642
+
10643
+#define _DKL_TX_DPCNTL2 0x2C8
10644
+#define DKL_TX_DP20BITMODE (1 << 2)
10645
+#define DKL_TX_DPCNTL2(tc_port) _MMIO(_PORT(tc_port, \
10646
+ _DKL_PHY1_BASE, \
10647
+ _DKL_PHY2_BASE) + \
10648
+ _DKL_TX_DPCNTL2)
10649
+
10650
+#define _DKL_TX_FW_CALIB 0x2F8
10651
+#define DKL_TX_CFG_DISABLE_WAIT_INIT (1 << 7)
10652
+#define DKL_TX_FW_CALIB(tc_port) _MMIO(_PORT(tc_port, \
10653
+ _DKL_PHY1_BASE, \
10654
+ _DKL_PHY2_BASE) + \
10655
+ _DKL_TX_FW_CALIB)
10656
+
10657
+#define _DKL_TX_PMD_LANE_SUS 0xD00
10658
+#define DKL_TX_PMD_LANE_SUS(tc_port) _MMIO(_PORT(tc_port, \
10659
+ _DKL_PHY1_BASE, \
10660
+ _DKL_PHY2_BASE) + \
10661
+ _DKL_TX_PMD_LANE_SUS)
10662
+
10663
+#define _DKL_TX_DW17 0xDC4
10664
+#define DKL_TX_DW17(tc_port) _MMIO(_PORT(tc_port, \
10665
+ _DKL_PHY1_BASE, \
10666
+ _DKL_PHY2_BASE) + \
10667
+ _DKL_TX_DW17)
10668
+
10669
+#define _DKL_TX_DW18 0xDC8
10670
+#define DKL_TX_DW18(tc_port) _MMIO(_PORT(tc_port, \
10671
+ _DKL_PHY1_BASE, \
10672
+ _DKL_PHY2_BASE) + \
10673
+ _DKL_TX_DW18)
10674
+
10675
+#define _DKL_DP_MODE 0xA0
10676
+#define DKL_DP_MODE(tc_port) _MMIO(_PORT(tc_port, \
10677
+ _DKL_PHY1_BASE, \
10678
+ _DKL_PHY2_BASE) + \
10679
+ _DKL_DP_MODE)
10680
+
10681
+#define _DKL_CMN_UC_DW27 0x36C
10682
+#define DKL_CMN_UC_DW27_UC_HEALTH (0x1 << 15)
10683
+#define DKL_CMN_UC_DW_27(tc_port) _MMIO(_PORT(tc_port, \
10684
+ _DKL_PHY1_BASE, \
10685
+ _DKL_PHY2_BASE) + \
10686
+ _DKL_CMN_UC_DW27)
10687
+
10688
+/*
10689
+ * Each Dekel PHY is addressed through a 4KB aperture. Each PHY has more than
10690
+ * 4KB of register space, so a separate index is programmed in HIP_INDEX_REG0
10691
+ * or HIP_INDEX_REG1, based on the port number, to set the upper 2 address
10692
+ * bits that point the 4KB window into the full PHY register space.
10693
+ */
10694
+#define _HIP_INDEX_REG0 0x1010A0
10695
+#define _HIP_INDEX_REG1 0x1010A4
10696
+#define HIP_INDEX_REG(tc_port) _MMIO((tc_port) < 4 ? _HIP_INDEX_REG0 \
10697
+ : _HIP_INDEX_REG1)
10698
+#define _HIP_INDEX_SHIFT(tc_port) (8 * ((tc_port) % 4))
10699
+#define HIP_INDEX_VAL(tc_port, val) ((val) << _HIP_INDEX_SHIFT(tc_port))
954810700
954910701 /* BXT display engine PLL */
955010702 #define BXT_DE_PLL_CTL _MMIO(0x6d000)
....@@ -9560,6 +10712,8 @@
956010712 /* GEN9 DC */
956110713 #define DC_STATE_EN _MMIO(0x45504)
956210714 #define DC_STATE_DISABLE 0
10715
+#define DC_STATE_EN_DC3CO REG_BIT(30)
10716
+#define DC_STATE_DC3CO_STATUS REG_BIT(29)
956310717 #define DC_STATE_EN_UPTO_DC5 (1 << 0)
956410718 #define DC_STATE_EN_DC9 (1 << 3)
956510719 #define DC_STATE_EN_UPTO_DC6 (2 << 0)
....@@ -9568,6 +10722,80 @@
956810722 #define DC_STATE_DEBUG _MMIO(0x45520)
956910723 #define DC_STATE_DEBUG_MASK_CORES (1 << 0)
957010724 #define DC_STATE_DEBUG_MASK_MEMORY_UP (1 << 1)
10725
+
10726
+#define BXT_P_CR_MC_BIOS_REQ_0_0_0 _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x7114)
10727
+#define BXT_REQ_DATA_MASK 0x3F
10728
+#define BXT_DRAM_CHANNEL_ACTIVE_SHIFT 12
10729
+#define BXT_DRAM_CHANNEL_ACTIVE_MASK (0xF << 12)
10730
+#define BXT_MEMORY_FREQ_MULTIPLIER_HZ 133333333
10731
+
10732
+#define BXT_D_CR_DRP0_DUNIT8 0x1000
10733
+#define BXT_D_CR_DRP0_DUNIT9 0x1200
10734
+#define BXT_D_CR_DRP0_DUNIT_START 8
10735
+#define BXT_D_CR_DRP0_DUNIT_END 11
10736
+#define BXT_D_CR_DRP0_DUNIT(x) _MMIO(MCHBAR_MIRROR_BASE_SNB + \
10737
+ _PICK_EVEN((x) - 8, BXT_D_CR_DRP0_DUNIT8,\
10738
+ BXT_D_CR_DRP0_DUNIT9))
10739
+#define BXT_DRAM_RANK_MASK 0x3
10740
+#define BXT_DRAM_RANK_SINGLE 0x1
10741
+#define BXT_DRAM_RANK_DUAL 0x3
10742
+#define BXT_DRAM_WIDTH_MASK (0x3 << 4)
10743
+#define BXT_DRAM_WIDTH_SHIFT 4
10744
+#define BXT_DRAM_WIDTH_X8 (0x0 << 4)
10745
+#define BXT_DRAM_WIDTH_X16 (0x1 << 4)
10746
+#define BXT_DRAM_WIDTH_X32 (0x2 << 4)
10747
+#define BXT_DRAM_WIDTH_X64 (0x3 << 4)
10748
+#define BXT_DRAM_SIZE_MASK (0x7 << 6)
10749
+#define BXT_DRAM_SIZE_SHIFT 6
10750
+#define BXT_DRAM_SIZE_4GBIT (0x0 << 6)
10751
+#define BXT_DRAM_SIZE_6GBIT (0x1 << 6)
10752
+#define BXT_DRAM_SIZE_8GBIT (0x2 << 6)
10753
+#define BXT_DRAM_SIZE_12GBIT (0x3 << 6)
10754
+#define BXT_DRAM_SIZE_16GBIT (0x4 << 6)
10755
+#define BXT_DRAM_TYPE_MASK (0x7 << 22)
10756
+#define BXT_DRAM_TYPE_SHIFT 22
10757
+#define BXT_DRAM_TYPE_DDR3 (0x0 << 22)
10758
+#define BXT_DRAM_TYPE_LPDDR3 (0x1 << 22)
10759
+#define BXT_DRAM_TYPE_LPDDR4 (0x2 << 22)
10760
+#define BXT_DRAM_TYPE_DDR4 (0x4 << 22)
10761
+
10762
+#define SKL_MEMORY_FREQ_MULTIPLIER_HZ 266666666
10763
+#define SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5E04)
10764
+#define SKL_REQ_DATA_MASK (0xF << 0)
10765
+
10766
+#define SKL_MAD_INTER_CHANNEL_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5000)
10767
+#define SKL_DRAM_DDR_TYPE_MASK (0x3 << 0)
10768
+#define SKL_DRAM_DDR_TYPE_DDR4 (0 << 0)
10769
+#define SKL_DRAM_DDR_TYPE_DDR3 (1 << 0)
10770
+#define SKL_DRAM_DDR_TYPE_LPDDR3 (2 << 0)
10771
+#define SKL_DRAM_DDR_TYPE_LPDDR4 (3 << 0)
10772
+
10773
+#define SKL_MAD_DIMM_CH0_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x500C)
10774
+#define SKL_MAD_DIMM_CH1_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5010)
10775
+#define SKL_DRAM_S_SHIFT 16
10776
+#define SKL_DRAM_SIZE_MASK 0x3F
10777
+#define SKL_DRAM_WIDTH_MASK (0x3 << 8)
10778
+#define SKL_DRAM_WIDTH_SHIFT 8
10779
+#define SKL_DRAM_WIDTH_X8 (0x0 << 8)
10780
+#define SKL_DRAM_WIDTH_X16 (0x1 << 8)
10781
+#define SKL_DRAM_WIDTH_X32 (0x2 << 8)
10782
+#define SKL_DRAM_RANK_MASK (0x1 << 10)
10783
+#define SKL_DRAM_RANK_SHIFT 10
10784
+#define SKL_DRAM_RANK_1 (0x0 << 10)
10785
+#define SKL_DRAM_RANK_2 (0x1 << 10)
10786
+#define SKL_DRAM_RANK_MASK (0x1 << 10)
10787
+#define CNL_DRAM_SIZE_MASK 0x7F
10788
+#define CNL_DRAM_WIDTH_MASK (0x3 << 7)
10789
+#define CNL_DRAM_WIDTH_SHIFT 7
10790
+#define CNL_DRAM_WIDTH_X8 (0x0 << 7)
10791
+#define CNL_DRAM_WIDTH_X16 (0x1 << 7)
10792
+#define CNL_DRAM_WIDTH_X32 (0x2 << 7)
10793
+#define CNL_DRAM_RANK_MASK (0x3 << 9)
10794
+#define CNL_DRAM_RANK_SHIFT 9
10795
+#define CNL_DRAM_RANK_1 (0x0 << 9)
10796
+#define CNL_DRAM_RANK_2 (0x1 << 9)
10797
+#define CNL_DRAM_RANK_3 (0x2 << 9)
10798
+#define CNL_DRAM_RANK_4 (0x3 << 9)
957110799
957210800 /* Please see hsw_read_dcomp() and hsw_write_dcomp() before using this register,
957310801 * since on HSW we can't write to it using I915_WRITE. */
....@@ -9578,13 +10806,13 @@
957810806 #define D_COMP_COMP_DISABLE (1 << 0)
957910807
958010808 /* Pipe WM_LINETIME - watermark line time */
9581
-#define _PIPE_WM_LINETIME_A 0x45270
9582
-#define _PIPE_WM_LINETIME_B 0x45274
9583
-#define PIPE_WM_LINETIME(pipe) _MMIO_PIPE(pipe, _PIPE_WM_LINETIME_A, _PIPE_WM_LINETIME_B)
9584
-#define PIPE_WM_LINETIME_MASK (0x1ff)
9585
-#define PIPE_WM_LINETIME_TIME(x) ((x))
9586
-#define PIPE_WM_LINETIME_IPS_LINETIME_MASK (0x1ff << 16)
9587
-#define PIPE_WM_LINETIME_IPS_LINETIME(x) ((x) << 16)
10809
+#define _WM_LINETIME_A 0x45270
10810
+#define _WM_LINETIME_B 0x45274
10811
+#define WM_LINETIME(pipe) _MMIO_PIPE(pipe, _WM_LINETIME_A, _WM_LINETIME_B)
10812
+#define HSW_LINETIME_MASK REG_GENMASK(8, 0)
10813
+#define HSW_LINETIME(x) REG_FIELD_PREP(HSW_LINETIME_MASK, (x))
10814
+#define HSW_IPS_LINETIME_MASK REG_GENMASK(24, 16)
10815
+#define HSW_IPS_LINETIME(x) REG_FIELD_PREP(HSW_IPS_LINETIME_MASK, (x))
958810816
958910817 /* SFUSE_STRAP */
959010818 #define SFUSE_STRAP _MMIO(0xc2014)
....@@ -9612,10 +10840,14 @@
961210840 #define _PIPE_A_CSC_COEFF_BU 0x4901c
961310841 #define _PIPE_A_CSC_COEFF_RV_GV 0x49020
961410842 #define _PIPE_A_CSC_COEFF_BV 0x49024
10843
+
961510844 #define _PIPE_A_CSC_MODE 0x49028
9616
-#define CSC_BLACK_SCREEN_OFFSET (1 << 2)
9617
-#define CSC_POSITION_BEFORE_GAMMA (1 << 1)
9618
-#define CSC_MODE_YUV_TO_RGB (1 << 0)
10845
+#define ICL_CSC_ENABLE (1 << 31) /* icl+ */
10846
+#define ICL_OUTPUT_CSC_ENABLE (1 << 30) /* icl+ */
10847
+#define CSC_BLACK_SCREEN_OFFSET (1 << 2) /* ilk/snb */
10848
+#define CSC_POSITION_BEFORE_GAMMA (1 << 1) /* pre-glk */
10849
+#define CSC_MODE_YUV_TO_RGB (1 << 0) /* ilk/snb */
10850
+
961910851 #define _PIPE_A_CSC_PREOFF_HI 0x49030
962010852 #define _PIPE_A_CSC_PREOFF_ME 0x49034
962110853 #define _PIPE_A_CSC_PREOFF_LO 0x49038
....@@ -9651,6 +10883,70 @@
965110883 #define PIPE_CSC_POSTOFF_ME(pipe) _MMIO_PIPE(pipe, _PIPE_A_CSC_POSTOFF_ME, _PIPE_B_CSC_POSTOFF_ME)
965210884 #define PIPE_CSC_POSTOFF_LO(pipe) _MMIO_PIPE(pipe, _PIPE_A_CSC_POSTOFF_LO, _PIPE_B_CSC_POSTOFF_LO)
965310885
10886
+/* Pipe Output CSC */
10887
+#define _PIPE_A_OUTPUT_CSC_COEFF_RY_GY 0x49050
10888
+#define _PIPE_A_OUTPUT_CSC_COEFF_BY 0x49054
10889
+#define _PIPE_A_OUTPUT_CSC_COEFF_RU_GU 0x49058
10890
+#define _PIPE_A_OUTPUT_CSC_COEFF_BU 0x4905c
10891
+#define _PIPE_A_OUTPUT_CSC_COEFF_RV_GV 0x49060
10892
+#define _PIPE_A_OUTPUT_CSC_COEFF_BV 0x49064
10893
+#define _PIPE_A_OUTPUT_CSC_PREOFF_HI 0x49068
10894
+#define _PIPE_A_OUTPUT_CSC_PREOFF_ME 0x4906c
10895
+#define _PIPE_A_OUTPUT_CSC_PREOFF_LO 0x49070
10896
+#define _PIPE_A_OUTPUT_CSC_POSTOFF_HI 0x49074
10897
+#define _PIPE_A_OUTPUT_CSC_POSTOFF_ME 0x49078
10898
+#define _PIPE_A_OUTPUT_CSC_POSTOFF_LO 0x4907c
10899
+
10900
+#define _PIPE_B_OUTPUT_CSC_COEFF_RY_GY 0x49150
10901
+#define _PIPE_B_OUTPUT_CSC_COEFF_BY 0x49154
10902
+#define _PIPE_B_OUTPUT_CSC_COEFF_RU_GU 0x49158
10903
+#define _PIPE_B_OUTPUT_CSC_COEFF_BU 0x4915c
10904
+#define _PIPE_B_OUTPUT_CSC_COEFF_RV_GV 0x49160
10905
+#define _PIPE_B_OUTPUT_CSC_COEFF_BV 0x49164
10906
+#define _PIPE_B_OUTPUT_CSC_PREOFF_HI 0x49168
10907
+#define _PIPE_B_OUTPUT_CSC_PREOFF_ME 0x4916c
10908
+#define _PIPE_B_OUTPUT_CSC_PREOFF_LO 0x49170
10909
+#define _PIPE_B_OUTPUT_CSC_POSTOFF_HI 0x49174
10910
+#define _PIPE_B_OUTPUT_CSC_POSTOFF_ME 0x49178
10911
+#define _PIPE_B_OUTPUT_CSC_POSTOFF_LO 0x4917c
10912
+
10913
+#define PIPE_CSC_OUTPUT_COEFF_RY_GY(pipe) _MMIO_PIPE(pipe,\
10914
+ _PIPE_A_OUTPUT_CSC_COEFF_RY_GY,\
10915
+ _PIPE_B_OUTPUT_CSC_COEFF_RY_GY)
10916
+#define PIPE_CSC_OUTPUT_COEFF_BY(pipe) _MMIO_PIPE(pipe, \
10917
+ _PIPE_A_OUTPUT_CSC_COEFF_BY, \
10918
+ _PIPE_B_OUTPUT_CSC_COEFF_BY)
10919
+#define PIPE_CSC_OUTPUT_COEFF_RU_GU(pipe) _MMIO_PIPE(pipe, \
10920
+ _PIPE_A_OUTPUT_CSC_COEFF_RU_GU, \
10921
+ _PIPE_B_OUTPUT_CSC_COEFF_RU_GU)
10922
+#define PIPE_CSC_OUTPUT_COEFF_BU(pipe) _MMIO_PIPE(pipe, \
10923
+ _PIPE_A_OUTPUT_CSC_COEFF_BU, \
10924
+ _PIPE_B_OUTPUT_CSC_COEFF_BU)
10925
+#define PIPE_CSC_OUTPUT_COEFF_RV_GV(pipe) _MMIO_PIPE(pipe, \
10926
+ _PIPE_A_OUTPUT_CSC_COEFF_RV_GV, \
10927
+ _PIPE_B_OUTPUT_CSC_COEFF_RV_GV)
10928
+#define PIPE_CSC_OUTPUT_COEFF_BV(pipe) _MMIO_PIPE(pipe, \
10929
+ _PIPE_A_OUTPUT_CSC_COEFF_BV, \
10930
+ _PIPE_B_OUTPUT_CSC_COEFF_BV)
10931
+#define PIPE_CSC_OUTPUT_PREOFF_HI(pipe) _MMIO_PIPE(pipe, \
10932
+ _PIPE_A_OUTPUT_CSC_PREOFF_HI, \
10933
+ _PIPE_B_OUTPUT_CSC_PREOFF_HI)
10934
+#define PIPE_CSC_OUTPUT_PREOFF_ME(pipe) _MMIO_PIPE(pipe, \
10935
+ _PIPE_A_OUTPUT_CSC_PREOFF_ME, \
10936
+ _PIPE_B_OUTPUT_CSC_PREOFF_ME)
10937
+#define PIPE_CSC_OUTPUT_PREOFF_LO(pipe) _MMIO_PIPE(pipe, \
10938
+ _PIPE_A_OUTPUT_CSC_PREOFF_LO, \
10939
+ _PIPE_B_OUTPUT_CSC_PREOFF_LO)
10940
+#define PIPE_CSC_OUTPUT_POSTOFF_HI(pipe) _MMIO_PIPE(pipe, \
10941
+ _PIPE_A_OUTPUT_CSC_POSTOFF_HI, \
10942
+ _PIPE_B_OUTPUT_CSC_POSTOFF_HI)
10943
+#define PIPE_CSC_OUTPUT_POSTOFF_ME(pipe) _MMIO_PIPE(pipe, \
10944
+ _PIPE_A_OUTPUT_CSC_POSTOFF_ME, \
10945
+ _PIPE_B_OUTPUT_CSC_POSTOFF_ME)
10946
+#define PIPE_CSC_OUTPUT_POSTOFF_LO(pipe) _MMIO_PIPE(pipe, \
10947
+ _PIPE_A_OUTPUT_CSC_POSTOFF_LO, \
10948
+ _PIPE_B_OUTPUT_CSC_POSTOFF_LO)
10949
+
965410950 /* pipe degamma/gamma LUTs on IVB+ */
965510951 #define _PAL_PREC_INDEX_A 0x4A400
965610952 #define _PAL_PREC_INDEX_B 0x4AC00
....@@ -9659,12 +10955,16 @@
965910955 #define PAL_PREC_SPLIT_MODE (1 << 31)
966010956 #define PAL_PREC_AUTO_INCREMENT (1 << 15)
966110957 #define PAL_PREC_INDEX_VALUE_MASK (0x3ff << 0)
10958
+#define PAL_PREC_INDEX_VALUE(x) ((x) << 0)
966210959 #define _PAL_PREC_DATA_A 0x4A404
966310960 #define _PAL_PREC_DATA_B 0x4AC04
966410961 #define _PAL_PREC_DATA_C 0x4B404
966510962 #define _PAL_PREC_GC_MAX_A 0x4A410
966610963 #define _PAL_PREC_GC_MAX_B 0x4AC10
966710964 #define _PAL_PREC_GC_MAX_C 0x4B410
10965
+#define PREC_PAL_DATA_RED_MASK REG_GENMASK(29, 20)
10966
+#define PREC_PAL_DATA_GREEN_MASK REG_GENMASK(19, 10)
10967
+#define PREC_PAL_DATA_BLUE_MASK REG_GENMASK(9, 0)
966810968 #define _PAL_PREC_EXT_GC_MAX_A 0x4A420
966910969 #define _PAL_PREC_EXT_GC_MAX_B 0x4AC20
967010970 #define _PAL_PREC_EXT_GC_MAX_C 0x4B420
....@@ -9676,6 +10976,7 @@
967610976 #define PREC_PAL_DATA(pipe) _MMIO_PIPE(pipe, _PAL_PREC_DATA_A, _PAL_PREC_DATA_B)
967710977 #define PREC_PAL_GC_MAX(pipe, i) _MMIO(_PIPE(pipe, _PAL_PREC_GC_MAX_A, _PAL_PREC_GC_MAX_B) + (i) * 4)
967810978 #define PREC_PAL_EXT_GC_MAX(pipe, i) _MMIO(_PIPE(pipe, _PAL_PREC_EXT_GC_MAX_A, _PAL_PREC_EXT_GC_MAX_B) + (i) * 4)
10979
+#define PREC_PAL_EXT2_GC_MAX(pipe, i) _MMIO(_PIPE(pipe, _PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)
967910980
968010981 #define _PRE_CSC_GAMC_INDEX_A 0x4A484
968110982 #define _PRE_CSC_GAMC_INDEX_B 0x4AC84
....@@ -9687,6 +10988,28 @@
968710988
968810989 #define PRE_CSC_GAMC_INDEX(pipe) _MMIO_PIPE(pipe, _PRE_CSC_GAMC_INDEX_A, _PRE_CSC_GAMC_INDEX_B)
968910990 #define PRE_CSC_GAMC_DATA(pipe) _MMIO_PIPE(pipe, _PRE_CSC_GAMC_DATA_A, _PRE_CSC_GAMC_DATA_B)
10991
+
10992
+/* ICL Multi segmented gamma */
10993
+#define _PAL_PREC_MULTI_SEG_INDEX_A 0x4A408
10994
+#define _PAL_PREC_MULTI_SEG_INDEX_B 0x4AC08
10995
+#define PAL_PREC_MULTI_SEGMENT_AUTO_INCREMENT REG_BIT(15)
10996
+#define PAL_PREC_MULTI_SEGMENT_INDEX_VALUE_MASK REG_GENMASK(4, 0)
10997
+
10998
+#define _PAL_PREC_MULTI_SEG_DATA_A 0x4A40C
10999
+#define _PAL_PREC_MULTI_SEG_DATA_B 0x4AC0C
11000
+#define PAL_PREC_MULTI_SEG_RED_LDW_MASK REG_GENMASK(29, 24)
11001
+#define PAL_PREC_MULTI_SEG_RED_UDW_MASK REG_GENMASK(29, 20)
11002
+#define PAL_PREC_MULTI_SEG_GREEN_LDW_MASK REG_GENMASK(19, 14)
11003
+#define PAL_PREC_MULTI_SEG_GREEN_UDW_MASK REG_GENMASK(19, 10)
11004
+#define PAL_PREC_MULTI_SEG_BLUE_LDW_MASK REG_GENMASK(9, 4)
11005
+#define PAL_PREC_MULTI_SEG_BLUE_UDW_MASK REG_GENMASK(9, 0)
11006
+
11007
+#define PREC_PAL_MULTI_SEG_INDEX(pipe) _MMIO_PIPE(pipe, \
11008
+ _PAL_PREC_MULTI_SEG_INDEX_A, \
11009
+ _PAL_PREC_MULTI_SEG_INDEX_B)
11010
+#define PREC_PAL_MULTI_SEG_DATA(pipe) _MMIO_PIPE(pipe, \
11011
+ _PAL_PREC_MULTI_SEG_DATA_A, \
11012
+ _PAL_PREC_MULTI_SEG_DATA_B)
969011013
969111014 /* pipe CSC & degamma/gamma LUTs on CHV */
969211015 #define _CGM_PIPE_A_CSC_COEFF01 (VLV_DISPLAY_BASE + 0x67900)
....@@ -9700,6 +11023,9 @@
970011023 #define CGM_PIPE_MODE_GAMMA (1 << 2)
970111024 #define CGM_PIPE_MODE_CSC (1 << 1)
970211025 #define CGM_PIPE_MODE_DEGAMMA (1 << 0)
11026
+#define CGM_PIPE_GAMMA_RED_MASK REG_GENMASK(9, 0)
11027
+#define CGM_PIPE_GAMMA_GREEN_MASK REG_GENMASK(25, 16)
11028
+#define CGM_PIPE_GAMMA_BLUE_MASK REG_GENMASK(9, 0)
970311029
970411030 #define _CGM_PIPE_B_CSC_COEFF01 (VLV_DISPLAY_BASE + 0x69900)
970511031 #define _CGM_PIPE_B_CSC_COEFF23 (VLV_DISPLAY_BASE + 0x69904)
....@@ -9724,6 +11050,10 @@
972411050 #define _MIPI_PORT(port, a, c) (((port) == PORT_A) ? a : c) /* ports A and C only */
972511051 #define _MMIO_MIPI(port, a, c) _MMIO(_MIPI_PORT(port, a, c))
972611052
11053
+/* Gen11 DSI */
11054
+#define _MMIO_DSI(tc, dsi0, dsi1) _MMIO_TRANS((tc) - TRANSCODER_DSI_0, \
11055
+ dsi0, dsi1)
11056
+
972711057 #define MIPIO_TXESC_CLK_DIV1 _MMIO(0x160004)
972811058 #define GLK_TX_ESC_CLK_DIV1_MASK 0x3FF
972911059 #define MIPIO_TXESC_CLK_DIV2 _MMIO(0x160008)
....@@ -9744,6 +11074,57 @@
974411074 #define ICL_ESC_CLK_DIV_MASK 0x1ff
974511075 #define ICL_ESC_CLK_DIV_SHIFT 0
974611076 #define DSI_MAX_ESC_CLK 20000 /* in KHz */
11077
+
11078
+#define _DSI_CMD_FRMCTL_0 0x6b034
11079
+#define _DSI_CMD_FRMCTL_1 0x6b834
11080
+#define DSI_CMD_FRMCTL(port) _MMIO_PORT(port, \
11081
+ _DSI_CMD_FRMCTL_0,\
11082
+ _DSI_CMD_FRMCTL_1)
11083
+#define DSI_FRAME_UPDATE_REQUEST (1 << 31)
11084
+#define DSI_PERIODIC_FRAME_UPDATE_ENABLE (1 << 29)
11085
+#define DSI_NULL_PACKET_ENABLE (1 << 28)
11086
+#define DSI_FRAME_IN_PROGRESS (1 << 0)
11087
+
11088
+#define _DSI_INTR_MASK_REG_0 0x6b070
11089
+#define _DSI_INTR_MASK_REG_1 0x6b870
11090
+#define DSI_INTR_MASK_REG(port) _MMIO_PORT(port, \
11091
+ _DSI_INTR_MASK_REG_0,\
11092
+ _DSI_INTR_MASK_REG_1)
11093
+
11094
+#define _DSI_INTR_IDENT_REG_0 0x6b074
11095
+#define _DSI_INTR_IDENT_REG_1 0x6b874
11096
+#define DSI_INTR_IDENT_REG(port) _MMIO_PORT(port, \
11097
+ _DSI_INTR_IDENT_REG_0,\
11098
+ _DSI_INTR_IDENT_REG_1)
11099
+#define DSI_TE_EVENT (1 << 31)
11100
+#define DSI_RX_DATA_OR_BTA_TERMINATED (1 << 30)
11101
+#define DSI_TX_DATA (1 << 29)
11102
+#define DSI_ULPS_ENTRY_DONE (1 << 28)
11103
+#define DSI_NON_TE_TRIGGER_RECEIVED (1 << 27)
11104
+#define DSI_HOST_CHKSUM_ERROR (1 << 26)
11105
+#define DSI_HOST_MULTI_ECC_ERROR (1 << 25)
11106
+#define DSI_HOST_SINGL_ECC_ERROR (1 << 24)
11107
+#define DSI_HOST_CONTENTION_DETECTED (1 << 23)
11108
+#define DSI_HOST_FALSE_CONTROL_ERROR (1 << 22)
11109
+#define DSI_HOST_TIMEOUT_ERROR (1 << 21)
11110
+#define DSI_HOST_LOW_POWER_TX_SYNC_ERROR (1 << 20)
11111
+#define DSI_HOST_ESCAPE_MODE_ENTRY_ERROR (1 << 19)
11112
+#define DSI_FRAME_UPDATE_DONE (1 << 16)
11113
+#define DSI_PROTOCOL_VIOLATION_REPORTED (1 << 15)
11114
+#define DSI_INVALID_TX_LENGTH (1 << 13)
11115
+#define DSI_INVALID_VC (1 << 12)
11116
+#define DSI_INVALID_DATA_TYPE (1 << 11)
11117
+#define DSI_PERIPHERAL_CHKSUM_ERROR (1 << 10)
11118
+#define DSI_PERIPHERAL_MULTI_ECC_ERROR (1 << 9)
11119
+#define DSI_PERIPHERAL_SINGLE_ECC_ERROR (1 << 8)
11120
+#define DSI_PERIPHERAL_CONTENTION_DETECTED (1 << 7)
11121
+#define DSI_PERIPHERAL_FALSE_CTRL_ERROR (1 << 6)
11122
+#define DSI_PERIPHERAL_TIMEOUT_ERROR (1 << 5)
11123
+#define DSI_PERIPHERAL_LP_TX_SYNC_ERROR (1 << 4)
11124
+#define DSI_PERIPHERAL_ESC_MODE_ENTRY_CMD_ERR (1 << 3)
11125
+#define DSI_EOT_SYNC_ERROR (1 << 2)
11126
+#define DSI_SOT_SYNC_ERROR (1 << 1)
11127
+#define DSI_SOT_ERROR (1 << 0)
974711128
974811129 /* Gen4+ Timestamp and Pipe Frame time stamp registers */
974911130 #define GEN4_TIMESTAMP _MMIO(0x2358)
....@@ -9886,6 +11267,39 @@
988611267 _ICL_DSI_IO_MODECTL_0, \
988711268 _ICL_DSI_IO_MODECTL_1)
988811269 #define COMBO_PHY_MODE_DSI (1 << 0)
11270
+
11271
+/* Display Stream Splitter Control */
11272
+#define DSS_CTL1 _MMIO(0x67400)
11273
+#define SPLITTER_ENABLE (1 << 31)
11274
+#define JOINER_ENABLE (1 << 30)
11275
+#define DUAL_LINK_MODE_INTERLEAVE (1 << 24)
11276
+#define DUAL_LINK_MODE_FRONTBACK (0 << 24)
11277
+#define OVERLAP_PIXELS_MASK (0xf << 16)
11278
+#define OVERLAP_PIXELS(pixels) ((pixels) << 16)
11279
+#define LEFT_DL_BUF_TARGET_DEPTH_MASK (0xfff << 0)
11280
+#define LEFT_DL_BUF_TARGET_DEPTH(pixels) ((pixels) << 0)
11281
+#define MAX_DL_BUFFER_TARGET_DEPTH 0x5a0
11282
+
11283
+#define DSS_CTL2 _MMIO(0x67404)
11284
+#define LEFT_BRANCH_VDSC_ENABLE (1 << 31)
11285
+#define RIGHT_BRANCH_VDSC_ENABLE (1 << 15)
11286
+#define RIGHT_DL_BUF_TARGET_DEPTH_MASK (0xfff << 0)
11287
+#define RIGHT_DL_BUF_TARGET_DEPTH(pixels) ((pixels) << 0)
11288
+
11289
+#define _ICL_PIPE_DSS_CTL1_PB 0x78200
11290
+#define _ICL_PIPE_DSS_CTL1_PC 0x78400
11291
+#define ICL_PIPE_DSS_CTL1(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
11292
+ _ICL_PIPE_DSS_CTL1_PB, \
11293
+ _ICL_PIPE_DSS_CTL1_PC)
11294
+#define BIG_JOINER_ENABLE (1 << 29)
11295
+#define MASTER_BIG_JOINER_ENABLE (1 << 28)
11296
+#define VGA_CENTERING_ENABLE (1 << 27)
11297
+
11298
+#define _ICL_PIPE_DSS_CTL2_PB 0x78204
11299
+#define _ICL_PIPE_DSS_CTL2_PC 0x78404
11300
+#define ICL_PIPE_DSS_CTL2(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
11301
+ _ICL_PIPE_DSS_CTL2_PB, \
11302
+ _ICL_PIPE_DSS_CTL2_PC)
988911303
989011304 #define BXT_P_DSI_REGULATOR_CFG _MMIO(0x160020)
989111305 #define STAP_SELECT (1 << 0)
....@@ -10217,6 +11631,243 @@
1021711631 #define PREPARE_COUNT_SHIFT 0
1021811632 #define PREPARE_COUNT_MASK (0x3f << 0)
1021911633
11634
+#define _ICL_DSI_T_INIT_MASTER_0 0x6b088
11635
+#define _ICL_DSI_T_INIT_MASTER_1 0x6b888
11636
+#define ICL_DSI_T_INIT_MASTER(port) _MMIO_PORT(port, \
11637
+ _ICL_DSI_T_INIT_MASTER_0,\
11638
+ _ICL_DSI_T_INIT_MASTER_1)
11639
+
11640
+#define _DPHY_CLK_TIMING_PARAM_0 0x162180
11641
+#define _DPHY_CLK_TIMING_PARAM_1 0x6c180
11642
+#define DPHY_CLK_TIMING_PARAM(port) _MMIO_PORT(port, \
11643
+ _DPHY_CLK_TIMING_PARAM_0,\
11644
+ _DPHY_CLK_TIMING_PARAM_1)
11645
+#define _DSI_CLK_TIMING_PARAM_0 0x6b080
11646
+#define _DSI_CLK_TIMING_PARAM_1 0x6b880
11647
+#define DSI_CLK_TIMING_PARAM(port) _MMIO_PORT(port, \
11648
+ _DSI_CLK_TIMING_PARAM_0,\
11649
+ _DSI_CLK_TIMING_PARAM_1)
11650
+#define CLK_PREPARE_OVERRIDE (1 << 31)
11651
+#define CLK_PREPARE(x) ((x) << 28)
11652
+#define CLK_PREPARE_MASK (0x7 << 28)
11653
+#define CLK_PREPARE_SHIFT 28
11654
+#define CLK_ZERO_OVERRIDE (1 << 27)
11655
+#define CLK_ZERO(x) ((x) << 20)
11656
+#define CLK_ZERO_MASK (0xf << 20)
11657
+#define CLK_ZERO_SHIFT 20
11658
+#define CLK_PRE_OVERRIDE (1 << 19)
11659
+#define CLK_PRE(x) ((x) << 16)
11660
+#define CLK_PRE_MASK (0x3 << 16)
11661
+#define CLK_PRE_SHIFT 16
11662
+#define CLK_POST_OVERRIDE (1 << 15)
11663
+#define CLK_POST(x) ((x) << 8)
11664
+#define CLK_POST_MASK (0x7 << 8)
11665
+#define CLK_POST_SHIFT 8
11666
+#define CLK_TRAIL_OVERRIDE (1 << 7)
11667
+#define CLK_TRAIL(x) ((x) << 0)
11668
+#define CLK_TRAIL_MASK (0xf << 0)
11669
+#define CLK_TRAIL_SHIFT 0
11670
+
11671
+#define _DPHY_DATA_TIMING_PARAM_0 0x162184
11672
+#define _DPHY_DATA_TIMING_PARAM_1 0x6c184
11673
+#define DPHY_DATA_TIMING_PARAM(port) _MMIO_PORT(port, \
11674
+ _DPHY_DATA_TIMING_PARAM_0,\
11675
+ _DPHY_DATA_TIMING_PARAM_1)
11676
+#define _DSI_DATA_TIMING_PARAM_0 0x6B084
11677
+#define _DSI_DATA_TIMING_PARAM_1 0x6B884
11678
+#define DSI_DATA_TIMING_PARAM(port) _MMIO_PORT(port, \
11679
+ _DSI_DATA_TIMING_PARAM_0,\
11680
+ _DSI_DATA_TIMING_PARAM_1)
11681
+#define HS_PREPARE_OVERRIDE (1 << 31)
11682
+#define HS_PREPARE(x) ((x) << 24)
11683
+#define HS_PREPARE_MASK (0x7 << 24)
11684
+#define HS_PREPARE_SHIFT 24
11685
+#define HS_ZERO_OVERRIDE (1 << 23)
11686
+#define HS_ZERO(x) ((x) << 16)
11687
+#define HS_ZERO_MASK (0xf << 16)
11688
+#define HS_ZERO_SHIFT 16
11689
+#define HS_TRAIL_OVERRIDE (1 << 15)
11690
+#define HS_TRAIL(x) ((x) << 8)
11691
+#define HS_TRAIL_MASK (0x7 << 8)
11692
+#define HS_TRAIL_SHIFT 8
11693
+#define HS_EXIT_OVERRIDE (1 << 7)
11694
+#define HS_EXIT(x) ((x) << 0)
11695
+#define HS_EXIT_MASK (0x7 << 0)
11696
+#define HS_EXIT_SHIFT 0
11697
+
11698
+#define _DPHY_TA_TIMING_PARAM_0 0x162188
11699
+#define _DPHY_TA_TIMING_PARAM_1 0x6c188
11700
+#define DPHY_TA_TIMING_PARAM(port) _MMIO_PORT(port, \
11701
+ _DPHY_TA_TIMING_PARAM_0,\
11702
+ _DPHY_TA_TIMING_PARAM_1)
11703
+#define _DSI_TA_TIMING_PARAM_0 0x6b098
11704
+#define _DSI_TA_TIMING_PARAM_1 0x6b898
11705
+#define DSI_TA_TIMING_PARAM(port) _MMIO_PORT(port, \
11706
+ _DSI_TA_TIMING_PARAM_0,\
11707
+ _DSI_TA_TIMING_PARAM_1)
11708
+#define TA_SURE_OVERRIDE (1 << 31)
11709
+#define TA_SURE(x) ((x) << 16)
11710
+#define TA_SURE_MASK (0x1f << 16)
11711
+#define TA_SURE_SHIFT 16
11712
+#define TA_GO_OVERRIDE (1 << 15)
11713
+#define TA_GO(x) ((x) << 8)
11714
+#define TA_GO_MASK (0xf << 8)
11715
+#define TA_GO_SHIFT 8
11716
+#define TA_GET_OVERRIDE (1 << 7)
11717
+#define TA_GET(x) ((x) << 0)
11718
+#define TA_GET_MASK (0xf << 0)
11719
+#define TA_GET_SHIFT 0
11720
+
11721
+/* DSI transcoder configuration */
11722
+#define _DSI_TRANS_FUNC_CONF_0 0x6b030
11723
+#define _DSI_TRANS_FUNC_CONF_1 0x6b830
11724
+#define DSI_TRANS_FUNC_CONF(tc) _MMIO_DSI(tc, \
11725
+ _DSI_TRANS_FUNC_CONF_0,\
11726
+ _DSI_TRANS_FUNC_CONF_1)
11727
+#define OP_MODE_MASK (0x3 << 28)
11728
+#define OP_MODE_SHIFT 28
11729
+#define CMD_MODE_NO_GATE (0x0 << 28)
11730
+#define CMD_MODE_TE_GATE (0x1 << 28)
11731
+#define VIDEO_MODE_SYNC_EVENT (0x2 << 28)
11732
+#define VIDEO_MODE_SYNC_PULSE (0x3 << 28)
11733
+#define TE_SOURCE_GPIO (1 << 27)
11734
+#define LINK_READY (1 << 20)
11735
+#define PIX_FMT_MASK (0x3 << 16)
11736
+#define PIX_FMT_SHIFT 16
11737
+#define PIX_FMT_RGB565 (0x0 << 16)
11738
+#define PIX_FMT_RGB666_PACKED (0x1 << 16)
11739
+#define PIX_FMT_RGB666_LOOSE (0x2 << 16)
11740
+#define PIX_FMT_RGB888 (0x3 << 16)
11741
+#define PIX_FMT_RGB101010 (0x4 << 16)
11742
+#define PIX_FMT_RGB121212 (0x5 << 16)
11743
+#define PIX_FMT_COMPRESSED (0x6 << 16)
11744
+#define BGR_TRANSMISSION (1 << 15)
11745
+#define PIX_VIRT_CHAN(x) ((x) << 12)
11746
+#define PIX_VIRT_CHAN_MASK (0x3 << 12)
11747
+#define PIX_VIRT_CHAN_SHIFT 12
11748
+#define PIX_BUF_THRESHOLD_MASK (0x3 << 10)
11749
+#define PIX_BUF_THRESHOLD_SHIFT 10
11750
+#define PIX_BUF_THRESHOLD_1_4 (0x0 << 10)
11751
+#define PIX_BUF_THRESHOLD_1_2 (0x1 << 10)
11752
+#define PIX_BUF_THRESHOLD_3_4 (0x2 << 10)
11753
+#define PIX_BUF_THRESHOLD_FULL (0x3 << 10)
11754
+#define CONTINUOUS_CLK_MASK (0x3 << 8)
11755
+#define CONTINUOUS_CLK_SHIFT 8
11756
+#define CLK_ENTER_LP_AFTER_DATA (0x0 << 8)
11757
+#define CLK_HS_OR_LP (0x2 << 8)
11758
+#define CLK_HS_CONTINUOUS (0x3 << 8)
11759
+#define LINK_CALIBRATION_MASK (0x3 << 4)
11760
+#define LINK_CALIBRATION_SHIFT 4
11761
+#define CALIBRATION_DISABLED (0x0 << 4)
11762
+#define CALIBRATION_ENABLED_INITIAL_ONLY (0x2 << 4)
11763
+#define CALIBRATION_ENABLED_INITIAL_PERIODIC (0x3 << 4)
11764
+#define BLANKING_PACKET_ENABLE (1 << 2)
11765
+#define S3D_ORIENTATION_LANDSCAPE (1 << 1)
11766
+#define EOTP_DISABLED (1 << 0)
11767
+
11768
+#define _DSI_CMD_RXCTL_0 0x6b0d4
11769
+#define _DSI_CMD_RXCTL_1 0x6b8d4
11770
+#define DSI_CMD_RXCTL(tc) _MMIO_DSI(tc, \
11771
+ _DSI_CMD_RXCTL_0,\
11772
+ _DSI_CMD_RXCTL_1)
11773
+#define READ_UNLOADS_DW (1 << 16)
11774
+#define RECEIVED_UNASSIGNED_TRIGGER (1 << 15)
11775
+#define RECEIVED_ACKNOWLEDGE_TRIGGER (1 << 14)
11776
+#define RECEIVED_TEAR_EFFECT_TRIGGER (1 << 13)
11777
+#define RECEIVED_RESET_TRIGGER (1 << 12)
11778
+#define RECEIVED_PAYLOAD_WAS_LOST (1 << 11)
11779
+#define RECEIVED_CRC_WAS_LOST (1 << 10)
11780
+#define NUMBER_RX_PLOAD_DW_MASK (0xff << 0)
11781
+#define NUMBER_RX_PLOAD_DW_SHIFT 0
11782
+
11783
+#define _DSI_CMD_TXCTL_0 0x6b0d0
11784
+#define _DSI_CMD_TXCTL_1 0x6b8d0
11785
+#define DSI_CMD_TXCTL(tc) _MMIO_DSI(tc, \
11786
+ _DSI_CMD_TXCTL_0,\
11787
+ _DSI_CMD_TXCTL_1)
11788
+#define KEEP_LINK_IN_HS (1 << 24)
11789
+#define FREE_HEADER_CREDIT_MASK (0x1f << 8)
11790
+#define FREE_HEADER_CREDIT_SHIFT 0x8
11791
+#define FREE_PLOAD_CREDIT_MASK (0xff << 0)
11792
+#define FREE_PLOAD_CREDIT_SHIFT 0
11793
+#define MAX_HEADER_CREDIT 0x10
11794
+#define MAX_PLOAD_CREDIT 0x40
11795
+
11796
+#define _DSI_CMD_TXHDR_0 0x6b100
11797
+#define _DSI_CMD_TXHDR_1 0x6b900
11798
+#define DSI_CMD_TXHDR(tc) _MMIO_DSI(tc, \
11799
+ _DSI_CMD_TXHDR_0,\
11800
+ _DSI_CMD_TXHDR_1)
11801
+#define PAYLOAD_PRESENT (1 << 31)
11802
+#define LP_DATA_TRANSFER (1 << 30)
11803
+#define VBLANK_FENCE (1 << 29)
11804
+#define PARAM_WC_MASK (0xffff << 8)
11805
+#define PARAM_WC_LOWER_SHIFT 8
11806
+#define PARAM_WC_UPPER_SHIFT 16
11807
+#define VC_MASK (0x3 << 6)
11808
+#define VC_SHIFT 6
11809
+#define DT_MASK (0x3f << 0)
11810
+#define DT_SHIFT 0
11811
+
11812
+#define _DSI_CMD_TXPYLD_0 0x6b104
11813
+#define _DSI_CMD_TXPYLD_1 0x6b904
11814
+#define DSI_CMD_TXPYLD(tc) _MMIO_DSI(tc, \
11815
+ _DSI_CMD_TXPYLD_0,\
11816
+ _DSI_CMD_TXPYLD_1)
11817
+
11818
+#define _DSI_LP_MSG_0 0x6b0d8
11819
+#define _DSI_LP_MSG_1 0x6b8d8
11820
+#define DSI_LP_MSG(tc) _MMIO_DSI(tc, \
11821
+ _DSI_LP_MSG_0,\
11822
+ _DSI_LP_MSG_1)
11823
+#define LPTX_IN_PROGRESS (1 << 17)
11824
+#define LINK_IN_ULPS (1 << 16)
11825
+#define LINK_ULPS_TYPE_LP11 (1 << 8)
11826
+#define LINK_ENTER_ULPS (1 << 0)
11827
+
11828
+/* DSI timeout registers */
11829
+#define _DSI_HSTX_TO_0 0x6b044
11830
+#define _DSI_HSTX_TO_1 0x6b844
11831
+#define DSI_HSTX_TO(tc) _MMIO_DSI(tc, \
11832
+ _DSI_HSTX_TO_0,\
11833
+ _DSI_HSTX_TO_1)
11834
+#define HSTX_TIMEOUT_VALUE_MASK (0xffff << 16)
11835
+#define HSTX_TIMEOUT_VALUE_SHIFT 16
11836
+#define HSTX_TIMEOUT_VALUE(x) ((x) << 16)
11837
+#define HSTX_TIMED_OUT (1 << 0)
11838
+
11839
+#define _DSI_LPRX_HOST_TO_0 0x6b048
11840
+#define _DSI_LPRX_HOST_TO_1 0x6b848
11841
+#define DSI_LPRX_HOST_TO(tc) _MMIO_DSI(tc, \
11842
+ _DSI_LPRX_HOST_TO_0,\
11843
+ _DSI_LPRX_HOST_TO_1)
11844
+#define LPRX_TIMED_OUT (1 << 16)
11845
+#define LPRX_TIMEOUT_VALUE_MASK (0xffff << 0)
11846
+#define LPRX_TIMEOUT_VALUE_SHIFT 0
11847
+#define LPRX_TIMEOUT_VALUE(x) ((x) << 0)
11848
+
11849
+#define _DSI_PWAIT_TO_0 0x6b040
11850
+#define _DSI_PWAIT_TO_1 0x6b840
11851
+#define DSI_PWAIT_TO(tc) _MMIO_DSI(tc, \
11852
+ _DSI_PWAIT_TO_0,\
11853
+ _DSI_PWAIT_TO_1)
11854
+#define PRESET_TIMEOUT_VALUE_MASK (0xffff << 16)
11855
+#define PRESET_TIMEOUT_VALUE_SHIFT 16
11856
+#define PRESET_TIMEOUT_VALUE(x) ((x) << 16)
11857
+#define PRESPONSE_TIMEOUT_VALUE_MASK (0xffff << 0)
11858
+#define PRESPONSE_TIMEOUT_VALUE_SHIFT 0
11859
+#define PRESPONSE_TIMEOUT_VALUE(x) ((x) << 0)
11860
+
11861
+#define _DSI_TA_TO_0 0x6b04c
11862
+#define _DSI_TA_TO_1 0x6b84c
11863
+#define DSI_TA_TO(tc) _MMIO_DSI(tc, \
11864
+ _DSI_TA_TO_0,\
11865
+ _DSI_TA_TO_1)
11866
+#define TA_TIMED_OUT (1 << 16)
11867
+#define TA_TIMEOUT_VALUE_MASK (0xffff << 0)
11868
+#define TA_TIMEOUT_VALUE_SHIFT 0
11869
+#define TA_TIMEOUT_VALUE(x) ((x) << 0)
11870
+
1022011871 /* bits 31:0 */
1022111872 #define _MIPIA_DBI_BW_CTRL (dev_priv->mipi_mmio_base + 0xb084)
1022211873 #define _MIPIC_DBI_BW_CTRL (dev_priv->mipi_mmio_base + 0xb884)
....@@ -10329,25 +11980,28 @@
1032911980 #define MIPI_READ_DATA_VALID(port) _MMIO_MIPI(port, _MIPIA_READ_DATA_VALID, _MIPIC_READ_DATA_VALID)
1033011981 #define READ_DATA_VALID(n) (1 << (n))
1033111982
10332
-/* For UMS only (deprecated): */
10333
-#define _PALETTE_A (dev_priv->info.display_mmio_offset + 0xa000)
10334
-#define _PALETTE_B (dev_priv->info.display_mmio_offset + 0xa800)
10335
-
1033611983 /* MOCS (Memory Object Control State) registers */
1033711984 #define GEN9_LNCFCMOCS(i) _MMIO(0xb020 + (i) * 4) /* L3 Cache Control */
1033811985
10339
-#define GEN9_GFX_MOCS(i) _MMIO(0xc800 + (i) * 4) /* Graphics MOCS registers */
10340
-#define GEN9_MFX0_MOCS(i) _MMIO(0xc900 + (i) * 4) /* Media 0 MOCS registers */
10341
-#define GEN9_MFX1_MOCS(i) _MMIO(0xca00 + (i) * 4) /* Media 1 MOCS registers */
10342
-#define GEN9_VEBOX_MOCS(i) _MMIO(0xcb00 + (i) * 4) /* Video MOCS registers */
10343
-#define GEN9_BLT_MOCS(i) _MMIO(0xcc00 + (i) * 4) /* Blitter MOCS registers */
10344
-/* Media decoder 2 MOCS registers */
10345
-#define GEN11_MFX2_MOCS(i) _MMIO(0x10000 + (i) * 4)
11986
+#define __GEN9_RCS0_MOCS0 0xc800
11987
+#define GEN9_GFX_MOCS(i) _MMIO(__GEN9_RCS0_MOCS0 + (i) * 4)
11988
+#define __GEN9_VCS0_MOCS0 0xc900
11989
+#define GEN9_MFX0_MOCS(i) _MMIO(__GEN9_VCS0_MOCS0 + (i) * 4)
11990
+#define __GEN9_VCS1_MOCS0 0xca00
11991
+#define GEN9_MFX1_MOCS(i) _MMIO(__GEN9_VCS1_MOCS0 + (i) * 4)
11992
+#define __GEN9_VECS0_MOCS0 0xcb00
11993
+#define GEN9_VEBOX_MOCS(i) _MMIO(__GEN9_VECS0_MOCS0 + (i) * 4)
11994
+#define __GEN9_BCS0_MOCS0 0xcc00
11995
+#define GEN9_BLT_MOCS(i) _MMIO(__GEN9_BCS0_MOCS0 + (i) * 4)
11996
+#define __GEN11_VCS2_MOCS0 0x10000
11997
+#define GEN11_MFX2_MOCS(i) _MMIO(__GEN11_VCS2_MOCS0 + (i) * 4)
1034611998
1034711999 #define GEN10_SCRATCH_LNCF2 _MMIO(0xb0a0)
1034812000 #define PMFLUSHDONE_LNICRSDROP (1 << 20)
1034912001 #define PMFLUSH_GAPL3UNBLOCK (1 << 21)
1035012002 #define PMFLUSHDONE_LNEBLK (1 << 22)
12003
+
12004
+#define GEN12_GLOBAL_MOCS(i) _MMIO(0x4000 + (i) * 4) /* Global MOCS regs */
1035112005
1035212006 /* gamt regs */
1035312007 #define GEN8_L3_LRA_1_GPGPU _MMIO(0x4dd4)
....@@ -10364,11 +12018,12 @@
1036412018 #define _ICL_PHY_MISC_B 0x64C04
1036512019 #define ICL_PHY_MISC(port) _MMIO_PORT(port, _ICL_PHY_MISC_A, \
1036612020 _ICL_PHY_MISC_B)
12021
+#define ICL_PHY_MISC_MUX_DDID (1 << 28)
1036712022 #define ICL_PHY_MISC_DE_IO_COMP_PWR_DOWN (1 << 23)
1036812023
1036912024 /* Icelake Display Stream Compression Registers */
10370
-#define DSCA_PICTURE_PARAMETER_SET_0 0x6B200
10371
-#define DSCC_PICTURE_PARAMETER_SET_0 0x6BA00
12025
+#define DSCA_PICTURE_PARAMETER_SET_0 _MMIO(0x6B200)
12026
+#define DSCC_PICTURE_PARAMETER_SET_0 _MMIO(0x6BA00)
1037212027 #define _ICL_DSC0_PICTURE_PARAMETER_SET_0_PB 0x78270
1037312028 #define _ICL_DSC1_PICTURE_PARAMETER_SET_0_PB 0x78370
1037412029 #define _ICL_DSC0_PICTURE_PARAMETER_SET_0_PC 0x78470
....@@ -10388,8 +12043,8 @@
1038812043 #define DSC_VER_MIN_SHIFT 4
1038912044 #define DSC_VER_MAJ (0x1 << 0)
1039012045
10391
-#define DSCA_PICTURE_PARAMETER_SET_1 0x6B204
10392
-#define DSCC_PICTURE_PARAMETER_SET_1 0x6BA04
12046
+#define DSCA_PICTURE_PARAMETER_SET_1 _MMIO(0x6B204)
12047
+#define DSCC_PICTURE_PARAMETER_SET_1 _MMIO(0x6BA04)
1039312048 #define _ICL_DSC0_PICTURE_PARAMETER_SET_1_PB 0x78274
1039412049 #define _ICL_DSC1_PICTURE_PARAMETER_SET_1_PB 0x78374
1039512050 #define _ICL_DSC0_PICTURE_PARAMETER_SET_1_PC 0x78474
....@@ -10402,8 +12057,8 @@
1040212057 _ICL_DSC1_PICTURE_PARAMETER_SET_1_PC)
1040312058 #define DSC_BPP(bpp) ((bpp) << 0)
1040412059
10405
-#define DSCA_PICTURE_PARAMETER_SET_2 0x6B208
10406
-#define DSCC_PICTURE_PARAMETER_SET_2 0x6BA08
12060
+#define DSCA_PICTURE_PARAMETER_SET_2 _MMIO(0x6B208)
12061
+#define DSCC_PICTURE_PARAMETER_SET_2 _MMIO(0x6BA08)
1040712062 #define _ICL_DSC0_PICTURE_PARAMETER_SET_2_PB 0x78278
1040812063 #define _ICL_DSC1_PICTURE_PARAMETER_SET_2_PB 0x78378
1040912064 #define _ICL_DSC0_PICTURE_PARAMETER_SET_2_PC 0x78478
....@@ -10417,8 +12072,8 @@
1041712072 #define DSC_PIC_WIDTH(pic_width) ((pic_width) << 16)
1041812073 #define DSC_PIC_HEIGHT(pic_height) ((pic_height) << 0)
1041912074
10420
-#define DSCA_PICTURE_PARAMETER_SET_3 0x6B20C
10421
-#define DSCC_PICTURE_PARAMETER_SET_3 0x6BA0C
12075
+#define DSCA_PICTURE_PARAMETER_SET_3 _MMIO(0x6B20C)
12076
+#define DSCC_PICTURE_PARAMETER_SET_3 _MMIO(0x6BA0C)
1042212077 #define _ICL_DSC0_PICTURE_PARAMETER_SET_3_PB 0x7827C
1042312078 #define _ICL_DSC1_PICTURE_PARAMETER_SET_3_PB 0x7837C
1042412079 #define _ICL_DSC0_PICTURE_PARAMETER_SET_3_PC 0x7847C
....@@ -10432,8 +12087,8 @@
1043212087 #define DSC_SLICE_WIDTH(slice_width) ((slice_width) << 16)
1043312088 #define DSC_SLICE_HEIGHT(slice_height) ((slice_height) << 0)
1043412089
10435
-#define DSCA_PICTURE_PARAMETER_SET_4 0x6B210
10436
-#define DSCC_PICTURE_PARAMETER_SET_4 0x6BA10
12090
+#define DSCA_PICTURE_PARAMETER_SET_4 _MMIO(0x6B210)
12091
+#define DSCC_PICTURE_PARAMETER_SET_4 _MMIO(0x6BA10)
1043712092 #define _ICL_DSC0_PICTURE_PARAMETER_SET_4_PB 0x78280
1043812093 #define _ICL_DSC1_PICTURE_PARAMETER_SET_4_PB 0x78380
1043912094 #define _ICL_DSC0_PICTURE_PARAMETER_SET_4_PC 0x78480
....@@ -10447,8 +12102,8 @@
1044712102 #define DSC_INITIAL_DEC_DELAY(dec_delay) ((dec_delay) << 16)
1044812103 #define DSC_INITIAL_XMIT_DELAY(xmit_delay) ((xmit_delay) << 0)
1044912104
10450
-#define DSCA_PICTURE_PARAMETER_SET_5 0x6B214
10451
-#define DSCC_PICTURE_PARAMETER_SET_5 0x6BA14
12105
+#define DSCA_PICTURE_PARAMETER_SET_5 _MMIO(0x6B214)
12106
+#define DSCC_PICTURE_PARAMETER_SET_5 _MMIO(0x6BA14)
1045212107 #define _ICL_DSC0_PICTURE_PARAMETER_SET_5_PB 0x78284
1045312108 #define _ICL_DSC1_PICTURE_PARAMETER_SET_5_PB 0x78384
1045412109 #define _ICL_DSC0_PICTURE_PARAMETER_SET_5_PC 0x78484
....@@ -10459,11 +12114,11 @@
1045912114 #define ICL_DSC1_PICTURE_PARAMETER_SET_5(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
1046012115 _ICL_DSC1_PICTURE_PARAMETER_SET_5_PB, \
1046112116 _ICL_DSC1_PICTURE_PARAMETER_SET_5_PC)
10462
-#define DSC_SCALE_DEC_INTINT(scale_dec) ((scale_dec) << 16)
12117
+#define DSC_SCALE_DEC_INT(scale_dec) ((scale_dec) << 16)
1046312118 #define DSC_SCALE_INC_INT(scale_inc) ((scale_inc) << 0)
1046412119
10465
-#define DSCA_PICTURE_PARAMETER_SET_6 0x6B218
10466
-#define DSCC_PICTURE_PARAMETER_SET_6 0x6BA18
12120
+#define DSCA_PICTURE_PARAMETER_SET_6 _MMIO(0x6B218)
12121
+#define DSCC_PICTURE_PARAMETER_SET_6 _MMIO(0x6BA18)
1046712122 #define _ICL_DSC0_PICTURE_PARAMETER_SET_6_PB 0x78288
1046812123 #define _ICL_DSC1_PICTURE_PARAMETER_SET_6_PB 0x78388
1046912124 #define _ICL_DSC0_PICTURE_PARAMETER_SET_6_PC 0x78488
....@@ -10474,13 +12129,13 @@
1047412129 #define ICL_DSC1_PICTURE_PARAMETER_SET_6(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
1047512130 _ICL_DSC1_PICTURE_PARAMETER_SET_6_PB, \
1047612131 _ICL_DSC1_PICTURE_PARAMETER_SET_6_PC)
10477
-#define DSC_FLATNESS_MAX_QP(max_qp) (qp << 24)
10478
-#define DSC_FLATNESS_MIN_QP(min_qp) (qp << 16)
12132
+#define DSC_FLATNESS_MAX_QP(max_qp) ((max_qp) << 24)
12133
+#define DSC_FLATNESS_MIN_QP(min_qp) ((min_qp) << 16)
1047912134 #define DSC_FIRST_LINE_BPG_OFFSET(offset) ((offset) << 8)
1048012135 #define DSC_INITIAL_SCALE_VALUE(value) ((value) << 0)
1048112136
10482
-#define DSCA_PICTURE_PARAMETER_SET_7 0x6B21C
10483
-#define DSCC_PICTURE_PARAMETER_SET_7 0x6BA1C
12137
+#define DSCA_PICTURE_PARAMETER_SET_7 _MMIO(0x6B21C)
12138
+#define DSCC_PICTURE_PARAMETER_SET_7 _MMIO(0x6BA1C)
1048412139 #define _ICL_DSC0_PICTURE_PARAMETER_SET_7_PB 0x7828C
1048512140 #define _ICL_DSC1_PICTURE_PARAMETER_SET_7_PB 0x7838C
1048612141 #define _ICL_DSC0_PICTURE_PARAMETER_SET_7_PC 0x7848C
....@@ -10494,8 +12149,8 @@
1049412149 #define DSC_NFL_BPG_OFFSET(bpg_offset) ((bpg_offset) << 16)
1049512150 #define DSC_SLICE_BPG_OFFSET(bpg_offset) ((bpg_offset) << 0)
1049612151
10497
-#define DSCA_PICTURE_PARAMETER_SET_8 0x6B220
10498
-#define DSCC_PICTURE_PARAMETER_SET_8 0x6BA20
12152
+#define DSCA_PICTURE_PARAMETER_SET_8 _MMIO(0x6B220)
12153
+#define DSCC_PICTURE_PARAMETER_SET_8 _MMIO(0x6BA20)
1049912154 #define _ICL_DSC0_PICTURE_PARAMETER_SET_8_PB 0x78290
1050012155 #define _ICL_DSC1_PICTURE_PARAMETER_SET_8_PB 0x78390
1050112156 #define _ICL_DSC0_PICTURE_PARAMETER_SET_8_PC 0x78490
....@@ -10509,8 +12164,8 @@
1050912164 #define DSC_INITIAL_OFFSET(initial_offset) ((initial_offset) << 16)
1051012165 #define DSC_FINAL_OFFSET(final_offset) ((final_offset) << 0)
1051112166
10512
-#define DSCA_PICTURE_PARAMETER_SET_9 0x6B224
10513
-#define DSCC_PICTURE_PARAMETER_SET_9 0x6BA24
12167
+#define DSCA_PICTURE_PARAMETER_SET_9 _MMIO(0x6B224)
12168
+#define DSCC_PICTURE_PARAMETER_SET_9 _MMIO(0x6BA24)
1051412169 #define _ICL_DSC0_PICTURE_PARAMETER_SET_9_PB 0x78294
1051512170 #define _ICL_DSC1_PICTURE_PARAMETER_SET_9_PB 0x78394
1051612171 #define _ICL_DSC0_PICTURE_PARAMETER_SET_9_PC 0x78494
....@@ -10524,8 +12179,8 @@
1052412179 #define DSC_RC_EDGE_FACTOR(rc_edge_fact) ((rc_edge_fact) << 16)
1052512180 #define DSC_RC_MODEL_SIZE(rc_model_size) ((rc_model_size) << 0)
1052612181
10527
-#define DSCA_PICTURE_PARAMETER_SET_10 0x6B228
10528
-#define DSCC_PICTURE_PARAMETER_SET_10 0x6BA28
12182
+#define DSCA_PICTURE_PARAMETER_SET_10 _MMIO(0x6B228)
12183
+#define DSCC_PICTURE_PARAMETER_SET_10 _MMIO(0x6BA28)
1052912184 #define _ICL_DSC0_PICTURE_PARAMETER_SET_10_PB 0x78298
1053012185 #define _ICL_DSC1_PICTURE_PARAMETER_SET_10_PB 0x78398
1053112186 #define _ICL_DSC0_PICTURE_PARAMETER_SET_10_PC 0x78498
....@@ -10541,8 +12196,8 @@
1054112196 #define DSC_RC_QUANT_INC_LIMIT1(lim) ((lim) << 8)
1054212197 #define DSC_RC_QUANT_INC_LIMIT0(lim) ((lim) << 0)
1054312198
10544
-#define DSCA_PICTURE_PARAMETER_SET_11 0x6B22C
10545
-#define DSCC_PICTURE_PARAMETER_SET_11 0x6BA2C
12199
+#define DSCA_PICTURE_PARAMETER_SET_11 _MMIO(0x6B22C)
12200
+#define DSCC_PICTURE_PARAMETER_SET_11 _MMIO(0x6BA2C)
1054612201 #define _ICL_DSC0_PICTURE_PARAMETER_SET_11_PB 0x7829C
1054712202 #define _ICL_DSC1_PICTURE_PARAMETER_SET_11_PB 0x7839C
1054812203 #define _ICL_DSC0_PICTURE_PARAMETER_SET_11_PC 0x7849C
....@@ -10554,8 +12209,8 @@
1055412209 _ICL_DSC1_PICTURE_PARAMETER_SET_11_PB, \
1055512210 _ICL_DSC1_PICTURE_PARAMETER_SET_11_PC)
1055612211
10557
-#define DSCA_PICTURE_PARAMETER_SET_12 0x6B260
10558
-#define DSCC_PICTURE_PARAMETER_SET_12 0x6BA60
12212
+#define DSCA_PICTURE_PARAMETER_SET_12 _MMIO(0x6B260)
12213
+#define DSCC_PICTURE_PARAMETER_SET_12 _MMIO(0x6BA60)
1055912214 #define _ICL_DSC0_PICTURE_PARAMETER_SET_12_PB 0x782A0
1056012215 #define _ICL_DSC1_PICTURE_PARAMETER_SET_12_PB 0x783A0
1056112216 #define _ICL_DSC0_PICTURE_PARAMETER_SET_12_PC 0x784A0
....@@ -10567,8 +12222,8 @@
1056712222 _ICL_DSC1_PICTURE_PARAMETER_SET_12_PB, \
1056812223 _ICL_DSC1_PICTURE_PARAMETER_SET_12_PC)
1056912224
10570
-#define DSCA_PICTURE_PARAMETER_SET_13 0x6B264
10571
-#define DSCC_PICTURE_PARAMETER_SET_13 0x6BA64
12225
+#define DSCA_PICTURE_PARAMETER_SET_13 _MMIO(0x6B264)
12226
+#define DSCC_PICTURE_PARAMETER_SET_13 _MMIO(0x6BA64)
1057212227 #define _ICL_DSC0_PICTURE_PARAMETER_SET_13_PB 0x782A4
1057312228 #define _ICL_DSC1_PICTURE_PARAMETER_SET_13_PB 0x783A4
1057412229 #define _ICL_DSC0_PICTURE_PARAMETER_SET_13_PC 0x784A4
....@@ -10580,8 +12235,8 @@
1058012235 _ICL_DSC1_PICTURE_PARAMETER_SET_13_PB, \
1058112236 _ICL_DSC1_PICTURE_PARAMETER_SET_13_PC)
1058212237
10583
-#define DSCA_PICTURE_PARAMETER_SET_14 0x6B268
10584
-#define DSCC_PICTURE_PARAMETER_SET_14 0x6BA68
12238
+#define DSCA_PICTURE_PARAMETER_SET_14 _MMIO(0x6B268)
12239
+#define DSCC_PICTURE_PARAMETER_SET_14 _MMIO(0x6BA68)
1058512240 #define _ICL_DSC0_PICTURE_PARAMETER_SET_14_PB 0x782A8
1058612241 #define _ICL_DSC1_PICTURE_PARAMETER_SET_14_PB 0x783A8
1058712242 #define _ICL_DSC0_PICTURE_PARAMETER_SET_14_PC 0x784A8
....@@ -10593,8 +12248,8 @@
1059312248 _ICL_DSC1_PICTURE_PARAMETER_SET_14_PB, \
1059412249 _ICL_DSC1_PICTURE_PARAMETER_SET_14_PC)
1059512250
10596
-#define DSCA_PICTURE_PARAMETER_SET_15 0x6B26C
10597
-#define DSCC_PICTURE_PARAMETER_SET_15 0x6BA6C
12251
+#define DSCA_PICTURE_PARAMETER_SET_15 _MMIO(0x6B26C)
12252
+#define DSCC_PICTURE_PARAMETER_SET_15 _MMIO(0x6BA6C)
1059812253 #define _ICL_DSC0_PICTURE_PARAMETER_SET_15_PB 0x782AC
1059912254 #define _ICL_DSC1_PICTURE_PARAMETER_SET_15_PB 0x783AC
1060012255 #define _ICL_DSC0_PICTURE_PARAMETER_SET_15_PC 0x784AC
....@@ -10606,8 +12261,8 @@
1060612261 _ICL_DSC1_PICTURE_PARAMETER_SET_15_PB, \
1060712262 _ICL_DSC1_PICTURE_PARAMETER_SET_15_PC)
1060812263
10609
-#define DSCA_PICTURE_PARAMETER_SET_16 0x6B270
10610
-#define DSCC_PICTURE_PARAMETER_SET_16 0x6BA70
12264
+#define DSCA_PICTURE_PARAMETER_SET_16 _MMIO(0x6B270)
12265
+#define DSCC_PICTURE_PARAMETER_SET_16 _MMIO(0x6BA70)
1061112266 #define _ICL_DSC0_PICTURE_PARAMETER_SET_16_PB 0x782B0
1061212267 #define _ICL_DSC1_PICTURE_PARAMETER_SET_16_PB 0x783B0
1061312268 #define _ICL_DSC0_PICTURE_PARAMETER_SET_16_PC 0x784B0
....@@ -10618,8 +12273,9 @@
1061812273 #define ICL_DSC1_PICTURE_PARAMETER_SET_16(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
1061912274 _ICL_DSC1_PICTURE_PARAMETER_SET_16_PB, \
1062012275 _ICL_DSC1_PICTURE_PARAMETER_SET_16_PC)
12276
+#define DSC_SLICE_ROW_PER_FRAME(slice_row_per_frame) ((slice_row_per_frame) << 20)
1062112277 #define DSC_SLICE_PER_LINE(slice_per_line) ((slice_per_line) << 16)
10622
-#define DSC_SLICE_CHUNK_SIZE(slice_chunk_aize) (slice_chunk_size << 0)
12278
+#define DSC_SLICE_CHUNK_SIZE(slice_chunk_size) ((slice_chunk_size) << 0)
1062312279
1062412280 /* Icelake Rate Control Buffer Threshold Registers */
1062512281 #define DSCA_RC_BUF_THRESH_0 _MMIO(0x6B230)
....@@ -10672,4 +12328,39 @@
1067212328 _ICL_DSC1_RC_BUF_THRESH_1_UDW_PB, \
1067312329 _ICL_DSC1_RC_BUF_THRESH_1_UDW_PC)
1067412330
12331
+#define PORT_TX_DFLEXDPSP(fia) _MMIO_FIA((fia), 0x008A0)
12332
+#define MODULAR_FIA_MASK (1 << 4)
12333
+#define TC_LIVE_STATE_TBT(idx) (1 << ((idx) * 8 + 6))
12334
+#define TC_LIVE_STATE_TC(idx) (1 << ((idx) * 8 + 5))
12335
+#define DP_LANE_ASSIGNMENT_SHIFT(idx) ((idx) * 8)
12336
+#define DP_LANE_ASSIGNMENT_MASK(idx) (0xf << ((idx) * 8))
12337
+#define DP_LANE_ASSIGNMENT(idx, x) ((x) << ((idx) * 8))
12338
+
12339
+#define PORT_TX_DFLEXDPPMS(fia) _MMIO_FIA((fia), 0x00890)
12340
+#define DP_PHY_MODE_STATUS_COMPLETED(idx) (1 << (idx))
12341
+
12342
+#define PORT_TX_DFLEXDPCSSS(fia) _MMIO_FIA((fia), 0x00894)
12343
+#define DP_PHY_MODE_STATUS_NOT_SAFE(idx) (1 << (idx))
12344
+
12345
+#define PORT_TX_DFLEXPA1(fia) _MMIO_FIA((fia), 0x00880)
12346
+#define DP_PIN_ASSIGNMENT_SHIFT(idx) ((idx) * 4)
12347
+#define DP_PIN_ASSIGNMENT_MASK(idx) (0xf << ((idx) * 4))
12348
+#define DP_PIN_ASSIGNMENT(idx, x) ((x) << ((idx) * 4))
12349
+
12350
+/* This register controls the Display State Buffer (DSB) engines. */
12351
+#define _DSBSL_INSTANCE_BASE 0x70B00
12352
+#define DSBSL_INSTANCE(pipe, id) (_DSBSL_INSTANCE_BASE + \
12353
+ (pipe) * 0x1000 + (id) * 0x100)
12354
+#define DSB_HEAD(pipe, id) _MMIO(DSBSL_INSTANCE(pipe, id) + 0x0)
12355
+#define DSB_TAIL(pipe, id) _MMIO(DSBSL_INSTANCE(pipe, id) + 0x4)
12356
+#define DSB_CTRL(pipe, id) _MMIO(DSBSL_INSTANCE(pipe, id) + 0x8)
12357
+#define DSB_ENABLE (1 << 31)
12358
+#define DSB_STATUS (1 << 0)
12359
+
12360
+#define TGL_ROOT_DEVICE_ID 0x9A00
12361
+#define TGL_ROOT_DEVICE_MASK 0xFF00
12362
+#define TGL_ROOT_DEVICE_SKU_MASK 0xF
12363
+#define TGL_ROOT_DEVICE_SKU_ULX 0x2
12364
+#define TGL_ROOT_DEVICE_SKU_ULT 0x4
12365
+
1067512366 #endif /* _I915_REG_H_ */