From patchwork Fri Apr 15 22:08:31 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Tobias Schandinat X-Patchwork-Id: 711691 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p3FLqwAA030631 for ; Fri, 15 Apr 2011 21:52:58 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757352Ab1DOVw5 (ORCPT ); Fri, 15 Apr 2011 17:52:57 -0400 Received: from mailout-de.gmx.net ([213.165.64.22]:42457 "HELO mailout-de.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1757077Ab1DOVw4 (ORCPT ); Fri, 15 Apr 2011 17:52:56 -0400 Received: (qmail invoked by alias); 15 Apr 2011 21:52:54 -0000 Received: from dslb-092-074-244-229.pools.arcor-ip.net (EHLO localhost.localdomain) [92.74.244.229] by mail.gmx.net (mp058) with SMTP; 15 Apr 2011 23:52:54 +0200 X-Authenticated: #10250065 X-Provags-ID: V01U2FsdGVkX19gqxppDUxgW7jJAyjVDR3Y0tWFFIxPIrsG2D0CS1 MNS+ay6LFVQGiM From: Florian Tobias Schandinat To: linux-fbdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Daniel Drake , Florian Tobias Schandinat Subject: [PATCH] viafb: fix OLPC DCON refresh rate Date: Fri, 15 Apr 2011 22:08:31 +0000 Message-Id: <1302905311-3821-1-git-send-email-FlorianSchandinat@gmx.de> X-Mailer: git-send-email 1.6.3.2 In-Reply-To: <4DA62C4D.8070407@gmx.de> References: <4DA62C4D.8070407@gmx.de> X-Y-GMX-Trusted: 0 Sender: linux-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 15 Apr 2011 21:52:58 +0000 (UTC) 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 Reported-by: Daniel Drake --- 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 */