]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/i915_reg.h
Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into...
[karo-tx-linux.git] / drivers / gpu / drm / i915 / i915_reg.h
index 2abf4eb9403928be8cfb237910090cca0e8a4840..6924f44a88df23ab3139a9c72bd319b54700c765 100644 (file)
@@ -27,6 +27,8 @@
 
 #define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a)))
 
+#define _PORT(port, a, b) ((a) + (port)*((b)-(a)))
+
 /*
  * The Bridge device's PCI config space has information about the
  * fb aperture size and the amount of pre-reserved memory.
 #define  DEBUG_RESET_RENDER            (1<<8)
 #define  DEBUG_RESET_DISPLAY           (1<<9)
 
+/*
+ * DPIO - a special bus for various display related registers to hide behind:
+ *  0x800c: m1, m2, n, p1, p2, k dividers
+ *  0x8014: REF and SFR select
+ *  0x8014: N divider, VCO select
+ *  0x801c/3c: core clock bits
+ *  0x8048/68: low pass filter coefficients
+ *  0x8100: fast clock controls
+ */
+#define DPIO_PKT                       0x2100
+#define  DPIO_RID                      (0<<24)
+#define  DPIO_OP_WRITE                 (1<<16)
+#define  DPIO_OP_READ                  (0<<16)
+#define  DPIO_PORTID                   (0x12<<8)
+#define  DPIO_BYTE                     (0xf<<4)
+#define  DPIO_BUSY                     (1<<0) /* status only */
+#define DPIO_DATA                      0x2104
+#define DPIO_REG                       0x2108
+#define DPIO_CTL                       0x2110
+#define  DPIO_MODSEL1                  (1<<3) /* if ref clk b == 27 */
+#define  DPIO_MODSEL0                  (1<<2) /* if ref clk a == 27 */
+#define  DPIO_SFR_BYPASS               (1<<1)
+#define  DPIO_RESET                    (1<<0)
+
+#define _DPIO_DIV_A                    0x800c
+#define   DPIO_POST_DIV_SHIFT          (28) /* 3 bits */
+#define   DPIO_K_SHIFT                 (24) /* 4 bits */
+#define   DPIO_P1_SHIFT                        (21) /* 3 bits */
+#define   DPIO_P2_SHIFT                        (16) /* 5 bits */
+#define   DPIO_N_SHIFT                 (12) /* 4 bits */
+#define   DPIO_ENABLE_CALIBRATION      (1<<11)
+#define   DPIO_M1DIV_SHIFT             (8) /* 3 bits */
+#define   DPIO_M2DIV_MASK              0xff
+#define _DPIO_DIV_B                    0x802c
+#define DPIO_DIV(pipe) _PIPE(pipe, _DPIO_DIV_A, _DPIO_DIV_B)
+
+#define _DPIO_REFSFR_A                 0x8014
+#define   DPIO_REFSEL_OVERRIDE         27
+#define   DPIO_PLL_MODESEL_SHIFT       24 /* 3 bits */
+#define   DPIO_BIAS_CURRENT_CTL_SHIFT  21 /* 3 bits, always 0x7 */
+#define   DPIO_PLL_REFCLK_SEL_SHIFT    16 /* 2 bits */
+#define   DPIO_DRIVER_CTL_SHIFT                12 /* always set to 0x8 */
+#define   DPIO_CLK_BIAS_CTL_SHIFT      8 /* always set to 0x5 */
+#define _DPIO_REFSFR_B                 0x8034
+#define DPIO_REFSFR(pipe) _PIPE(pipe, _DPIO_REFSFR_A, _DPIO_REFSFR_B)
+
+#define _DPIO_CORE_CLK_A               0x801c
+#define _DPIO_CORE_CLK_B               0x803c
+#define DPIO_CORE_CLK(pipe) _PIPE(pipe, _DPIO_CORE_CLK_A, _DPIO_CORE_CLK_B)
+
+#define _DPIO_LFP_COEFF_A              0x8048
+#define _DPIO_LFP_COEFF_B              0x8068
+#define DPIO_LFP_COEFF(pipe) _PIPE(pipe, _DPIO_LFP_COEFF_A, _DPIO_LFP_COEFF_B)
+
+#define DPIO_FASTCLK_DISABLE           0x8100
 
 /*
  * Fence registers
 #define INSTDONE       0x02090
 #define NOPID          0x02094
 #define HWSTAM         0x02098
+#define DMA_FADD_I8XX  0x020d0
 
 #define ERROR_GEN6     0x040a0
 
 #define IIR            0x020a4
 #define IMR            0x020a8
 #define ISR            0x020ac
+#define VLV_IIR_RW     0x182084
+#define VLV_IER                0x1820a0
+#define VLV_IIR                0x1820a4
+#define VLV_IMR                0x1820a8
+#define VLV_ISR                0x1820ac
 #define   I915_PIPE_CONTROL_NOTIFY_INTERRUPT           (1<<18)
 #define   I915_DISPLAY_PORT_INTERRUPT                  (1<<17)
 #define   I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT   (1<<15)
 #define   ECO_GATING_CX_ONLY   (1<<3)
 #define   ECO_FLIP_DONE                (1<<0)
 
-/* GEN6 interrupt control */
+#define CACHE_MODE_1           0x7004 /* IVB+ */
+#define   PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6)
+
+/* GEN6 interrupt control
+ * Note that the per-ring interrupt bits do alias with the global interrupt bits
+ * in GTIMR. */
 #define GEN6_RENDER_HWSTAM     0x2098
 #define GEN6_RENDER_IMR                0x20a8
 #define   GEN6_RENDER_CONTEXT_SWITCH_INTERRUPT         (1 << 8)
 #define   GMBUS_PORT_PANEL     3
 #define   GMBUS_PORT_DPC       4 /* HDMIC */
 #define   GMBUS_PORT_DPB       5 /* SDVO, HDMIB */
-                                 /* 6 reserved */
-#define   GMBUS_PORT_DPD       7 /* HDMID */
-#define   GMBUS_NUM_PORTS       8
+#define   GMBUS_PORT_DPD       6 /* HDMID */
+#define   GMBUS_PORT_RESERVED  7 /* 7 reserved */
+#define   GMBUS_NUM_PORTS      (GMBUS_PORT_DPD - GMBUS_PORT_SSC + 1)
 #define GMBUS1                 0x5104 /* command/status */
 #define   GMBUS_SW_CLR_INT     (1<<31)
 #define   GMBUS_SW_RDY         (1<<30)
 #define DPLL(pipe) _PIPE(pipe, _DPLL_A, _DPLL_B)
 #define   DPLL_VCO_ENABLE              (1 << 31)
 #define   DPLL_DVO_HIGH_SPEED          (1 << 30)
+#define   DPLL_EXT_BUFFER_ENABLE_VLV   (1 << 30)
 #define   DPLL_SYNCLOCK_ENABLE         (1 << 29)
+#define   DPLL_REFA_CLK_ENABLE_VLV     (1 << 29)
 #define   DPLL_VGA_MODE_DIS            (1 << 28)
 #define   DPLLB_MODE_DAC_SERIAL                (1 << 26) /* i915 */
 #define   DPLLB_MODE_LVDS              (2 << 26) /* i915 */
 #define   DPLL_P2_CLOCK_DIV_MASK       0x03000000 /* i915 */
 #define   DPLL_FPA01_P1_POST_DIV_MASK  0x00ff0000 /* i915 */
 #define   DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW 0x00ff8000 /* Pineview */
+#define   DPLL_INTEGRATED_CLOCK_VLV    (1<<13)
 
 #define SRX_INDEX              0x3c4
 #define SRX_DATA               0x3c5
 #define   DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT     0
 #define _DPLL_B_MD 0x06020 /* 965+ only */
 #define DPLL_MD(pipe) _PIPE(pipe, _DPLL_A_MD, _DPLL_B_MD)
+
 #define _FPA0  0x06040
 #define _FPA1  0x06044
 #define _FPB0  0x06048
 #define RAMCLK_GATE_D          0x6210          /* CRL only */
 #define DEUC                   0x6214          /* CRL only */
 
