All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] drm/i915: disable turbo on ValleyView for now
@ 2012-04-11 16:23 Jesse Barnes
  2012-04-11 16:23 ` [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC Jesse Barnes
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Jesse Barnes @ 2012-04-11 16:23 UTC (permalink / raw)
  To: intel-gfx; +Cc: Daniel Vetter

We'll probably need new init functions and will need to test it.

v2: fix impossible GEN6 && GEN7 condition, move to Daniel's new init function

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_display.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index aee389c..58f4b02 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9541,7 +9541,7 @@ void intel_modeset_init_hw(struct drm_device *dev)
 		intel_init_emon(dev);
 	}
 
-	if (IS_GEN6(dev) || IS_GEN7(dev)) {
+	if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev)) {
 		gen6_enable_rps(dev_priv);
 		gen6_update_ring_freq(dev_priv);
 	}
@@ -9632,7 +9632,7 @@ void intel_modeset_cleanup(struct drm_device *dev)
 
 	if (IS_IRONLAKE_M(dev))
 		ironlake_disable_drps(dev);
-	if (IS_GEN6(dev) || IS_GEN7(dev))
+	if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev))
 		gen6_disable_rps(dev);
 
 	if (IS_IRONLAKE_M(dev))
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC
  2012-04-11 16:23 [PATCH 1/4] drm/i915: disable turbo on ValleyView for now Jesse Barnes
@ 2012-04-11 16:23 ` Jesse Barnes
  2012-04-11 18:36   ` Daniel Vetter
  2012-04-11 16:23 ` [PATCH 3/4] drm/i915: allow PCH PWM override on IVB Jesse Barnes
  2012-04-11 16:23 ` [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 " Jesse Barnes
  2 siblings, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2012-04-11 16:23 UTC (permalink / raw)
  To: intel-gfx

When the PCH split occurred, we dropped support for separate hsync and
vsync disable in the VGA DAC.  So add a PCH specific DPMS function that
just uses the port enable bit for controlling DPMS states.

Before this fix, when anything other than a full DPMS off occurred,
the VGA port would be left enabled and scanning out while all the other
heads would turn off as expected.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_crt.c |   42 ++++++++++++++++++++++++++++---------
 1 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 70b0f1a..bdaefff 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -55,18 +55,36 @@ static struct intel_crt *intel_attached_crt(struct drm_connector *connector)
 			    struct intel_crt, base);
 }
 
-static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
+static void pch_crt_dpms(struct drm_encoder *encoder, int mode)
 {
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	u32 temp, reg;
+	u32 temp;
 
-	if (HAS_PCH_SPLIT(dev))
-		reg = PCH_ADPA;
-	else
-		reg = ADPA;
+	temp = I915_READ(PCH_ADPA);
+	temp &= ~ADPA_DAC_ENABLE;
+
+	switch (mode) {
+	case DRM_MODE_DPMS_ON:
+		temp |= ADPA_DAC_ENABLE;
+		break;
+	case DRM_MODE_DPMS_STANDBY:
+	case DRM_MODE_DPMS_SUSPEND:
+	case DRM_MODE_DPMS_OFF:
+		/* Just leave port enable cleared */
+		break;
+	}
+
+	I915_WRITE(PCH_ADPA, temp);
+}
+
+static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
+{
+	struct drm_device *dev = encoder->dev;
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	u32 temp;
 
-	temp = I915_READ(reg);
+	temp = I915_READ(ADPA);
 	temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
 	temp &= ~ADPA_DAC_ENABLE;
 
@@ -85,7 +103,7 @@ static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
 		break;
 	}
 
-	I915_WRITE(reg, temp);
+	I915_WRITE(ADPA, temp);
 }
 
 static int intel_crt_mode_valid(struct drm_connector *connector,
@@ -516,8 +534,7 @@ static void intel_crt_reset(struct drm_connector *connector)
  * Routines for controlling stuff on the analog port
  */
 
-static const struct drm_encoder_helper_funcs intel_crt_helper_funcs = {
-	.dpms = intel_crt_dpms,
+static struct drm_encoder_helper_funcs intel_crt_helper_funcs = {
 	.mode_fixup = intel_crt_mode_fixup,
 	.prepare = intel_encoder_prepare,
 	.commit = intel_encoder_commit,
@@ -602,6 +619,11 @@ void intel_crt_init(struct drm_device *dev)
 		connector->interlace_allowed = 1;
 	connector->doublescan_allowed = 0;
 
+	if (HAS_PCH_SPLIT(dev))
+		intel_crt_helper_funcs.dpms = pch_crt_dpms;
+	else
+		intel_crt_helper_funcs.dpms = intel_crt_dpms;
+
 	drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
 	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
 
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] drm/i915: allow PCH PWM override on IVB
  2012-04-11 16:23 [PATCH 1/4] drm/i915: disable turbo on ValleyView for now Jesse Barnes
  2012-04-11 16:23 ` [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC Jesse Barnes
@ 2012-04-11 16:23 ` Jesse Barnes
  2012-04-11 16:23 ` [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 " Jesse Barnes
  2 siblings, 0 replies; 9+ messages in thread
From: Jesse Barnes @ 2012-04-11 16:23 UTC (permalink / raw)
  To: intel-gfx

On IVB, there are two sets of panel backlight regs: one in the CPU and
one in the PCH.  The CPU ones aren't generally used, so on IVB make sure
we allow the PCH regs to actually control the backlight.

v2: remove unused pwm variable (Daniel)
    move to init_hw function so we override on resume too

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 58f4b02..33aaad3 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9530,6 +9530,19 @@ static void i915_disable_vga(struct drm_device *dev)
 	POSTING_READ(vga_reg);
 }
 
+static void ivb_pch_pwm_override(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/*
+	 * IVB has CPU eDP backlight regs too, set things up to let the
+	 * PCH regs control the backlight
+	 */
+	I915_WRITE(BLC_PWM_CPU_CTL2, PWM_ENABLE);
+	I915_WRITE(BLC_PWM_CPU_CTL, 0);
+	I915_WRITE(BLC_PWM_PCH_CTL1, PWM_ENABLE | (1<<30));
+}
+
 void intel_modeset_init_hw(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -9545,6 +9558,9 @@ void intel_modeset_init_hw(struct drm_device *dev)
 		gen6_enable_rps(dev_priv);
 		gen6_update_ring_freq(dev_priv);
 	}
+
+	if (IS_IVYBRIDGE(dev))
+		ivb_pch_pwm_override(dev);
 }
 
 void intel_modeset_init(struct drm_device *dev)
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 on IVB
  2012-04-11 16:23 [PATCH 1/4] drm/i915: disable turbo on ValleyView for now Jesse Barnes
  2012-04-11 16:23 ` [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC Jesse Barnes
  2012-04-11 16:23 ` [PATCH 3/4] drm/i915: allow PCH PWM override on IVB Jesse Barnes
