OSDN Git Service

Merge tag 'topic/phy-compliance-2020-04-08' of git://anongit.freedesktop.org/drm...
[tomoyo/tomoyo-test1.git] / drivers / gpu / drm / i915 / i915_reg.h
index 59e64ac..edda3f2 100644 (file)
@@ -3094,6 +3094,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define GT_BSD_CS_ERROR_INTERRUPT              (1 << 15)
 #define GT_BSD_USER_INTERRUPT                  (1 << 12)
 #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT_S1 (1 << 11) /* hsw+; rsvd on snb, ivb, vlv */
+#define GT_WAIT_SEMAPHORE_INTERRUPT            REG_BIT(11) /* bdw+ */
 #define GT_CONTEXT_SWITCH_INTERRUPT            (1 <<  8)
 #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT    (1 <<  5) /* !snb */
 #define GT_RENDER_PIPECTL_NOTIFY_INTERRUPT     (1 <<  4)
@@ -4324,6 +4325,96 @@ enum {
 #define   EXITLINE_MASK                REG_GENMASK(12, 0)
 #define   EXITLINE_SHIFT       0
 
+/* VRR registers */
+#define _TRANS_VRR_CTL_A               0x60420
+#define _TRANS_VRR_CTL_B               0x61420
+#define _TRANS_VRR_CTL_C               0x62420
+#define _TRANS_VRR_CTL_D               0x63420
+#define TRANS_VRR_CTL(trans)           _MMIO_TRANS2(trans, _TRANS_VRR_CTL_A)
+#define   VRR_CTL_VRR_ENABLE           REG_BIT(31)
+#define   VRR_CTL_IGN_MAX_SHIFT                REG_BIT(30)
+#define   VRR_CTL_FLIP_LINE_EN         REG_BIT(29)
+#define   VRR_CTL_LINE_COUNT_MASK      REG_GENMASK(10, 3)
+#define   VRR_CTL_SW_FULLLINE_COUNT    REG_BIT(0)
+
+#define _TRANS_VRR_VMAX_A              0x60424
+#define _TRANS_VRR_VMAX_B              0x61424
+#define _TRANS_VRR_VMAX_C              0x62424
+#define _TRANS_VRR_VMAX_D              0x63424
+#define TRANS_VRR_VMAX(trans)          _MMIO_TRANS2(trans, _TRANS_VRR_VMAX_A)
+#define   VRR_VMAX_MASK                        REG_GENMASK(19, 0)
+
+#define _TRANS_VRR_VMIN_A              0x60434
+#define _TRANS_VRR_VMIN_B              0x61434
+#define _TRANS_VRR_VMIN_C              0x62434
+#define _TRANS_VRR_VMIN_D              0x63434
+#define TRANS_VRR_VMIN(trans)          _MMIO_TRANS2(trans, _TRANS_VRR_VMIN_A)
+#define   VRR_VMIN_MASK                        REG_GENMASK(15, 0)
+
+#define _TRANS_VRR_VMAXSHIFT_A         0x60428
+#define _TRANS_VRR_VMAXSHIFT_B         0x61428
+#define _TRANS_VRR_VMAXSHIFT_C         0x62428
+#define _TRANS_VRR_VMAXSHIFT_D         0x63428
+#define TRANS_VRR_VMAXSHIFT(trans)     _MMIO_TRANS2(trans, \
+                                       _TRANS_VRR_VMAXSHIFT_A)
+#define   VRR_VMAXSHIFT_DEC_MASK       REG_GENMASK(29, 16)
+#define   VRR_VMAXSHIFT_DEC            REG_BIT(16)
+#define   VRR_VMAXSHIFT_INC_MASK       REG_GENMASK(12, 0)
+
+#define _TRANS_VRR_STATUS_A            0x6042C
+#define _TRANS_VRR_STATUS_B            0x6142C
+#define _TRANS_VRR_STATUS_C            0x6242C
+#define _TRANS_VRR_STATUS_D            0x6342C
+#define TRANS_VRR_STATUS(trans)                _MMIO_TRANS2(trans, _TRANS_VRR_STATUS_A)
+#define   VRR_STATUS_VMAX_REACHED      REG_BIT(31)
+#define   VRR_STATUS_NOFLIP_TILL_BNDR  REG_BIT(30)
+#define   VRR_STATUS_FLIP_BEF_BNDR     REG_BIT(29)
+#define   VRR_STATUS_NO_FLIP_FRAME     REG_BIT(28)
+#define   VRR_STATUS_VRR_EN_LIVE       REG_BIT(27)
+#define   VRR_STATUS_FLIPS_SERVICED    REG_BIT(26)
+#define   VRR_STATUS_VBLANK_MASK       REG_GENMASK(22, 20)
+#define   STATUS_FSM_IDLE              REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 0)
+#define   STATUS_FSM_WAIT_TILL_FDB     REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 1)
+#define   STATUS_FSM_WAIT_TILL_FS      REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 2)
+#define   STATUS_FSM_WAIT_TILL_FLIP    REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 3)
+#define   STATUS_FSM_PIPELINE_FILL     REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 4)
+#define   STATUS_FSM_ACTIVE            REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 5)
+#define   STATUS_FSM_LEGACY_VBLANK     REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 6)
+
+#define _TRANS_VRR_VTOTAL_PREV_A       0x60480
+#define _TRANS_VRR_VTOTAL_PREV_B       0x61480
+#define _TRANS_VRR_VTOTAL_PREV_C       0x62480
+#define _TRANS_VRR_VTOTAL_PREV_D       0x63480
+#define TRANS_VRR_VTOTAL_PREV(trans)   _MMIO_TRANS2(trans, \
+                                       _TRANS_VRR_VTOTAL_PREV_A)
+#define   VRR_VTOTAL_FLIP_BEFR_BNDR    REG_BIT(31)
+#define   VRR_VTOTAL_FLIP_AFTER_BNDR   REG_BIT(30)
+#define   VRR_VTOTAL_FLIP_AFTER_DBLBUF REG_BIT(29)
+#define   VRR_VTOTAL_PREV_FRAME_MASK   REG_GENMASK(19, 0)
+
+#define _TRANS_VRR_FLIPLINE_A          0x60438
+#define _TRANS_VRR_FLIPLINE_B          0x61438
+#define _TRANS_VRR_FLIPLINE_C          0x62438
+#define _TRANS_VRR_FLIPLINE_D          0x63438
+#define TRANS_VRR_FLIPLINE(trans)      _MMIO_TRANS2(trans, \
+                                       _TRANS_VRR_FLIPLINE_A)
+#define   VRR_FLIPLINE_MASK            REG_GENMASK(19, 0)
+
+#define _TRANS_VRR_STATUS2_A           0x6043C
+#define _TRANS_VRR_STATUS2_B           0x6143C
+#define _TRANS_VRR_STATUS2_C           0x6243C
+#define _TRANS_VRR_STATUS2_D           0x6343C
+#define TRANS_VRR_STATUS2(trans)       _MMIO_TRANS2(trans, _TRANS_VRR_STATUS2_A)
+#define   VRR_STATUS2_VERT_LN_CNT_MASK REG_GENMASK(19, 0)
+
+#define _TRANS_PUSH_A                  0x60A70
+#define _TRANS_PUSH_B                  0x61A70
+#define _TRANS_PUSH_C                  0x62A70
+#define _TRANS_PUSH_D                  0x63A70
+#define TRANS_PUSH(trans)              _MMIO_TRANS2(trans, _TRANS_PUSH_A)
+#define   TRANS_PUSH_EN                        REG_BIT(31)
+#define   TRANS_PUSH_SEND              REG_BIT(30)
+
 /*
  * HSW+ eDP PSR registers
  *
@@ -6764,7 +6855,7 @@ enum {
 #define   PLANE_CTL_FORMAT_P012                        (5 << 24)
 #define   PLANE_CTL_FORMAT_XRGB_16161616F      (6 << 24)
 #define   PLANE_CTL_FORMAT_P016                        (7 << 24)
-#define   PLANE_CTL_FORMAT_AYUV                        (8 << 24)
+#define   PLANE_CTL_FORMAT_XYUV                        (8 << 24)
 #define   PLANE_CTL_FORMAT_INDEXED             (12 << 24)
 #define   PLANE_CTL_FORMAT_RGB_565             (14 << 24)
 #define   ICL_PLANE_CTL_FORMAT_MASK            (0x1f << 23)
@@ -9700,8 +9791,11 @@ enum skl_power_gate {
 #define  TRANS_DDI_BPC_10              (1 << 20)
 #define  TRANS_DDI_BPC_6               (2 << 20)
 #define  TRANS_DDI_BPC_12              (3 << 20)
+#define  TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK        REG_GENMASK(19, 18) /* bdw-cnl */
+#define  TRANS_DDI_PORT_SYNC_MASTER_SELECT(x)  REG_FIELD_PREP(TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK, (x))
 #define  TRANS_DDI_PVSYNC              (1 << 17)
 #define  TRANS_DDI_PHSYNC              (1 << 16)