+#define FW_BLC_SELF_VLV                0x6500
+#define  FW_CSPWRDWNEN         (1<<15)
+
 /*
  * Palette regs
  */
 #define   PIPECONF_DITHER_TYPE_TEMP (3<<2)
 #define _PIPEASTAT             0x70024
 #define   PIPE_FIFO_UNDERRUN_STATUS            (1UL<<31)
+#define   SPRITE1_FLIPDONE_INT_EN_VLV          (1UL<<30)
 #define   PIPE_CRC_ERROR_ENABLE                        (1UL<<29)
 #define   PIPE_CRC_DONE_ENABLE                 (1UL<<28)
 #define   PIPE_GMBUS_EVENT_ENABLE              (1UL<<27)
+#define   PLANE_FLIP_DONE_INT_EN_VLV           (1UL<<26)
 #define   PIPE_HOTPLUG_INTERRUPT_ENABLE                (1UL<<26)
 #define   PIPE_VSYNC_INTERRUPT_ENABLE          (1UL<<25)
 #define   PIPE_DISPLAY_LINE_COMPARE_ENABLE     (1UL<<24)
 #define   PIPE_DPST_EVENT_ENABLE               (1UL<<23)
+#define   SPRITE0_FLIP_DONE_INT_EN_VLV         (1UL<<26)
 #define   PIPE_LEGACY_BLC_EVENT_ENABLE         (1UL<<22)
 #define   PIPE_ODD_FIELD_INTERRUPT_ENABLE      (1UL<<21)
 #define   PIPE_EVEN_FIELD_INTERRUPT_ENABLE     (1UL<<20)
 #define   PIPE_HOTPLUG_TV_INTERRUPT_ENABLE     (1UL<<18) /* pre-965 */
 #define   PIPE_START_VBLANK_INTERRUPT_ENABLE   (1UL<<18) /* 965 or later */
 #define   PIPE_VBLANK_INTERRUPT_ENABLE         (1UL<<17)
+#define   PIPEA_HBLANK_INT_EN_VLV              (1UL<<16)
 #define   PIPE_OVERLAY_UPDATED_ENABLE          (1UL<<16)
+#define   SPRITE1_FLIPDONE_INT_STATUS_VLV      (1UL<<15)
+#define   SPRITE0_FLIPDONE_INT_STATUS_VLV      (1UL<<15)
 #define   PIPE_CRC_ERROR_INTERRUPT_STATUS      (1UL<<13)
 #define   PIPE_CRC_DONE_INTERRUPT_STATUS       (1UL<<12)
 #define   PIPE_GMBUS_INTERRUPT_STATUS          (1UL<<11)
+#define   PLANE_FLIPDONE_INT_STATUS_VLV                (1UL<<10)
 #define   PIPE_HOTPLUG_INTERRUPT_STATUS                (1UL<<10)
 #define   PIPE_VSYNC_INTERRUPT_STATUS          (1UL<<9)
 #define   PIPE_DISPLAY_LINE_COMPARE_STATUS     (1UL<<8)
 #define PIPEFRAMEPIXEL(pipe)  _PIPE(pipe, _PIPEAFRAMEPIXEL, _PIPEBFRAMEPIXEL)
 #define PIPESTAT(pipe) _PIPE(pipe, _PIPEASTAT, _PIPEBSTAT)
 