@ 2012-04-11 16:23 ` Jesse Barnes
  2012-04-11 16:53   ` Jesse Barnes
  2 siblings, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2012-04-11 16:23 UTC (permalink / raw)
  To: intel-gfx

This is a hack to make sure CPU eDP mode sets avoid allocating a PCH PLL.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |    2 ++
 drivers/gpu/drm/i915/intel_dp.c      |    4 ++++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 33aaad3..0b5f843 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6225,6 +6225,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
 			   fp == I915_READ(PCH_FP0(1))) {
 			intel_crtc->use_pll_a = false;
 			DRM_DEBUG_KMS("using pipe b dpll\n");
+		} else if (is_cpu_edp) {
+			DRM_DEBUG_KMS("CPU eDP, no PCH PLL needed\n");
 		} else {
 			DRM_DEBUG_KMS("no matching PLL configuration for pipe 2\n");
 			return -EINVAL;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 6346b29..89b326f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -2417,6 +2417,10 @@ intel_dp_init(struct drm_device *dev, int output_reg)
 	}
 
 	intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
+
+	if (IS_IVYBRIDGE(dev) && output_reg == DP_A)
+		intel_encoder->crtc_mask = (1 << 2);
+
 	connector->interlace_allowed = true;
 	connector->doublescan_allowed = 0;
 
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 on IVB
  2012-04-11 16:23 ` [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 " Jesse Barnes
@ 2012-04-11 16:53   ` Jesse Barnes
  0 siblings, 0 replies; 9+ messages in thread