+#define  TRANS_DDI_PORT_SYNC_ENABLE    REG_BIT(15) /* bdw-cnl */
 #define  TRANS_DDI_EDP_INPUT_MASK      (7 << 12)
 #define  TRANS_DDI_EDP_INPUT_A_ON      (0 << 12)
 #define  TRANS_DDI_EDP_INPUT_A_ONOFF   (4 << 12)
@@ -9728,12 +9822,10 @@ enum skl_power_gate {
 #define _TRANS_DDI_FUNC_CTL2_EDP       0x6f404
 #define _TRANS_DDI_FUNC_CTL2_DSI0      0x6b404
 #define _TRANS_DDI_FUNC_CTL2_DSI1      0x6bc04
-#define TRANS_DDI_FUNC_CTL2(tran)      _MMIO_TRANS2(tran, \
-                                                    _TRANS_DDI_FUNC_CTL2_A)
-#define  PORT_SYNC_MODE_ENABLE                 (1 << 4)
-#define  PORT_SYNC_MODE_MASTER_SELECT(x)       ((x) << 0)
-#define  PORT_SYNC_MODE_MASTER_SELECT_MASK     (0x7 << 0)
-#define  PORT_SYNC_MODE_MASTER_SELECT_SHIFT    0
+#define TRANS_DDI_FUNC_CTL2(tran)      _MMIO_TRANS2(tran, _TRANS_DDI_FUNC_CTL2_A)
+#define  PORT_SYNC_MODE_ENABLE                 REG_BIT(4)
+#define  PORT_SYNC_MODE_MASTER_SELECT_MASK     REG_GENMASK(2, 0)
+#define  PORT_SYNC_MODE_MASTER_SELECT(x)       REG_FIELD_PREP(PORT_SYNC_MODE_MASTER_SELECT_MASK, (x))
 
 /* DisplayPort Transport Control */
 #define _DP_TP_CTL_A                   0x64040