+#define VLV_DPFLIPSTAT                         0x70028
+#define   PIPEB_LINE_COMPARE_STATUS            (1<<29)
+#define   PIPEB_HLINE_INT_EN                   (1<<28)
+#define   PIPEB_VBLANK_INT_EN                  (1<<27)
+#define   SPRITED_FLIPDONE_INT_EN              (1<<26)
+#define   SPRITEC_FLIPDONE_INT_EN              (1<<25)
+#define   PLANEB_FLIPDONE_INT_EN               (1<<24)
+#define   PIPEA_LINE_COMPARE_STATUS            (1<<21)
+#define   PIPEA_HLINE_INT_EN                   (1<<20)
+#define   PIPEA_VBLANK_INT_EN                  (1<<19)
+#define   SPRITEB_FLIPDONE_INT_EN              (1<<18)
+#define   SPRITEA_FLIPDONE_INT_EN              (1<<17)
+#define   PLANEA_FLIPDONE_INT_EN               (1<<16)
+
+#define DPINVGTT                               0x7002c /* VLV only */
+#define   CURSORB_INVALID_GTT_INT_EN           (1<<23)
+#define   CURSORA_INVALID_GTT_INT_EN           (1<<22)
+#define   SPRITED_INVALID_GTT_INT_EN           (1<<21)
+#define   SPRITEC_INVALID_GTT_INT_EN           (1<<20)
+#define   PLANEB_INVALID_GTT_INT_EN            (1<<19)
+#define   SPRITEB_INVALID_GTT_INT_EN           (1<<18)
+#define   SPRITEA_INVALID_GTT_INT_EN           (1<<17)
+#define   PLANEA_INVALID_GTT_INT_EN            (1<<16)
+#define   DPINVGTT_EN_MASK                     0xff0000
+#define   CURSORB_INVALID_GTT_STATUS           (1<<7)
+#define   CURSORA_INVALID_GTT_STATUS           (1<<6)
+#define   SPRITED_INVALID_GTT_STATUS           (1<<5)
+#define   SPRITEC_INVALID_GTT_STATUS           (1<<4)
+#define   PLANEB_INVALID_GTT_STATUS            (1<<3)
+#define   SPRITEB_INVALID_GTT_STATUS           (1<<2)
+#define   SPRITEA_INVALID_GTT_STATUS           (1<<1)
+#define   PLANEA_INVALID_GTT_STATUS            (1<<0)
+#define   DPINVGTT_STATUS_MASK                 0xff
+
 #define DSPARB                 0x70030
 #define   DSPARB_CSTART_MASK   (0x7f << 7)
 #define   DSPARB_CSTART_SHIFT  7
 #define   DSPFW_HPLL_CURSOR_MASK       (0x3f<<16)
 #define   DSPFW_HPLL_SR_MASK           (0x1ff)
 
+/* drain latency register values*/
+#define DRAIN_LATENCY_PRECISION_32     32
+#define DRAIN_LATENCY_PRECISION_16     16
+#define VLV_DDL1                       0x70050
+#define DDL_CURSORA_PRECISION_32       (1<<31)
+#define DDL_CURSORA_PRECISION_16       (0<<31)
+#define DDL_CURSORA_SHIFT              24
+#define DDL_PLANEA_PRECISION_32                (1<<7)
+#define DDL_PLANEA_PRECISION_16                (0<<7)
+#define VLV_DDL2                       0x70054
+#define DDL_CURSORB_PRECISION_32       (1<<31)
+#define DDL_CURSORB_PRECISION_16       (0<<31)
+#define DDL_CURSORB_SHIFT              24
+#define DDL_PLANEB_PRECISION_32                (1<<7)
+#define DDL_PLANEB_PRECISION_16                (0<<7)
+
 /* FIFO watermark sizes etc */
 #define G4X_FIFO_LINE_SIZE     64
 #define I915_FIFO_LINE_SIZE    64
 #define I830_FIFO_LINE_SIZE    32
 
+#define VALLEYVIEW_FIFO_SIZE   255
 #define G4X_FIFO_SIZE          127
 #define I965_FIFO_SIZE         512
 #define I945_FIFO_SIZE         127
 #define I855GM_FIFO_SIZE       127 /* In cachelines */
 #define I830_FIFO_SIZE         95
 
+#define VALLEYVIEW_MAX_WM      0xff
 #define G4X_MAX_WM             0x3f
 #define I915_MAX_WM            0x3f
 
 #define PINEVIEW_CURSOR_DFT_WM 0
 #define PINEVIEW_CURSOR_GUARD_WM       5
 
+#define VALLEYVIEW_CURSOR_MAX_WM 64
 #define I965_CURSOR_FIFO       64
 #define I965_CURSOR_MAX_WM     32
 #define I965_CURSOR_DFT_WM     8
 #define DE_PIPEB_VBLANK_IVB            (1<<5)
 #define DE_PIPEA_VBLANK_IVB            (1<<0)
 
+#define VLV_MASTER_IER                 0x4400c /* Gunit master IER */
+#define   MASTER_INTERRUPT_ENABLE      (1<<31)
+
 #define DEISR   0x44000
 #define DEIMR   0x44004
 #define DEIIR   0x44008
 #define DEIER   0x4400c
 
