Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes
@ 2012-03-16 21:41 Takashi Iwai
  2012-03-16 21:41 ` [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too Takashi Iwai
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Takashi Iwai @ 2012-03-16 21:41 UTC (permalink / raw)
  To: intel-gfx; +Cc: hcb

Hi,

this is the revised patch for fixing the wrong LVDS channel mode,
e.g. when booted while the lid is closed.  Also, a new module option
to override the LVDS channel mode is added in the second patch.

v1->v2: Fix the register for gen<=4
v2->v3: Check the resolution of the entry to be sure
v3->v4: Optimize the register reference; add a module option

thanks,

Takashi

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

* [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too
  2012-03-16 21:41 [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Takashi Iwai
@ 2012-03-16 21:41 ` Takashi Iwai
  2012-03-16 23:18   ` Keith Packard
  2012-03-16 21:41 ` [PATCH 2/2] drm/i915: Add lvds_channel module option Takashi Iwai
  2012-03-19 14:21 ` [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Adam Jackson
  2 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2012-03-16 21:41 UTC (permalink / raw)
  To: intel-gfx; +Cc: Takashi Iwai, hcb

Currently i915 driver checks [PCH_]LVDS register bits to decide
whether to set up the dual-link or the single-link mode.  This relies
implicitly on that BIOS initializes the register properly at boot.
However, BIOS doesn't initialize it always.  When the machine is
booted with the closed lid, BIOS skips the LVDS reg initialization.
This ends up in blank output on a machine with a dual-link LVDS when
you open the lid after the boot.

This patch adds a workaround for that problem by checking the initial
LVDS register value in VBT.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/i915/i915_drv.h      |    1 +
 drivers/gpu/drm/i915/intel_bios.c    |   26 ++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_display.c |   26 ++++++++++++++++++++------
 3 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9689ca3..8c8e488 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -376,6 +376,7 @@ typedef struct drm_i915_private {
 	unsigned int lvds_use_ssc:1;
 	unsigned int display_clock_mode:1;
 	int lvds_ssc_freq;
+	unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
 	struct {
 		int rate;
 		int lanes;
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 63880e2..6b93f92 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -173,6 +173,27 @@ get_lvds_dvo_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data,
 	return (struct lvds_dvo_timing *)(entry + dvo_timing_offset);
 }
 
+/* read the initial LVDS register value for the given panel mode */
+static unsigned int get_lvds_reg_val(const struct bdb_header *bdb,
+				     const struct bdb_lvds_lfp_data_ptrs *ptrs,
+				     int index,
+				     struct drm_display_mode *mode)
+{
+	unsigned int ofs;
+	const struct lvds_fp_timing *timing;
+
+	if (index >= ARRAY_SIZE(ptrs->ptr))
+		return 0;
+	ofs = ptrs->ptr[index].fp_timing_offset;
+	if (ofs + sizeof(*timing) > bdb->bdb_size)
+		return 0;
+	timing = (const struct lvds_fp_timing *)((const u8 *)bdb + ofs);
+	/* check the resolution, just to be sure */
+	if (timing->x_res != mode->hdisplay || timing->y_res != mode->vdisplay)
+		return 0;
+	return timing->lvds_reg_val;
+}
+
 /* Try to find integrated panel data */
 static void
 parse_lfp_panel_data(struct drm_i915_private *dev_priv,
@@ -243,6 +264,11 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
 			      "Normal Clock %dKHz, downclock %dKHz\n",
 			      panel_fixed_mode->clock, 10*downclock);
 	}
+
+	dev_priv->bios_lvds_val = get_lvds_reg_val(bdb, lvds_lfp_data_ptrs,
+						   lvds_options->panel_type,
+						   panel_fixed_mode);
+	DRM_DEBUG_KMS("VBT initial LVDS value %x\n", dev_priv->bios_lvds_val);
 }
 
 /* Try to find sdvo panel data */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f851db7..d7e6b76 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -356,6 +356,23 @@ static const intel_limit_t intel_limits_ironlake_display_port = {
 	.find_pll = intel_find_pll_ironlake_dp,
 };
 
+static bool is_dual_link_lvds(struct drm_i915_private *dev_priv,
+			      unsigned int reg)
+{
+	unsigned int val;
+	/* BIOS should set the proper LVDS register value at boot, but
+	 * in reality, it doesn't set the value when the lid is closed;
+	 * thus when a machine is booted with the lid closed, the LVDS
+	 * reg value can't be trusted.  So we need to check "the value
+	 * to be set" in VBT at first.
+	 */
+	if (dev_priv->bios_lvds_val)
+		val = dev_priv->bios_lvds_val;
+	else
+		val = I915_READ(reg);
+	return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP;
+}
+
 static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc,
 						int refclk)
 {
@@ -364,8 +381,7 @@ static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc,
 	const intel_limit_t *limit;
 
 	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
-		if ((I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) ==
-		    LVDS_CLKB_POWER_UP) {
+		if (is_dual_link_lvds(dev_priv, PCH_LVDS)) {
 			/* LVDS dual channel */
 			if (refclk == 100000)
 				limit = &intel_limits_ironlake_dual_lvds_100m;
@@ -393,8 +409,7 @@ static const intel_limit_t *intel_g4x_limit(struct drm_crtc *crtc)
 	const intel_limit_t *limit;
 
 	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
-		if ((I915_READ(LVDS) & LVDS_CLKB_POWER_MASK) ==
-		    LVDS_CLKB_POWER_UP)
+		if (is_dual_link_lvds(dev_priv, LVDS))
 			/* LVDS with dual channel */
 			limit = &intel_limits_g4x_dual_channel_lvds;
 		else
@@ -531,8 +546,7 @@ intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
 		 * reliably set up different single/dual channel state, if we
 		 * even can.
 		 */
-		if ((I915_READ(LVDS) & LVDS_CLKB_POWER_MASK) ==
-		    LVDS_CLKB_POWER_UP)
+		if (is_dual_link_lvds(dev_priv, LVDS))
 			clock.p2 = limit->p2.p2_fast;
 		else
 			clock.p2 = limit->p2.p2_slow;
-- 
1.7.9.2

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

* [PATCH 2/2] drm/i915: Add lvds_channel module option
  2012-03-16 21:41 [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Takashi Iwai
  2012-03-16 21:41 ` [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too Takashi Iwai
@ 2012-03-16 21:41 ` Takashi Iwai
  2012-03-17  1:51   ` Eugeni Dodonov
  2012-03-19 14:21 ` [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Adam Jackson
  2 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2012-03-16 21:41 UTC (permalink / raw)
  To: intel-gfx; +Cc: Takashi Iwai, hcb

Add a new module optoin lvds_channel to specify the LVDS channel mode
explicitly instead of probing the LVDS register value set by BIOS.
This will be helpful when VBT is broken or incompatible with the
current code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/i915/i915_drv.c      |    6 ++++++
 drivers/gpu/drm/i915/i915_drv.h      |    1 +
 drivers/gpu/drm/i915/intel_display.c |    5 +++++
 3 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 308f819..eee6804 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -80,6 +80,12 @@ MODULE_PARM_DESC(lvds_downclock,
 		"Use panel (LVDS/eDP) downclocking for power savings "
 		"(default: false)");
 
+int i915_lvds_channel __read_mostly;
+module_param_named(lvds_channel, i915_lvds_channel, int, 0400);
+MODULE_PARM_DESC(lvds_channel,
+		 "Specify LVDS channel mode "
+		 "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)");
+
 int i915_panel_use_ssc __read_mostly = -1;
 module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600);
 MODULE_PARM_DESC(lvds_use_ssc,
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8c8e488..1af2b53 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1014,6 +1014,7 @@ extern int i915_panel_ignore_lid __read_mostly;
 extern unsigned int i915_powersave __read_mostly;
 extern int i915_semaphores __read_mostly;
 extern unsigned int i915_lvds_downclock __read_mostly;
+extern int i915_lvds_channel __read_mostly;
 extern int i915_panel_use_ssc __read_mostly;
 extern int i915_vbt_sdvo_panel_type __read_mostly;
 extern int i915_enable_rc6 __read_mostly;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index d7e6b76..87a7fb9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -360,6 +360,11 @@ static bool is_dual_link_lvds(struct drm_i915_private *dev_priv,
 			      unsigned int reg)
 {
 	unsigned int val;
+
+	/* use the module option value if specified */
+	if (i915_lvds_channel > 0)
+		return i915_lvds_channel == 2;
+
 	/* BIOS should set the proper LVDS register value at boot, but
 	 * in reality, it doesn't set the value when the lid is closed;
 	 * thus when a machine is booted with the lid closed, the LVDS
-- 
1.7.9.2

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

* Re: [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too
  2012-03-16 21:41 ` [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too Takashi Iwai
@ 2012-03-16 23:18   ` Keith Packard
  2012-03-17  7:59     ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Keith Packard @ 2012-03-16 23:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: Takashi Iwai, hcb

<#part sign=pgpmime>
On Fri, 16 Mar 2012 22:41:12 +0100, Takashi Iwai <tiwai@suse.de> wrote:

> +/* read the initial LVDS register value for the given panel mode */
> +static unsigned int get_lvds_reg_val(const struct bdb_header *bdb,
> +				     const struct bdb_lvds_lfp_data_ptrs *ptrs,
> +				     int index,
> +				     struct drm_display_mode *mode)

To follow the style of intel_bios.c, I think it would make sense to have
the function:

static const struct lvds_dvo_timing *
get_lvds_fp_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data,
        	   const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs,
                   int index)

then use the results of this in parse_lfp_panel_data, instead of putting
the whole computation into this new function.

I'd also like to see this code only use the BDB value when the LVDS is
disabled at startup time; otherwise, we'll be changing the behavior for
all LVDS users, and as BIOS tables are notoriously unreliable, I fear
that we'll cause a lot more problems than we solve.

-- 
keith.packard@intel.com

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

* Re: [PATCH 2/2] drm/i915: Add lvds_channel module option
  2012-03-16 21:41 ` [PATCH 2/2] drm/i915: Add lvds_channel module option Takashi Iwai
@ 2012-03-17  1:51   ` Eugeni Dodonov
  2012-03-17  8:00     ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Eugeni Dodonov @ 2012-03-17  1:51 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: intel-gfx, hcb


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

On Fri, Mar 16, 2012 at 18:41, Takashi Iwai <tiwai@suse.de> wrote:

> Add a new module optoin lvds_channel to specify the LVDS channel mode
> explicitly instead of probing the LVDS register value set by BIOS.
> This will be helpful when VBT is broken or incompatible with the
> current code.
>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  drivers/gpu/drm/i915/i915_drv.c      |    6 ++++++
>  drivers/gpu/drm/i915/i915_drv.h      |    1 +
>  drivers/gpu/drm/i915/intel_display.c |    5 +++++
>  3 files changed, 12 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c
> b/drivers/gpu/drm/i915/i915_drv.c
> index 308f819..eee6804 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -80,6 +80,12 @@ MODULE_PARM_DESC(lvds_downclock,
>                "Use panel (LVDS/eDP) downclocking for power savings "
>                "(default: false)");
>
> +int i915_lvds_channel __read_mostly;
> +module_param_named(lvds_channel, i915_lvds_channel, int, 0400);
>

As a minor bikeshedding, perhaps this variable would make more sense if
called 'i915_lvds_channel_mode' instead?

I am fine with either spelling though, it just looks more semantically
correct to me. But in any case,

Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>

-- 
Eugeni Dodonov
<http://eugeni.dodonov.net/>

[-- Attachment #1.2: Type: text/html, Size: 1870 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] 10+ messages in thread

* Re: [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too
  2012-03-16 23:18   ` Keith Packard
@ 2012-03-17  7:59     ` Takashi Iwai
  2012-03-17 19:01       ` Keith Packard
  0 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2012-03-17  7:59 UTC (permalink / raw)
  To: Keith Packard; +Cc: intel-gfx, hcb

At Fri, 16 Mar 2012 16:18:03 -0700,
Keith Packard wrote:
> 
> <#part sign=pgpmime>
> On Fri, 16 Mar 2012 22:41:12 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> 
> > +/* read the initial LVDS register value for the given panel mode */
> > +static unsigned int get_lvds_reg_val(const struct bdb_header *bdb,
> > +				     const struct bdb_lvds_lfp_data_ptrs *ptrs,
> > +				     int index,
> > +				     struct drm_display_mode *mode)
> 
> To follow the style of intel_bios.c, I think it would make sense to have
> the function:
> 
> static const struct lvds_dvo_timing *
> get_lvds_fp_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data,
>         	   const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs,
>                    int index)
> 
> then use the results of this in parse_lfp_panel_data, instead of putting
> the whole computation into this new function.

Well, the LVDS reg data isn't in lvds_dvo_timing but in lvds_fp_timing,
thus you need to look at a different entry in anyway.

> I'd also like to see this code only use the BDB value when the LVDS is
> disabled at startup time; otherwise, we'll be changing the behavior for
> all LVDS users, and as BIOS tables are notoriously unreliable, I fear
> that we'll cause a lot more problems than we solve.

I skipped it to simplify the code, but that'd be safer, indeed.

(Though, the chance of getting a wrong value is fairly small since
 the function verifies whether the resolution of the entry matches
 with the given mode, too.)


thanks,

Takashi

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

* Re: [PATCH 2/2] drm/i915: Add lvds_channel module option
  2012-03-17  1:51   ` Eugeni Dodonov
@ 2012-03-17  8:00     ` Takashi Iwai
  0 siblings, 0 replies; 10+ messages in thread
From: Takashi Iwai @ 2012-03-17  8:00 UTC (permalink / raw)
  To: Eugeni Dodonov; +Cc: intel-gfx, hcb

At Fri, 16 Mar 2012 22:51:22 -0300,
Eugeni Dodonov wrote:
> 
> [1  <text/plain; ISO-8859-1 (7bit)>]
> On Fri, Mar 16, 2012 at 18:41, Takashi Iwai <tiwai@suse.de> wrote:
> 
> > Add a new module optoin lvds_channel to specify the LVDS channel mode
> > explicitly instead of probing the LVDS register value set by BIOS.
> > This will be helpful when VBT is broken or incompatible with the
> > current code.
> >
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > ---
> >  drivers/gpu/drm/i915/i915_drv.c      |    6 ++++++
> >  drivers/gpu/drm/i915/i915_drv.h      |    1 +
> >  drivers/gpu/drm/i915/intel_display.c |    5 +++++
> >  3 files changed, 12 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c
> > b/drivers/gpu/drm/i915/i915_drv.c
> > index 308f819..eee6804 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -80,6 +80,12 @@ MODULE_PARM_DESC(lvds_downclock,
> >                "Use panel (LVDS/eDP) downclocking for power savings "
> >                "(default: false)");
> >
> > +int i915_lvds_channel __read_mostly;
> > +module_param_named(lvds_channel, i915_lvds_channel, int, 0400);
> >
> 
> As a minor bikeshedding, perhaps this variable would make more sense if
> called 'i915_lvds_channel_mode' instead?
> 
> I am fine with either spelling though, it just looks more semantically
> correct to me. But in any case,

OK, I'll fix in the next spin.


thanks,

Takashi

> 
> Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
> 
> -- 
> Eugeni Dodonov
> <http://eugeni.dodonov.net/>
> [2  <text/html; ISO-8859-1 (quoted-printable)>]
> 

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

* Re: [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too
  2012-03-17  7:59     ` Takashi Iwai
@ 2012-03-17 19:01       ` Keith Packard
  2012-03-18 20:28         ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Keith Packard @ 2012-03-17 19:01 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: intel-gfx, hcb

<#part sign=pgpmime>
On Sat, 17 Mar 2012 08:59:56 +0100, Takashi Iwai <tiwai@suse.de> wrote:

> Well, the LVDS reg data isn't in lvds_dvo_timing but in lvds_fp_timing,
> thus you need to look at a different entry in anyway.

Right, a parallel function which returns the lvds_fp_timing structure
instead of pulling the data out of it. Just makes the code look more
like the existing stuff. And, if we need more data from the
lvds_fp_timing in the future, we'll have it available directly.

> I skipped it to simplify the code, but that'd be safer, indeed.

Reducing the chances for regressions is my primary concern here; most
people boot their machines with the lid open, so if we avoid the new
code in that case, we'll be more likely to not break things.

-- 
keith.packard@intel.com

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

* Re: [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too
  2012-03-17 19:01       ` Keith Packard
@ 2012-03-18 20:28         ` Takashi Iwai
  0 siblings, 0 replies; 10+ messages in thread
From: Takashi Iwai @ 2012-03-18 20:28 UTC (permalink / raw)
  To: Keith Packard; +Cc: intel-gfx, hcb

At Sat, 17 Mar 2012 12:01:17 -0700,
Keith Packard wrote:
> 
> <#part sign=pgpmime>
> On Sat, 17 Mar 2012 08:59:56 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> 
> > Well, the LVDS reg data isn't in lvds_dvo_timing but in lvds_fp_timing,
> > thus you need to look at a different entry in anyway.
> 
> Right, a parallel function which returns the lvds_fp_timing structure
> instead of pulling the data out of it. Just makes the code look more
> like the existing stuff. And, if we need more data from the
> lvds_fp_timing in the future, we'll have it available directly.

Ah, OK I got your point now.  This makes sense.
I'll rewrite the patch tomorrow.


> > I skipped it to simplify the code, but that'd be safer, indeed.
> 
> Reducing the chances for regressions is my primary concern here; most
> people boot their machines with the lid open, so if we avoid the new
> code in that case, we'll be more likely to not break things.

Yes, that's my biggest concern too.
So I'd really appreciate if anyone else checks whether the patch
doesn't break, at least (and helps sometimes).


thanks,

Takashi

> 
> -- 
> keith.packard@intel.com
> 

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

* Re: [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes
  2012-03-16 21:41 [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Takashi Iwai
  2012-03-16 21:41 ` [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too Takashi Iwai
  2012-03-16 21:41 ` [PATCH 2/2] drm/i915: Add lvds_channel module option Takashi Iwai
@ 2012-03-19 14:21 ` Adam Jackson
  2 siblings, 0 replies; 10+ messages in thread
From: Adam Jackson @ 2012-03-19 14:21 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: intel-gfx, hcb


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

On Fri, 2012-03-16 at 22:41 +0100, Takashi Iwai wrote:
> Hi,
> 
> this is the revised patch for fixing the wrong LVDS channel mode,
> e.g. when booted while the lid is closed.  Also, a new module option
> to override the LVDS channel mode is added in the second patch.
> 
> v1->v2: Fix the register for gen<=4
> v2->v3: Check the resolution of the entry to be sure
> v3->v4: Optimize the register reference; add a module option

For the series:

Reviewed-by: Adam Jackson <ajax@redhat.com>

- ajax

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 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] 10+ messages in thread

end of thread, other threads:[~2012-03-19 14:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-16 21:41 [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Takashi Iwai
2012-03-16 21:41 ` [PATCH 1/2] drm/i915: Check VBIOS value for determining LVDS dual channel mode, too Takashi Iwai
2012-03-16 23:18   ` Keith Packard
2012-03-17  7:59     ` Takashi Iwai
2012-03-17 19:01       ` Keith Packard
2012-03-18 20:28         ` Takashi Iwai
2012-03-16 21:41 ` [PATCH 2/2] drm/i915: Add lvds_channel module option Takashi Iwai
2012-03-17  1:51   ` Eugeni Dodonov
2012-03-17  8:00     ` Takashi Iwai
2012-03-19 14:21 ` [PATCH 0/2 v4] drm/i915: LVDS channel mode fixes Adam Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox