Merge drm/drm-next into drm-intel-next-queued
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / i915_reg.h
index 06cd1d2..f09120c 100644 (file)
@@ -1869,9 +1869,11 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define _ICL_COMBOPHY_A                        0x162000
 #define _ICL_COMBOPHY_B                        0x6C000
 #define _EHL_COMBOPHY_C                        0x160000
+#define _RKL_COMBOPHY_D                        0x161000
 #define _ICL_COMBOPHY(phy)             _PICK(phy, _ICL_COMBOPHY_A, \
                                              _ICL_COMBOPHY_B, \
-                                             _EHL_COMBOPHY_C)
+                                             _EHL_COMBOPHY_C, \
+                                             _RKL_COMBOPHY_D)
 
 /* CNL/ICL Port CL_DW registers */
 #define _ICL_PORT_CL_DW(dw, phy)       (_ICL_COMBOPHY(phy) + \
@@ -2877,9 +2879,12 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define LM_FIFO_WATERMARK   0x0000001F
 #define MI_ARB_STATE   _MMIO(0x20e4) /* 915+ only */
 
-#define MBUS_ABOX_CTL                  _MMIO(0x45038)
-#define MBUS_ABOX1_CTL                 _MMIO(0x45048)
-#define MBUS_ABOX2_CTL                 _MMIO(0x4504C)
+#define _MBUS_ABOX0_CTL                        0x45038
+#define _MBUS_ABOX1_CTL                        0x45048
+#define _MBUS_ABOX2_CTL                        0x4504C
+#define MBUS_ABOX_CTL(x)               _MMIO(_PICK(x, _MBUS_ABOX0_CTL, \
+                                                   _MBUS_ABOX1_CTL, \
+                                                   _MBUS_ABOX2_CTL))
 #define MBUS_ABOX_BW_CREDIT_MASK       (3 << 20)
 #define MBUS_ABOX_BW_CREDIT(x)         ((x) << 20)
 #define MBUS_ABOX_B_CREDIT_MASK                (0xF << 16)
@@ -3768,19 +3773,16 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 
 /* Clocking configuration register */
 #define CLKCFG                 _MMIO(MCHBAR_MIRROR_BASE + 0xc00)
-#define CLKCFG_FSB_400                                 (5 << 0)        /* hrawclk 100 */
+#define CLKCFG_FSB_400                                 (0 << 0)        /* hrawclk 100 */
+#define CLKCFG_FSB_400_ALT                             (5 << 0)        /* hrawclk 100 */
 #define CLKCFG_FSB_533                                 (1 << 0)        /* hrawclk 133 */
 #define CLKCFG_FSB_667                                 (3 << 0)        /* hrawclk 166 */
 #define CLKCFG_FSB_800                                 (2 << 0)        /* hrawclk 200 */
 #define CLKCFG_FSB_1067                                        (6 << 0)        /* hrawclk 266 */
 #define CLKCFG_FSB_1067_ALT                            (0 << 0)        /* hrawclk 266 */
 #define CLKCFG_FSB_1333                                        (7 << 0)        /* hrawclk 333 */
-/*
- * Note that on at least on ELK the below value is reported for both
- * 333 and 400 MHz BIOS FSB setting, but given that the gmch datasheet
- * lists only 200/266/333 MHz FSB as supported let's decode it as 333 MHz.
- */
 #define CLKCFG_FSB_1333_ALT                            (4 << 0)        /* hrawclk 333 */
+#define CLKCFG_FSB_1600_ALT                            (6 << 0)        /* hrawclk 400 */
 #define CLKCFG_FSB_MASK                                        (7 << 0)
 #define CLKCFG_MEM_533                                 (1 << 4)
 #define CLKCFG_MEM_667                                 (2 << 4)
