|
@@ -100,6 +100,7 @@ static void ironlake_set_pipeconf(struct drm_crtc *crtc);
|
|
static void haswell_set_pipeconf(struct drm_crtc *crtc);
|
|
static void haswell_set_pipeconf(struct drm_crtc *crtc);
|
|
static void intel_set_pipe_csc(struct drm_crtc *crtc);
|
|
static void intel_set_pipe_csc(struct drm_crtc *crtc);
|
|
static void vlv_prepare_pll(struct intel_crtc *crtc);
|
|
static void vlv_prepare_pll(struct intel_crtc *crtc);
|
|
|
|
+static void chv_prepare_pll(struct intel_crtc *crtc);
|
|
|
|
|
|
static struct intel_encoder *intel_find_encoder(struct intel_connector *connector, int pipe)
|
|
static struct intel_encoder *intel_find_encoder(struct intel_connector *connector, int pipe)
|
|
{
|
|
{
|
|
@@ -4642,8 +4643,12 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
|
|
|
|
|
|
is_dsi = intel_pipe_has_type(crtc, INTEL_OUTPUT_DSI);
|
|
is_dsi = intel_pipe_has_type(crtc, INTEL_OUTPUT_DSI);
|
|
|
|
|
|
- if (!is_dsi && !IS_CHERRYVIEW(dev))
|
|
|
|
- vlv_prepare_pll(intel_crtc);
|
|
|
|
|
|
+ if (!is_dsi) {
|
|
|
|
+ if (IS_CHERRYVIEW(dev))
|
|
|
|
+ chv_prepare_pll(intel_crtc);
|
|
|
|
+ else
|
|
|
|
+ vlv_prepare_pll(intel_crtc);
|
|
|
|
+ }
|
|
|
|
|
|
/* Set up the display plane register */
|
|
/* Set up the display plane register */
|
|
dspcntr = DISPPLANE_GAMMA_ENABLE;
|
|
dspcntr = DISPPLANE_GAMMA_ENABLE;
|
|
@@ -5691,6 +5696,18 @@ static void vlv_prepare_pll(struct intel_crtc *crtc)
|
|
}
|
|
}
|
|
|
|
|
|
static void chv_update_pll(struct intel_crtc *crtc)
|
|
static void chv_update_pll(struct intel_crtc *crtc)
|
|
|
|
+{
|
|
|
|
+ crtc->config.dpll_hw_state.dpll = DPLL_SSC_REF_CLOCK_CHV |
|
|
|
|
+ DPLL_REFA_CLK_ENABLE_VLV | DPLL_VGA_MODE_DIS |
|
|
|
|
+ DPLL_VCO_ENABLE;
|
|
|
|
+ if (crtc->pipe != PIPE_A)
|
|
|
|
+ crtc->config.dpll_hw_state.dpll |= DPLL_INTEGRATED_CRI_CLK_VLV;
|
|
|
|
+
|
|
|
|
+ crtc->config.dpll_hw_state.dpll_md =
|
|
|
|
+ (crtc->config.pixel_multiplier - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void chv_prepare_pll(struct intel_crtc *crtc)
|
|
{
|
|
{
|
|
struct drm_device *dev = crtc->base.dev;
|
|
struct drm_device *dev = crtc->base.dev;
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
@@ -5701,15 +5718,6 @@ static void chv_update_pll(struct intel_crtc *crtc)
|
|
u32 bestn, bestm1, bestm2, bestp1, bestp2, bestm2_frac;
|
|
u32 bestn, bestm1, bestm2, bestp1, bestp2, bestm2_frac;
|
|
int refclk;
|
|
int refclk;
|
|
|
|
|
|
- crtc->config.dpll_hw_state.dpll = DPLL_SSC_REF_CLOCK_CHV |
|
|
|
|
- DPLL_REFA_CLK_ENABLE_VLV | DPLL_VGA_MODE_DIS |
|
|
|
|
- DPLL_VCO_ENABLE;
|
|
|
|
- if (pipe != PIPE_A)
|
|
|
|
- crtc->config.dpll_hw_state.dpll |= DPLL_INTEGRATED_CRI_CLK_VLV;
|
|
|
|
-
|
|
|
|
- crtc->config.dpll_hw_state.dpll_md =
|
|
|
|
- (crtc->config.pixel_multiplier - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT;
|
|
|
|
-
|
|
|
|
bestn = crtc->config.dpll.n;
|
|
bestn = crtc->config.dpll.n;
|
|
bestm2_frac = crtc->config.dpll.m2 & 0x3fffff;
|
|
bestm2_frac = crtc->config.dpll.m2 & 0x3fffff;
|
|
bestm1 = crtc->config.dpll.m1;
|
|
bestm1 = crtc->config.dpll.m1;
|