The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2)
@ 2011-05-11 20:46 Patrik Jakobsson
  2011-05-11 21:55 ` Alan Cox
  0 siblings, 1 reply; 5+ messages in thread
From: Patrik Jakobsson @ 2011-05-11 20:46 UTC (permalink / raw)
  To: alan; +Cc: greg, linux-kernel

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>
---

diff --git a/drivers/staging/gma500/psb_drv.c b/drivers/staging/gma500/psb_drv.c
index 46ab028..dbc6e4f 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,21 @@ 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
+	 *
+	 * FIXME: Handle turning on LVDS at runtime
+	 */
+	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;
 }

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

* Re: [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2)
  2011-05-11 20:46 [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2) Patrik Jakobsson
@ 2011-05-11 21:55 ` Alan Cox
  2011-05-23 13:03   ` Patrik Jakobsson
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Cox @ 2011-05-11 21:55 UTC (permalink / raw)
  To: Patrik Jakobsson; +Cc: alan, greg, linux-kernel

On Wed, 11 May 2011 22:46:09 +0200
Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote:

> 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>

Looks good to me. I'll add that to the pile.

Alan

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

* Re: [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2)
  2011-05-11 21:55 ` Alan Cox
@ 2011-05-23 13:03   ` Patrik Jakobsson
  2011-05-23 13:41     ` Alan Cox
  0 siblings, 1 reply; 5+ messages in thread
From: Patrik Jakobsson @ 2011-05-23 13:03 UTC (permalink / raw)
  To: Alan Cox; +Cc: alan, linux-kernel

On Wed, May 11, 2011 at 11:55 PM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> On Wed, 11 May 2011 22:46:09 +0200
> Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote:
>
>> 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>
>
> Looks good to me. I'll add that to the pile.
>
> Alan
>

Thanks Alan

Will it go into 2.6.40-rc1?

Now that output it somewhat working on the Fit-PC2 I've been looking
deeper into the SDVO code trying to understand why I'm not getting
proper modes for my display. At the moment it just defaults to
standard modes like 1024x768, 800x600 etc...

The issue is that I'm not getting any EDID from the display. Could be
the GMBus getting in the way or that the SDVO IO mapping isn't set up
properly before sending the SDVO_CMD_SET_CONTROL_BUS_SWITCH command.
I've been fiddling quite a lot with it but nothing seems to work, so
instead I took the current SDVO code (and large parts of the output
handling) from the i915 driver and crammed it into gma500. That did
the trick (though it's not currently talking to crtc abstraction
properly).

So my question is, do you think we should incorporate the new and more
feature complete output handling from the i915 into gma500? We might
even start sharing that code between gma500 and i915. If that is
something you like to avoid we can of course keep working on our
current output code.

Thanks
Patrik Jakobsson

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

* Re: [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2)
  2011-05-23 13:03   ` Patrik Jakobsson
@ 2011-05-23 13:41     ` Alan Cox
  2011-05-23 14:09       ` Patrik Jakobsson
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Cox @ 2011-05-23 13:41 UTC (permalink / raw)
  To: Patrik Jakobsson; +Cc: alan, linux-kernel

> Will it go into 2.6.40-rc1?

I hope so.

> The issue is that I'm not getting any EDID from the display. Could be
> the GMBus getting in the way or that the SDVO IO mapping isn't set up
> properly before sending the SDVO_CMD_SET_CONTROL_BUS_SWITCH command.
> I've been fiddling quite a lot with it but nothing seems to work, so

I'm also not clear if the i²c mapping is always the same. Certainly this
is a problem on Moorestown/Oaktrail in some cases.

> instead I took the current SDVO code (and large parts of the output
> handling) from the i915 driver and crammed it into gma500. That did
> the trick (though it's not currently talking to crtc abstraction
> properly).

Interesting.

> So my question is, do you think we should incorporate the new and more
> feature complete output handling from the i915 into gma500? We might
> even start sharing that code between gma500 and i915. If that is
> something you like to avoid we can of course keep working on our
> current output code.

Importing the code seems reasonable. KeithP didn't want it shared when I
asked him, but importing it and having the same code in many areas is the
first step to sharing anyway.

Alan

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

* Re: [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2)
  2011-05-23 13:41     ` Alan Cox
@ 2011-05-23 14:09       ` Patrik Jakobsson
  0 siblings, 0 replies; 5+ messages in thread
From: Patrik Jakobsson @ 2011-05-23 14:09 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-kernel

On Mon, May 23, 2011 at 3:41 PM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
>> So my question is, do you think we should incorporate the new and more
>> feature complete output handling from the i915 into gma500? We might
>> even start sharing that code between gma500 and i915. If that is
>> something you like to avoid we can of course keep working on our
>> current output code.
>
> Importing the code seems reasonable. KeithP didn't want it shared when I
> asked him, but importing it and having the same code in many areas is the
> first step to sharing anyway.
>
> Alan
>

Ok, I'll get back to you (probably after the weekend) when I've had
some more time to work on this.

Anyone who would like to look more closely on the LVDS parts of gma500
vs i915 are free to join in.

Thanks
Patrik Jakobsson

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

end of thread, other threads:[~2011-05-23 14:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-11 20:46 [PATCH] gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight (try 2) Patrik Jakobsson
2011-05-11 21:55 ` Alan Cox
2011-05-23 13:03   ` Patrik Jakobsson
2011-05-23 13:41     ` Alan Cox
2011-05-23 14:09       ` Patrik Jakobsson

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