linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Corbet <corbet@lwn.net>
To: linux-kernel@vger.kernel.org
Cc: Harald Welte <laforge@gnumonks.org>,
	linux-fbdev@vger.kernel.org, JosephChan@via.com.tw,
	ScottFang@viatech.com.cn,
	Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Subject: [PATCH 08/30] viafb: Add 1200x900 DCON/LCD panel modes for OLPC XO-1.5
Date: Wed, 28 Apr 2010 22:17:09 +0000	[thread overview]
Message-ID: <1272493051-25380-9-git-send-email-corbet@lwn.net> (raw)
In-Reply-To: <1272493051-25380-1-git-send-email-corbet@lwn.net>

From: Chris Ball <cjb@laptop.org>

[jc: extensive merge conflict fixes]
Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: ScottFang@viatech.com.cn
Cc: JosephChan@via.com.tw
Signed-off-by: Chris Ball <cjb@laptop.org>
---
 drivers/video/via/hw.c      |    1 +
 drivers/video/via/ioctl.h   |    2 +-
 drivers/video/via/lcd.c     |    9 +++++++++
 drivers/video/via/lcd.h     |    2 ++
 drivers/video/via/share.h   |    7 +++++++
 drivers/video/via/viamode.c |   14 ++++++++++++++
 6 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
index ae664fb..2322612 100644
--- a/drivers/video/via/hw.c
+++ b/drivers/video/via/hw.c
@@ -62,6 +62,7 @@ static struct pll_map pll_value[] = {
 	 CX700_52_977M,	VX855_52_977M},
 	{CLK_56_250M, CLE266_PLL_56_250M, K800_PLL_56_250M,
 	 CX700_56_250M, VX855_56_250M},
