aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--driver-core.current/block-do_mounts-accept-root-non-existant-partition.patch4
-rw-r--r--driver-core/read-dev_name-instead-of-bus_id.patch30
-rw-r--r--ldp/framebuffer-add-the-via-framebuffer-driver.patch3502
-rw-r--r--ldp/net-add-alacritech-slicoss-driver.patch2
-rw-r--r--ldp/net-add-et131x-driver.patch2
-rw-r--r--version2
6 files changed, 1771 insertions, 1771 deletions
diff --git a/driver-core.current/block-do_mounts-accept-root-non-existant-partition.patch b/driver-core.current/block-do_mounts-accept-root-non-existant-partition.patch
index 6b699f4e1c2e33..8e6e9eb7e7a965 100644
--- a/driver-core.current/block-do_mounts-accept-root-non-existant-partition.patch
+++ b/driver-core.current/block-do_mounts-accept-root-non-existant-partition.patch
@@ -61,7 +61,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
struct gendisk *alloc_disk(int minors)
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
-@@ -524,7 +524,7 @@ struct unixware_disklabel {
+@@ -525,7 +525,7 @@ struct unixware_disklabel {
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2
@@ -70,7 +70,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
extern char *disk_name (struct gendisk *hd, int part, char *buf);
extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev);
-@@ -552,7 +552,7 @@ static inline struct block_device *bdget
+@@ -553,7 +553,7 @@ static inline struct block_device *bdget
static inline void printk_all_partitions(void) { }
diff --git a/driver-core/read-dev_name-instead-of-bus_id.patch b/driver-core/read-dev_name-instead-of-bus_id.patch
index 9d7e234d708bd2..63b702ee34851b 100644
--- a/driver-core/read-dev_name-instead-of-bus_id.patch
+++ b/driver-core/read-dev_name-instead-of-bus_id.patch
@@ -2088,7 +2088,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
-@@ -1011,7 +1011,7 @@ static int __devinit vortex_probe1(struc
+@@ -1010,7 +1010,7 @@ static int __devinit vortex_probe1(struc
static int printed_version;
int retval, print_info;
struct vortex_chip_info * const vci = &vortex_info_tbl[chip_idx];
@@ -2097,7 +2097,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
struct pci_dev *pdev = NULL;
struct eisa_device *edev = NULL;
DECLARE_MAC_BUF(mac);
-@@ -1027,7 +1027,7 @@ static int __devinit vortex_probe1(struc
+@@ -1026,7 +1026,7 @@ static int __devinit vortex_probe1(struc
}
if ((edev = DEVICE_EISA(gendev))) {
@@ -2106,7 +2106,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
}
}
-@@ -2884,7 +2884,7 @@ static void vortex_get_drvinfo(struct ne
+@@ -2883,7 +2883,7 @@ static void vortex_get_drvinfo(struct ne
strcpy(info->bus_info, pci_name(VORTEX_PCI(vp)));
} else {
if (VORTEX_EISA(vp))
@@ -4229,8 +4229,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
if (rc)
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
-@@ -169,7 +169,7 @@ cio_start_handle_notoper(struct subchann
- CIO_MSG_EVENT(0, "cio_start: 'not oper' status for "
+@@ -152,7 +152,7 @@ cio_start_handle_notoper(struct subchann
+ CIO_MSG_EVENT(2, "cio_start: 'not oper' status for "
"subchannel 0.%x.%04x!\n", sch->schid.ssid,
sch->schid.sch_no);
- sprintf(dbf_text, "no%s", sch->dev.bus_id);
@@ -4238,7 +4238,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
CIO_TRACE_EVENT(0, dbf_text);
CIO_HEX_EVENT(0, &sch->schib, sizeof (struct schib));
-@@ -187,7 +187,7 @@ cio_start_key (struct subchannel *sch, /
+@@ -170,7 +170,7 @@ cio_start_key (struct subchannel *sch, /
struct orb *orb;
CIO_TRACE_EVENT(4, "stIO");
@@ -4247,7 +4247,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
orb = &to_io_private(sch)->orb;
/* sch is always under 2G. */
-@@ -245,7 +245,7 @@ cio_resume (struct subchannel *sch)
+@@ -228,7 +228,7 @@ cio_resume (struct subchannel *sch)
int ccode;
CIO_TRACE_EVENT (4, "resIO");
@@ -4256,7 +4256,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
ccode = rsch (sch->schid);
-@@ -282,7 +282,7 @@ cio_halt(struct subchannel *sch)
+@@ -265,7 +265,7 @@ cio_halt(struct subchannel *sch)
return -ENODEV;
CIO_TRACE_EVENT (2, "haltIO");
@@ -4265,7 +4265,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/*
* Issue "Halt subchannel" and process condition code
-@@ -317,7 +317,7 @@ cio_clear(struct subchannel *sch)
+@@ -300,7 +300,7 @@ cio_clear(struct subchannel *sch)
return -ENODEV;
CIO_TRACE_EVENT (2, "clearIO");
@@ -4274,7 +4274,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/*
* Issue "Clear subchannel" and process condition code
-@@ -353,7 +353,7 @@ cio_cancel (struct subchannel *sch)
+@@ -336,7 +336,7 @@ cio_cancel (struct subchannel *sch)
return -ENODEV;
CIO_TRACE_EVENT (2, "cancelIO");
@@ -4283,7 +4283,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
ccode = xsch (sch->schid);
-@@ -415,7 +415,7 @@ int cio_enable_subchannel(struct subchan
+@@ -398,7 +398,7 @@ int cio_enable_subchannel(struct subchan
int ret;
CIO_TRACE_EVENT (2, "ensch");
@@ -4292,7 +4292,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
if (sch_is_pseudo_sch(sch))
return -EINVAL;
-@@ -464,7 +464,7 @@ cio_disable_subchannel (struct subchanne
+@@ -447,7 +447,7 @@ cio_disable_subchannel (struct subchanne
int ret;
CIO_TRACE_EVENT (2, "dissch");
@@ -4301,7 +4301,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
if (sch_is_pseudo_sch(sch))
return 0;
-@@ -546,7 +546,7 @@ cio_validate_subchannel (struct subchann
+@@ -529,7 +529,7 @@ cio_validate_subchannel (struct subchann
}
mutex_init(&sch->reg_mutex);
/* Set a name for the subchannel */
@@ -5155,7 +5155,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
-@@ -2030,7 +2030,7 @@ int uart_suspend_port(struct uart_driver
+@@ -2031,7 +2031,7 @@ int uart_suspend_port(struct uart_driver
if (!tries)
printk(KERN_ERR "%s%s%s%d: Unable to drain "
"transmitter\n",
@@ -5164,7 +5164,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
port->dev ? ": " : "",
drv->dev_name, port->line);
-@@ -2153,7 +2153,7 @@ uart_report_port(struct uart_driver *drv
+@@ -2154,7 +2154,7 @@ uart_report_port(struct uart_driver *drv
}
printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
diff --git a/ldp/framebuffer-add-the-via-framebuffer-driver.patch b/ldp/framebuffer-add-the-via-framebuffer-driver.patch
index 3e1a3e96ace500..ae9c6a17ea4516 100644
--- a/ldp/framebuffer-add-the-via-framebuffer-driver.patch
+++ b/ldp/framebuffer-add-the-via-framebuffer-driver.patch
@@ -79,18 +79,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
# Platform or fallback drivers go here
obj-$(CONFIG_FB_UVESA) += uvesafb.o
--- /dev/null
-+++ b/drivers/video/viafb/Makefile
-@@ -0,0 +1,9 @@
-+#
-+# Makefile for the VIA framebuffer driver (for Linux Kernel 2.6)
-+#
-+
-+obj-$(CONFIG_FB_VIA) += viafb.o
-+
-+viafb-y := viafbdev.o hw.o iface.o via_i2c.o dvi.o lcd.o ioctl.o accel.o via_utility.o vt1636.o global.o tblDPASetting.o viamode.o tbl1636.o
-+
-+viafb-objs := $(viafb-y)
---- /dev/null
+++ b/drivers/video/viafb/accel.c
@@ -0,0 +1,245 @@
+/*
@@ -8569,6 +8557,18 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+#endif /* __LCD_H__ */
--- /dev/null
++++ b/drivers/video/viafb/Makefile
+@@ -0,0 +1,9 @@
++#
++# Makefile for the VIA framebuffer driver (for Linux Kernel 2.6)
++#
++
++obj-$(CONFIG_FB_VIA) += viafb.o
++
++viafb-y := viafbdev.o hw.o iface.o via_i2c.o dvi.o lcd.o ioctl.o accel.o via_utility.o vt1636.o global.o tblDPASetting.o viamode.o tbl1636.o
++
++viafb-objs := $(viafb-y)
+--- /dev/null
+++ b/drivers/video/viafb/share.h
@@ -0,0 +1,1113 @@
+/*
@@ -9958,1745 +9958,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+#endif
--- /dev/null
-+++ b/drivers/video/viafb/via_i2c.c
-@@ -0,0 +1,469 @@
-+/*
-+ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
-+ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
-+
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published
-+ * by the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
-+ * the implied warranty of MERCHANTABILITY or FITNESS FOR
-+ * A PARTICULAR PURPOSE.See the GNU General Public License
-+ * for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc.,
-+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#include "global.h"
-+
-+/* i2c delay for microsecond*/
-+void delays(int count)
-+{
-+ u8 data;
-+ while (count--) {
-+ /* delay 1 us */
-+ data = inb(DELAYPORT);
-+ data = inb(DELAYPORT);
-+ data = inb(DELAYPORT);
-+ data = inb(DELAYPORT);
-+ data = inb(DELAYPORT);
-+ }
-+
-+}
-+
-+/* Write I2C BUS SDA And SCL*/
-+void i2cWriteSdaScl(u8 sda, u8 scl)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AMR) {
-+
-+ data = ((scl << 1) | sda) << 4;
-+ /* enable I2C port */
-+ data = data | BIT0;
-+
-+ port_addr = I2CPORT;
-+ /* Write Register Value */
-+ write_reg(I2CPORTINDEX, port_addr, data);
-+ } else {
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ data = ((scl << 1) | sda) << 4;
-+ /* enable GPIO write port */
-+ data = data | (BIT6 + BIT7);
-+ port_addr = GPIOPORT;
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+ }
-+}
-+
-+void i2cWriteScl(u8 scl)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AMR) {
-+
-+ data = (scl << 1) << 4;
-+ /* enable I2C port */
-+ data = data | BIT0;
-+
-+ port_addr = I2CPORT;
-+ /* Write Register Value */
-+ write_reg(I2CPORTINDEX, port_addr, data);
-+ } else {
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ data = (scl << 1) << 4;
-+ /* enable GPIO write clock */
-+ data = data & 0xBF;
-+ port_addr = GPIOPORT;
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+ }
-+}
-+
-+void i2cReadSdaScl(u8 *pSda, u8 *pScl)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AMR) {
-+ port_addr = I2CPORT;
-+ data = read_reg(port_addr, I2CPORTINDEX);
-+ *pSda = (data >> 2) & BIT0; /* get sda */
-+ *pScl = (data >> 3) & BIT0; /* get scl */
-+ } else {
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ *pSda = (data >> 2) & BIT0; /* get sda */
-+ *pScl = (data >> 3) & BIT0; /* get scl */
-+ }
-+ }
-+}
-+
-+void i2cWriteSdaSclDelay(u8 sda, u8 scl)
-+{
-+ i2cWriteSdaScl(sda, scl);
-+ delays(16); /* Wait 16 uS */
-+}
-+
-+void i2cStartSignal(void)
-+{
-+ i2cWriteSdaSclDelay(1, 1);
-+ i2cWriteSdaSclDelay(0, 1);
-+ i2cWriteSdaSclDelay(0, 0);
-+}
-+
-+void i2cStopSignal(void)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ i2cWriteSdaSclDelay(0, 0);
-+ i2cWriteSdaSclDelay(0, 1);
-+ i2cWriteSdaSclDelay(1, 1);
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ /* disable GPIO write port */
-+ data = 0x3c;
-+ port_addr = GPIOPORT;
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+ delays(2);
-+
-+}
-+
-+void disableSdaGPIO(void)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ /* disable GPIO write port */
-+ data = data & (~BIT6);
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+void enableSdaGPIO(void)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ /* disable GPIO write port */
-+ data = data | (BIT6);
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+void writeSclGPIO(u8 scl)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ data = data & (~BIT5);
-+ /* write data to clock */
-+ data = (data | (scl << 5)) & (~BIT6);
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+void writeSdaGPIO(u8 sda)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+
-+ data = data & (~BIT4);
-+ /* write data to clock */
-+ data = (data | (sda << 4)) & (~BIT7);
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+void enableGPIO(void)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ /* enable GPIO write port */
-+ data = data | (BIT4 + BIT5 + BIT6 + BIT7);
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+void releaseGPIO(void)
-+{
-+ u8 data;
-+ u16 port_addr;
-+
-+ if (chip_info.chip_on_slot == PORT_ON_AGP) {
-+ port_addr = GPIOPORT;
-+ port_addr = port_addr + 1;
-+
-+ data = read_reg(port_addr, GPIOPORTINDEX);
-+ /* disable GPIO write port */
-+ data = data & 0x3c;
-+ port_addr = GPIOPORT;
-+ /* Write Register Value */
-+ write_reg(GPIOPORTINDEX, port_addr, data);
-+ }
-+}
-+
-+int i2CWaitForSlave(void)
-+{
-+ int time_out = 20000;
-+ u8 sda, scl;
-+
-+ while (time_out--) {
-+ i2cReadSdaScl(&sda, &scl);
-+ if (scl)
-+ return (OK); /* Successful stall */
-+ delays(1); /* wait 1 uS */
-+ }
-+ return (FAIL); /* Slave fail */
-+}
-+
-+int i2cOutByte(u8 data)
-+{
-+ u8 sda, scl;
-+ u8 out_byte;
-+ int bit_count = 8;
-+ int status;
-+
-+ out_byte = data;
-+ while (bit_count--) {
-+ sda = (out_byte >> 7) & 1; /* Load MSB */
-+ out_byte = out_byte << 1; /* next bit. */
-+ i2cWriteSdaSclDelay(sda, 0);
-+ i2cWriteSdaSclDelay(sda, 1);
-+
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (status);
-+ i2cWriteSdaSclDelay(sda, 0);
-+
-+ }
-+
-+ if ((chip_info.chip_on_slot == PORT_ON_AGP)) {
-+
-+ writeSclGPIO(0);
-+ disableSdaGPIO();
-+ delays(2);
-+ writeSclGPIO(1);
-+ delays(2);
-+ i2cReadSdaScl(&sda, &scl);
-+ writeSclGPIO(0);
-+ delays(2);
-+ if (sda == 0)
-+ status = OK;
-+ else
-+ status = FAIL;
-+
-+ } else {
-+ i2cWriteSdaSclDelay(1, 0);
-+ i2cWriteSdaSclDelay(1, 1);
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (status);
-+
-+ i2cReadSdaScl(&sda, &scl);
-+ if (sda == 0) {
-+ i2cWriteSdaSclDelay(1, 0);
-+ status = OK;
-+ } else {
-+
-+ i2cWriteSdaSclDelay(1, 0);
-+ status = FAIL;
-+ }
-+ }
-+ return (status);
-+}
-+
-+int i2cInputByte(u8 *pInByte, int ack)
-+{
-+
-+ int bit_count = 8;
-+ u8 sda, scl;
-+ u8 data = 0;
-+ int status;
-+
-+ disableSdaGPIO();
-+
-+ while (bit_count--) {
-+ if ((chip_info.chip_on_slot == PORT_ON_AGP)) {
-+
-+ writeSclGPIO(1);
-+ delays(2);
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (FAIL);
-+ i2cReadSdaScl(&sda, &scl);
-+ data = data << 1;
-+ data |= sda;
-+ writeSclGPIO(0);
-+ delays(2);
-+
-+ } else {
-+ i2cWriteSdaSclDelay(1, 1);
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (FAIL);
-+ i2cReadSdaScl(&sda, &scl);
-+ data = data << 1;
-+ data |= sda;
-+ i2cWriteSdaSclDelay(1, 0);
-+ }
-+ }
-+ *pInByte = data;
-+
-+ if (ack) {
-+ i2cWriteSdaSclDelay(0, 0);
-+ i2cWriteSdaSclDelay(0, 1);
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (status);
-+ i2cWriteSdaSclDelay(0, 0);
-+ } else {
-+ i2cWriteSdaSclDelay(1, 0);
-+ i2cWriteSdaSclDelay(1, 1);
-+ status = i2CWaitForSlave();
-+ if (status == FAIL)
-+ return (status);
-+ }
-+ i2cWriteSdaSclDelay(1, 0);
-+
-+ return (OK);
-+}
-+
-+int i2cReadByte(u8 slave_addr, u8 index, u8 *pData)
-+{
-+
-+ int status;
-+
-+ i2cStartSignal();
-+
-+ status = i2cOutByte(slave_addr);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ status = i2cOutByte(index);
-+
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+
-+ i2cStartSignal();
-+ status = i2cOutByte(slave_addr | BIT0);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ status = i2cInputByte(pData, 0);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+
-+ i2cStopSignal();
-+ return (OK);
-+}
-+
-+int i2cWriteByte(u8 slave_addr, u8 index, u8 data)
-+{
-+
-+ int status;
-+
-+ i2cStartSignal();
-+ status = i2cOutByte(slave_addr);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ status = i2cOutByte(index);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ status = i2cOutByte(data);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ i2cStopSignal();
-+ return (OK);
-+}
-+
-+int i2cReadBytes(u8 slave_addr, u8 index, u8 *buff, int buff_len)
-+{
-+
-+ int status, i;
-+
-+ i2cStartSignal();
-+
-+ status = i2cOutByte(slave_addr);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+
-+ status = i2cOutByte(index);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+
-+ i2cStartSignal();
-+ status = i2cOutByte(slave_addr | BIT0);
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+
-+ for (i = 0; i < buff_len; i++) {
-+ if (buff_len == 1)
-+ status = i2cInputByte(buff, 0); /* send NACK */
-+ else if (i < buff_len - 1)
-+ status = i2cInputByte(buff, 1); /* send ACK */
-+ else
-+ status = i2cInputByte(buff, 0); /* send NACK */
-+ if (status == FAIL) {
-+ i2cStopSignal();
-+ return (FAIL);
-+ }
-+ buff++;
-+ }
-+
-+ i2cStopSignal();
-+ return (OK);
-+}
---- /dev/null
-+++ b/drivers/video/viafb/via_i2c.h
-@@ -0,0 +1,51 @@
-+/*
-+ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
-+ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
-+
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published
-+ * by the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
-+ * the implied warranty of MERCHANTABILITY or FITNESS FOR
-+ * A PARTICULAR PURPOSE.See the GNU General Public License
-+ * for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc.,
-+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+#ifndef __VIA_I2C_H__
-+#define __VIA_I2C_H__
-+
-+#define I2CPORT 0x3c4
-+#define I2CPORTINDEX 0x31
-+#define GPIOPORT 0x3C4
-+#define GPIOPORTINDEX 0x2C
-+#define I2C_BUS 1
-+#define GPIO_BUS 2
-+#define DELAYPORT 0x3C3
-+
-+void delays(int count);
-+void i2cWriteSdaScl(u8 sda, u8 scl);
-+void i2cWriteScl(u8 scl);
-+void i2cReadSdaScl(u8 *pSda, u8 *pScl);
-+void i2cWriteSdaSclDelay(u8 sda, u8 scl);
-+void i2cStartSignal(void);
-+void i2cStopSignal(void);
-+void disableSdaGPIO(void);
-+void enableSdaGPIO(void);
-+void writeSclGPIO(u8 scl);
-+void writeSdaGPIO(u8 sda);
-+void enableGPIO(void);
-+void releaseGPIO(void);
-+int i2CWaitForSlave(void);
-+int i2cOutByte(u8 data);
-+int i2cInputByte(u8 *pInByte, int ack);
-+int i2cReadByte(u8 slave_addr, u8 index, u8 *pData);
-+int i2cWriteByte(u8 slave_addr, u8 index, u8 data);
-+int i2cReadBytes(u8 slave_addr, u8 index, u8 *buff, int buff_len);
-+#endif /* __VIA_I2C_H__ */
---- /dev/null
-+++ b/drivers/video/viafb/via_utility.c
-@@ -0,0 +1,299 @@
-+/*
-+ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
-+ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
-+
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published
-+ * by the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
-+ * the implied warranty of MERCHANTABILITY or FITNESS FOR
-+ * A PARTICULAR PURPOSE.See the GNU General Public License
-+ * for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc.,
-+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#include "global.h"
-+
-+void get_device_support_state(u32 *support_state)
-+{
-+ *support_state = CRT_Device;
-+
-+ if (chip_info.tmds_chip_info.tmds_chip_name == VT1632_TMDS)
-+ *support_state |= DVI_Device;
-+
-+ if (chip_info.lvds_chip_info.lvds_chip_name == VT1631_LVDS)
-+ *support_state |= LCD_Device;
-+}
-+
-+void get_device_connect_state(u32 *connect_state)
-+{
-+ bool mobile = FALSE;
-+
-+ *connect_state = CRT_Device;
-+
-+ if (dvi_sense())
-+ *connect_state |= DVI_Device;
-+
-+ lcd_get_mobile_state(&mobile);
-+ if (mobile)
-+ *connect_state |= LCD_Device;
-+}
-+
-+bool lcd_get_support_expand_state(u32 xres, u32 yres)
-+{
-+ unsigned int support_state = 0;
-+
-+ switch (lcd_panel_id) {
-+ case LCD_PANEL_ID0_640X480:
-+ if ((xres < 640) && (yres < 480))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID1_800X600:
-+ if ((xres < 800) && (yres < 600))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID2_1024X768:
-+ if ((xres < 1024) && (yres < 768))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID3_1280X768:
-+ if ((xres < 1280) && (yres < 768))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID4_1280X1024:
-+ if ((xres < 1280) && (yres < 1024))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID5_1400X1050:
-+ if ((xres < 1400) && (yres < 1050))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID6_1600X1200:
-+ if ((xres < 1600) && (yres < 1200))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID7_1366X768:
-+ if ((xres < 1366) && (yres < 768))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID8_1024X600:
-+ if ((xres < 1024) && (yres < 600))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_ID9_1280X800:
-+ if ((xres < 1280) && (yres < 800))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_IDA_800X480:
-+ if ((xres < 800) && (yres < 480))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_IDB_1360X768:
-+ if ((xres < 1360) && (yres < 768))
-+ support_state = TRUE;
-+ break;
-+
-+ case LCD_PANEL_IDC_480X640:
-+ if ((xres < 480) && (yres < 640))
-+ support_state = TRUE;
-+ break;
-+
-+ default:
-+ support_state = FALSE;
-+ break;
-+ }
-+
-+ return support_state;
-+}
-+
-+/*====================================================================*/
-+/* Gamma Function Implementation*/
-+/*====================================================================*/
-+
-+void set_gamma_table(int bpp, unsigned int *gamma_table)
-+{
-+ int i, sr1a;
-+ int active_device_amount = 0;
-+ int device_status = DeviceStatus;
-+ unsigned char color_r[256];
-+ unsigned char color_g[256];
-+ unsigned char color_b[256];
-+
-+ for (i = 0; i < sizeof(DeviceStatus) * 8; i++) {
-+ if (device_status & 1)
-+ active_device_amount++;
-+ device_status >>= 1;
-+ }
-+
-+ for (i = 0; i < 256; i++) {
-+ color_r[i] = gamma_table[i] >> 16;
-+ color_g[i] = (gamma_table[i] >> 8) & 0x00FF;
-+ color_b[i] = gamma_table[i] & 0x000000FF;
-+ }
-+
-+ /* 8 bpp mode can't adjust gamma */
-+ if (!(bpp == 8)) {
-+ /* Enable Gamma */
-+ switch (chip_info.gfx_chip_name) {
-+ case UNICHROME_CLE266:
-+ case UNICHROME_K400:
-+ write_reg_mask(SR16, VIASR, 0x80, BIT7);
-+ break;
-+
-+ case UNICHROME_K800:
-+ case UNICHROME_PM800:
-+ case UNICHROME_CN700:
-+ case UNICHROME_CX700:
-+ case UNICHROME_K8M890:
-+ case UNICHROME_P4M890:
-+ case UNICHROME_P4M900:
-+ write_reg_mask(CR33, VIACR, 0x80, BIT7);
-+ break;
-+ }
-+ sr1a = (unsigned int)read_reg(VIASR, SR1A);
-+ write_reg_mask(SR1A, VIASR, 0x0, BIT0);
-+
-+ /* Fill IGA1 Gamma Table */
-+ outb(0, LUT_INDEX_WRITE);
-+ for (i = 0; i < 256; i++) {
-+ outb(color_r[i], LUT_DATA);
-+ outb(color_g[i], LUT_DATA);
-+ outb(color_b[i], LUT_DATA);
-+ }
-+
-+ /* If adjust Gamma value in SAMM, fill IGA1,
-+ IGA2 Gamma table simultanous. */
-+ /* Switch to IGA2 Gamma Table */
-+ if ((active_device_amount > 1) &&
-+ !((chip_info.gfx_chip_name == UNICHROME_CLE266) &&
-+ (chip_info.gfx_chip_revision < 15))) {
-+ write_reg_mask(SR1A, VIASR, 0x01, BIT0);
-+ write_reg_mask(CR6A, VIACR, 0x02, BIT1);
-+
-+ /* Fill IGA2 Gamma Table */
-+ outb(0, LUT_INDEX_WRITE);
-+ for (i = 0; i < 256; i++) {
-+ outb(color_r[i], LUT_DATA);
-+ outb(color_g[i], LUT_DATA);
-+ outb(color_b[i], LUT_DATA);
-+ }
-+ }
-+ write_reg(SR1A, VIASR, sr1a);
-+ }
-+}
-+
-+void get_gamma_table(unsigned int *gamma_table)
-+{
-+ unsigned char color_r[256];
-+ unsigned char color_g[256];
-+ unsigned char color_b[256];
-+ unsigned char sr1a = 0;
-+ int i;
-+
-+ /* Enable Gamma */
-+ switch (chip_info.gfx_chip_name) {
-+ case UNICHROME_CLE266:
-+ case UNICHROME_K400:
-+ write_reg_mask(SR16, VIASR, 0x80, BIT7);
-+ break;
-+
-+ case UNICHROME_K800:
-+ case UNICHROME_PM800:
-+ case UNICHROME_CN700:
-+ case UNICHROME_CX700:
-+ case UNICHROME_K8M890:
-+ case UNICHROME_P4M890:
-+ case UNICHROME_P4M900:
-+ write_reg_mask(CR33, VIACR, 0x80, BIT7);
-+ break;
-+ }
-+ sr1a = read_reg(VIASR, SR1A);
-+ write_reg_mask(SR1A, VIASR, 0x0, BIT0);
-+
-+ /* Reading gamma table to get color value */
-+ outb(0, LUT_INDEX_READ);
-+ for (i = 0; i < 256; i++) {
-+ color_r[i] = inb(LUT_DATA);
-+ color_g[i] = inb(LUT_DATA);
-+ color_b[i] = inb(LUT_DATA);
-+ gamma_table[i] =
-+ ((((u32) color_r[i]) << 16) |
-+ (((u16) color_g[i]) << 8)) | color_b[i];
-+ }
-+ write_reg(SR1A, VIASR, sr1a);
-+}
-+
-+void get_gamma_support_state(int bpp, unsigned int *support_state)
-+{
-+ if (bpp == 8)
-+ *support_state = None_Device;
-+ else
-+ *support_state = CRT_Device | DVI_Device | LCD_Device;
-+}
-+
-+int input_parameter_converter(int parameter_value)
-+{
-+ int result;
-+
-+ switch (parameter_value) {
-+ case 1:
-+ result = 0x01;
-+ break;
-+
-+ case 2:
-+ result = 0x02;
-+ break;
-+
-+ case 3:
-+ result = 0x04;
-+ break;
-+
-+ case 4:
-+ result = 0x08;
-+ break;
-+
-+ case 5:
-+ result = 0x10;
-+ break;
-+
-+ case 6:
-+ result = 0x20;
-+ break;
-+
-+ case 7:
-+ result = 0x40;
-+ break;
-+
-+ case 8:
-+ result = 0x80;
-+ break;
-+
-+ case 9:
-+ result = 0x100;
-+ break;
-+
-+ default:
-+ result = 0x01;
-+ break;
-+ }
-+
-+ return result;
-+}
---- /dev/null
-+++ b/drivers/video/viafb/via_utility.h
-@@ -0,0 +1,35 @@
-+/*
-+ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
-+ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
-+
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published
-+ * by the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
-+ * the implied warranty of MERCHANTABILITY or FITNESS FOR
-+ * A PARTICULAR PURPOSE.See the GNU General Public License
-+ * for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc.,
-+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+#ifndef __VIAUTILITY_H__
-+#define __VIAUTILITY_H__
-+
-+/* These functions are used to get infomation about device's state */
-+void get_device_support_state(u32 *support_state);
-+void get_device_connect_state(u32 *connect_state);
-+bool lcd_get_support_expand_state(u32 xres, u32 yres);
-+
-+/* These function are used to access gamma table */
-+void set_gamma_table(int bpp, unsigned int *gamma_table);
-+void get_gamma_table(unsigned int *gamma_table);
-+void get_gamma_support_state(int bpp, unsigned int *support_state);
-+int input_parameter_converter(int parameter_value);
-+
-+#endif /* __VIAUTILITY_H__ */
---- /dev/null
-+++ b/drivers/video/viafb/viafb.modes
-@@ -0,0 +1,870 @@
-+#
-+#
-+# These data are based on the CRTC parameters in
-+#
-+# VIA Integration Graphics Chip
-+# (C) 2004 VIA Technologies Inc.
-+#
-+
-+#
-+# 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 640 480
-+# Scan Frequency 31.469 kHz 59.94 Hz
-+# Sync Width 3.813 us 0.064 ms
-+# 12 chars 2 lines
-+# Front Porch 0.636 us 0.318 ms
-+# 2 chars 10 lines
-+# Back Porch 1.907 us 1.048 ms
-+# 6 chars 33 lines
-+# Active Time 25.422 us 15.253 ms
-+# 80 chars 480 lines
-+# Blank Time 6.356 us 1.430 ms
-+# 20 chars 45 lines
-+# Polarity negative negative
-+#
-+
-+mode "640x480-60"
-+# D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
-+ geometry 640 480 640 480 32
-+ timings 39722 48 16 33 10 96 2 endmode mode "480x640-60"
-+# D: 24.823 MHz, H: 39.780 kHz, V: 60.00 Hz
-+ geometry 480 640 480 640 32 timings 39722 72 24 19 1 48 3 endmode
-+#
-+# 640x480, 75 Hz, Non-Interlaced (31.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 640 480
-+# Scan Frequency 37.500 kHz 75.00 Hz
-+# Sync Width 2.032 us 0.080 ms
-+# 8 chars 3 lines
-+# Front Porch 0.508 us 0.027 ms
-+# 2 chars 1 lines
-+# Back Porch 3.810 us 0.427 ms
-+# 15 chars 16 lines
-+# Active Time 20.317 us 12.800 ms
-+# 80 chars 480 lines
-+# Blank Time 6.349 us 0.533 ms
-+# 25 chars 20 lines
-+# Polarity negative negative
-+#
-+ mode "640x480-75"
-+# D: 31.50 MHz, H: 37.500 kHz, V: 75.00 Hz
-+ geometry 640 480 640 480 32 timings 31747 120 16 16 1 64 3 endmode
-+#
-+# 640x480, 85 Hz, Non-Interlaced (36.000 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 640 480
-+# Scan Frequency 43.269 kHz 85.00 Hz
-+# Sync Width 1.556 us 0.069 ms
-+# 7 chars 3 lines
-+# Front Porch 1.556 us 0.023 ms
-+# 7 chars 1 lines
-+# Back Porch 2.222 us 0.578 ms
-+# 10 chars 25 lines
-+# Active Time 17.778 us 11.093 ms
-+# 80 chars 480 lines
-+# Blank Time 5.333 us 0.670 ms
-+# 24 chars 29 lines
-+# Polarity negative negative
-+#
-+ mode "640x480-85"
-+# D: 36.000 MHz, H: 43.269 kHz, V: 85.00 Hz
-+ geometry 640 480 640 480 32 timings 27777 80 56 25 1 56 3 endmode
-+#
-+# 640x480, 100 Hz, Non-Interlaced (43.163 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 640 480
-+# Scan Frequency 50.900 kHz 100.00 Hz
-+# Sync Width 1.483 us 0.058 ms
-+# 8 chars 3 lines
-+# Front Porch 0.927 us 0.019 ms
-+# 5 chars 1 lines
-+# Back Porch 2.409 us 0.475 ms
-+# 13 chars 25 lines
-+# Active Time 14.827 us 9.430 ms
-+# 80 chars 480 lines
-+# Blank Time 4.819 us 0.570 ms
-+# 26 chars 29 lines
-+# Polarity positive positive
-+#
-+ mode "640x480-100"
-+# D: 43.163 MHz, H: 50.900 kHz, V: 100.00 Hz
-+ geometry 640 480 640 480 32 timings 23168 104 40 25 1 64 3 endmode
-+#
-+# 640x480, 120 Hz, Non-Interlaced (52.406 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 640 480
-+# Scan Frequency 61.800 kHz 120.00 Hz
-+# Sync Width 1.221 us 0.048 ms
-+# 8 chars 3 lines
-+# Front Porch 0.763 us 0.016 ms
-+# 5 chars 1 lines
-+# Back Porch 1.984 us 0.496 ms
-+# 13 chars 31 lines
-+# Active Time 12.212 us 7.767 ms
-+# 80 chars 480 lines
-+# Blank Time 3.969 us 0.566 ms
-+# 26 chars 35 lines
-+# Polarity positive positive
-+#
-+ mode "640x480-120"
-+# D: 52.406 MHz, H: 61.800 kHz, V: 120.00 Hz
-+ geometry 640 480 640 480 32 timings 19081 104 40 31 1 64 3 endmode
-+#
-+# 720x480, 60 Hz, Non-Interlaced (26.880 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 720 480
-+# Scan Frequency 30.000 kHz 60.241 Hz
-+# Sync Width 2.679 us 0.099 ms
-+# 9 chars 3 lines
-+# Front Porch 0.595 us 0.033 ms
-+# 2 chars 1 lines
-+# Back Porch 3.274 us 0.462 ms
-+# 11 chars 14 lines
-+# Active Time 26.786 us 16.000 ms
-+# 90 chars 480 lines
-+# Blank Time 6.548 us 0.600 ms
-+# 22 chars 18 lines
-+# Polarity positive positive
-+#
-+ mode "720x480-60"
-+# D: 26.880 MHz, H: 30.000 kHz, V: 60.24 Hz
-+ geometry 720 480 720 480 32 timings 37202 88 16 14 1 72 3 endmode
-+#
-+# 800x480, 60 Hz, Non-Interlaced (29.581 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 480
-+# Scan Frequency 29.892 kHz 60.00 Hz
-+# Sync Width 2.704 us 100.604 us
-+# 10 chars 3 lines
-+# Front Porch 0.541 us 33.535 us
-+# 2 chars 1 lines
-+# Back Porch 3.245 us 435.949 us
-+# 12 chars 13 lines
-+# Active Time 27.044 us 16.097 ms
-+# 100 chars 480 lines
-+# Blank Time 6.491 us 0.570 ms
-+# 24 chars 17 lines
-+# Polarity positive positive
-+#
-+ mode "800x480-60"
-+# D: 29.500 MHz, H: 29.738 kHz, V: 60.00 Hz
-+ geometry 800 480 800 480 32 timings 33805 96 24 10 3 72 7 endmode
-+#
-+# 720x576, 60 Hz, Non-Interlaced (32.668 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 720 576
-+# Scan Frequency 35.820 kHz 60.00 Hz
-+# Sync Width 2.204 us 0.083 ms
-+# 9 chars 3 lines
-+# Front Porch 0.735 us 0.027 ms
-+# 3 chars 1 lines
-+# Back Porch 2.939 us 0.459 ms
-+# 12 chars 17 lines
-+# Active Time 22.040 us 16.080 ms
-+# 90 chars 476 lines
-+# Blank Time 5.877 us 0.586 ms
-+# 24 chars 21 lines
-+# Polarity positive positive
-+#
-+ mode "720x576-60"
-+# D: 32.668 MHz, H: 35.820 kHz, V: 60.00 Hz
-+ geometry 720 576 720 576 32 timings 30611 96 24 17 1 72 3 endmode
-+#
-+# 800x600, 60 Hz, Non-Interlaced (40.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 600
-+# Scan Frequency 37.879 kHz 60.32 Hz
-+# Sync Width 3.200 us 0.106 ms
-+# 16 chars 4 lines
-+# Front Porch 1.000 us 0.026 ms
-+# 5 chars 1 lines
-+# Back Porch 2.200 us 0.607 ms
-+# 11 chars 23 lines
-+# Active Time 20.000 us 15.840 ms
-+# 100 chars 600 lines
-+# Blank Time 6.400 us 0.739 ms
-+# 32 chars 28 lines
-+# Polarity positive positive
-+#
-+ mode "800x600-60"
-+# D: 40.00 MHz, H: 37.879 kHz, V: 60.32 Hz
-+ geometry 800 600 800 600 32
-+ timings 25000 88 40 23 1 128 4 hsync high vsync high endmode
-+#
-+# 800x600, 75 Hz, Non-Interlaced (49.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 600
-+# Scan Frequency 46.875 kHz 75.00 Hz
-+# Sync Width 1.616 us 0.064 ms
-+# 10 chars 3 lines
-+# Front Porch 0.323 us 0.021 ms
-+# 2 chars 1 lines
-+# Back Porch 3.232 us 0.448 ms
-+# 20 chars 21 lines
-+# Active Time 16.162 us 12.800 ms
-+# 100 chars 600 lines
-+# Blank Time 5.172 us 0.533 ms
-+# 32 chars 25 lines
-+# Polarity positive positive
-+#
-+ mode "800x600-75"
-+# D: 49.50 MHz, H: 46.875 kHz, V: 75.00 Hz
-+ geometry 800 600 800 600 32
-+ timings 20203 160 16 21 1 80 3 hsync high vsync high endmode
-+#
-+# 800x600, 85 Hz, Non-Interlaced (56.25 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 600
-+# Scan Frequency 53.674 kHz 85.061 Hz
-+# Sync Width 1.138 us 0.056 ms
-+# 8 chars 3 lines
-+# Front Porch 0.569 us 0.019 ms
-+# 4 chars 1 lines
-+# Back Porch 2.702 us 0.503 ms
-+# 19 chars 27 lines
-+# Active Time 14.222 us 11.179 ms
-+# 100 chars 600 lines
-+# Blank Time 4.409 us 0.578 ms
-+# 31 chars 31 lines
-+# Polarity positive positive
-+#
-+ mode "800x600-85"
-+# D: 56.25 MHz, H: 53.674 kHz, V: 85.061 Hz
-+ geometry 800 600 800 600 32
-+ timings 17777 152 32 27 1 64 3 hsync high vsync high endmode
-+#
-+# 800x600, 100 Hz, Non-Interlaced (67.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 600
-+# Scan Frequency 62.500 kHz 100.00 Hz
-+# Sync Width 0.948 us 0.064 ms
-+# 8 chars 4 lines
-+# Front Porch 0.000 us 0.112 ms
-+# 0 chars 7 lines
-+# Back Porch 3.200 us 0.224 ms
-+# 27 chars 14 lines
-+# Active Time 11.852 us 9.600 ms
-+# 100 chars 600 lines
-+# Blank Time 4.148 us 0.400 ms
-+# 35 chars 25 lines
-+# Polarity positive positive
-+#
-+ mode "800x600-100"
-+# D: 67.50 MHz, H: 62.500 kHz, V: 100.00 Hz
-+ geometry 800 600 800 600 32
-+ timings 14667 216 0 14 7 64 4 hsync high vsync high endmode
-+#
-+# 800x600, 120 Hz, Non-Interlaced (83.950 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 800 600
-+# Scan Frequency 77.160 kHz 120.00 Hz
-+# Sync Width 1.048 us 0.039 ms
-+# 11 chars 3 lines
-+# Front Porch 0.667 us 0.013 ms
-+# 7 chars 1 lines
-+# Back Porch 1.715 us 0.507 ms
-+# 18 chars 39 lines
-+# Active Time 9.529 us 7.776 ms
-+# 100 chars 600 lines
-+# Blank Time 3.431 us 0.557 ms
-+# 36 chars 43 lines
-+# Polarity positive positive
-+#
-+ mode "800x600-120"
-+# D: 83.950 MHz, H: 77.160 kHz, V: 120.00 Hz
-+ geometry 800 600 800 600 32
-+ timings 11912 144 56 39 1 88 3 hsync high vsync high endmode
-+#
-+# 848x480, 60 Hz, Non-Interlaced (31.490 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 848 480
-+# Scan Frequency 29.820 kHz 60.00 Hz
-+# Sync Width 2.795 us 0.099 ms
-+# 11 chars 3 lines
-+# Front Porch 0.508 us 0.033 ms
-+# 2 chars 1 lines
-+# Back Porch 3.303 us 0.429 ms
-+# 13 chars 13 lines
-+# Active Time 26.929 us 16.097 ms
-+# 106 chars 480 lines
-+# Blank Time 6.605 us 0.570 ms
-+# 26 chars 17 lines
-+# Polarity positive positive
-+#
-+ mode "848x480-60"
-+# D: 31.500 MHz, H: 29.830 kHz, V: 60.00 Hz
-+ geometry 848 480 848 480 32
-+ timings 31746 104 24 12 3 80 5 hsync high vsync high endmode
-+#
-+# 856x480, 60 Hz, Non-Interlaced (31.728 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 856 480
-+# Scan Frequency 29.820 kHz 60.00 Hz
-+# Sync Width 2.774 us 0.099 ms
-+# 11 chars 3 lines
-+# Front Porch 0.504 us 0.033 ms
-+# 2 chars 1 lines
-+# Back Porch 3.728 us 0.429 ms
-+# 13 chars 13 lines
-+# Active Time 26.979 us 16.097 ms
-+# 107 chars 480 lines
-+# Blank Time 6.556 us 0.570 ms
-+# 26 chars 17 lines
-+# Polarity positive positive
-+#
-+ mode "856x480-60"
-+# D: 31.728 MHz, H: 29.820 kHz, V: 60.00 Hz
-+ geometry 856 480 856 480 32
-+ timings 31518 104 16 13 1 88 3
-+ hsync high vsync high endmode mode "960x600-60"
-+# D: 45.250 MHz, H: 37.212 kHz, V: 60.00 Hz
-+ geometry 960 600 960 600 32 timings 22099 128 32 15 3 96 6 endmode
-+#
-+# 1000x600, 60 Hz, Non-Interlaced (48.068 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1000 600
-+# Scan Frequency 37.320 kHz 60.00 Hz
-+# Sync Width 2.164 us 0.080 ms
-+# 13 chars 3 lines
-+# Front Porch 0.832 us 0.027 ms
-+# 5 chars 1 lines
-+# Back Porch 2.996 us 0.483 ms
-+# 18 chars 18 lines
-+# Active Time 20.804 us 16.077 ms
-+# 125 chars 600 lines
-+# Blank Time 5.991 us 0.589 ms
-+# 36 chars 22 lines
-+# Polarity negative positive
-+#
-+ mode "1000x600-60"
-+# D: 48.068 MHz, H: 37.320 kHz, V: 60.00 Hz
-+ geometry 1000 600 1000 600 32
-+ timings 20834 144 40 18 1 104 3 endmode mode "1024x576-60"
-+# D: 46.996 MHz, H: 35.820 kHz, V: 60.00 Hz
-+ geometry 1024 576 1024 576 32
-+ timings 21278 144 40 17 1 104 3 endmode mode "1024x600-60"
-+# D: 48.964 MHz, H: 37.320 kHz, V: 60.00 Hz
-+ geometry 1024 600 1024 600 32
-+ timings 20461 144 40 18 1 104 3 endmode mode "1088x612-60"
-+# D: 52.952 MHz, H: 38.040 kHz, V: 60.00 Hz
-+ geometry 1088 612 1088 612 32 timings 18877 152 48 16 3 104 5 endmode
-+#
-+# 1024x512, 60 Hz, Non-Interlaced (41.291 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 512
-+# Scan Frequency 31.860 kHz 60.00 Hz
-+# Sync Width 2.519 us 0.094 ms
-+# 13 chars 3 lines
-+# Front Porch 0.775 us 0.031 ms
-+# 4 chars 1 lines
-+# Back Porch 3.294 us 0.465 ms
-+# 17 chars 15 lines
-+# Active Time 24.800 us 16.070 ms
-+# 128 chars 512 lines
-+# Blank Time 6.587 us 0.596 ms
-+# 34 chars 19 lines
-+# Polarity positive positive
-+#
-+ mode "1024x512-60"
-+# D: 41.291 MHz, H: 31.860 kHz, V: 60.00 Hz
-+ geometry 1024 512 1024 512 32
-+ timings 24218 126 32 15 1 104 3 hsync high vsync high endmode
-+#
-+# 1024x600, 60 Hz, Non-Interlaced (48.875 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 768
-+# Scan Frequency 37.252 kHz 60.00 Hz
-+# Sync Width 2.128 us 80.532us
-+# 13 chars 3 lines
-+# Front Porch 0.818 us 26.844 us
-+# 5 chars 1 lines
-+# Back Porch 2.946 us 483.192 us
-+# 18 chars 18 lines
-+# Active Time 20.951 us 16.697 ms
-+# 128 chars 622 lines
-+# Blank Time 5.893 us 0.591 ms
-+# 36 chars 22 lines
-+# Polarity negative positive
-+#
-+#mode "1024x600-60"
-+# # D: 48.875 MHz, H: 37.252 kHz, V: 60.00 Hz
-+# geometry 1024 600 1024 600 32
-+# timings 20460 144 40 18 1 104 3
-+# endmode
-+#
-+# 1024x768, 60 Hz, Non-Interlaced (65.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 768
-+# Scan Frequency 48.363 kHz 60.00 Hz
-+# Sync Width 2.092 us 0.124 ms
-+# 17 chars 6 lines
-+# Front Porch 0.369 us 0.062 ms
-+# 3 chars 3 lines
-+# Back Porch 2.462 us 0.601 ms
-+# 20 chars 29 lines
-+# Active Time 15.754 us 15.880 ms
-+# 128 chars 768 lines
-+# Blank Time 4.923 us 0.786 ms
-+# 40 chars 38 lines
-+# Polarity negative negative
-+#
-+ mode "1024x768-60"
-+# D: 65.00 MHz, H: 48.363 kHz, V: 60.00 Hz
-+ geometry 1024 768 1024 768 32 timings 15385 160 24 29 3 136 6 endmode
-+#
-+# 1024x768, 75 Hz, Non-Interlaced (78.75 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 768
-+# Scan Frequency 60.023 kHz 75.03 Hz
-+# Sync Width 1.219 us 0.050 ms
-+# 12 chars 3 lines
-+# Front Porch 0.203 us 0.017 ms
-+# 2 chars 1 lines
-+# Back Porch 2.235 us 0.466 ms
-+# 22 chars 28 lines
-+# Active Time 13.003 us 12.795 ms
-+# 128 chars 768 lines
-+# Blank Time 3.657 us 0.533 ms
-+# 36 chars 32 lines
-+# Polarity positive positive
-+#
-+ mode "1024x768-75"
-+# D: 78.75 MHz, H: 60.023 kHz, V: 75.03 Hz
-+ geometry 1024 768 1024 768 32
-+ timings 12699 176 16 28 1 96 3 hsync high vsync high endmode
-+#
-+# 1024x768, 85 Hz, Non-Interlaced (94.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 768
-+# Scan Frequency 68.677 kHz 85.00 Hz
-+# Sync Width 1.016 us 0.044 ms
-+# 12 chars 3 lines
-+# Front Porch 0.508 us 0.015 ms
-+# 6 chars 1 lines
-+# Back Porch 2.201 us 0.524 ms
-+# 26 chars 36 lines
-+# Active Time 10.836 us 11.183 ms
-+# 128 chars 768 lines
-+# Blank Time 3.725 us 0.582 ms
-+# 44 chars 40 lines
-+# Polarity positive positive
-+#
-+ mode "1024x768-85"
-+# D: 94.50 MHz, H: 68.677 kHz, V: 85.00 Hz
-+ geometry 1024 768 1024 768 32
-+ timings 10582 208 48 36 1 96 3 hsync high vsync high endmode
-+#
-+# 1024x768, 100 Hz, Non-Interlaced (110.0 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1024 768
-+# Scan Frequency 79.023 kHz 99.78 Hz
-+# Sync Width 0.800 us 0.101 ms
-+# 11 chars 8 lines
-+# Front Porch 0.000 us 0.000 ms
-+# 0 chars 0 lines
-+# Back Porch 2.545 us 0.202 ms
-+# 35 chars 16 lines
-+# Active Time 9.309 us 9.719 ms
-+# 128 chars 768 lines
-+# Blank Time 3.345 us 0.304 ms
-+# 46 chars 24 lines
-+# Polarity negative negative
-+#
-+ mode "1024x768-100"
-+# D: 113.3 MHz, H: 79.023 kHz, V: 99.78 Hz
-+ geometry 1024 768 1024 768 32
-+ timings 8825 280 0 16 0 88 8 endmode mode "1152x720-60"
-+# D: 66.750 MHz, H: 44.859 kHz, V: 60.00 Hz
-+ geometry 1152 720 1152 720 32 timings 14981 168 56 19 3 112 6 endmode
-+#
-+# 1152x864, 75 Hz, Non-Interlaced (110.0 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1152 864
-+# Scan Frequency 75.137 kHz 74.99 Hz
-+# Sync Width 1.309 us 0.106 ms
-+# 18 chars 8 lines
-+# Front Porch 0.245 us 0.599 ms
-+# 3 chars 45 lines
-+# Back Porch 1.282 us 1.132 ms
-+# 18 chars 85 lines
-+# Active Time 10.473 us 11.499 ms
-+# 144 chars 864 lines
-+# Blank Time 2.836 us 1.837 ms
-+# 39 chars 138 lines
-+# Polarity positive positive
-+#
-+ mode "1152x864-75"
-+# D: 110.0 MHz, H: 75.137 kHz, V: 74.99 Hz
-+ geometry 1152 864 1152 864 32
-+ timings 9259 144 24 85 45 144 8
-+ hsync high vsync high endmode mode "1200x720-60"
-+# D: 70.184 MHz, H: 44.760 kHz, V: 60.00 Hz
-+ geometry 1200 720 1200 720 32
-+ timings 14253 184 28 22 1 128 3 endmode mode "1280x600-60"
-+# D: 61.503 MHz, H: 37.320 kHz, V: 60.00 Hz
-+ geometry 1280 600 1280 600 32
-+ timings 16260 184 28 18 1 128 3 endmode mode "1280x720-50"
-+# D: 60.466 MHz, H: 37.050 kHz, V: 50.00 Hz
-+ geometry 1280 720 1280 720 32
-+ timings 16538 176 48 17 1 128 3 endmode mode "1280x768-50"
-+# D: 65.178 MHz, H: 39.550 kHz, V: 50.00 Hz
-+ geometry 1280 768 1280 768 32 timings 15342 184 28 19 1 128 3 endmode
-+#
-+# 1280x768, 60 Hz, Non-Interlaced (80.136 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 768
-+# Scan Frequency 47.700 kHz 60.00 Hz
-+# Sync Width 1.697 us 0.063 ms
-+# 17 chars 3 lines
-+# Front Porch 0.799 us 0.021 ms
-+# 8 chars 1 lines
-+# Back Porch 2.496 us 0.483 ms
-+# 25 chars 23 lines
-+# Active Time 15.973 us 16.101 ms
-+# 160 chars 768 lines
-+# Blank Time 4.992 us 0.566 ms
-+# 50 chars 27 lines
-+# Polarity positive positive
-+#
-+ mode "1280x768-60"
-+# D: 80.13 MHz, H: 47.700 kHz, V: 60.00 Hz
-+ geometry 1280 768 1280 768 32
-+ timings 12480 200 48 23 1 126 3 hsync high vsync high endmode
-+#
-+# 1280x800, 60 Hz, Non-Interlaced (83.375 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 800
-+# Scan Frequency 49.628 kHz 60.00 Hz
-+# Sync Width 1.631 us 60.450 us
-+# 17 chars 3 lines
-+# Front Porch 0.768 us 20.15 us
-+# 8 chars 1 lines
-+# Back Porch 2.399 us 0.483 ms
-+# 25 chars 24 lines
-+# Active Time 15.352 us 16.120 ms
-+# 160 chars 800 lines
-+# Blank Time 4.798 us 0.564 ms
-+# 50 chars 28 lines
-+# Polarity negtive positive
-+#
-+ mode "1280x800-60"
-+# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz
-+ geometry 1280 800 1280 800 32 timings 11994 200 72 22 3 128 6 endmode
-+#
-+# 1280x960, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 960
-+# Scan Frequency 60.000 kHz 60.00 Hz
-+# Sync Width 1.037 us 0.050 ms
-+# 14 chars 3 lines
-+# Front Porch 0.889 us 0.017 ms
-+# 12 chars 1 lines
-+# Back Porch 2.889 us 0.600 ms
-+# 39 chars 36 lines
-+# Active Time 11.852 us 16.000 ms
-+# 160 chars 960 lines
-+# Blank Time 4.815 us 0.667 ms
-+# 65 chars 40 lines
-+# Polarity positive positive
-+#
-+ mode "1280x960-60"
-+# D: 108.00 MHz, H: 60.000 kHz, V: 60.00 Hz
-+ geometry 1280 960 1280 960 32
-+ timings 9259 312 96 36 1 112 3 hsync high vsync high endmode
-+#
-+# 1280x1024, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 1024
-+# Scan Frequency 63.981 kHz 60.02 Hz
-+# Sync Width 1.037 us 0.047 ms
-+# 14 chars 3 lines
-+# Front Porch 0.444 us 0.015 ms
-+# 6 chars 1 lines
-+# Back Porch 2.297 us 0.594 ms
-+# 31 chars 38 lines
-+# Active Time 11.852 us 16.005 ms
-+# 160 chars 1024 lines
-+# Blank Time 3.778 us 0.656 ms
-+# 51 chars 42 lines
-+# Polarity positive positive
-+#
-+ mode "1280x1024-60"
-+# D: 108.00 MHz, H: 63.981 kHz, V: 60.02 Hz
-+ geometry 1280 1024 1280 1024 32
-+ timings 9260 248 48 38 1 112 3 hsync high vsync high endmode
-+#
-+# 1280x1024, 75 Hz, Non-Interlaced (135.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 1024
-+# Scan Frequency 79.976 kHz 75.02 Hz
-+# Sync Width 1.067 us 0.038 ms
-+# 18 chars 3 lines
-+# Front Porch 0.119 us 0.012 ms
-+# 2 chars 1 lines
-+# Back Porch 1.837 us 0.475 ms
-+# 31 chars 38 lines
-+# Active Time 9.481 us 12.804 ms
-+# 160 chars 1024 lines
-+# Blank Time 3.022 us 0.525 ms
-+# 51 chars 42 lines
-+# Polarity positive positive
-+#
-+ mode "1280x1024-75"
-+# D: 135.00 MHz, H: 79.976 kHz, V: 75.02 Hz
-+ geometry 1280 1024 1280 1024 32
-+ timings 7408 248 16 38 1 144 3 hsync high vsync high endmode
-+#
-+# 1280x1024, 85 Hz, Non-Interlaced (157.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 1024
-+# Scan Frequency 91.146 kHz 85.02 Hz
-+# Sync Width 1.016 us 0.033 ms
-+# 20 chars 3 lines
-+# Front Porch 0.406 us 0.011 ms
-+# 8 chars 1 lines
-+# Back Porch 1.422 us 0.483 ms
-+# 28 chars 44 lines
-+# Active Time 8.127 us 11.235 ms
-+# 160 chars 1024 lines
-+# Blank Time 2.844 us 0.527 ms
-+# 56 chars 48 lines
-+# Polarity positive positive
-+#
-+ mode "1280x1024-85"
-+# D: 157.50 MHz, H: 91.146 kHz, V: 85.02 Hz
-+ geometry 1280 1024 1280 1024 32
-+ timings 6349 224 64 44 1 160 3
-+ hsync high vsync high endmode mode "1440x900-60"
-+# D: 106.500 MHz, H: 55.935 kHz, V: 60.00 Hz
-+ geometry 1440 900 1440 900 32
-+ timings 9390 232 80 25 3 152 6
-+ hsync high vsync high endmode mode "1440x900-75"
-+# D: 136.750 MHz, H: 70.635 kHz, V: 75.00 Hz
-+ geometry 1440 900 1440 900 32
-+ timings 7315 248 96 33 3 152 6 hsync high vsync high endmode
-+#
-+# 1440x1050, 60 Hz, Non-Interlaced (125.10 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1440 1050
-+# Scan Frequency 65.220 kHz 60.00 Hz
-+# Sync Width 1.204 us 0.046 ms
-+# 19 chars 3 lines
-+# Front Porch 0.760 us 0.015 ms
-+# 12 chars 1 lines
-+# Back Porch 1.964 us 0.495 ms
-+# 31 chars 33 lines
-+# Active Time 11.405 us 16.099 ms
-+# 180 chars 1050 lines
-+# Blank Time 3.928 us 0.567 ms
-+# 62 chars 37 lines
-+# Polarity positive positive
-+#
-+ mode "1440x1050-60"
-+# D: 125.10 MHz, H: 65.220 kHz, V: 60.00 Hz
-+ geometry 1440 1050 1440 1050 32
-+ timings 7993 248 96 33 1 152 3
-+ hsync high vsync high endmode mode "1600x900-60"
-+# D: 118.250 MHz, H: 55.990 kHz, V: 60.00 Hz
-+ geometry 1600 900 1600 900 32
-+ timings 8415 256 88 26 3 168 5 endmode mode "1600x1024-60"
-+# D: 136.358 MHz, H: 63.600 kHz, V: 60.00 Hz
-+ geometry 1600 1024 1600 1024 32 timings 7315 272 104 32 1 168 3 endmode
-+#
-+# 1600x1200, 60 Hz, Non-Interlaced (156.00 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1600 1200
-+# Scan Frequency 76.200 kHz 60.00 Hz
-+# Sync Width 1.026 us 0.105 ms
-+# 20 chars 8 lines
-+# Front Porch 0.205 us 0.131 ms
-+# 4 chars 10 lines
-+# Back Porch 1.636 us 0.682 ms
-+# 32 chars 52 lines
-+# Active Time 10.256 us 15.748 ms
-+# 200 chars 1200 lines
-+# Blank Time 2.872 us 0.866 ms
-+# 56 chars 66 lines
-+# Polarity negative negative
-+#
-+ mode "1600x1200-60"
-+# D: 156.00 MHz, H: 76.200 kHz, V: 60.00 Hz
-+ geometry 1600 1200 1600 1200 32 timings 6172 256 32 52 10 160 8 endmode
-+#
-+# 1600x1200, 75 Hz, Non-Interlaced (202.50 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1600 1200
-+# Scan Frequency 93.750 kHz 75.00 Hz
-+# Sync Width 0.948 us 0.032 ms
-+# 24 chars 3 lines
-+# Front Porch 0.316 us 0.011 ms
-+# 8 chars 1 lines
-+# Back Porch 1.501 us 0.491 ms
-+# 38 chars 46 lines
-+# Active Time 7.901 us 12.800 ms
-+# 200 chars 1200 lines
-+# Blank Time 2.765 us 0.533 ms
-+# 70 chars 50 lines
-+# Polarity positive positive
-+#
-+ mode "1600x1200-75"
-+# D: 202.50 MHz, H: 93.750 kHz, V: 75.00 Hz
-+ geometry 1600 1200 1600 1200 32
-+ timings 4938 304 64 46 1 192 3
-+ hsync high vsync high endmode mode "1680x1050-60"
-+# D: 146.250 MHz, H: 65.290 kHz, V: 59.954 Hz
-+ geometry 1680 1050 1680 1050 32
-+ timings 6814 280 104 30 3 176 6
-+ hsync high vsync high endmode mode "1680x1050-75"
-+# D: 187.000 MHz, H: 82.306 kHz, V: 74.892 Hz
-+ geometry 1680 1050 1680 1050 32
-+ timings 5348 296 120 40 3 176 6
-+ hsync high vsync high endmode mode "1792x1344-60"
-+# D: 202.975 MHz, H: 83.460 kHz, V: 60.00 Hz
-+ geometry 1792 1344 1792 1344 32
-+ timings 4902 320 128 43 1 192 3
-+ hsync high vsync high endmode mode "1856x1392-60"
-+# D: 218.571 MHz, H: 86.460 kHz, V: 60.00 Hz
-+ geometry 1856 1392 1856 1392 32
-+ timings 4577 336 136 45 1 200 3
-+ hsync high vsync high endmode mode "1920x1200-60"
-+# D: 193.250 MHz, H: 74.556 kHz, V: 60.00 Hz
-+ geometry 1920 1200 1920 1200 32
-+ timings 5173 336 136 36 3 200 6
-+ hsync high vsync high endmode mode "1920x1440-60"
-+# D: 234.000 MHz, H:90.000 kHz, V: 60.00 Hz
-+ geometry 1920 1440 1920 1440 32
-+ timings 4274 344 128 56 1 208 3
-+ hsync high vsync high endmode mode "1920x1440-75"
-+# D: 297.000 MHz, H:112.500 kHz, V: 75.00 Hz
-+ geometry 1920 1440 1920 1440 32
-+ timings 3367 352 144 56 1 224 3
-+ hsync high vsync high endmode mode "2048x1536-60"
-+# D: 267.250 MHz, H: 95.446 kHz, V: 60.00 Hz
-+ geometry 2048 1536 2048 1536 32
-+ timings 3742 376 152 49 3 224 4 hsync high vsync high endmode
-+#
-+# 1280x720, 60 Hz, Non-Interlaced (74.481 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1280 720
-+# Scan Frequency 44.760 kHz 60.00 Hz
-+# Sync Width 1.826 us 67.024 ms
-+# 17 chars 3 lines
-+# Front Porch 0.752 us 22.341 ms
-+# 7 chars 1 lines
-+# Back Porch 2.578 us 491.510 ms
-+# 24 chars 22 lines
-+# Active Time 17.186 us 16.086 ms
-+# 160 chars 720 lines
-+# Blank Time 5.156 us 0.581 ms
-+# 48 chars 26 lines
-+# Polarity negative negative
-+#
-+ mode "1280x720-60"
-+# D: 74.481 MHz, H: 44.760 kHz, V: 60.00 Hz
-+ geometry 1280 720 1280 720 32 timings 13426 192 64 22 1 136 3 endmode
-+#
-+# 1920x1080, 60 Hz, Non-Interlaced (172.798 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1920 1080
-+# Scan Frequency 67.080 kHz 60.00 Hz
-+# Sync Width 1.204 us 44.723 ms
-+# 26 chars 3 lines
-+# Front Porch 0.694 us 14.908 ms
-+# 15 chars 1 lines
-+# Back Porch 1.898 us 506.857 ms
-+# 41 chars 34 lines
-+# Active Time 11.111 us 16.100 ms
-+# 240 chars 1080 lines
-+# Blank Time 3.796 us 0.566 ms
-+# 82 chars 38 lines
-+# Polarity negative negative
-+#
-+ mode "1920x1080-60"
-+# D: 74.481 MHz, H: 67.080 kHz, V: 60.00 Hz
-+ geometry 1920 1080 1920 1080 32 timings 5787 328 120 34 1 208 3 endmode
-+#
-+# 1400x1050, 60 Hz, Non-Interlaced (122.61 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1400 1050
-+# Scan Frequency 65.218 kHz 59.99 Hz
-+# Sync Width 1.037 us 0.047 ms
-+# 19 chars 3 lines
-+# Front Porch 0.444 us 0.015 ms
-+# 11 chars 1 lines
-+# Back Porch 1.185 us 0.188 ms
-+# 30 chars 33 lines
-+# Active Time 12.963 us 16.411 ms
-+# 175 chars 1050 lines
-+# Blank Time 2.667 us 0.250 ms
-+# 60 chars 37 lines
-+# Polarity negative positive
-+#
-+ mode "1400x1050-60"
-+# D: 122.750 MHz, H: 65.317 kHz, V: 59.99 Hz
-+ geometry 1400 1050 1408 1050 32
-+ timings 8214 232 88 32 3 144 4 endmode mode "1400x1050-75"
-+# D: 156.000 MHz, H: 82.278 kHz, V: 74.867 Hz
-+ geometry 1400 1050 1408 1050 32 timings 6410 248 104 42 3 144 4 endmode
-+#
-+# 1366x768, 60 Hz, Non-Interlaced (85.86 MHz dotclock)
-+#
-+# Horizontal Vertical
-+# Resolution 1366 768
-+# Scan Frequency 47.700 kHz 60.00 Hz
-+# Sync Width 1.677 us 0.063 ms
-+# 18 chars 3 lines
-+# Front Porch 0.839 us 0.021 ms
-+# 9 chars 1 lines
-+# Back Porch 2.516 us 0.482 ms
-+# 27 chars 23 lines
-+# Active Time 15.933 us 16.101 ms
-+# 171 chars 768 lines
-+# Blank Time 5.031 us 0.566 ms
-+# 54 chars 27 lines
-+# Polarity negative positive
-+#
-+ mode "1360x768-60"
-+# D: 84.750 MHz, H: 47.720 kHz, V: 60.00 Hz
-+ geometry 1360 768 1360 768 32
-+ timings 11799 208 72 22 3 136 5 endmode mode "1366x768-60"
-+# D: 85.86 MHz, H: 47.700 kHz, V: 60.00 Hz
-+ geometry 1366 768 1366 768 32
-+ timings 11647 216 72 23 1 144 3 endmode mode "1366x768-50"
-+# D: 69,924 MHz, H: 39.550 kHz, V: 50.00 Hz
-+ geometry 1366 768 1366 768 32 timings 14301 200 56 19 1 144 3 endmode
---- /dev/null
+++ b/drivers/video/viafb/viafbdev.c
@@ -0,0 +1,2780 @@
+/*
@@ -14585,6 +12846,1405 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+ *plvds_chip_info, struct IODATA io_data);
+#endif /* __VIAFBDEV_H__ */
--- /dev/null
++++ b/drivers/video/viafb/viafb.modes
+@@ -0,0 +1,870 @@
++#
++#
++# These data are based on the CRTC parameters in
++#
++# VIA Integration Graphics Chip
++# (C) 2004 VIA Technologies Inc.
++#
++
++#
++# 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 640 480
++# Scan Frequency 31.469 kHz 59.94 Hz
++# Sync Width 3.813 us 0.064 ms
++# 12 chars 2 lines
++# Front Porch 0.636 us 0.318 ms
++# 2 chars 10 lines
++# Back Porch 1.907 us 1.048 ms
++# 6 chars 33 lines
++# Active Time 25.422 us 15.253 ms
++# 80 chars 480 lines
++# Blank Time 6.356 us 1.430 ms
++# 20 chars 45 lines
++# Polarity negative negative
++#
++
++mode "640x480-60"
++# D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
++ geometry 640 480 640 480 32
++ timings 39722 48 16 33 10 96 2 endmode mode "480x640-60"
++# D: 24.823 MHz, H: 39.780 kHz, V: 60.00 Hz
++ geometry 480 640 480 640 32 timings 39722 72 24 19 1 48 3 endmode
++#
++# 640x480, 75 Hz, Non-Interlaced (31.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 640 480
++# Scan Frequency 37.500 kHz 75.00 Hz
++# Sync Width 2.032 us 0.080 ms
++# 8 chars 3 lines
++# Front Porch 0.508 us 0.027 ms
++# 2 chars 1 lines
++# Back Porch 3.810 us 0.427 ms
++# 15 chars 16 lines
++# Active Time 20.317 us 12.800 ms
++# 80 chars 480 lines
++# Blank Time 6.349 us 0.533 ms
++# 25 chars 20 lines
++# Polarity negative negative
++#
++ mode "640x480-75"
++# D: 31.50 MHz, H: 37.500 kHz, V: 75.00 Hz
++ geometry 640 480 640 480 32 timings 31747 120 16 16 1 64 3 endmode
++#
++# 640x480, 85 Hz, Non-Interlaced (36.000 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 640 480
++# Scan Frequency 43.269 kHz 85.00 Hz
++# Sync Width 1.556 us 0.069 ms
++# 7 chars 3 lines
++# Front Porch 1.556 us 0.023 ms
++# 7 chars 1 lines
++# Back Porch 2.222 us 0.578 ms
++# 10 chars 25 lines
++# Active Time 17.778 us 11.093 ms
++# 80 chars 480 lines
++# Blank Time 5.333 us 0.670 ms
++# 24 chars 29 lines
++# Polarity negative negative
++#
++ mode "640x480-85"
++# D: 36.000 MHz, H: 43.269 kHz, V: 85.00 Hz
++ geometry 640 480 640 480 32 timings 27777 80 56 25 1 56 3 endmode
++#
++# 640x480, 100 Hz, Non-Interlaced (43.163 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 640 480
++# Scan Frequency 50.900 kHz 100.00 Hz
++# Sync Width 1.483 us 0.058 ms
++# 8 chars 3 lines
++# Front Porch 0.927 us 0.019 ms
++# 5 chars 1 lines
++# Back Porch 2.409 us 0.475 ms
++# 13 chars 25 lines
++# Active Time 14.827 us 9.430 ms
++# 80 chars 480 lines
++# Blank Time 4.819 us 0.570 ms
++# 26 chars 29 lines
++# Polarity positive positive
++#
++ mode "640x480-100"
++# D: 43.163 MHz, H: 50.900 kHz, V: 100.00 Hz
++ geometry 640 480 640 480 32 timings 23168 104 40 25 1 64 3 endmode
++#
++# 640x480, 120 Hz, Non-Interlaced (52.406 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 640 480
++# Scan Frequency 61.800 kHz 120.00 Hz
++# Sync Width 1.221 us 0.048 ms
++# 8 chars 3 lines
++# Front Porch 0.763 us 0.016 ms
++# 5 chars 1 lines
++# Back Porch 1.984 us 0.496 ms
++# 13 chars 31 lines
++# Active Time 12.212 us 7.767 ms
++# 80 chars 480 lines
++# Blank Time 3.969 us 0.566 ms
++# 26 chars 35 lines
++# Polarity positive positive
++#
++ mode "640x480-120"
++# D: 52.406 MHz, H: 61.800 kHz, V: 120.00 Hz
++ geometry 640 480 640 480 32 timings 19081 104 40 31 1 64 3 endmode
++#
++# 720x480, 60 Hz, Non-Interlaced (26.880 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 720 480
++# Scan Frequency 30.000 kHz 60.241 Hz
++# Sync Width 2.679 us 0.099 ms
++# 9 chars 3 lines
++# Front Porch 0.595 us 0.033 ms
++# 2 chars 1 lines
++# Back Porch 3.274 us 0.462 ms
++# 11 chars 14 lines
++# Active Time 26.786 us 16.000 ms
++# 90 chars 480 lines
++# Blank Time 6.548 us 0.600 ms
++# 22 chars 18 lines
++# Polarity positive positive
++#
++ mode "720x480-60"
++# D: 26.880 MHz, H: 30.000 kHz, V: 60.24 Hz
++ geometry 720 480 720 480 32 timings 37202 88 16 14 1 72 3 endmode
++#
++# 800x480, 60 Hz, Non-Interlaced (29.581 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 480
++# Scan Frequency 29.892 kHz 60.00 Hz
++# Sync Width 2.704 us 100.604 us
++# 10 chars 3 lines
++# Front Porch 0.541 us 33.535 us
++# 2 chars 1 lines
++# Back Porch 3.245 us 435.949 us
++# 12 chars 13 lines
++# Active Time 27.044 us 16.097 ms
++# 100 chars 480 lines
++# Blank Time 6.491 us 0.570 ms
++# 24 chars 17 lines
++# Polarity positive positive
++#
++ mode "800x480-60"
++# D: 29.500 MHz, H: 29.738 kHz, V: 60.00 Hz
++ geometry 800 480 800 480 32 timings 33805 96 24 10 3 72 7 endmode
++#
++# 720x576, 60 Hz, Non-Interlaced (32.668 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 720 576
++# Scan Frequency 35.820 kHz 60.00 Hz
++# Sync Width 2.204 us 0.083 ms
++# 9 chars 3 lines
++# Front Porch 0.735 us 0.027 ms
++# 3 chars 1 lines
++# Back Porch 2.939 us 0.459 ms
++# 12 chars 17 lines
++# Active Time 22.040 us 16.080 ms
++# 90 chars 476 lines
++# Blank Time 5.877 us 0.586 ms
++# 24 chars 21 lines
++# Polarity positive positive
++#
++ mode "720x576-60"
++# D: 32.668 MHz, H: 35.820 kHz, V: 60.00 Hz
++ geometry 720 576 720 576 32 timings 30611 96 24 17 1 72 3 endmode
++#
++# 800x600, 60 Hz, Non-Interlaced (40.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 600
++# Scan Frequency 37.879 kHz 60.32 Hz
++# Sync Width 3.200 us 0.106 ms
++# 16 chars 4 lines
++# Front Porch 1.000 us 0.026 ms
++# 5 chars 1 lines
++# Back Porch 2.200 us 0.607 ms
++# 11 chars 23 lines
++# Active Time 20.000 us 15.840 ms
++# 100 chars 600 lines
++# Blank Time 6.400 us 0.739 ms
++# 32 chars 28 lines
++# Polarity positive positive
++#
++ mode "800x600-60"
++# D: 40.00 MHz, H: 37.879 kHz, V: 60.32 Hz
++ geometry 800 600 800 600 32
++ timings 25000 88 40 23 1 128 4 hsync high vsync high endmode
++#
++# 800x600, 75 Hz, Non-Interlaced (49.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 600
++# Scan Frequency 46.875 kHz 75.00 Hz
++# Sync Width 1.616 us 0.064 ms
++# 10 chars 3 lines
++# Front Porch 0.323 us 0.021 ms
++# 2 chars 1 lines
++# Back Porch 3.232 us 0.448 ms
++# 20 chars 21 lines
++# Active Time 16.162 us 12.800 ms
++# 100 chars 600 lines
++# Blank Time 5.172 us 0.533 ms
++# 32 chars 25 lines
++# Polarity positive positive
++#
++ mode "800x600-75"
++# D: 49.50 MHz, H: 46.875 kHz, V: 75.00 Hz
++ geometry 800 600 800 600 32
++ timings 20203 160 16 21 1 80 3 hsync high vsync high endmode
++#
++# 800x600, 85 Hz, Non-Interlaced (56.25 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 600
++# Scan Frequency 53.674 kHz 85.061 Hz
++# Sync Width 1.138 us 0.056 ms
++# 8 chars 3 lines
++# Front Porch 0.569 us 0.019 ms
++# 4 chars 1 lines
++# Back Porch 2.702 us 0.503 ms
++# 19 chars 27 lines
++# Active Time 14.222 us 11.179 ms
++# 100 chars 600 lines
++# Blank Time 4.409 us 0.578 ms
++# 31 chars 31 lines
++# Polarity positive positive
++#
++ mode "800x600-85"
++# D: 56.25 MHz, H: 53.674 kHz, V: 85.061 Hz
++ geometry 800 600 800 600 32
++ timings 17777 152 32 27 1 64 3 hsync high vsync high endmode
++#
++# 800x600, 100 Hz, Non-Interlaced (67.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 600
++# Scan Frequency 62.500 kHz 100.00 Hz
++# Sync Width 0.948 us 0.064 ms
++# 8 chars 4 lines
++# Front Porch 0.000 us 0.112 ms
++# 0 chars 7 lines
++# Back Porch 3.200 us 0.224 ms
++# 27 chars 14 lines
++# Active Time 11.852 us 9.600 ms
++# 100 chars 600 lines
++# Blank Time 4.148 us 0.400 ms
++# 35 chars 25 lines
++# Polarity positive positive
++#
++ mode "800x600-100"
++# D: 67.50 MHz, H: 62.500 kHz, V: 100.00 Hz
++ geometry 800 600 800 600 32
++ timings 14667 216 0 14 7 64 4 hsync high vsync high endmode
++#
++# 800x600, 120 Hz, Non-Interlaced (83.950 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 800 600
++# Scan Frequency 77.160 kHz 120.00 Hz
++# Sync Width 1.048 us 0.039 ms
++# 11 chars 3 lines
++# Front Porch 0.667 us 0.013 ms
++# 7 chars 1 lines
++# Back Porch 1.715 us 0.507 ms
++# 18 chars 39 lines
++# Active Time 9.529 us 7.776 ms
++# 100 chars 600 lines
++# Blank Time 3.431 us 0.557 ms
++# 36 chars 43 lines
++# Polarity positive positive
++#
++ mode "800x600-120"
++# D: 83.950 MHz, H: 77.160 kHz, V: 120.00 Hz
++ geometry 800 600 800 600 32
++ timings 11912 144 56 39 1 88 3 hsync high vsync high endmode
++#
++# 848x480, 60 Hz, Non-Interlaced (31.490 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 848 480
++# Scan Frequency 29.820 kHz 60.00 Hz
++# Sync Width 2.795 us 0.099 ms
++# 11 chars 3 lines
++# Front Porch 0.508 us 0.033 ms
++# 2 chars 1 lines
++# Back Porch 3.303 us 0.429 ms
++# 13 chars 13 lines
++# Active Time 26.929 us 16.097 ms
++# 106 chars 480 lines
++# Blank Time 6.605 us 0.570 ms
++# 26 chars 17 lines
++# Polarity positive positive
++#
++ mode "848x480-60"
++# D: 31.500 MHz, H: 29.830 kHz, V: 60.00 Hz
++ geometry 848 480 848 480 32
++ timings 31746 104 24 12 3 80 5 hsync high vsync high endmode
++#
++# 856x480, 60 Hz, Non-Interlaced (31.728 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 856 480
++# Scan Frequency 29.820 kHz 60.00 Hz
++# Sync Width 2.774 us 0.099 ms
++# 11 chars 3 lines
++# Front Porch 0.504 us 0.033 ms
++# 2 chars 1 lines
++# Back Porch 3.728 us 0.429 ms
++# 13 chars 13 lines
++# Active Time 26.979 us 16.097 ms
++# 107 chars 480 lines
++# Blank Time 6.556 us 0.570 ms
++# 26 chars 17 lines
++# Polarity positive positive
++#
++ mode "856x480-60"
++# D: 31.728 MHz, H: 29.820 kHz, V: 60.00 Hz
++ geometry 856 480 856 480 32
++ timings 31518 104 16 13 1 88 3
++ hsync high vsync high endmode mode "960x600-60"
++# D: 45.250 MHz, H: 37.212 kHz, V: 60.00 Hz
++ geometry 960 600 960 600 32 timings 22099 128 32 15 3 96 6 endmode
++#
++# 1000x600, 60 Hz, Non-Interlaced (48.068 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1000 600
++# Scan Frequency 37.320 kHz 60.00 Hz
++# Sync Width 2.164 us 0.080 ms
++# 13 chars 3 lines
++# Front Porch 0.832 us 0.027 ms
++# 5 chars 1 lines
++# Back Porch 2.996 us 0.483 ms
++# 18 chars 18 lines
++# Active Time 20.804 us 16.077 ms
++# 125 chars 600 lines
++# Blank Time 5.991 us 0.589 ms
++# 36 chars 22 lines
++# Polarity negative positive
++#
++ mode "1000x600-60"
++# D: 48.068 MHz, H: 37.320 kHz, V: 60.00 Hz
++ geometry 1000 600 1000 600 32
++ timings 20834 144 40 18 1 104 3 endmode mode "1024x576-60"
++# D: 46.996 MHz, H: 35.820 kHz, V: 60.00 Hz
++ geometry 1024 576 1024 576 32
++ timings 21278 144 40 17 1 104 3 endmode mode "1024x600-60"
++# D: 48.964 MHz, H: 37.320 kHz, V: 60.00 Hz
++ geometry 1024 600 1024 600 32
++ timings 20461 144 40 18 1 104 3 endmode mode "1088x612-60"
++# D: 52.952 MHz, H: 38.040 kHz, V: 60.00 Hz
++ geometry 1088 612 1088 612 32 timings 18877 152 48 16 3 104 5 endmode
++#
++# 1024x512, 60 Hz, Non-Interlaced (41.291 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 512
++# Scan Frequency 31.860 kHz 60.00 Hz
++# Sync Width 2.519 us 0.094 ms
++# 13 chars 3 lines
++# Front Porch 0.775 us 0.031 ms
++# 4 chars 1 lines
++# Back Porch 3.294 us 0.465 ms
++# 17 chars 15 lines
++# Active Time 24.800 us 16.070 ms
++# 128 chars 512 lines
++# Blank Time 6.587 us 0.596 ms
++# 34 chars 19 lines
++# Polarity positive positive
++#
++ mode "1024x512-60"
++# D: 41.291 MHz, H: 31.860 kHz, V: 60.00 Hz
++ geometry 1024 512 1024 512 32
++ timings 24218 126 32 15 1 104 3 hsync high vsync high endmode
++#
++# 1024x600, 60 Hz, Non-Interlaced (48.875 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 768
++# Scan Frequency 37.252 kHz 60.00 Hz
++# Sync Width 2.128 us 80.532us
++# 13 chars 3 lines
++# Front Porch 0.818 us 26.844 us
++# 5 chars 1 lines
++# Back Porch 2.946 us 483.192 us
++# 18 chars 18 lines
++# Active Time 20.951 us 16.697 ms
++# 128 chars 622 lines
++# Blank Time 5.893 us 0.591 ms
++# 36 chars 22 lines
++# Polarity negative positive
++#
++#mode "1024x600-60"
++# # D: 48.875 MHz, H: 37.252 kHz, V: 60.00 Hz
++# geometry 1024 600 1024 600 32
++# timings 20460 144 40 18 1 104 3
++# endmode
++#
++# 1024x768, 60 Hz, Non-Interlaced (65.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 768
++# Scan Frequency 48.363 kHz 60.00 Hz
++# Sync Width 2.092 us 0.124 ms
++# 17 chars 6 lines
++# Front Porch 0.369 us 0.062 ms
++# 3 chars 3 lines
++# Back Porch 2.462 us 0.601 ms
++# 20 chars 29 lines
++# Active Time 15.754 us 15.880 ms
++# 128 chars 768 lines
++# Blank Time 4.923 us 0.786 ms
++# 40 chars 38 lines
++# Polarity negative negative
++#
++ mode "1024x768-60"
++# D: 65.00 MHz, H: 48.363 kHz, V: 60.00 Hz
++ geometry 1024 768 1024 768 32 timings 15385 160 24 29 3 136 6 endmode
++#
++# 1024x768, 75 Hz, Non-Interlaced (78.75 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 768
++# Scan Frequency 60.023 kHz 75.03 Hz
++# Sync Width 1.219 us 0.050 ms
++# 12 chars 3 lines
++# Front Porch 0.203 us 0.017 ms
++# 2 chars 1 lines
++# Back Porch 2.235 us 0.466 ms
++# 22 chars 28 lines
++# Active Time 13.003 us 12.795 ms
++# 128 chars 768 lines
++# Blank Time 3.657 us 0.533 ms
++# 36 chars 32 lines
++# Polarity positive positive
++#
++ mode "1024x768-75"
++# D: 78.75 MHz, H: 60.023 kHz, V: 75.03 Hz
++ geometry 1024 768 1024 768 32
++ timings 12699 176 16 28 1 96 3 hsync high vsync high endmode
++#
++# 1024x768, 85 Hz, Non-Interlaced (94.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 768
++# Scan Frequency 68.677 kHz 85.00 Hz
++# Sync Width 1.016 us 0.044 ms
++# 12 chars 3 lines
++# Front Porch 0.508 us 0.015 ms
++# 6 chars 1 lines
++# Back Porch 2.201 us 0.524 ms
++# 26 chars 36 lines
++# Active Time 10.836 us 11.183 ms
++# 128 chars 768 lines
++# Blank Time 3.725 us 0.582 ms
++# 44 chars 40 lines
++# Polarity positive positive
++#
++ mode "1024x768-85"
++# D: 94.50 MHz, H: 68.677 kHz, V: 85.00 Hz
++ geometry 1024 768 1024 768 32
++ timings 10582 208 48 36 1 96 3 hsync high vsync high endmode
++#
++# 1024x768, 100 Hz, Non-Interlaced (110.0 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1024 768
++# Scan Frequency 79.023 kHz 99.78 Hz
++# Sync Width 0.800 us 0.101 ms
++# 11 chars 8 lines
++# Front Porch 0.000 us 0.000 ms
++# 0 chars 0 lines
++# Back Porch 2.545 us 0.202 ms
++# 35 chars 16 lines
++# Active Time 9.309 us 9.719 ms
++# 128 chars 768 lines
++# Blank Time 3.345 us 0.304 ms
++# 46 chars 24 lines
++# Polarity negative negative
++#
++ mode "1024x768-100"
++# D: 113.3 MHz, H: 79.023 kHz, V: 99.78 Hz
++ geometry 1024 768 1024 768 32
++ timings 8825 280 0 16 0 88 8 endmode mode "1152x720-60"
++# D: 66.750 MHz, H: 44.859 kHz, V: 60.00 Hz
++ geometry 1152 720 1152 720 32 timings 14981 168 56 19 3 112 6 endmode
++#
++# 1152x864, 75 Hz, Non-Interlaced (110.0 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1152 864
++# Scan Frequency 75.137 kHz 74.99 Hz
++# Sync Width 1.309 us 0.106 ms
++# 18 chars 8 lines
++# Front Porch 0.245 us 0.599 ms
++# 3 chars 45 lines
++# Back Porch 1.282 us 1.132 ms
++# 18 chars 85 lines
++# Active Time 10.473 us 11.499 ms
++# 144 chars 864 lines
++# Blank Time 2.836 us 1.837 ms
++# 39 chars 138 lines
++# Polarity positive positive
++#
++ mode "1152x864-75"
++# D: 110.0 MHz, H: 75.137 kHz, V: 74.99 Hz
++ geometry 1152 864 1152 864 32
++ timings 9259 144 24 85 45 144 8
++ hsync high vsync high endmode mode "1200x720-60"
++# D: 70.184 MHz, H: 44.760 kHz, V: 60.00 Hz
++ geometry 1200 720 1200 720 32
++ timings 14253 184 28 22 1 128 3 endmode mode "1280x600-60"
++# D: 61.503 MHz, H: 37.320 kHz, V: 60.00 Hz
++ geometry 1280 600 1280 600 32
++ timings 16260 184 28 18 1 128 3 endmode mode "1280x720-50"
++# D: 60.466 MHz, H: 37.050 kHz, V: 50.00 Hz
++ geometry 1280 720 1280 720 32
++ timings 16538 176 48 17 1 128 3 endmode mode "1280x768-50"
++# D: 65.178 MHz, H: 39.550 kHz, V: 50.00 Hz
++ geometry 1280 768 1280 768 32 timings 15342 184 28 19 1 128 3 endmode
++#
++# 1280x768, 60 Hz, Non-Interlaced (80.136 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 768
++# Scan Frequency 47.700 kHz 60.00 Hz
++# Sync Width 1.697 us 0.063 ms
++# 17 chars 3 lines
++# Front Porch 0.799 us 0.021 ms
++# 8 chars 1 lines
++# Back Porch 2.496 us 0.483 ms
++# 25 chars 23 lines
++# Active Time 15.973 us 16.101 ms
++# 160 chars 768 lines
++# Blank Time 4.992 us 0.566 ms
++# 50 chars 27 lines
++# Polarity positive positive
++#
++ mode "1280x768-60"
++# D: 80.13 MHz, H: 47.700 kHz, V: 60.00 Hz
++ geometry 1280 768 1280 768 32
++ timings 12480 200 48 23 1 126 3 hsync high vsync high endmode
++#
++# 1280x800, 60 Hz, Non-Interlaced (83.375 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 800
++# Scan Frequency 49.628 kHz 60.00 Hz
++# Sync Width 1.631 us 60.450 us
++# 17 chars 3 lines
++# Front Porch 0.768 us 20.15 us
++# 8 chars 1 lines
++# Back Porch 2.399 us 0.483 ms
++# 25 chars 24 lines
++# Active Time 15.352 us 16.120 ms
++# 160 chars 800 lines
++# Blank Time 4.798 us 0.564 ms
++# 50 chars 28 lines
++# Polarity negtive positive
++#
++ mode "1280x800-60"
++# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz
++ geometry 1280 800 1280 800 32 timings 11994 200 72 22 3 128 6 endmode
++#
++# 1280x960, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 960
++# Scan Frequency 60.000 kHz 60.00 Hz
++# Sync Width 1.037 us 0.050 ms
++# 14 chars 3 lines
++# Front Porch 0.889 us 0.017 ms
++# 12 chars 1 lines
++# Back Porch 2.889 us 0.600 ms
++# 39 chars 36 lines
++# Active Time 11.852 us 16.000 ms
++# 160 chars 960 lines
++# Blank Time 4.815 us 0.667 ms
++# 65 chars 40 lines
++# Polarity positive positive
++#
++ mode "1280x960-60"
++# D: 108.00 MHz, H: 60.000 kHz, V: 60.00 Hz
++ geometry 1280 960 1280 960 32
++ timings 9259 312 96 36 1 112 3 hsync high vsync high endmode
++#
++# 1280x1024, 60 Hz, Non-Interlaced (108.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 1024
++# Scan Frequency 63.981 kHz 60.02 Hz
++# Sync Width 1.037 us 0.047 ms
++# 14 chars 3 lines
++# Front Porch 0.444 us 0.015 ms
++# 6 chars 1 lines
++# Back Porch 2.297 us 0.594 ms
++# 31 chars 38 lines
++# Active Time 11.852 us 16.005 ms
++# 160 chars 1024 lines
++# Blank Time 3.778 us 0.656 ms
++# 51 chars 42 lines
++# Polarity positive positive
++#
++ mode "1280x1024-60"
++# D: 108.00 MHz, H: 63.981 kHz, V: 60.02 Hz
++ geometry 1280 1024 1280 1024 32
++ timings 9260 248 48 38 1 112 3 hsync high vsync high endmode
++#
++# 1280x1024, 75 Hz, Non-Interlaced (135.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 1024
++# Scan Frequency 79.976 kHz 75.02 Hz
++# Sync Width 1.067 us 0.038 ms
++# 18 chars 3 lines
++# Front Porch 0.119 us 0.012 ms
++# 2 chars 1 lines
++# Back Porch 1.837 us 0.475 ms
++# 31 chars 38 lines
++# Active Time 9.481 us 12.804 ms
++# 160 chars 1024 lines
++# Blank Time 3.022 us 0.525 ms
++# 51 chars 42 lines
++# Polarity positive positive
++#
++ mode "1280x1024-75"
++# D: 135.00 MHz, H: 79.976 kHz, V: 75.02 Hz
++ geometry 1280 1024 1280 1024 32
++ timings 7408 248 16 38 1 144 3 hsync high vsync high endmode
++#
++# 1280x1024, 85 Hz, Non-Interlaced (157.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 1024
++# Scan Frequency 91.146 kHz 85.02 Hz
++# Sync Width 1.016 us 0.033 ms
++# 20 chars 3 lines
++# Front Porch 0.406 us 0.011 ms
++# 8 chars 1 lines
++# Back Porch 1.422 us 0.483 ms
++# 28 chars 44 lines
++# Active Time 8.127 us 11.235 ms
++# 160 chars 1024 lines
++# Blank Time 2.844 us 0.527 ms
++# 56 chars 48 lines
++# Polarity positive positive
++#
++ mode "1280x1024-85"
++# D: 157.50 MHz, H: 91.146 kHz, V: 85.02 Hz
++ geometry 1280 1024 1280 1024 32
++ timings 6349 224 64 44 1 160 3
++ hsync high vsync high endmode mode "1440x900-60"
++# D: 106.500 MHz, H: 55.935 kHz, V: 60.00 Hz
++ geometry 1440 900 1440 900 32
++ timings 9390 232 80 25 3 152 6
++ hsync high vsync high endmode mode "1440x900-75"
++# D: 136.750 MHz, H: 70.635 kHz, V: 75.00 Hz
++ geometry 1440 900 1440 900 32
++ timings 7315 248 96 33 3 152 6 hsync high vsync high endmode
++#
++# 1440x1050, 60 Hz, Non-Interlaced (125.10 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1440 1050
++# Scan Frequency 65.220 kHz 60.00 Hz
++# Sync Width 1.204 us 0.046 ms
++# 19 chars 3 lines
++# Front Porch 0.760 us 0.015 ms
++# 12 chars 1 lines
++# Back Porch 1.964 us 0.495 ms
++# 31 chars 33 lines
++# Active Time 11.405 us 16.099 ms
++# 180 chars 1050 lines
++# Blank Time 3.928 us 0.567 ms
++# 62 chars 37 lines
++# Polarity positive positive
++#
++ mode "1440x1050-60"
++# D: 125.10 MHz, H: 65.220 kHz, V: 60.00 Hz
++ geometry 1440 1050 1440 1050 32
++ timings 7993 248 96 33 1 152 3
++ hsync high vsync high endmode mode "1600x900-60"
++# D: 118.250 MHz, H: 55.990 kHz, V: 60.00 Hz
++ geometry 1600 900 1600 900 32
++ timings 8415 256 88 26 3 168 5 endmode mode "1600x1024-60"
++# D: 136.358 MHz, H: 63.600 kHz, V: 60.00 Hz
++ geometry 1600 1024 1600 1024 32 timings 7315 272 104 32 1 168 3 endmode
++#
++# 1600x1200, 60 Hz, Non-Interlaced (156.00 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1600 1200
++# Scan Frequency 76.200 kHz 60.00 Hz
++# Sync Width 1.026 us 0.105 ms
++# 20 chars 8 lines
++# Front Porch 0.205 us 0.131 ms
++# 4 chars 10 lines
++# Back Porch 1.636 us 0.682 ms
++# 32 chars 52 lines
++# Active Time 10.256 us 15.748 ms
++# 200 chars 1200 lines
++# Blank Time 2.872 us 0.866 ms
++# 56 chars 66 lines
++# Polarity negative negative
++#
++ mode "1600x1200-60"
++# D: 156.00 MHz, H: 76.200 kHz, V: 60.00 Hz
++ geometry 1600 1200 1600 1200 32 timings 6172 256 32 52 10 160 8 endmode
++#
++# 1600x1200, 75 Hz, Non-Interlaced (202.50 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1600 1200
++# Scan Frequency 93.750 kHz 75.00 Hz
++# Sync Width 0.948 us 0.032 ms
++# 24 chars 3 lines
++# Front Porch 0.316 us 0.011 ms
++# 8 chars 1 lines
++# Back Porch 1.501 us 0.491 ms
++# 38 chars 46 lines
++# Active Time 7.901 us 12.800 ms
++# 200 chars 1200 lines
++# Blank Time 2.765 us 0.533 ms
++# 70 chars 50 lines
++# Polarity positive positive
++#
++ mode "1600x1200-75"
++# D: 202.50 MHz, H: 93.750 kHz, V: 75.00 Hz
++ geometry 1600 1200 1600 1200 32
++ timings 4938 304 64 46 1 192 3
++ hsync high vsync high endmode mode "1680x1050-60"
++# D: 146.250 MHz, H: 65.290 kHz, V: 59.954 Hz
++ geometry 1680 1050 1680 1050 32
++ timings 6814 280 104 30 3 176 6
++ hsync high vsync high endmode mode "1680x1050-75"
++# D: 187.000 MHz, H: 82.306 kHz, V: 74.892 Hz
++ geometry 1680 1050 1680 1050 32
++ timings 5348 296 120 40 3 176 6
++ hsync high vsync high endmode mode "1792x1344-60"
++# D: 202.975 MHz, H: 83.460 kHz, V: 60.00 Hz
++ geometry 1792 1344 1792 1344 32
++ timings 4902 320 128 43 1 192 3
++ hsync high vsync high endmode mode "1856x1392-60"
++# D: 218.571 MHz, H: 86.460 kHz, V: 60.00 Hz
++ geometry 1856 1392 1856 1392 32
++ timings 4577 336 136 45 1 200 3
++ hsync high vsync high endmode mode "1920x1200-60"
++# D: 193.250 MHz, H: 74.556 kHz, V: 60.00 Hz
++ geometry 1920 1200 1920 1200 32
++ timings 5173 336 136 36 3 200 6
++ hsync high vsync high endmode mode "1920x1440-60"
++# D: 234.000 MHz, H:90.000 kHz, V: 60.00 Hz
++ geometry 1920 1440 1920 1440 32
++ timings 4274 344 128 56 1 208 3
++ hsync high vsync high endmode mode "1920x1440-75"
++# D: 297.000 MHz, H:112.500 kHz, V: 75.00 Hz
++ geometry 1920 1440 1920 1440 32
++ timings 3367 352 144 56 1 224 3
++ hsync high vsync high endmode mode "2048x1536-60"
++# D: 267.250 MHz, H: 95.446 kHz, V: 60.00 Hz
++ geometry 2048 1536 2048 1536 32
++ timings 3742 376 152 49 3 224 4 hsync high vsync high endmode
++#
++# 1280x720, 60 Hz, Non-Interlaced (74.481 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1280 720
++# Scan Frequency 44.760 kHz 60.00 Hz
++# Sync Width 1.826 us 67.024 ms
++# 17 chars 3 lines
++# Front Porch 0.752 us 22.341 ms
++# 7 chars 1 lines
++# Back Porch 2.578 us 491.510 ms
++# 24 chars 22 lines
++# Active Time 17.186 us 16.086 ms
++# 160 chars 720 lines
++# Blank Time 5.156 us 0.581 ms
++# 48 chars 26 lines
++# Polarity negative negative
++#
++ mode "1280x720-60"
++# D: 74.481 MHz, H: 44.760 kHz, V: 60.00 Hz
++ geometry 1280 720 1280 720 32 timings 13426 192 64 22 1 136 3 endmode
++#
++# 1920x1080, 60 Hz, Non-Interlaced (172.798 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1920 1080
++# Scan Frequency 67.080 kHz 60.00 Hz
++# Sync Width 1.204 us 44.723 ms
++# 26 chars 3 lines
++# Front Porch 0.694 us 14.908 ms
++# 15 chars 1 lines
++# Back Porch 1.898 us 506.857 ms
++# 41 chars 34 lines
++# Active Time 11.111 us 16.100 ms
++# 240 chars 1080 lines
++# Blank Time 3.796 us 0.566 ms
++# 82 chars 38 lines
++# Polarity negative negative
++#
++ mode "1920x1080-60"
++# D: 74.481 MHz, H: 67.080 kHz, V: 60.00 Hz
++ geometry 1920 1080 1920 1080 32 timings 5787 328 120 34 1 208 3 endmode
++#
++# 1400x1050, 60 Hz, Non-Interlaced (122.61 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1400 1050
++# Scan Frequency 65.218 kHz 59.99 Hz
++# Sync Width 1.037 us 0.047 ms
++# 19 chars 3 lines
++# Front Porch 0.444 us 0.015 ms
++# 11 chars 1 lines
++# Back Porch 1.185 us 0.188 ms
++# 30 chars 33 lines
++# Active Time 12.963 us 16.411 ms
++# 175 chars 1050 lines
++# Blank Time 2.667 us 0.250 ms
++# 60 chars 37 lines
++# Polarity negative positive
++#
++ mode "1400x1050-60"
++# D: 122.750 MHz, H: 65.317 kHz, V: 59.99 Hz
++ geometry 1400 1050 1408 1050 32
++ timings 8214 232 88 32 3 144 4 endmode mode "1400x1050-75"
++# D: 156.000 MHz, H: 82.278 kHz, V: 74.867 Hz
++ geometry 1400 1050 1408 1050 32 timings 6410 248 104 42 3 144 4 endmode
++#
++# 1366x768, 60 Hz, Non-Interlaced (85.86 MHz dotclock)
++#
++# Horizontal Vertical
++# Resolution 1366 768
++# Scan Frequency 47.700 kHz 60.00 Hz
++# Sync Width 1.677 us 0.063 ms
++# 18 chars 3 lines
++# Front Porch 0.839 us 0.021 ms
++# 9 chars 1 lines
++# Back Porch 2.516 us 0.482 ms
++# 27 chars 23 lines
++# Active Time 15.933 us 16.101 ms
++# 171 chars 768 lines
++# Blank Time 5.031 us 0.566 ms
++# 54 chars 27 lines
++# Polarity negative positive
++#
++ mode "1360x768-60"
++# D: 84.750 MHz, H: 47.720 kHz, V: 60.00 Hz
++ geometry 1360 768 1360 768 32
++ timings 11799 208 72 22 3 136 5 endmode mode "1366x768-60"
++# D: 85.86 MHz, H: 47.700 kHz, V: 60.00 Hz
++ geometry 1366 768 1366 768 32
++ timings 11647 216 72 23 1 144 3 endmode mode "1366x768-50"
++# D: 69,924 MHz, H: 39.550 kHz, V: 50.00 Hz
++ geometry 1366 768 1366 768 32 timings 14301 200 56 19 1 144 3 endmode
+--- /dev/null
++++ b/drivers/video/viafb/via_i2c.c
+@@ -0,0 +1,469 @@
++/*
++ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
++ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
++
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published
++ * by the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
++ * the implied warranty of MERCHANTABILITY or FITNESS FOR
++ * A PARTICULAR PURPOSE.See the GNU General Public License
++ * for more details.
++
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++#include "global.h"
++
++/* i2c delay for microsecond*/
++void delays(int count)
++{
++ u8 data;
++ while (count--) {
++ /* delay 1 us */
++ data = inb(DELAYPORT);
++ data = inb(DELAYPORT);
++ data = inb(DELAYPORT);
++ data = inb(DELAYPORT);
++ data = inb(DELAYPORT);
++ }
++
++}
++
++/* Write I2C BUS SDA And SCL*/
++void i2cWriteSdaScl(u8 sda, u8 scl)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AMR) {
++
++ data = ((scl << 1) | sda) << 4;
++ /* enable I2C port */
++ data = data | BIT0;
++
++ port_addr = I2CPORT;
++ /* Write Register Value */
++ write_reg(I2CPORTINDEX, port_addr, data);
++ } else {
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ data = ((scl << 1) | sda) << 4;
++ /* enable GPIO write port */
++ data = data | (BIT6 + BIT7);
++ port_addr = GPIOPORT;
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++ }
++}
++
++void i2cWriteScl(u8 scl)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AMR) {
++
++ data = (scl << 1) << 4;
++ /* enable I2C port */
++ data = data | BIT0;
++
++ port_addr = I2CPORT;
++ /* Write Register Value */
++ write_reg(I2CPORTINDEX, port_addr, data);
++ } else {
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ data = (scl << 1) << 4;
++ /* enable GPIO write clock */
++ data = data & 0xBF;
++ port_addr = GPIOPORT;
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++ }
++}
++
++void i2cReadSdaScl(u8 *pSda, u8 *pScl)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AMR) {
++ port_addr = I2CPORT;
++ data = read_reg(port_addr, I2CPORTINDEX);
++ *pSda = (data >> 2) & BIT0; /* get sda */
++ *pScl = (data >> 3) & BIT0; /* get scl */
++ } else {
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ *pSda = (data >> 2) & BIT0; /* get sda */
++ *pScl = (data >> 3) & BIT0; /* get scl */
++ }
++ }
++}
++
++void i2cWriteSdaSclDelay(u8 sda, u8 scl)
++{
++ i2cWriteSdaScl(sda, scl);
++ delays(16); /* Wait 16 uS */
++}
++
++void i2cStartSignal(void)
++{
++ i2cWriteSdaSclDelay(1, 1);
++ i2cWriteSdaSclDelay(0, 1);
++ i2cWriteSdaSclDelay(0, 0);
++}
++
++void i2cStopSignal(void)
++{
++ u8 data;
++ u16 port_addr;
++
++ i2cWriteSdaSclDelay(0, 0);
++ i2cWriteSdaSclDelay(0, 1);
++ i2cWriteSdaSclDelay(1, 1);
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ /* disable GPIO write port */
++ data = 0x3c;
++ port_addr = GPIOPORT;
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++ delays(2);
++
++}
++
++void disableSdaGPIO(void)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ /* disable GPIO write port */
++ data = data & (~BIT6);
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++void enableSdaGPIO(void)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ /* disable GPIO write port */
++ data = data | (BIT6);
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++void writeSclGPIO(u8 scl)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ data = data & (~BIT5);
++ /* write data to clock */
++ data = (data | (scl << 5)) & (~BIT6);
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++void writeSdaGPIO(u8 sda)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++
++ data = data & (~BIT4);
++ /* write data to clock */
++ data = (data | (sda << 4)) & (~BIT7);
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++void enableGPIO(void)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ /* enable GPIO write port */
++ data = data | (BIT4 + BIT5 + BIT6 + BIT7);
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++void releaseGPIO(void)
++{
++ u8 data;
++ u16 port_addr;
++
++ if (chip_info.chip_on_slot == PORT_ON_AGP) {
++ port_addr = GPIOPORT;
++ port_addr = port_addr + 1;
++
++ data = read_reg(port_addr, GPIOPORTINDEX);
++ /* disable GPIO write port */
++ data = data & 0x3c;
++ port_addr = GPIOPORT;
++ /* Write Register Value */
++ write_reg(GPIOPORTINDEX, port_addr, data);
++ }
++}
++
++int i2CWaitForSlave(void)
++{
++ int time_out = 20000;
++ u8 sda, scl;
++
++ while (time_out--) {
++ i2cReadSdaScl(&sda, &scl);
++ if (scl)
++ return (OK); /* Successful stall */
++ delays(1); /* wait 1 uS */
++ }
++ return (FAIL); /* Slave fail */
++}
++
++int i2cOutByte(u8 data)
++{
++ u8 sda, scl;
++ u8 out_byte;
++ int bit_count = 8;
++ int status;
++
++ out_byte = data;
++ while (bit_count--) {
++ sda = (out_byte >> 7) & 1; /* Load MSB */
++ out_byte = out_byte << 1; /* next bit. */
++ i2cWriteSdaSclDelay(sda, 0);
++ i2cWriteSdaSclDelay(sda, 1);
++
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (status);
++ i2cWriteSdaSclDelay(sda, 0);
++
++ }
++
++ if ((chip_info.chip_on_slot == PORT_ON_AGP)) {
++
++ writeSclGPIO(0);
++ disableSdaGPIO();
++ delays(2);
++ writeSclGPIO(1);
++ delays(2);
++ i2cReadSdaScl(&sda, &scl);
++ writeSclGPIO(0);
++ delays(2);
++ if (sda == 0)
++ status = OK;
++ else
++ status = FAIL;
++
++ } else {
++ i2cWriteSdaSclDelay(1, 0);
++ i2cWriteSdaSclDelay(1, 1);
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (status);
++
++ i2cReadSdaScl(&sda, &scl);
++ if (sda == 0) {
++ i2cWriteSdaSclDelay(1, 0);
++ status = OK;
++ } else {
++
++ i2cWriteSdaSclDelay(1, 0);
++ status = FAIL;
++ }
++ }
++ return (status);
++}
++
++int i2cInputByte(u8 *pInByte, int ack)
++{
++
++ int bit_count = 8;
++ u8 sda, scl;
++ u8 data = 0;
++ int status;
++
++ disableSdaGPIO();
++
++ while (bit_count--) {
++ if ((chip_info.chip_on_slot == PORT_ON_AGP)) {
++
++ writeSclGPIO(1);
++ delays(2);
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (FAIL);
++ i2cReadSdaScl(&sda, &scl);
++ data = data << 1;
++ data |= sda;
++ writeSclGPIO(0);
++ delays(2);
++
++ } else {
++ i2cWriteSdaSclDelay(1, 1);
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (FAIL);
++ i2cReadSdaScl(&sda, &scl);
++ data = data << 1;
++ data |= sda;
++ i2cWriteSdaSclDelay(1, 0);
++ }
++ }
++ *pInByte = data;
++
++ if (ack) {
++ i2cWriteSdaSclDelay(0, 0);
++ i2cWriteSdaSclDelay(0, 1);
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (status);
++ i2cWriteSdaSclDelay(0, 0);
++ } else {
++ i2cWriteSdaSclDelay(1, 0);
++ i2cWriteSdaSclDelay(1, 1);
++ status = i2CWaitForSlave();
++ if (status == FAIL)
++ return (status);
++ }
++ i2cWriteSdaSclDelay(1, 0);
++
++ return (OK);
++}
++
++int i2cReadByte(u8 slave_addr, u8 index, u8 *pData)
++{
++
++ int status;
++
++ i2cStartSignal();
++
++ status = i2cOutByte(slave_addr);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ status = i2cOutByte(index);
++
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++
++ i2cStartSignal();
++ status = i2cOutByte(slave_addr | BIT0);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ status = i2cInputByte(pData, 0);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++
++ i2cStopSignal();
++ return (OK);
++}
++
++int i2cWriteByte(u8 slave_addr, u8 index, u8 data)
++{
++
++ int status;
++
++ i2cStartSignal();
++ status = i2cOutByte(slave_addr);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ status = i2cOutByte(index);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ status = i2cOutByte(data);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ i2cStopSignal();
++ return (OK);
++}
++
++int i2cReadBytes(u8 slave_addr, u8 index, u8 *buff, int buff_len)
++{
++
++ int status, i;
++
++ i2cStartSignal();
++
++ status = i2cOutByte(slave_addr);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++
++ status = i2cOutByte(index);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++
++ i2cStartSignal();
++ status = i2cOutByte(slave_addr | BIT0);
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++
++ for (i = 0; i < buff_len; i++) {
++ if (buff_len == 1)
++ status = i2cInputByte(buff, 0); /* send NACK */
++ else if (i < buff_len - 1)
++ status = i2cInputByte(buff, 1); /* send ACK */
++ else
++ status = i2cInputByte(buff, 0); /* send NACK */
++ if (status == FAIL) {
++ i2cStopSignal();
++ return (FAIL);
++ }
++ buff++;
++ }
++
++ i2cStopSignal();
++ return (OK);
++}
+--- /dev/null
++++ b/drivers/video/viafb/via_i2c.h
+@@ -0,0 +1,51 @@
++/*
++ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
++ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
++
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published
++ * by the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
++ * the implied warranty of MERCHANTABILITY or FITNESS FOR
++ * A PARTICULAR PURPOSE.See the GNU General Public License
++ * for more details.
++
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++#ifndef __VIA_I2C_H__
++#define __VIA_I2C_H__
++
++#define I2CPORT 0x3c4
++#define I2CPORTINDEX 0x31
++#define GPIOPORT 0x3C4
++#define GPIOPORTINDEX 0x2C
++#define I2C_BUS 1
++#define GPIO_BUS 2
++#define DELAYPORT 0x3C3
++
++void delays(int count);
++void i2cWriteSdaScl(u8 sda, u8 scl);
++void i2cWriteScl(u8 scl);
++void i2cReadSdaScl(u8 *pSda, u8 *pScl);
++void i2cWriteSdaSclDelay(u8 sda, u8 scl);
++void i2cStartSignal(void);
++void i2cStopSignal(void);
++void disableSdaGPIO(void);
++void enableSdaGPIO(void);
++void writeSclGPIO(u8 scl);
++void writeSdaGPIO(u8 sda);
++void enableGPIO(void);
++void releaseGPIO(void);
++int i2CWaitForSlave(void);
++int i2cOutByte(u8 data);
++int i2cInputByte(u8 *pInByte, int ack);
++int i2cReadByte(u8 slave_addr, u8 index, u8 *pData);
++int i2cWriteByte(u8 slave_addr, u8 index, u8 data);
++int i2cReadBytes(u8 slave_addr, u8 index, u8 *buff, int buff_len);
++#endif /* __VIA_I2C_H__ */
+--- /dev/null
+++ b/drivers/video/viafb/viamode.c
@@ -0,0 +1,1086 @@
+/*
@@ -15854,6 +15514,346 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+extern struct VPITTable VPIT;
+#endif /* __VIAMODE_H__ */
--- /dev/null
++++ b/drivers/video/viafb/via_utility.c
+@@ -0,0 +1,299 @@
++/*
++ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
++ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
++
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published
++ * by the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
++ * the implied warranty of MERCHANTABILITY or FITNESS FOR
++ * A PARTICULAR PURPOSE.See the GNU General Public License
++ * for more details.
++
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++#include "global.h"
++
++void get_device_support_state(u32 *support_state)
++{
++ *support_state = CRT_Device;
++
++ if (chip_info.tmds_chip_info.tmds_chip_name == VT1632_TMDS)
++ *support_state |= DVI_Device;
++
++ if (chip_info.lvds_chip_info.lvds_chip_name == VT1631_LVDS)
++ *support_state |= LCD_Device;
++}
++
++void get_device_connect_state(u32 *connect_state)
++{
++ bool mobile = FALSE;
++
++ *connect_state = CRT_Device;
++
++ if (dvi_sense())
++ *connect_state |= DVI_Device;
++
++ lcd_get_mobile_state(&mobile);
++ if (mobile)
++ *connect_state |= LCD_Device;
++}
++
++bool lcd_get_support_expand_state(u32 xres, u32 yres)
++{
++ unsigned int support_state = 0;
++
++ switch (lcd_panel_id) {
++ case LCD_PANEL_ID0_640X480:
++ if ((xres < 640) && (yres < 480))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID1_800X600:
++ if ((xres < 800) && (yres < 600))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID2_1024X768:
++ if ((xres < 1024) && (yres < 768))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID3_1280X768:
++ if ((xres < 1280) && (yres < 768))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID4_1280X1024:
++ if ((xres < 1280) && (yres < 1024))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID5_1400X1050:
++ if ((xres < 1400) && (yres < 1050))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID6_1600X1200:
++ if ((xres < 1600) && (yres < 1200))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID7_1366X768:
++ if ((xres < 1366) && (yres < 768))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID8_1024X600:
++ if ((xres < 1024) && (yres < 600))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_ID9_1280X800:
++ if ((xres < 1280) && (yres < 800))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_IDA_800X480:
++ if ((xres < 800) && (yres < 480))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_IDB_1360X768:
++ if ((xres < 1360) && (yres < 768))
++ support_state = TRUE;
++ break;
++
++ case LCD_PANEL_IDC_480X640:
++ if ((xres < 480) && (yres < 640))
++ support_state = TRUE;
++ break;
++
++ default:
++ support_state = FALSE;
++ break;
++ }
++
++ return support_state;
++}
++
++/*====================================================================*/
++/* Gamma Function Implementation*/
++/*====================================================================*/
++
++void set_gamma_table(int bpp, unsigned int *gamma_table)
++{
++ int i, sr1a;
++ int active_device_amount = 0;
++ int device_status = DeviceStatus;
++ unsigned char color_r[256];
++ unsigned char color_g[256];
++ unsigned char color_b[256];
++
++ for (i = 0; i < sizeof(DeviceStatus) * 8; i++) {
++ if (device_status & 1)
++ active_device_amount++;
++ device_status >>= 1;
++ }
++
++ for (i = 0; i < 256; i++) {
++ color_r[i] = gamma_table[i] >> 16;
++ color_g[i] = (gamma_table[i] >> 8) & 0x00FF;
++ color_b[i] = gamma_table[i] & 0x000000FF;
++ }
++
++ /* 8 bpp mode can't adjust gamma */
++ if (!(bpp == 8)) {
++ /* Enable Gamma */
++ switch (chip_info.gfx_chip_name) {
++ case UNICHROME_CLE266:
++ case UNICHROME_K400:
++ write_reg_mask(SR16, VIASR, 0x80, BIT7);
++ break;
++
++ case UNICHROME_K800:
++ case UNICHROME_PM800:
++ case UNICHROME_CN700:
++ case UNICHROME_CX700:
++ case UNICHROME_K8M890:
++ case UNICHROME_P4M890:
++ case UNICHROME_P4M900:
++ write_reg_mask(CR33, VIACR, 0x80, BIT7);
++ break;
++ }
++ sr1a = (unsigned int)read_reg(VIASR, SR1A);
++ write_reg_mask(SR1A, VIASR, 0x0, BIT0);
++
++ /* Fill IGA1 Gamma Table */
++ outb(0, LUT_INDEX_WRITE);
++ for (i = 0; i < 256; i++) {
++ outb(color_r[i], LUT_DATA);
++ outb(color_g[i], LUT_DATA);
++ outb(color_b[i], LUT_DATA);
++ }
++
++ /* If adjust Gamma value in SAMM, fill IGA1,
++ IGA2 Gamma table simultanous. */
++ /* Switch to IGA2 Gamma Table */
++ if ((active_device_amount > 1) &&
++ !((chip_info.gfx_chip_name == UNICHROME_CLE266) &&
++ (chip_info.gfx_chip_revision < 15))) {
++ write_reg_mask(SR1A, VIASR, 0x01, BIT0);
++ write_reg_mask(CR6A, VIACR, 0x02, BIT1);
++
++ /* Fill IGA2 Gamma Table */
++ outb(0, LUT_INDEX_WRITE);
++ for (i = 0; i < 256; i++) {
++ outb(color_r[i], LUT_DATA);
++ outb(color_g[i], LUT_DATA);
++ outb(color_b[i], LUT_DATA);
++ }
++ }
++ write_reg(SR1A, VIASR, sr1a);
++ }
++}
++
++void get_gamma_table(unsigned int *gamma_table)
++{
++ unsigned char color_r[256];
++ unsigned char color_g[256];
++ unsigned char color_b[256];
++ unsigned char sr1a = 0;
++ int i;
++
++ /* Enable Gamma */
++ switch (chip_info.gfx_chip_name) {
++ case UNICHROME_CLE266:
++ case UNICHROME_K400:
++ write_reg_mask(SR16, VIASR, 0x80, BIT7);
++ break;
++
++ case UNICHROME_K800:
++ case UNICHROME_PM800:
++ case UNICHROME_CN700:
++ case UNICHROME_CX700:
++ case UNICHROME_K8M890:
++ case UNICHROME_P4M890:
++ case UNICHROME_P4M900:
++ write_reg_mask(CR33, VIACR, 0x80, BIT7);
++ break;
++ }
++ sr1a = read_reg(VIASR, SR1A);
++ write_reg_mask(SR1A, VIASR, 0x0, BIT0);
++
++ /* Reading gamma table to get color value */
++ outb(0, LUT_INDEX_READ);
++ for (i = 0; i < 256; i++) {
++ color_r[i] = inb(LUT_DATA);
++ color_g[i] = inb(LUT_DATA);
++ color_b[i] = inb(LUT_DATA);
++ gamma_table[i] =
++ ((((u32) color_r[i]) << 16) |
++ (((u16) color_g[i]) << 8)) | color_b[i];
++ }
++ write_reg(SR1A, VIASR, sr1a);
++}
++
++void get_gamma_support_state(int bpp, unsigned int *support_state)
++{
++ if (bpp == 8)
++ *support_state = None_Device;
++ else
++ *support_state = CRT_Device | DVI_Device | LCD_Device;
++}
++
++int input_parameter_converter(int parameter_value)
++{
++ int result;
++
++ switch (parameter_value) {
++ case 1:
++ result = 0x01;
++ break;
++
++ case 2:
++ result = 0x02;
++ break;
++
++ case 3:
++ result = 0x04;
++ break;
++
++ case 4:
++ result = 0x08;
++ break;
++
++ case 5:
++ result = 0x10;
++ break;
++
++ case 6:
++ result = 0x20;
++ break;
++
++ case 7:
++ result = 0x40;
++ break;
++
++ case 8:
++ result = 0x80;
++ break;
++
++ case 9:
++ result = 0x100;
++ break;
++
++ default:
++ result = 0x01;
++ break;
++ }
++
++ return result;
++}
+--- /dev/null
++++ b/drivers/video/viafb/via_utility.h
+@@ -0,0 +1,35 @@
++/*
++ * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
++ * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
++
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published
++ * by the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
++ * the implied warranty of MERCHANTABILITY or FITNESS FOR
++ * A PARTICULAR PURPOSE.See the GNU General Public License
++ * for more details.
++
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++#ifndef __VIAUTILITY_H__
++#define __VIAUTILITY_H__
++
++/* These functions are used to get infomation about device's state */
++void get_device_support_state(u32 *support_state);
++void get_device_connect_state(u32 *connect_state);
++bool lcd_get_support_expand_state(u32 xres, u32 yres);
++
++/* These function are used to access gamma table */
++void set_gamma_table(int bpp, unsigned int *gamma_table);
++void get_gamma_table(unsigned int *gamma_table);
++void get_gamma_support_state(int bpp, unsigned int *support_state);
++int input_parameter_converter(int parameter_value);
++
++#endif /* __VIAUTILITY_H__ */
+--- /dev/null
+++ b/drivers/video/viafb/vt1636.c
@@ -0,0 +1,317 @@
+/*
diff --git a/ldp/net-add-alacritech-slicoss-driver.patch b/ldp/net-add-alacritech-slicoss-driver.patch
index 9528f9e51a2d7e..5c70df011d9381 100644
--- a/ldp/net-add-alacritech-slicoss-driver.patch
+++ b/ldp/net-add-alacritech-slicoss-driver.patch
@@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
-@@ -2366,6 +2366,20 @@ config ATL1
+@@ -2352,6 +2352,20 @@ config ATL1
To compile this driver as a module, choose M here. The module
will be called atl1.
diff --git a/ldp/net-add-et131x-driver.patch b/ldp/net-add-et131x-driver.patch
index dd839001d8ca16..132368a87ada92 100644
--- a/ldp/net-add-et131x-driver.patch
+++ b/ldp/net-add-et131x-driver.patch
@@ -14367,7 +14367,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+ et131x_netdev.o
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
-@@ -2031,6 +2031,24 @@ config E1000E
+@@ -2017,6 +2017,24 @@ config E1000E
config E1000E_ENABLED
def_bool E1000E != n
diff --git a/version b/version
index ef9416a9223cef..8f8ae4abb1ab9d 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.6.26-rc1-git6
+2.6.26-rc1-git7