From: Jesse Barnes @ 2012-04-11 16:53 UTC (permalink / raw)
  Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 308 bytes --]

On Wed, 11 Apr 2012 09:23:36 -0700
Jesse Barnes <jbarnes@virtuousgeek.org> wrote:

> This is a hack to make sure CPU eDP mode sets avoid allocating a PCH PLL.

Ignore this one, it's too ugly to live.  I'll put something better
together now...

-- 
Jesse Barnes, Intel Open Source Technology Center

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC
  2012-04-11 16:23 ` [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC Jesse Barnes
@ 2012-04-11 18:36   ` Daniel Vetter
  2012-04-17 22:06     ` Jesse Barnes
  0 siblings, 1 reply; 9+ messages in thread
From: Daniel Vetter @ 2012-04-11 18:36 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: intel-gfx

On Wed, Apr 11, 2012 at 09:23:34AM -0700, Jesse Barnes wrote:
> When the PCH split occurred, we dropped support for separate hsync and
> vsync disable in the VGA DAC.  So add a PCH specific DPMS function that
> just uses the port enable bit for controlling DPMS states.
> 
> Before this fix, when anything other than a full DPMS off occurred,
> the VGA port would be left enabled and scanning out while all the other
> heads would turn off as expected.
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/intel_crt.c |   42 ++++++++++++++++++++++++++++---------
>  1 files changed, 32 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index 70b0f1a..bdaefff 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -55,18 +55,36 @@ static struct intel_crt *intel_attached_crt(struct drm_connector *connector)
>  			    struct intel_crt, base);
>  }
>  
> -static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
> +static void pch_crt_dpms(struct drm_encoder *encoder, int mode)
>  {
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	u32 temp, reg;
> +	u32 temp;
>  
> -	if (HAS_PCH_SPLIT(dev))
> -		reg = PCH_ADPA;
> -	else
> -		reg = ADPA;
> +	temp = I915_READ(PCH_ADPA);
> +	temp &= ~ADPA_DAC_ENABLE;
> +
> +	switch (mode) {
> +	case DRM_MODE_DPMS_ON:
> +		temp |= ADPA_DAC_ENABLE;
> +		break;
> +	case DRM_MODE_DPMS_STANDBY:
> +	case DRM_MODE_DPMS_SUSPEND:
> +	case DRM_MODE_DPMS_OFF:
> +		/* Just leave port enable cleared */
> +		break;
> +	}
> +
> +	I915_WRITE(PCH_ADPA, temp);
> +}
> +
> +static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	u32 temp;
>  
> -	temp = I915_READ(reg);
> +	temp = I915_READ(ADPA);
>  	temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
>  	temp &= ~ADPA_DAC_ENABLE;
>  
> @@ -85,7 +103,7 @@ static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
>  		break;
>  	}
>  
> -	I915_WRITE(reg, temp);
> +	I915_WRITE(ADPA, temp);
>  }
>  
>  static int intel_crt_mode_valid(struct drm_connector *connector,
> @@ -516,8 +534,7 @@ static void intel_crt_reset(struct drm_connector *connector)
>   * Routines for controlling stuff on the analog port
>   */
>  
> -static const struct drm_encoder_helper_funcs intel_crt_helper_funcs = {
> -	.dpms = intel_crt_dpms,
> +static struct drm_encoder_helper_funcs intel_crt_helper_funcs = {
>  	.mode_fixup = intel_crt_mode_fixup,
>  	.prepare = intel_encoder_prepare,
>  	.commit = intel_encoder_commit,
> @@ -602,6 +619,11 @@ void intel_crt_init(struct drm_device *dev)
>  		connector->interlace_allowed = 1;
>  	connector->doublescan_allowed = 0;
>  
> +	if (HAS_PCH_SPLIT(dev))
> +		intel_crt_helper_funcs.dpms = pch_crt_dpms;
> +	else
> +		intel_crt_helper_funcs.dpms = intel_crt_dpms;

I like the clean split of this, but the static struct frobbing really
itches me. Can you either split up intel_crt_helper_funcs into a gmch and
pch_split version or add a dpms function pointer to struct intel_crt?

Patch 1&3 of this series are queued for -next, thanks.
-Daniel

> +
>  	drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
>  	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
>  
> -- 
> 1.7.4.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Mail: daniel@ffwll.ch
Mobile: +41 (0)79 365 57 48

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC
  2012-04-11 18:36   ` Daniel Vetter