+	{CLK_57_275M, 0, 0, 0, VX855_57_275M},
 	{CLK_60_466M, CLE266_PLL_60_466M, K800_PLL_60_466M,
 	 CX700_60_466M, VX855_60_466M},
 	{CLK_61_500M, CLE266_PLL_61_500M, K800_PLL_61_500M,
diff --git a/drivers/video/via/ioctl.h b/drivers/video/via/ioctl.h
index de89980..c430fa2 100644
--- a/drivers/video/via/ioctl.h
+++ b/drivers/video/via/ioctl.h
@@ -75,7 +75,7 @@
 /*SAMM operation flag*/
 #define OP_SAMM            0x80
 
-#define LCD_PANEL_ID_MAXIMUM	22
+#define LCD_PANEL_ID_MAXIMUM	23
 
 #define STATE_ON            0x1
 #define STATE_OFF           0x0
diff --git a/drivers/video/via/lcd.c b/drivers/video/via/lcd.c
index 1b1ccdc..09020f0 100644
--- a/drivers/video/via/lcd.c
+++ b/drivers/video/via/lcd.c
@@ -398,6 +398,15 @@ static void fp_id_to_vindex(int panel_id)
 		viaparinfo->lvds_setting_info->device_lcd_dualedge = 0;
 		viaparinfo->lvds_setting_info->LCDDithering = 1;
 		break;
+	case 0x17:
+		/* OLPC XO-1.5 panel */
+		viaparinfo->lvds_setting_info->lcd_panel_hres = 1200;
+		viaparinfo->lvds_setting_info->lcd_panel_vres = 900;
+		viaparinfo->lvds_setting_info->lcd_panel_id +			LCD_PANEL_IDD_1200X900;
+		viaparinfo->lvds_setting_info->device_lcd_dualedge = 0;
+		viaparinfo->lvds_setting_info->LCDDithering = 0;
+		break;
 	default:
 		viaparinfo->lvds_setting_info->lcd_panel_hres = 800;
 		viaparinfo->lvds_setting_info->lcd_panel_vres = 600;
diff --git a/drivers/video/via/lcd.h b/drivers/video/via/lcd.h
index 071f47c..9762ec6 100644
--- a/drivers/video/via/lcd.h
+++ b/drivers/video/via/lcd.h
@@ -60,6 +60,8 @@
 #define     LCD_PANEL_IDB_1360X768     0x0B
 /* Resolution: 480x640,  Channel: single, Dithering: Enable */
 #define     LCD_PANEL_IDC_480X640      0x0C
+/* Resolution: 1200x900,  Channel: single, Dithering: Disable */
+#define     LCD_PANEL_IDD_1200X900      0x0D
 
 
 extern int viafb_LCD2_ON;
diff --git a/drivers/video/via/share.h b/drivers/video/via/share.h
index d55aaa7..f974c73 100644
--- a/drivers/video/via/share.h
+++ b/drivers/video/via/share.h
@@ -570,6 +570,10 @@
 #define M1200X720_R60_HSP       NEGATIVE
 #define M1200X720_R60_VSP       POSITIVE
 
+/* 1200x900@60 Sync Polarity (DCON) */
+#define M1200X900_R60_HSP       NEGATIVE
+#define M1200X900_R60_VSP       NEGATIVE
+
 /* 1280x600@60 Sync Polarity (GTF Mode) */
 #define M1280x600_R60_HSP       NEGATIVE
 #define M1280x600_R60_VSP       POSITIVE
@@ -651,6 +655,7 @@
 #define CLK_52_406M     52406000
 #define CLK_52_977M     52977000
 #define CLK_56_250M     56250000
+#define CLK_57_275M     57275000
 #define CLK_60_466M     60466000
 #define CLK_61_500M     61500000
 #define CLK_65_000M     65000000
@@ -939,6 +944,7 @@
 #define VX855_52_406M     0x00580C03
 #define VX855_52_977M     0x00940C05
 #define VX855_56_250M     0x009D0C05
+#define VX855_57_275M     0x009D8C85    /* Used by XO panel */
 #define VX855_60_466M     0x00A90C05
 #define VX855_61_500M     0x00AC0C05
 #define VX855_65_000M     0x006D0C03
@@ -1065,6 +1071,7 @@
 #define RES_1600X1200_60HZ_PIXCLOCK  6172
 #define RES_1600X1200_75HZ_PIXCLOCK  4938
 #define RES_1280X720_60HZ_PIXCLOCK   13426
+#define RES_1200X900_60HZ_PIXCLOCK   17459
 #define RES_1920X1080_60HZ_PIXCLOCK  5787
 #define RES_1400X1050_60HZ_PIXCLOCK  8214
 #define RES_1400X1050_75HZ_PIXCLOCK  6410
diff --git a/drivers/video/via/viamode.c b/drivers/video/via/viamode.c
index af50e24..6f3bcda 100644
--- a/drivers/video/via/viamode.c
+++ b/drivers/video/via/viamode.c
@@ -66,6 +66,7 @@ struct res_map_refresh res_map_refresh_tbl[] = {
 	{1088, 612, RES_1088X612_60HZ_PIXCLOCK, 60},
 	{1152, 720, RES_1152X720_60HZ_PIXCLOCK, 60},
 	{1200, 720, RES_1200X720_60HZ_PIXCLOCK, 60},
+	{1200, 900, RES_1200X900_60HZ_PIXCLOCK, 60},
 	{1280, 600, RES_1280X600_60HZ_PIXCLOCK, 60},
 	{1280, 720, RES_1280X720_50HZ_PIXCLOCK, 50},
 	{1280, 768, RES_1280X768_50HZ_PIXCLOCK, 50},
@@ -759,6 +760,16 @@ struct crt_mode_table CRTM1200x720[] = {
 	 {1568, 1200, 1200, 368, 1256, 128, 746, 720, 720, 26, 721, 3} }
 };
 
+/* 1200x900 (DCON) */
+struct crt_mode_table DCON1200x900[] = {
+	/* r_rate,          vclk,               hsp,               vsp   */
+	{REFRESH_60, CLK_57_275M, 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 */
+	 {1264, 1200, 1200,  64, 1211,  32, 912, 900, 900,  12, 901, 10} }
+};
+
 /* 1280x600 (GTF) */
 struct crt_mode_table CRTM1280x600[] = {
 	/* r_rate,          vclk,              hsp,             vsp   */
@@ -937,6 +948,9 @@ struct VideoModeTable viafb_modes[] = {
 	/* Display : 1200x720 (GTF) */
 	{CRTM1200x720, ARRAY_SIZE(CRTM1200x720)},
 
+	/* Display : 1200x900 (DCON) */
+	{DCON1200x900, ARRAY_SIZE(DCON1200x900)},
+
 	/* Display : 1280x600 (GTF) */
 	{CRTM1280x600, ARRAY_SIZE(CRTM1280x600)},
 
-- 
1.7.0.1


  parent reply	other threads:[~2010-04-28 22:17 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-28 22:17 [RFC] Second OLPC Viafb series, v2 Jonathan Corbet
2010-04-28 22:17 ` [PATCH 01/30] viafb: Fix various resource leaks during module_init() Jonathan Corbet
2010-04-28 22:17 ` [PATCH 02/30] viafb: use proper pci config API Jonathan Corbet
2010-05-01 14:01   ` Florian Tobias Schandinat
2010-05-04  2:37     ` Jonathan Corbet
2010-04-28 22:17 ` [PATCH 03/30] viafb: Unmap the frame buffer on initialization error Jonathan Corbet
2010-04-28 22:17 ` [PATCH 04/30] viafb: Retain GEMODE reserved bits Jonathan Corbet
2010-04-28 22:17 ` [PATCH 05/30] viafb: Unify duplicated set_bpp() code Jonathan Corbet
2010-04-28 22:17 ` [PATCH 06/30] viafb: Determine type of 2D engine and store it in chip_info Jonathan Corbet
2010-04-28 22:17 ` [PATCH 07/30] viafb: complete support for VX800/VX855 accelerated framebuffer Jonathan Corbet
2010-04-28 22:17 ` Jonathan Corbet [this message]
2010-04-28 22:17 ` [PATCH 09/30] viafb: rework the I2C support in the VIA framebuffer driver Jonathan Corbet
2010-04-28 22:17 ` [PATCH 10/30] suppress verbose debug messages: change printk() to DEBUG_MSG() Jonathan Corbet
2010-04-28 22:17 ` [PATCH 11/30] viafb: Only establish i2c busses on ports that always had them Jonathan Corbet
2010-04-28 22:17 ` [PATCH 12/30] viafb: Move core stuff into via-core.c Jonathan Corbet
2010-05-01 15:02   ` Florian Tobias Schandinat
2010-05-01 15:08     ` Jonathan Corbet
2010-05-01 15:29       ` Florian Tobias Schandinat
2010-04-28 22:17 ` [PATCH 13/30] viafb: Separate global and fb-specific data Jonathan Corbet
2010-04-29 18:19   ` Bruno Prémont
2010-04-30 16:21     ` Jonathan Corbet
2010-04-30 18:07       ` Florian Tobias Schandinat
2010-04-30 18:22         ` Jonathan Corbet
2010-04-30 18:43           ` Florian Tobias Schandinat
2010-04-30 20:01             ` Bruno Prémont
2010-04-28 22:17 ` [PATCH 14/30] viafb: add a driver for GPIO lines Jonathan Corbet
2010-04-28 22:17 ` [PATCH 15/30] viafb: package often used basic io functions Jonathan Corbet
2010-04-28 22:17 ` [PATCH 16/30] viafb: Convert GPIO and i2c to the new indexed port ops Jonathan Corbet
2010-04-28 22:17 ` [PATCH 17/30] viafb: Turn GPIO and i2c into proper platform devices Jonathan Corbet
2010-04-28 22:17 ` [PATCH 18/30] via: Do not attempt I/O on inactive I2C adapters Jonathan Corbet
2010-04-28 22:17 ` [PATCH 19/30] viafb: Introduce viafb_find_i2c_adapter() Jonathan Corbet
2010-04-28 22:17 ` [PATCH 20/30] via: Rationalize vt1636 detection Jonathan Corbet
2010-04-28 22:17 ` [PATCH 21/30] viafb: Add a simple interrupt management infrastructure Jonathan Corbet
2010-04-28 22:17 ` [PATCH 22/30] viafb: Add a simple VX855 DMA engine driver Jonathan Corbet
2010-04-28 22:17 ` [PATCH 23/30] viafb: Reserve framebuffer memory for the upcoming camera driver Jonathan Corbet
2010-04-28 22:17 ` [PATCH 24/30] viafb: Add a driver for the video capture engine Jonathan Corbet
2010-04-29 17:16   ` Bruno Prémont
2010-04-29 19:06     ` Jonathan Corbet
2010-05-02  1:18   ` Florian Tobias Schandinat
2010-05-02  1:52     ` Jonathan Corbet
2010-04-28 22:17 ` [PATCH 25/30] viafb: unify modesetting functions Jonathan Corbet
2010-04-28 22:17 ` [PATCH 26/30] viafb: move some modesetting functions to a seperate file Jonathan Corbet
2010-04-28 22:17 ` [PATCH 27/30] viafb: replace inb/outb Jonathan Corbet
2010-04-28 22:17 ` [PATCH 28/30] viafb: improve misc register handling Jonathan Corbet
2010-04-28 22:17 ` [PATCH 29/30] viafb: fix proc entry removal Jonathan Corbet
2010-04-28 22:17 ` [PATCH 30/30] viafb: make procfs entries optional Jonathan Corbet
2010-04-29 17:26 ` [RFC] Second OLPC Viafb series, v2 Bruno Prémont
2010-04-30 15:39   ` Jonathan Corbet
2010-05-01 21:28 ` Florian Tobias Schandinat
2010-05-01 22:57   ` Jonathan Corbet

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=1272493051-25380-9-git-send-email-corbet@lwn.net \
    --to=corbet@lwn.net \
    --cc=FlorianSchandinat@gmx.de \
    --cc=JosephChan@via.com.tw \
    --cc=ScottFang@viatech.com.cn \
    --cc=laforge@gnumonks.org \
    --cc=linux-fbdev@vger.kernel.org \
    --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).