@@ -9794,6 +9886,24 @@ enum skl_power_gate {
 #define  DDI_BUF_BALANCE_LEG_ENABLE    (1 << 31)
 #define DDI_BUF_TRANS_HI(port, i)      _MMIO(_PORT(port, _DDI_BUF_TRANS_A, _DDI_BUF_TRANS_B) + (i) * 8 + 4)
 
+/* DDI DP Compliance Control */
+#define _DDI_DP_COMP_CTL_A                     0x605F0
+#define _DDI_DP_COMP_CTL_B                     0x615F0
+#define DDI_DP_COMP_CTL(pipe)                  _MMIO_PIPE(pipe, _DDI_DP_COMP_CTL_A, _DDI_DP_COMP_CTL_B)
+#define   DDI_DP_COMP_CTL_ENABLE               (1 << 31)
+#define   DDI_DP_COMP_CTL_D10_2                        (0 << 28)
+#define   DDI_DP_COMP_CTL_SCRAMBLED_0          (1 << 28)
+#define   DDI_DP_COMP_CTL_PRBS7                        (2 << 28)
+#define   DDI_DP_COMP_CTL_CUSTOM80             (3 << 28)
+#define   DDI_DP_COMP_CTL_HBR2                 (4 << 28)
+#define   DDI_DP_COMP_CTL_SCRAMBLED_1          (5 << 28)
+#define   DDI_DP_COMP_CTL_HBR2_RESET           (0xFC << 0)
+
+/* DDI DP Compliance Pattern */
+#define _DDI_DP_COMP_PAT_A                     0x605F4
+#define _DDI_DP_COMP_PAT_B                     0x615F4
+#define DDI_DP_COMP_PAT(pipe, i)               _MMIO(_PIPE(pipe, _DDI_DP_COMP_PAT_A, _DDI_DP_COMP_PAT_B) + (i) * 4)
+
 /* Sideband Interface (SBI) is programmed indirectly, via
  * SBI_ADDR, which contains the register offset; and SBI_DATA,
  * which contains the payload */
@@ -10741,6 +10851,12 @@ enum skl_power_gate {
 
 #define _PAL_PREC_MULTI_SEG_DATA_A     0x4A40C
 #define _PAL_PREC_MULTI_SEG_DATA_B     0x4AC0C
+#define  PAL_PREC_MULTI_SEG_RED_LDW_MASK   REG_GENMASK(29, 24)
+#define  PAL_PREC_MULTI_SEG_RED_UDW_MASK   REG_GENMASK(29, 20)
+#define  PAL_PREC_MULTI_SEG_GREEN_LDW_MASK REG_GENMASK(19, 14)
+#define  PAL_PREC_MULTI_SEG_GREEN_UDW_MASK REG_GENMASK(19, 10)
+#define  PAL_PREC_MULTI_SEG_BLUE_LDW_MASK  REG_GENMASK(9, 4)
+#define  PAL_PREC_MULTI_SEG_BLUE_UDW_MASK  REG_GENMASK(9, 0)
 
 #define PREC_PAL_MULTI_SEG_INDEX(pipe) _MMIO_PIPE(pipe, \
                                        _PAL_PREC_MULTI_SEG_INDEX_A, \