linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: greg@kroah.com, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org
Subject: [PATCH 02/15] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight
Date: Wed, 08 Jun 2011 11:11:28 +0100	[thread overview]
Message-ID: <20110608101121.9478.64934.stgit@localhost.localdomain> (raw)
In-Reply-To: <20110608100411.9478.86672.stgit@localhost.localdomain>

From: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>

On the Fit-PC2 the VBT reports an invalid fixed panel mode for LVDS, this gets
in the way for SDVO. This patch makes VBT parsing skip the invalid mode. When
there is no LVDS output the backlight support crashes so the patch also checks
for this before enabling it.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
---

 drivers/staging/gma500/psb_drv.c        |   15 ++++++++++++++-
 drivers/staging/gma500/psb_intel_bios.c |   13 +++++++++----
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/gma500/psb_drv.c b/drivers/staging/gma500/psb_drv.c
index 1c45c11..aa87b1b 100644
--- a/drivers/staging/gma500/psb_drv.c
+++ b/drivers/staging/gma500/psb_drv.c
@@ -542,6 +542,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 	unsigned long irqflags;
 	int ret = -ENOMEM;
 	uint32_t tt_pages;
+	struct drm_connector *connector;
+	struct psb_intel_output *psb_intel_output;
 
 	dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
 	if (dev_priv == NULL)
@@ -663,7 +665,18 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 		drm_kms_helper_poll_init(dev);
 	}
 
-	ret = psb_backlight_init(dev);
+	/* Only add backlight support if we have LVDS output */
+	list_for_each_entry(connector, &dev->mode_config.connector_list,
+			    head) {
+		psb_intel_output = to_psb_intel_output(connector);
+
+		switch (psb_intel_output->type) {
+		case INTEL_OUTPUT_LVDS:
+			ret = psb_backlight_init(dev);
+			break;
+		}
+	}
+
 	if (ret)
 		return ret;
 #if 0
diff --git a/drivers/staging/gma500/psb_intel_bios.c b/drivers/staging/gma500/psb_intel_bios.c
index 48ac8ba..417965d 100644
--- a/drivers/staging/gma500/psb_intel_bios.c
+++ b/drivers/staging/gma500/psb_intel_bios.c
@@ -154,10 +154,15 @@ static void parse_lfp_panel_data(struct drm_psb_private *dev_priv,
 
 	fill_detail_timing_data(panel_fixed_mode, dvo_timing);
 
-	dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
-
-	DRM_DEBUG("Found panel mode in BIOS VBT tables:\n");
-	drm_mode_debug_printmodeline(panel_fixed_mode);
+	if (panel_fixed_mode->htotal > 0 && panel_fixed_mode->vtotal > 0) {
+		dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
+		DRM_DEBUG("Found panel mode in BIOS VBT tables:\n");
+		drm_mode_debug_printmodeline(panel_fixed_mode);
+	} else {
+		DRM_DEBUG("Ignoring bogus LVDS VBT mode.\n");
+		dev_priv->lvds_vbt = 0;
+		kfree(panel_fixed_mode);
+	}
 
 	return;
 }


  parent reply	other threads:[~2011-06-08 10:23 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-08 10:10 [PATCH 00/15] GMA500 KMS and GEM Alan Cox
2011-06-08 10:11 ` [PATCH 01/15] gma500: fix warnings Alan Cox
2011-06-08 10:11 ` Alan Cox [this message]
2011-06-08 10:11 ` [PATCH 03/15] gma500: Make GTT pages uncached Alan Cox
2011-06-08 10:12 ` [PATCH 04/15] gma500: Ensure the frame buffer has a linear virtual mapping Alan Cox
2011-06-08 10:12 ` [PATCH 05/15] gma500: Set the correct bits according to the pipe Alan Cox
2011-06-08 10:12 ` [PATCH 06/15] staging/gma500: get control from firmware framebuffer if conflicts Alan Cox
2011-06-08 10:13 ` [PATCH 07/15] gma500: Fix uninitialized variable and style issues Alan Cox
2011-06-08 10:13 ` [PATCH 08/15] gma500: revamp frame buffer creation and handling Alan Cox
2011-06-08 10:13 ` [PATCH 09/15] gma500: Do sane FB cleanup Alan Cox
2011-06-08 10:14 ` [PATCH 10/15] gma500: trim some of the debug Alan Cox
2011-06-08 10:14 ` [PATCH 11/15] gma500: polish for completion of this phase Alan Cox
2011-06-08 10:14 ` [PATCH 12/15] gma500: 2D acceleration tidying Alan Cox
2011-06-08 10:15 ` [PATCH 13/15] gma500: nuke the last bits of TTM code Alan Cox
2011-06-08 10:15 ` [PATCH 14/15] gma500: nuke the PSB debug stuff Alan Cox
2011-06-09  1:10   ` Patrik Jakobsson
2011-06-09  8:11     ` Alan Cox
2011-06-09 10:36       ` Dave Airlie
2011-06-09 11:45         ` Patrik Jakobsson
2011-06-09 12:04           ` Alan Cox
2011-06-12 19:02             ` Daniel Vetter
2011-06-13 15:44               ` Alan Cox
2011-06-13 19:35                 ` Daniel Vetter
2011-06-09 11:55         ` Alan Cox
2011-06-08 10:15 ` [PATCH 15/15] gma500: Kill spare kref Alan Cox
2011-06-08 11:15 ` [OT] Re: [PATCH 00/15] GMA500 KMS and GEM Lukasz
2011-06-08 12:24   ` Alan Cox
2011-06-14  9:24     ` Pasi Kärkkäinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110608101121.9478.64934.stgit@localhost.localdomain \
    --to=alan@lxorguk.ukuu.org.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).