]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/gpu/drm/i915/i915_reg.h
drm/i915: add dynamic clock frequency control
[net-next-2.6.git] / drivers / gpu / drm / i915 / i915_reg.h
index 87a737ff3d7272297cc0d495f3fdb880bbdca120..884757ce5b67d4c5095a47197aca9ce74e44a225 100644 (file)
@@ -55,7 +55,7 @@
 /* PCI config space */
 
 #define HPLLCC 0xc0 /* 855 only */
-#define   GC_CLOCK_CONTROL_MASK                (3 << 0)
+#define   GC_CLOCK_CONTROL_MASK                (0xf << 0)
 #define   GC_CLOCK_133_200             (0 << 0)
 #define   GC_CLOCK_100_200             (1 << 0)
 #define   GC_CLOCK_100_133             (2 << 0)
 #define   GC_DISPLAY_CLOCK_190_200_MHZ (0 << 4)
 #define   GC_DISPLAY_CLOCK_333_MHZ     (4 << 4)
 #define   GC_DISPLAY_CLOCK_MASK                (7 << 4)
+#define   GM45_GC_RENDER_CLOCK_MASK    (0xf << 0)
+#define   GM45_GC_RENDER_CLOCK_266_MHZ (8 << 0)
+#define   GM45_GC_RENDER_CLOCK_320_MHZ (9 << 0)
+#define   GM45_GC_RENDER_CLOCK_400_MHZ (0xb << 0)
+#define   GM45_GC_RENDER_CLOCK_533_MHZ (0xc << 0)
+#define   I965_GC_RENDER_CLOCK_MASK    (0xf << 0)
+#define   I965_GC_RENDER_CLOCK_267_MHZ (2 << 0)
+#define   I965_GC_RENDER_CLOCK_333_MHZ (3 << 0)
+#define   I965_GC_RENDER_CLOCK_444_MHZ (4 << 0)
+#define   I965_GC_RENDER_CLOCK_533_MHZ (5 << 0)
+#define   I945_GC_RENDER_CLOCK_MASK    (7 << 0)
+#define   I945_GC_RENDER_CLOCK_166_MHZ (0 << 0)
+#define   I945_GC_RENDER_CLOCK_200_MHZ (1 << 0)
+#define   I945_GC_RENDER_CLOCK_250_MHZ (3 << 0)
+#define   I945_GC_RENDER_CLOCK_400_MHZ (5 << 0)
+#define   I915_GC_RENDER_CLOCK_MASK    (7 << 0)
+#define   I915_GC_RENDER_CLOCK_166_MHZ (0 << 0)
+#define   I915_GC_RENDER_CLOCK_200_MHZ (1 << 0)
+#define   I915_GC_RENDER_CLOCK_333_MHZ (4 << 0)
 #define LBB    0xf4
 
 /* VGA stuff */
 #define   DPLLA_TEST_M_BYPASS          (1 << 2)
 #define   DPLLA_INPUT_BUFFER_ENABLE    (1 << 0)
 #define D_STATE                0x6104