-/* GT interrupt */
-#define GT_PIPE_NOTIFY         (1 << 4)
-#define GT_SYNC_STATUS          (1 << 2)
-#define GT_USER_INTERRUPT       (1 << 0)
-#define GT_BSD_USER_INTERRUPT   (1 << 5)
-#define GT_GEN6_BSD_USER_INTERRUPT     (1 << 12)
-#define GT_BLT_USER_INTERRUPT  (1 << 22)
+/* GT interrupt.
+ * Note that for gen6+ the ring-specific interrupt bits do alias with the
+ * corresponding bits in the per-ring interrupt control registers. */
+#define GT_GEN6_BLT_FLUSHDW_NOTIFY_INTERRUPT   (1 << 26)
+#define GT_GEN6_BLT_CS_ERROR_INTERRUPT         (1 << 25)
+#define GT_GEN6_BLT_USER_INTERRUPT             (1 << 22)
+#define GT_GEN6_BSD_CS_ERROR_INTERRUPT         (1 << 15)
+#define GT_GEN6_BSD_USER_INTERRUPT             (1 << 12)
+#define GT_BSD_USER_INTERRUPT                  (1 << 5) /* ilk only */
+#define GT_GEN7_L3_PARITY_ERROR_INTERRUPT      (1 << 5)
+#define GT_PIPE_NOTIFY                         (1 << 4)
+#define GT_RENDER_CS_ERROR_INTERRUPT           (1 << 3)
+#define GT_SYNC_STATUS                         (1 << 2)
+#define GT_USER_INTERRUPT                      (1 << 0)
 
 #define GTISR   0x44010
 #define GTIMR   0x44014
 #define TVIDEO_DIP_DATA(pipe) _PIPE(pipe, _VIDEO_DIP_DATA_A, _VIDEO_DIP_DATA_B)
 #define TVIDEO_DIP_GCP(pipe) _PIPE(pipe, _VIDEO_DIP_GCP_A, _VIDEO_DIP_GCP_B)
 
+#define VLV_VIDEO_DIP_CTL_A            0x60220
+#define VLV_VIDEO_DIP_DATA_A           0x60208
+#define VLV_VIDEO_DIP_GDCP_PAYLOAD_A   0x60210
+
+#define VLV_VIDEO_DIP_CTL_B            0x61170
+#define VLV_VIDEO_DIP_DATA_B           0x61174
+#define VLV_VIDEO_DIP_GDCP_PAYLOAD_B   0x61178
+
+#define VLV_TVIDEO_DIP_CTL(pipe) \
+        _PIPE(pipe, VLV_VIDEO_DIP_CTL_A, VLV_VIDEO_DIP_CTL_B)
+#define VLV_TVIDEO_DIP_DATA(pipe) \
+        _PIPE(pipe, VLV_VIDEO_DIP_DATA_A, VLV_VIDEO_DIP_DATA_B)
+#define VLV_TVIDEO_DIP_GCP(pipe) \
+       _PIPE(pipe, VLV_VIDEO_DIP_GDCP_PAYLOAD_A, VLV_VIDEO_DIP_GDCP_PAYLOAD_B)
+
 #define _TRANS_HTOTAL_B          0xe1000
 #define _TRANS_HBLANK_B          0xe1004
 #define _TRANS_HSYNC_B           0xe1008
 #define  ADPA_CRT_HOTPLUG_FORCE_TRIGGER (1<<16)
 
 /* or SDVOB */
+#define VLV_HDMIB 0x61140
 #define HDMIB   0xe1140
 #define  PORT_ENABLE    (1 << 31)
 #define  TRANSCODER(pipe)       ((pipe) << 30)
 #define  EDP_LINK_TRAIN_VOL_EMP_MASK_IVB       (0x3f<<22)
 
 #define  FORCEWAKE                             0xA18C
+#define  FORCEWAKE_VLV                         0x1300b0
+#define  FORCEWAKE_ACK_VLV                     0x1300b4
 #define  FORCEWAKE_ACK                         0x130090
 #define  FORCEWAKE_MT                          0xa188 /* multi-threaded */
 #define  FORCEWAKE_MT_ACK                      0x130040
 #define   AUD_CONFIG_PIXEL_CLOCK_HDMI          (0xf << 16)
 #define   AUD_CONFIG_DISABLE_NCTS              (1 << 3)
 