@ 2012-04-17 22:06     ` Jesse Barnes
  2012-04-17 22:18       ` Chris Wilson
  0 siblings, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2012-04-17 22:06 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

Like this?

>From fee9f6fbf2230f96b9195baf32fd67b243969a14 Mon Sep 17 00:00:00 2001
From: Jesse Barnes <jbarnes@virtuousgeek.org>
Date: Wed, 11 Apr 2012 09:23:34 -0700
Subject: [PATCH] drm/i915: IBX+ doesn't have separate vsync/hsync controls on
 the VGA DAC

When the PCH split occurred, we dropped support for separate hsync and
vsync disable in the VGA DAC.  So add a PCH specific DPMS function that
just uses the port enable bit for controlling DPMS states.

Before this fix, when anything other than a full DPMS off occurred,
the VGA port would be left enabled and scanning out while all the other
heads would turn off as expected.

v2: duplicate encoder helper vtable into pch and gmch versions (Daniel)

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_crt.c |   54 ++++++++++++++++++++++++++++++-------
 1 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 70b0f1a..fb516e9 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -55,18 +55,36 @@ static struct intel_crt *intel_attached_crt(struct drm_connector *connector)
 			    struct intel_crt, base);
 }
 
-static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
+static void pch_crt_dpms(struct drm_encoder *encoder, int mode)
 {
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	u32 temp, reg;
+	u32 temp;
 
-	if (HAS_PCH_SPLIT(dev))
-		reg = PCH_ADPA;
-	else
-		reg = ADPA;
+	temp = I915_READ(PCH_ADPA);
+	temp &= ~ADPA_DAC_ENABLE;
+
+	switch (mode) {
+	case DRM_MODE_DPMS_ON:
+		temp |= ADPA_DAC_ENABLE;
+		break;
+	case DRM_MODE_DPMS_STANDBY:
+	case DRM_MODE_DPMS_SUSPEND:
+	case DRM_MODE_DPMS_OFF:
+		/* Just leave port enable cleared */
+		break;
+	}
+
+	I915_WRITE(PCH_ADPA, temp);
+}
 
-	temp = I915_READ(reg);
+static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
+{
+	struct drm_device *dev = encoder->dev;
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	u32 temp;
+
+	temp = I915_READ(ADPA);
 	temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
 	temp &= ~ADPA_DAC_ENABLE;
 
@@ -85,7 +103,7 @@ static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
 		break;
 	}
 