-#define CG_2D_DIS      0x6200
-#define DPCUNIT_CLOCK_GATE_DISABLE     (1 << 24)
-#define CG_3D_DIS      0x6204
+#define  DSTATE_PLL_D3_OFF                     (1<<3)
+#define  DSTATE_GFX_CLOCK_GATING               (1<<1)
+#define  DSTATE_DOT_CLOCK_GATING               (1<<0)
+#define DSPCLK_GATE_D          0x6200
+# define DPUNIT_B_CLOCK_GATE_DISABLE           (1 << 30) /* 965 */
+# define VSUNIT_CLOCK_GATE_DISABLE             (1 << 29) /* 965 */
+# define VRHUNIT_CLOCK_GATE_DISABLE            (1 << 28) /* 965 */
+# define VRDUNIT_CLOCK_GATE_DISABLE            (1 << 27) /* 965 */
+# define AUDUNIT_CLOCK_GATE_DISABLE            (1 << 26) /* 965 */
+# define DPUNIT_A_CLOCK_GATE_DISABLE           (1 << 25) /* 965 */
+# define DPCUNIT_CLOCK_GATE_DISABLE            (1 << 24) /* 965 */
+# define TVRUNIT_CLOCK_GATE_DISABLE            (1 << 23) /* 915-945 */
+# define TVCUNIT_CLOCK_GATE_DISABLE            (1 << 22) /* 915-945 */
+# define TVFUNIT_CLOCK_GATE_DISABLE            (1 << 21) /* 915-945 */
+# define TVEUNIT_CLOCK_GATE_DISABLE            (1 << 20) /* 915-945 */
+# define DVSUNIT_CLOCK_GATE_DISABLE            (1 << 19) /* 915-945 */
+# define DSSUNIT_CLOCK_GATE_DISABLE            (1 << 18) /* 915-945 */
+# define DDBUNIT_CLOCK_GATE_DISABLE            (1 << 17) /* 915-945 */
+# define DPRUNIT_CLOCK_GATE_DISABLE            (1 << 16) /* 915-945 */
+# define DPFUNIT_CLOCK_GATE_DISABLE            (1 << 15) /* 915-945 */
+# define DPBMUNIT_CLOCK_GATE_DISABLE           (1 << 14) /* 915-945 */
+# define DPLSUNIT_CLOCK_GATE_DISABLE           (1 << 13) /* 915-945 */
+# define DPLUNIT_CLOCK_GATE_DISABLE            (1 << 12) /* 915-945 */
+# define DPOUNIT_CLOCK_GATE_DISABLE            (1 << 11)
+# define DPBUNIT_CLOCK_GATE_DISABLE            (1 << 10)
+# define DCUNIT_CLOCK_GATE_DISABLE             (1 << 9)
+# define DPUNIT_CLOCK_GATE_DISABLE             (1 << 8)
+# define VRUNIT_CLOCK_GATE_DISABLE             (1 << 7) /* 915+: reserved */
+# define OVHUNIT_CLOCK_GATE_DISABLE            (1 << 6) /* 830-865 */
+# define DPIOUNIT_CLOCK_GATE_DISABLE           (1 << 6) /* 915-945 */
+# define OVFUNIT_CLOCK_GATE_DISABLE            (1 << 5)
+# define OVBUNIT_CLOCK_GATE_DISABLE            (1 << 4)
+/**
+ * This bit must be set on the 830 to prevent hangs when turning off the
+ * overlay scaler.
+ */
+# define OVRUNIT_CLOCK_GATE_DISABLE            (1 << 3)
+# define OVCUNIT_CLOCK_GATE_DISABLE            (1 << 2)
+# define OVUUNIT_CLOCK_GATE_DISABLE            (1 << 1)
+# define ZVUNIT_CLOCK_GATE_DISABLE             (1 << 0) /* 830 */
+# define OVLUNIT_CLOCK_GATE_DISABLE            (1 << 0) /* 845,865 */
+
+#define RENCLK_GATE_D1         0x6204
+# define BLITTER_CLOCK_GATE_DISABLE            (1 << 13) /* 945GM only */
+# define MPEG_CLOCK_GATE_DISABLE               (1 << 12) /* 945GM only */
+# define PC_FE_CLOCK_GATE_DISABLE              (1 << 11)
+# define PC_BE_CLOCK_GATE_DISABLE              (1 << 10)
+# define WINDOWER_CLOCK_GATE_DISABLE           (1 << 9)
+# define INTERPOLATOR_CLOCK_GATE_DISABLE       (1 << 8)
+# define COLOR_CALCULATOR_CLOCK_GATE_DISABLE   (1 << 7)
+# define MOTION_COMP_CLOCK_GATE_DISABLE                (1 << 6)
+# define MAG_CLOCK_GATE_DISABLE                        (1 << 5)
+/** This bit must be unset on 855,865 */
+# define MECI_CLOCK_GATE_DISABLE               (1 << 4)
+# define DCMP_CLOCK_GATE_DISABLE               (1 << 3)
+# define MEC_CLOCK_GATE_DISABLE                        (1 << 2)
+# define MECO_CLOCK_GATE_DISABLE               (1 << 1)
+/** This bit must be set on 855,865. */
+# define SV_CLOCK_GATE_DISABLE                 (1 << 0)
+# define I915_MPEG_CLOCK_GATE_DISABLE          (1 << 16)
+# define I915_VLD_IP_PR_CLOCK_GATE_DISABLE     (1 << 15)
+# define I915_MOTION_COMP_CLOCK_GATE_DISABLE   (1 << 14)
+# define I915_BD_BF_CLOCK_GATE_DISABLE         (1 << 13)
+# define I915_SF_SE_CLOCK_GATE_DISABLE         (1 << 12)
+# define I915_WM_CLOCK_GATE_DISABLE            (1 << 11)
+# define I915_IZ_CLOCK_GATE_DISABLE            (1 << 10)
+# define I915_PI_CLOCK_GATE_DISABLE            (1 << 9)
+# define I915_DI_CLOCK_GATE_DISABLE            (1 << 8)
+# define I915_SH_SV_CLOCK_GATE_DISABLE         (1 << 7)
+# define I915_PL_DG_QC_FT_CLOCK_GATE_DISABLE   (1 << 6)
+# define I915_SC_CLOCK_GATE_DISABLE            (1 << 5)
+# define I915_FL_CLOCK_GATE_DISABLE            (1 << 4)
+# define I915_DM_CLOCK_GATE_DISABLE            (1 << 3)
+# define I915_PS_CLOCK_GATE_DISABLE            (1 << 2)
+# define I915_CC_CLOCK_GATE_DISABLE            (1 << 1)
+# define I915_BY_CLOCK_GATE_DISABLE            (1 << 0)
+
+# define I965_RCZ_CLOCK_GATE_DISABLE           (1 << 30)
+/** This bit must always be set on 965G/965GM */
+# define I965_RCC_CLOCK_GATE_DISABLE           (1 << 29)
+# define I965_RCPB_CLOCK_GATE_DISABLE          (1 << 28)
+# define I965_DAP_CLOCK_GATE_DISABLE           (1 << 27)
+# define I965_ROC_CLOCK_GATE_DISABLE           (1 << 26)
+# define I965_GW_CLOCK_GATE_DISABLE            (1 << 25)
+# define I965_TD_CLOCK_GATE_DISABLE            (1 << 24)
+/** This bit must always be set on 965G */
+# define I965_ISC_CLOCK_GATE_DISABLE           (1 << 23)
+# define I965_IC_CLOCK_GATE_DISABLE            (1 << 22)
+# define I965_EU_CLOCK_GATE_DISABLE            (1 << 21)
+# define I965_IF_CLOCK_GATE_DISABLE            (1 << 20)
+# define I965_TC_CLOCK_GATE_DISABLE            (1 << 19)
+# define I965_SO_CLOCK_GATE_DISABLE            (1 << 17)
+# define I965_FBC_CLOCK_GATE_DISABLE           (1 << 16)
+# define I965_MARI_CLOCK_GATE_DISABLE          (1 << 15)
+# define I965_MASF_CLOCK_GATE_DISABLE          (1 << 14)
+# define I965_MAWB_CLOCK_GATE_DISABLE          (1 << 13)
+# define I965_EM_CLOCK_GATE_DISABLE            (1 << 12)
+# define I965_UC_CLOCK_GATE_DISABLE            (1 << 11)
+# define I965_SI_CLOCK_GATE_DISABLE            (1 << 6)
+# define I965_MT_CLOCK_GATE_DISABLE            (1 << 5)
+# define I965_PL_CLOCK_GATE_DISABLE            (1 << 4)
+# define I965_DG_CLOCK_GATE_DISABLE            (1 << 3)
+# define I965_QC_CLOCK_GATE_DISABLE            (1 << 2)
+# define I965_FT_CLOCK_GATE_DISABLE            (1 << 1)
+# define I965_DM_CLOCK_GATE_DISABLE            (1 << 0)
+
+#define RENCLK_GATE_D2         0x6208
+#define VF_UNIT_CLOCK_GATE_DISABLE             (1 << 9)
+#define GS_UNIT_CLOCK_GATE_DISABLE             (1 << 7)
+#define CL_UNIT_CLOCK_GATE_DISABLE             (1 << 6)
+#define RAMCLK_GATE_D          0x6210          /* CRL only */
+#define DEUC                   0x6214          /* CRL only */
 
 /*
  * Palette regs
 #define   PIPECONF_PROGRESSIVE (0 << 21)
 #define   PIPECONF_INTERLACE_W_FIELD_INDICATION        (6 << 21)
 #define   PIPECONF_INTERLACE_FIELD_0_ONLY              (7 << 21)
+#define   PIPECONF_CXSR_DOWNCLOCK      (1<<16)
 #define PIPEASTAT              0x70024
 #define   PIPE_FIFO_UNDERRUN_STATUS            (1UL<<31)
 #define   PIPE_CRC_ERROR_ENABLE                        (1UL<<29)