linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* viafb: XO-1.5 video broken on 2.6.39
@ 2011-04-13 20:59 Daniel Drake
  2011-04-13 23:05 ` Florian Tobias Schandinat
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Drake @ 2011-04-13 20:59 UTC (permalink / raw)
  To: linux-fbdev

Hi,

Commit fd3cc69848b7e1873e5f12bbcdd572b20277ecf3 breaks video on the
XO-1.5 laptop on 2.6.39:

commit fd3cc69848b7e1873e5f12bbcdd572b20277ecf3
Author: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Date:   Fri Mar 11 00:04:01 2011 +0000

    viafb: remove duplicated clock storage

This is using the 1200x900 mode (DCON1200x900)

In the old code, the clock was hardcoded as value 57275000.
In the new code, the clock gets calculated as 1264x912x60 = 69166080

The result is that the screen gets filled with black and grey
horizontal lines instead of anything readable.

Any ideas?

Thanks,
Daniel

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

* Re: viafb: XO-1.5 video broken on 2.6.39
  2011-04-13 20:59 viafb: XO-1.5 video broken on 2.6.39 Daniel Drake
@ 2011-04-13 23:05 ` Florian Tobias Schandinat
  2011-04-15 21:52   ` [PATCH] viafb: fix OLPC DCON refresh rate Florian Tobias Schandinat
  0 siblings, 1 reply; 3+ messages in thread
From: Florian Tobias Schandinat @ 2011-04-13 23:05 UTC (permalink / raw)
  To: linux-fbdev

Hi Daniel,

Daniel Drake schrieb:
> Hi,
> 
> Commit fd3cc69848b7e1873e5f12bbcdd572b20277ecf3 breaks video on the
> XO-1.5 laptop on 2.6.39:

Sorry about that.

> commit fd3cc69848b7e1873e5f12bbcdd572b20277ecf3
> Author: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
> Date:   Fri Mar 11 00:04:01 2011 +0000
> 
>     viafb: remove duplicated clock storage
> 
> This is using the 1200x900 mode (DCON1200x900)
> 
> In the old code, the clock was hardcoded as value 57275000.
> In the new code, the clock gets calculated as 1264x912x60 = 69166080

Having a closer look at it the entire mode looks suspicious as it is neither CVT 
nor GTF compatible. But as it worked I assume the timings are correct and only 
the refresh rate is incorrect. If we reduce the refresh rate to 50Hz we get
1264x912x50 = 57638400 which is pretty close to the old value (and the 
documentation about DCON I found also suggests that it works at 50Hz). I will 
prepare a patch as soon as I have time (the driver tends to assume that 60Gz 
mode is always present and working).

> The result is that the screen gets filled with black and grey
> horizontal lines instead of anything readable.
> 
> Any ideas?
> 
> Thanks,
> Daniel
> 

Thanks a lot for your bug report,

Florian Tobias Schandinat


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

* [PATCH] viafb: fix OLPC DCON refresh rate
  2011-04-13 23:05 ` Florian Tobias Schandinat
@ 2011-04-15 21:52   ` Florian Tobias Schandinat
  0 siblings, 0 replies; 3+ messages in thread
From: Florian Tobias Schandinat @ 2011-04-15 21:52 UTC (permalink / raw)
  To: linux-fbdev; +Cc: linux-kernel, Daniel Drake, Florian Tobias Schandinat

This patch fixes a regression introduced by
	fd3cc69848b7e1873e5f12bbcdd572b20277ecf3a
	"viafb: remove duplicated clock storage"
caused by an incosistent mode which pretended to have a higher
refresh rate than it actually had. The wrong refresh rate resulted
in a calculated higher pixclock which the OLPC DCON could not handle.
By reducing the refresh rate to 50Hz we get close to the old
pixclock which makes the OLPC display usable again.
Minor other adjustments are needed as 60Hz is assumed to be a safe
value which is not true for OLPC DCON. This is no problem as we only
support 1200x900 on the OLPC.

Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Reported-by: Daniel Drake <dsd@laptop.org>
---
 drivers/video/via/hw.c      |    8 ++++++--
 drivers/video/via/viamode.c |    2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
index dc4c778..980e263 100644
--- a/drivers/video/via/hw.c
+++ b/drivers/video/via/hw.c
@@ -2598,8 +2598,12 @@ int viafb_get_refresh(int hres, int vres, u32 long_refresh)
 			best = &vmode->crtc[i];
 	}
 
-	if (abs(best->refresh_rate - long_refresh) > 3)
-		return 60;
+	if (abs(best->refresh_rate - long_refresh) > 3) {
+		if (hres = 1200 && vres = 900)
+			return 50; /* OLPC DCON only supports 50 Hz */
+		else
+			return 60;
+	}
 
 	return best->refresh_rate;
 }
diff --git a/drivers/video/via/viamode.c b/drivers/video/via/viamode.c
index 8c5bc41..260d339 100644
--- a/drivers/video/via/viamode.c
+++ b/drivers/video/via/viamode.c
@@ -606,7 +606,7 @@ static struct crt_mode_table CRTM1200x720[] = {
 /* 1200x900 (DCON) */
 static struct crt_mode_table DCON1200x900[] = {
 	/* r_rate,               hsp,               vsp   */
-	{REFRESH_60, M1200X900_R60_HSP, M1200X900_R60_VSP,
+	{REFRESH_50, M1200X900_R60_HSP, M1200X900_R60_VSP,
 	/* The correct htotal is 1240, but this doesn't raster on VX855. */
 	/* Via suggested changing to a multiple of 16, hence 1264.       */
 	/*  HT,   HA,  HBS, HBE,  HSS, HSE,  VT,  VA, VBS, VBE, VSS, VSE */
-- 
1.6.3.2


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

end of thread, other threads:[~2011-04-15 21:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-13 20:59 viafb: XO-1.5 video broken on 2.6.39 Daniel Drake
2011-04-13 23:05 ` Florian Tobias Schandinat
2011-04-15 21:52   ` [PATCH] viafb: fix OLPC DCON refresh rate Florian Tobias Schandinat

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