 3rdparty/viahss/Kconfig     |   14 +++++++
 3rdparty/viahss/Makefile    |    3 +
 3rdparty/viahss/README.html |   68 ++++++++++++++++++++++++++++++++++++
 3rdparty/viahss/viahss.c    |   83 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 168 insertions(+)
diff -Nurp linux-2.6.37/3rdparty/viahss/Kconfig linux-2.6.37.3rdparty/3rdparty/viahss/Kconfig
--- linux-2.6.37/3rdparty/viahss/Kconfig	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.37.3rdparty/3rdparty/viahss/Kconfig	2003-12-01 01:53:51.000000000 +0200
@@ -0,0 +1,14 @@
+config VIAHSS
+	tristate "VIA High Speed Serial"
+	depends on SERIAL_CORE && m
+	---help---
+	  VIA High Speed Serial is a little kernel module (1 KB) which enables
+	  high speed serial port modes of VIA VT82C686A or VT82C686B
+	  southbridge-equipped motherboards. With this module, you can use the
+	  serial port at 230400 bit/s so that you can get the full 128000 bit/s
+	  from ISDN-TA. The module has been tested with both 686A and 686B
+	  chipsets.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called viahss.
+
diff -Nurp linux-2.6.37/3rdparty/viahss/Makefile linux-2.6.37.3rdparty/3rdparty/viahss/Makefile
--- linux-2.6.37/3rdparty/viahss/Makefile	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.37.3rdparty/3rdparty/viahss/Makefile	2003-12-01 01:43:23.000000000 +0200
@@ -0,0 +1,3 @@
+
+obj-$(CONFIG_VIAHSS) += viahss.o
+    
diff -Nurp linux-2.6.37/3rdparty/viahss/README.html linux-2.6.37.3rdparty/3rdparty/viahss/README.html
--- linux-2.6.37/3rdparty/viahss/README.html	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.37.3rdparty/3rdparty/viahss/README.html	2003-12-01 01:58:23.000000000 +0200
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+  <title>High speed serial port for VIA VT82C686 chipsets for linux</title>
+</head>
+<body>
+<H3>Setting the serial port speed over 115,200bps</H3>
+<br>
+If you have motherboard which has VIA VT82C686A or VT82C686B chipset 
+you can set serial ports in high speed mode with this kernel module. 
+I use module with external ISDN-TA and haven't had any problems 
+so far but I cannot guarantee that you won't have buffer overflows if 
+you use full 230K or 460K speed all the time (FIFO's are still 16550A size). 
+ISDN with two channels maxes out at 128 Kb which means that it doesn't
+really stress serial ports at 230400. Unlike SHSMOD-patches you don't have 
+to patch serial driver and module takes only 1KB of memory when it's 
+loaded which should leave enough room for other programs. It should
+be also possible to make this work from userspace but accessing
+pci devices is so much easier from kernel. 
+
+<H3>How to use module</H3>
+Get the <A href=http://www.kati.fi/viahss/viahss-0.92.tar.gz>package</A> 
+and compile it using included makefiles. 
+<H3>For 2.4</H3>
+If you have kernel in some other location than /usr/src/linux edit Makefile 
+before compiling.  You can also install module with "make install".  After 
+you have loaded module in kernel (use modprobe or insmod) you can set serial 
+ports to use high speed modes with setserial.<br>
+<H3>For 2.5/2.6</H3>
+Copy Makefile-2.6 on top of Makefile and do make. After loading module set
+serial speed with setserial. (NOTE: This gives a warning on depracated
+method). 
+
+<br>
+# setserial /dev/ttyS0 spd_cust divisor 0x8002
+<br><br>
+which sets COM1: speed to 230400. With 0x8001 you should get 460800
+but I haven't tested it. If you want to use COM2: use ttyS1 instead of ttyS0.
+
+After this you should set program which you are using to use 38400 bps
+speed which is now actually 230K or 460K. For more information check
+setserial man page (spd_cust).
+
+You can use serial port work as normal if you do<br>
+<br>
+# setserial /dev/ttyS0 spd_normal <br><br>
+After this you can also remove viahss module with rmmod if you need to.  Module doesn't intefere with normal serial port usage so you can leave
+it loaded if you don't need that extra 1KB which module uses.
+<H3>Download</H3>
+<A href=http://www.kati.fi/viahss/viahss-0.92.tar.gz>viahss-0.92.tar.gz</A> 
+
+<H3>Acknowledgments</H3>
+
+Thanks to Kimmo Rintala for help with divisor settings.<br>
+I also like to thank Jeff Garzik for help with VIA datasheets.<br>
+Port to 2.5/2.6 by Kingsly John with the help of <A href=http://lwn.net>LWN</A>
+
+<H3>Version History</H3>
+0.90	First release<br>
+0.91	Fixed Makefile <br>
+0.92 	Fixed for 2.5/2.6<br>
+
+<H3>Contact</H3>
+
+You can reach me by email: <A href=mailto:jrauti@iki.fi>jrauti@iki.fi</A>
+</body>
+</html>
diff -Nurp linux-2.6.37/3rdparty/viahss/viahss.c linux-2.6.37.3rdparty/3rdparty/viahss/viahss.c
--- linux-2.6.37/3rdparty/viahss/viahss.c	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.37.3rdparty/3rdparty/viahss/viahss.c	2003-07-17 09:49:59.000000000 +0300
@@ -0,0 +1,83 @@
+/*
+ * VIA VT 82c686[AB] high speed serial port enabler
+ * Version 0.92
+ * Copyright (c) 2000-2001 Juhani Rautiainen <jrauti@iki.fi>
+ *
+ * 0.92:
+ *	Ported to 2.5/2.6 by Kingsly John
+ *	- Corrected locking (no more cli() and sti())
+ *	- New makefile
+ *	
+ * Can be freely distributed and used under the terms of the GNU GPL.
+*/
+
+#include <linux/module.h>
+#include <linux/config.h>
+#include <linux/version.h>
+#include <linux/init.h>
+#include <linux/pci.h>
+
+const unsigned short confindex=0x3F0,confdata=0x3F1;
+const unsigned char spcidx=0xEE;
+
+spinlock_t driver_lock = SPIN_LOCK_UNLOCKED;
+
+static int __init viahss_init(void)
+{
+        struct pci_dev *pcidev = NULL;
+        unsigned char confval,val;
+        pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
+        if (pcidev) {
+                spin_lock_irq(&driver_lock);
+                /* start config */
+                pci_read_config_byte(pcidev,0x85,&confval);
+                confval |= 0x2;
+                pci_write_config_byte (pcidev, 0x85,confval);
+                /* activate high speed bits */
+                outb(spcidx,confindex); /* set index */
+                val = (unsigned char) inb(confdata);
+                val |= 0xC0;        /* both ports on high speed*/
+                outb (spcidx,confindex);
+                outb (val,confdata);
+                /*stop config*/
+                confval &= ~0x2;
+                pci_write_config_byte(pcidev, 0x85, confval);
+                spin_unlock_irq(&driver_lock);
+                printk (KERN_INFO "VIA VT82C686[AB] serial port high speed enabled\n");
+        }
+        else {
+                printk (KERN_INFO "Couldn't locate VIA chipset\n");
+                return -ENODEV;
+        }
+        return 0;
+}
+
+static void __exit viahss_exit(void)
+{
+        struct pci_dev *pcidev = NULL;
+        unsigned char confval,val;
+        pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
+        if (pcidev) {
+                spin_lock_irq(&driver_lock);
+                /* start config */
+                pci_read_config_byte(pcidev,0x85,&confval);
+                confval |= 0x2;
+                pci_write_config_byte (pcidev, 0x85,confval);
+                /* activate high speed bits */
+                outb(spcidx,confindex); /* set index */
+                val = (unsigned char) inb(confdata);
+                val &= ~0xC0;        /* both ports off high speed*/
+                outb (spcidx,confindex);
+                outb (val,confdata);
+                /*stop config*/
+                confval &= ~0x2;
+                pci_write_config_byte(pcidev, 0x85, confval);
+                spin_unlock_irq(&driver_lock);
+				printk (KERN_INFO "VIA VT82C686[AB] serial port high speed disabled\n");
+        }
+}
+
+module_init(viahss_init);
+module_exit(viahss_exit);
+MODULE_DESCRIPTION("VIA VT82C686[AB] high speed serial port enabler");
+MODULE_AUTHOR("Juhani Rautiainen <jrauti@iki.fi>");