@@ -4512,25 +4514,39 @@ enum {
 #define   EDP_PSR_DEBUG_MASK_DISP_REG_WRITE    (1 << 16) /* Reserved in ICL+ */
 #define   EDP_PSR_DEBUG_EXIT_ON_PIXEL_UNDERRUN (1 << 15) /* SKL+ */
 
-#define _PSR2_CTL_A                    0x60900
-#define _PSR2_CTL_EDP                  0x6f900
-#define EDP_PSR2_CTL(tran)             _MMIO_TRANS2(tran, _PSR2_CTL_A)
-#define   EDP_PSR2_ENABLE              (1 << 31)
-#define   EDP_SU_TRACK_ENABLE          (1 << 30)
-#define   EDP_Y_COORDINATE_VALID       (1 << 26) /* GLK and CNL+ */
-#define   EDP_Y_COORDINATE_ENABLE      (1 << 25) /* GLK and CNL+ */
-#define   EDP_MAX_SU_DISABLE_TIME(t)   ((t) << 20)
-#define   EDP_MAX_SU_DISABLE_TIME_MASK (0x1f << 20)
-#define   EDP_PSR2_TP2_TIME_500us      (0 << 8)
-#define   EDP_PSR2_TP2_TIME_100us      (1 << 8)
-#define   EDP_PSR2_TP2_TIME_2500us     (2 << 8)
-#define   EDP_PSR2_TP2_TIME_50us       (3 << 8)
-#define   EDP_PSR2_TP2_TIME_MASK       (3 << 8)
-#define   EDP_PSR2_FRAME_BEFORE_SU_SHIFT 4
-#define   EDP_PSR2_FRAME_BEFORE_SU_MASK        (0xf << 4)
-#define   EDP_PSR2_FRAME_BEFORE_SU(a)  ((a) << 4)
-#define   EDP_PSR2_IDLE_FRAME_MASK     0xf
-#define   EDP_PSR2_IDLE_FRAME_SHIFT    0
+#define _PSR2_CTL_A                            0x60900
+#define _PSR2_CTL_EDP                          0x6f900
+#define EDP_PSR2_CTL(tran)                     _MMIO_TRANS2(tran, _PSR2_CTL_A)
+#define   EDP_PSR2_ENABLE                      (1 << 31)
+#define   EDP_SU_TRACK_ENABLE                  (1 << 30)
+#define   TGL_EDP_PSR2_BLOCK_COUNT_NUM_2       (0 << 28)
+#define   TGL_EDP_PSR2_BLOCK_COUNT_NUM_3       (1 << 28)
+#define   EDP_Y_COORDINATE_VALID               (1 << 26) /* GLK and CNL+ */
+#define   EDP_Y_COORDINATE_ENABLE              (1 << 25) /* GLK and CNL+ */
+#define   EDP_MAX_SU_DISABLE_TIME(t)           ((t) << 20)
+#define   EDP_MAX_SU_DISABLE_TIME_MASK         (0x1f << 20)
+#define   EDP_PSR2_IO_BUFFER_WAKE_MAX_LINES    8
+#define   EDP_PSR2_IO_BUFFER_WAKE(lines)       ((EDP_PSR2_IO_BUFFER_WAKE_MAX_LINES - (lines)) << 13)
+#define   EDP_PSR2_IO_BUFFER_WAKE_MASK         (3 << 13)
+#define   TGL_EDP_PSR2_IO_BUFFER_WAKE_MIN_LINES        5
+#define   TGL_EDP_PSR2_IO_BUFFER_WAKE(lines)   (((lines) - TGL_EDP_PSR2_IO_BUFFER_WAKE_MIN_LINES) << 13)
+#define   TGL_EDP_PSR2_IO_BUFFER_WAKE_MASK     (7 << 13)
+#define   EDP_PSR2_FAST_WAKE_MAX_LINES         8
+#define   EDP_PSR2_FAST_WAKE(lines)            ((EDP_PSR2_FAST_WAKE_MAX_LINES - (lines)) << 11)
+#define   EDP_PSR2_FAST_WAKE_MASK              (3 << 11)
+#define   TGL_EDP_PSR2_FAST_WAKE_MIN_LINES     5
+#define   TGL_EDP_PSR2_FAST_WAKE(lines)                (((lines) - TGL_EDP_PSR2_FAST_WAKE_MIN_LINES) << 10)
+#define   TGL_EDP_PSR2_FAST_WAKE_MASK          (7 << 10)
+#define   EDP_PSR2_TP2_TIME_500us              (0 << 8)
+#define   EDP_PSR2_TP2_TIME_100us              (1 << 8)
+#define   EDP_PSR2_TP2_TIME_2500us             (2 << 8)
+#define   EDP_PSR2_TP2_TIME_50us               (3 << 8)
+#define   EDP_PSR2_TP2_TIME_MASK               (3 << 8)
+#define   EDP_PSR2_FRAME_BEFORE_SU_SHIFT       4
+#define   EDP_PSR2_FRAME_BEFORE_SU_MASK                (0xf << 4)
+#define   EDP_PSR2_FRAME_BEFORE_SU(a)          ((a) << 4)
+#define   EDP_PSR2_IDLE_FRAME_MASK             0xf
+#define   EDP_PSR2_IDLE_FRAME_SHIFT            0
 
 #define _PSR_EVENT_TRANS_A                     0x60848
 #define _PSR_EVENT_TRANS_B                     0x61848
@@ -6915,6 +6931,8 @@ enum {
 #define _PLANE_CUS_CTL_1_A                     0x701c8
 #define _PLANE_CUS_CTL_2_A                     0x702c8
 #define  PLANE_CUS_ENABLE                      (1 << 31)
+#define  PLANE_CUS_PLANE_4_RKL                 (0 << 30)
+#define  PLANE_CUS_PLANE_5_RKL                 (1 << 30)
 #define  PLANE_CUS_PLANE_6                     (0 << 30)
 #define  PLANE_CUS_PLANE_7                     (1 << 30)
 #define  PLANE_CUS_HPHASE_SIGN_NEGATIVE                (1 << 19)
@@ -6933,7 +6951,7 @@ enum {
 #define   PLANE_COLOR_INPUT_CSC_ENABLE         (1 << 20) /* ICL+ */
 #define   PLANE_COLOR_PIPE_CSC_ENABLE          (1 << 23) /* Pre-ICL */
 #define   PLANE_COLOR_CSC_MODE_BYPASS                  (0 << 17)
-#define   PLANE_COLOR_CSC_MODE_YUV601_TO_RGB709                (1 << 17)
+#define   PLANE_COLOR_CSC_MODE_YUV601_TO_RGB601                (1 << 17)
 #define   PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709                (2 << 17)
 #define   PLANE_COLOR_CSC_MODE_YUV2020_TO_RGB2020      (3 << 17)
 #define   PLANE_COLOR_CSC_MODE_RGB709_TO_RGB2020       (4 << 17)
@@ -7581,6 +7599,9 @@ enum {
         GEN11_PIPE_PLANE7_FAULT | \
         GEN11_PIPE_PLANE6_FAULT | \
         GEN11_PIPE_PLANE5_FAULT)
+#define RKL_DE_PIPE_IRQ_FAULT_ERRORS \
+       (GEN9_DE_PIPE_IRQ_FAULT_ERRORS | \
+        GEN11_PIPE_PLANE5_FAULT)
 
 #define GEN8_DE_PORT_ISR _MMIO(0x44440)
 #define GEN8_DE_PORT_IMR _MMIO(0x44444)
@@ -7835,13 +7856,20 @@ enum {
 #define  WAIT_FOR_PCH_RESET_ACK                (1 << 1)
 #define  WAIT_FOR_PCH_FLR_ACK          (1 << 0)
 
-#define BW_BUDDY1_CTL                  _MMIO(0x45140)
-#define BW_BUDDY2_CTL                  _MMIO(0x45150)
+#define _BW_BUDDY0_CTL                 0x45130
+#define _BW_BUDDY1_CTL                 0x45140
+#define BW_BUDDY_CTL(x)                        _MMIO(_PICK_EVEN(x, \
+                                                        _BW_BUDDY0_CTL, \
+                                                        _BW_BUDDY1_CTL))
 #define   BW_BUDDY_DISABLE             REG_BIT(31)
 #define   BW_BUDDY_TLB_REQ_TIMER_MASK  REG_GENMASK(21, 16)
+#define   BW_BUDDY_TLB_REQ_TIMER(x)    REG_FIELD_PREP(BW_BUDDY_TLB_REQ_TIMER_MASK, x)
 
-#define BW_BUDDY1_PAGE_MASK            _MMIO(0x45144)
-#define BW_BUDDY2_PAGE_MASK            _MMIO(0x45154)
+#define _BW_BUDDY0_PAGE_MASK           0x45134
+#define _BW_BUDDY1_PAGE_MASK           0x45144
+#define BW_BUDDY_PAGE_MASK(x)          _MMIO(_PICK_EVEN(x, \
+                                                        _BW_BUDDY0_PAGE_MASK, \
+                                                        _BW_BUDDY1_PAGE_MASK))
 
 #define HSW_NDE_RSTWRN_OPT     _MMIO(0x46408)
 #define  RESET_PCH_HANDSHAKE_ENABLE    (1 << 4)
@@ -8002,6 +8030,8 @@ enum {
 #define   PER_PIXEL_ALPHA_BYPASS_EN            (1 << 7)
 
 #define FF_MODE2                       _MMIO(0x6604)
+#define   FF_MODE2_GS_TIMER_MASK       REG_GENMASK(31, 24)
+#define   FF_MODE2_GS_TIMER_224                REG_FIELD_PREP(FF_MODE2_GS_TIMER_MASK, 224)
 #define   FF_MODE2_TDS_TIMER_MASK      REG_GENMASK(23, 16)
 #define   FF_MODE2_TDS_TIMER_128       REG_FIELD_PREP(FF_MODE2_TDS_TIMER_MASK, 4)