+/* HSW Power Wells */
+#define HSW_PWR_WELL_CTL1              0x45400         /* BIOS */
+#define HSW_PWR_WELL_CTL2              0x45404         /* Driver */
+#define HSW_PWR_WELL_CTL3              0x45408         /* KVMR */
+#define HSW_PWR_WELL_CTL4              0x4540C         /* Debug */
+#define   HSW_PWR_WELL_ENABLE                          (1<<31)
+#define   HSW_PWR_WELL_STATE                           (1<<30)
+#define HSW_PWR_WELL_CTL5              0x45410
+#define   HSW_PWR_WELL_ENABLE_SINGLE_STEP      (1<<31)
+#define   HSW_PWR_WELL_PWR_GATE_OVERRIDE       (1<<20)
+#define   HSW_PWR_WELL_FORCE_ON                                (1<<19)
+#define HSW_PWR_WELL_CTL6              0x45414
+
+/* Per-pipe DDI Function Control */
+#define PIPE_DDI_FUNC_CTL_A                    0x60400
+#define PIPE_DDI_FUNC_CTL_B                    0x61400
+#define PIPE_DDI_FUNC_CTL_C                    0x62400
+#define PIPE_DDI_FUNC_CTL_EDP          0x6F400
+#define DDI_FUNC_CTL(pipe) _PIPE(pipe, \
+                                       PIPE_DDI_FUNC_CTL_A, \
+                                       PIPE_DDI_FUNC_CTL_B)
+#define  PIPE_DDI_FUNC_ENABLE          (1<<31)
+/* Those bits are ignored by pipe EDP since it can only connect to DDI A */
+#define  PIPE_DDI_PORT_MASK                            (0xf<<28)
+#define  PIPE_DDI_SELECT_PORT(x)               ((x)<<28)
+#define  PIPE_DDI_MODE_SELECT_HDMI             (0<<24)
+#define  PIPE_DDI_MODE_SELECT_DVI              (1<<24)
+#define  PIPE_DDI_MODE_SELECT_DP_SST   (2<<24)
+#define  PIPE_DDI_MODE_SELECT_DP_MST   (3<<24)
+#define  PIPE_DDI_MODE_SELECT_FDI              (4<<24)
+#define  PIPE_DDI_BPC_8                                        (0<<20)
+#define  PIPE_DDI_BPC_10                               (1<<20)
+#define  PIPE_DDI_BPC_6                                        (2<<20)
+#define  PIPE_DDI_BPC_12                               (3<<20)
+#define  PIPE_DDI_BFI_ENABLE                   (1<<4)
+#define  PIPE_DDI_PORT_WIDTH_X1                        (0<<1)
+#define  PIPE_DDI_PORT_WIDTH_X2                        (1<<1)
+#define  PIPE_DDI_PORT_WIDTH_X4                        (3<<1)
+
+/* DisplayPort Transport Control */
+#define DP_TP_CTL_A                    0x64040
+#define DP_TP_CTL_B                    0x64140
+#define DP_TP_CTL(port) _PORT(port, \
+                                       DP_TP_CTL_A, \
+                                       DP_TP_CTL_B)
+#define  DP_TP_CTL_ENABLE              (1<<31)
+#define  DP_TP_CTL_MODE_SST    (0<<27)
+#define  DP_TP_CTL_MODE_MST    (1<<27)
+#define  DP_TP_CTL_ENHANCED_FRAME_ENABLE       (1<<18)
+#define  DP_TP_CTL_FDI_AUTOTRAIN       (1<<15)
+#define  DP_TP_CTL_LINK_TRAIN_MASK             (7<<8)
+#define  DP_TP_CTL_LINK_TRAIN_PAT1             (0<<8)
+#define  DP_TP_CTL_LINK_TRAIN_PAT2             (1<<8)
+#define  DP_TP_CTL_LINK_TRAIN_NORMAL   (3<<8)
+
+/* DisplayPort Transport Status */
+#define DP_TP_STATUS_A                 0x64044
+#define DP_TP_STATUS_B                 0x64144
+#define DP_TP_STATUS(port) _PORT(port, \
+                                       DP_TP_STATUS_A, \
+                                       DP_TP_STATUS_B)
+#define  DP_TP_STATUS_AUTOTRAIN_DONE   (1<<12)
+
+/* DDI Buffer Control */
+#define DDI_BUF_CTL_A                          0x64000
+#define DDI_BUF_CTL_B                          0x64100
+#define DDI_BUF_CTL(port) _PORT(port, \
+                                       DDI_BUF_CTL_A, \
+                                       DDI_BUF_CTL_B)
+#define  DDI_BUF_CTL_ENABLE                            (1<<31)
+#define  DDI_BUF_EMP_400MV_0DB_HSW             (0<<24)   /* Sel0 */
+#define  DDI_BUF_EMP_400MV_3_5DB_HSW   (1<<24)   /* Sel1 */
+#define  DDI_BUF_EMP_400MV_6DB_HSW             (2<<24)   /* Sel2 */
+#define  DDI_BUF_EMP_400MV_9_5DB_HSW   (3<<24)   /* Sel3 */
+#define  DDI_BUF_EMP_600MV_0DB_HSW             (4<<24)   /* Sel4 */
+#define  DDI_BUF_EMP_600MV_3_5DB_HSW   (5<<24)   /* Sel5 */
+#define  DDI_BUF_EMP_600MV_6DB_HSW             (6<<24)   /* Sel6 */
+#define  DDI_BUF_EMP_800MV_0DB_HSW             (7<<24)   /* Sel7 */
+#define  DDI_BUF_EMP_800MV_3_5DB_HSW   (8<<24)   /* Sel8 */
+#define  DDI_BUF_EMP_MASK                              (0xf<<24)
+#define  DDI_BUF_IS_IDLE                               (1<<7)
+#define  DDI_PORT_WIDTH_X1                             (0<<1)
+#define  DDI_PORT_WIDTH_X2                             (1<<1)
+#define  DDI_PORT_WIDTH_X4                             (3<<1)
+#define  DDI_INIT_DISPLAY_DETECTED             (1<<0)
+
+/* DDI Buffer Translations */
+#define DDI_BUF_TRANS_A                                0x64E00
+#define DDI_BUF_TRANS_B                                0x64E60
+#define DDI_BUF_TRANS(port) _PORT(port, \
+                                       DDI_BUF_TRANS_A, \
+                                       DDI_BUF_TRANS_B)
+
+/* Sideband Interface (SBI) is programmed indirectly, via
+ * SBI_ADDR, which contains the register offset; and SBI_DATA,
+ * which contains the payload */
+#define SBI_ADDR                               0xC6000
+#define SBI_DATA                               0xC6004
+#define SBI_CTL_STAT                   0xC6008
+#define  SBI_CTL_OP_CRRD               (0x6<<8)
+#define  SBI_CTL_OP_CRWR               (0x7<<8)
+#define  SBI_RESPONSE_FAIL             (0x1<<1)
+#define  SBI_RESPONSE_SUCCESS  (0x0<<1)
+#define  SBI_BUSY                              (0x1<<0)
+#define  SBI_READY                             (0x0<<0)
+
+/* SBI offsets */
+#define  SBI_SSCDIVINTPHASE6           0x0600
+#define   SBI_SSCDIVINTPHASE_DIVSEL_MASK       ((0x7f)<<1)
+#define   SBI_SSCDIVINTPHASE_DIVSEL(x)         ((x)<<1)
+#define   SBI_SSCDIVINTPHASE_INCVAL_MASK       ((0x7f)<<8)
+#define   SBI_SSCDIVINTPHASE_INCVAL(x)         ((x)<<8)
+#define   SBI_SSCDIVINTPHASE_DIR(x)                    ((x)<<15)
+#define   SBI_SSCDIVINTPHASE_PROPAGATE         (1<<0)
+#define  SBI_SSCCTL                                    0x020c
+#define  SBI_SSCCTL6                           0x060C
+#define   SBI_SSCCTL_DISABLE           (1<<0)
+#define  SBI_SSCAUXDIV6                                0x0610
+#define   SBI_SSCAUXDIV_FINALDIV2SEL(x)                ((x)<<4)
+#define  SBI_DBUFF0                                    0x2a00
+
+/* LPT PIXCLK_GATE */
+#define PIXCLK_GATE                            0xC6020
+#define  PIXCLK_GATE_UNGATE            1<<0
+#define  PIXCLK_GATE_GATE              0<<0
+
+/* SPLL */
+#define SPLL_CTL                               0x46020
+#define  SPLL_PLL_ENABLE               (1<<31)
+#define  SPLL_PLL_SCC                  (1<<28)
+#define  SPLL_PLL_NON_SCC              (2<<28)
+#define  SPLL_PLL_FREQ_810MHz  (0<<26)
+#define  SPLL_PLL_FREQ_1350MHz (1<<26)
+
+/* WRPLL */
+#define WRPLL_CTL1                             0x46040
+#define WRPLL_CTL2                             0x46060
+#define  WRPLL_PLL_ENABLE                              (1<<31)
+#define  WRPLL_PLL_SELECT_SSC                  (0x01<<28)
+#define  WRPLL_PLL_SELECT_NON_SCC              (0x02<<28)
+#define  WRPLL_PLL_SELECT_LCPLL_2700   (0x03<<28)
+
+/* Port clock selection */
+#define PORT_CLK_SEL_A                 0x46100
+#define PORT_CLK_SEL_B                 0x46104
+#define PORT_CLK_SEL(port) _PORT(port, \
+                                       PORT_CLK_SEL_A, \
+                                       PORT_CLK_SEL_B)
+#define  PORT_CLK_SEL_LCPLL_2700       (0<<29)
+#define  PORT_CLK_SEL_LCPLL_1350       (1<<29)
+#define  PORT_CLK_SEL_LCPLL_810                (2<<29)
+#define  PORT_CLK_SEL_SPLL                     (3<<29)
+#define  PORT_CLK_SEL_WRPLL1           (4<<29)
+#define  PORT_CLK_SEL_WRPLL2           (5<<29)
+
+/* Pipe clock selection */
+#define PIPE_CLK_SEL_A                 0x46140
+#define PIPE_CLK_SEL_B                 0x46144
+#define PIPE_CLK_SEL(pipe) _PIPE(pipe, \
+                                       PIPE_CLK_SEL_A, \
+                                       PIPE_CLK_SEL_B)
+/* For each pipe, we need to select the corresponding port clock */
+#define  PIPE_CLK_SEL_DISABLED (0x0<<29)
+#define  PIPE_CLK_SEL_PORT(x)  ((x+1)<<29)
+
+/* LCPLL Control */
+#define LCPLL_CTL                              0x130040
+#define  LCPLL_PLL_DISABLE             (1<<31)
+#define  LCPLL_PLL_LOCK                        (1<<30)
+#define  LCPLL_CD_CLOCK_DISABLE        (1<<25)
+#define  LCPLL_CD2X_CLOCK_DISABLE      (1<<23)
+
+/* Pipe WM_LINETIME - watermark line time */
+#define PIPE_WM_LINETIME_A             0x45270
+#define PIPE_WM_LINETIME_B             0x45274
+#define PIPE_WM_LINETIME(pipe) _PIPE(pipe, \
+                                       PIPE_WM_LINETIME_A, \
+                                       PIPE_WM_LINETIME_A)
+#define   PIPE_WM_LINETIME_MASK                (0x1ff)
+#define   PIPE_WM_LINETIME_TIME(x)                     ((x))
+#define   PIPE_WM_LINETIME_IPS_LINETIME_MASK   (0x1ff<<16)
+#define   PIPE_WM_LINETIME_IPS_LINETIME(x)             ((x)<<16)
+
+/* SFUSE_STRAP */
+#define SFUSE_STRAP                            0xc2014
+#define  SFUSE_STRAP_DDIB_DETECTED     (1<<2)
+#define  SFUSE_STRAP_DDIC_DETECTED     (1<<1)
+#define  SFUSE_STRAP_DDID_DETECTED     (1<<0)
+
 #endif /* _I915_REG_H_ */