-	I915_WRITE(reg, temp);
+	I915_WRITE(ADPA, temp);
 }
 
 static int intel_crt_mode_valid(struct drm_connector *connector,
@@ -516,12 +534,20 @@ static void intel_crt_reset(struct drm_connector *connector)
  * Routines for controlling stuff on the analog port
  */
 
-static const struct drm_encoder_helper_funcs intel_crt_helper_funcs = {
-	.dpms = intel_crt_dpms,
+static const struct drm_encoder_helper_funcs pch_encoder_funcs = {
+	.mode_fixup = intel_crt_mode_fixup,
+	.prepare = intel_encoder_prepare,
+	.commit = intel_encoder_commit,
+	.mode_set = intel_crt_mode_set,
+	.dpms = pch_crt_dpms,
+};
+
+static const struct drm_encoder_helper_funcs gmch_encoder_funcs = {
 	.mode_fixup = intel_crt_mode_fixup,
 	.prepare = intel_encoder_prepare,
 	.commit = intel_encoder_commit,
 	.mode_set = intel_crt_mode_set,
+	.dpms = intel_crt_dpms,
 };
 
 static const struct drm_connector_funcs intel_crt_connector_funcs = {
@@ -567,6 +593,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_crt *crt;
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
+	const struct drm_encoder_helper_funcs *encoder_helper_funcs;
 
 	/* Skip machines without VGA that falsely report hotplug events */
 	if (dmi_check_system(intel_no_crt))
@@ -602,7 +629,12 @@ void intel_crt_init(struct drm_device *dev)
 		connector->interlace_allowed = 1;
 	connector->doublescan_allowed = 0;
 
-	drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
+	if (HAS_PCH_SPLIT(dev))
+		encoder_helper_funcs = &pch_encoder_funcs;
+	else
+		encoder_helper_funcs = &gmch_encoder_funcs;
+
+	drm_encoder_helper_add(&crt->base.base, encoder_helper_funcs);
 	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
 
 	drm_sysfs_connector_add(connector);
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC
  2012-04-17 22:06     ` Jesse Barnes
@ 2012-04-17 22:18       ` Chris Wilson
  2012-04-18  7:36         ` Daniel Vetter
  0 siblings, 1 reply; 9+ messages in thread
From: Chris Wilson @ 2012-04-17 22:18 UTC (permalink / raw)
  To: Jesse Barnes, Daniel Vetter; +Cc: intel-gfx

On Tue, 17 Apr 2012 15:06:33 -0700, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> Like this?
> 
> From fee9f6fbf2230f96b9195baf32fd67b243969a14 Mon Sep 17 00:00:00 2001
> From: Jesse Barnes <jbarnes@virtuousgeek.org>
> Date: Wed, 11 Apr 2012 09:23:34 -0700
> Subject: [PATCH] drm/i915: IBX+ doesn't have separate vsync/hsync controls on
>  the VGA DAC
> 
> When the PCH split occurred, we dropped support for separate hsync and
> vsync disable in the VGA DAC.  So add a PCH specific DPMS function that
> just uses the port enable bit for controlling DPMS states.
> 
> Before this fix, when anything other than a full DPMS off occurred,
> the VGA port would be left enabled and scanning out while all the other
> heads would turn off as expected.
> 
> v2: duplicate encoder helper vtable into pch and gmch versions (Daniel)
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

With s/intel_crt_dpms/gmch_crt_dpms/ and
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48491

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC
  2012-04-17 22:18       ` Chris Wilson
@ 2012-04-18  7:36         ` Daniel Vetter
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Vetter @ 2012-04-18  7:36 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Tue, Apr 17, 2012 at 11:18:46PM +0100, Chris Wilson wrote:
> On Tue, 17 Apr 2012 15:06:33 -0700, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> > Like this?
> > 
> > From fee9f6fbf2230f96b9195baf32fd67b243969a14 Mon Sep 17 00:00:00 2001
> > From: Jesse Barnes <jbarnes@virtuousgeek.org>
> > Date: Wed, 11 Apr 2012 09:23:34 -0700
> > Subject: [PATCH] drm/i915: IBX+ doesn't have separate vsync/hsync controls on
> >  the VGA DAC
> > 
> > When the PCH split occurred, we dropped support for separate hsync and
> > vsync disable in the VGA DAC.  So add a PCH specific DPMS function that
> > just uses the port enable bit for controlling DPMS states.
> > 
> > Before this fix, when anything other than a full DPMS off occurred,
> > the VGA port would be left enabled and scanning out while all the other
> > heads would turn off as expected.
> > 
> > v2: duplicate encoder helper vtable into pch and gmch versions (Daniel)
> > 
> > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> 
> With s/intel_crt_dpms/gmch_crt_dpms/ and
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48491
> 
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Queued for next with the gmch_ color applied, thanks for the patch&review.
-Daniel
-- 
Daniel Vetter
Mail: daniel@ffwll.ch
Mobile: +41 (0)79 365 57 48

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-04-18  7:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-11 16:23 [PATCH 1/4] drm/i915: disable turbo on ValleyView for now Jesse Barnes
2012-04-11 16:23 ` [PATCH 2/4] drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC Jesse Barnes
2012-04-11 18:36   ` Daniel Vetter
2012-04-17 22:06     ` Jesse Barnes
2012-04-17 22:18       ` Chris Wilson
2012-04-18  7:36         ` Daniel Vetter
2012-04-11 16:23 ` [PATCH 3/4] drm/i915: allow PCH PWM override on IVB Jesse Barnes
2012-04-11 16:23 ` [PATCH 4/4] drm/i915: force CPU eDP onto pipe 3 " Jesse Barnes
2012-04-11 16:53   ` Jesse Barnes

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.