Re: [PATCH] Exar quad port serial



On Wed, 2006-10-18 at 09:34 -0400, Lennart Sorensen wrote:
I suspect all you have to do might be to change how many ports it looks
for. The default max ports is 4 I believe on many kernel versions.

Look for CONFIG_SERIAL_8250_NR_UARTS and
CONFIG_SERIAL_8250_RUNTIME_UARTS in the kernel config.

If that doesn't work and you do need a special driver, at least label it
with more detail like 'for exar st16c554 quad uart' or 'for envoy board'
or whatever makes it clear which hardware it is for. I use exar pci
uarts (exar XR17d15[248] chips) which work fine already with the 8250
driver, or optionally with the jsm driver with a small change to the
list if pci identifiers. THey of course would not work with your driver
since they are completely different exar chips (even though one is also
a quad uart, although 64byte fifo).

Okay.. Here it is again with a little more detail:

----------------------------------------------------
diff -urN linux-2.6.19-rc2.orig/drivers/serial/8250_exar_st16c554.c linux-2.6.19-rc2/drivers/serial/8250_exar_st16c554.c
--- linux-2.6.19-rc2.orig/drivers/serial/8250_exar_st16c554.c 1969-12-31 18:00:00.000000000 -0600
+++ linux-2.6.19-rc2/drivers/serial/8250_exar_st16c554.c 2006-10-22 14:58:55.000000000 -0500
@@ -0,0 +1,52 @@
+/*
+ * linux/drivers/serial/8250_exar.c
+ *
+ * Written by Paul B Schroeder < pschroeder "at" uplogix "dot" com >
+ * Based on 8250_boca.
+ *
+ * Copyright (C) 2005 Russell King.
+ * Data taken from include/asm-i386/serial.h
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/serial_8250.h>
+
+#define PORT(_base,_irq) \
+ { \
+ .iobase = _base, \
+ .irq = _irq, \
+ .uartclk = 1843200, \
+ .iotype = UPIO_PORT, \
+ .flags = UPF_BOOT_AUTOCONF, \
+ }
+
+static struct plat_serial8250_port exar_data[] = {
+ PORT(0x100, 5),
+ PORT(0x108, 5),
+ PORT(0x110, 5),
+ PORT(0x118, 5),
+ { },
+};
+
+static struct platform_device exar_device = {
+ .name = "serial8250",
+ .id = PLAT8250_DEV_EXAR,
+ .dev = {
+ .platform_data = exar_data,
+ },
+};
+
+static int __init exar_init(void)
+{
+ return platform_device_register(&exar_device);
+}
+
+module_init(exar_init);
+
+MODULE_AUTHOR("Paul B Schroeder");
+MODULE_DESCRIPTION("8250 serial probe module for Exar cards");
+MODULE_LICENSE("GPL");
diff -urN linux-2.6.19-rc2.orig/drivers/serial/Kconfig linux-2.6.19-rc2/drivers/serial/Kconfig
--- linux-2.6.19-rc2.orig/drivers/serial/Kconfig 2006-10-13 11:25:04.000000000 -0500
+++ linux-2.6.19-rc2/drivers/serial/Kconfig 2006-10-22 15:13:03.000000000 -0500
@@ -210,6 +210,17 @@
To compile this driver as a module, choose M here: the module
will be called 8250_boca.

+config SERIAL_8250_EXAR_ST16C554
+ tristate "Support Exar ST16C554/554D Quad UART"
+ depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
+ help
+ The Uplogix Envoy TU301 uses this Exar Quad UART. If you are
+ tinkering with your Envoy TU301, or have a machine with this UART,
+ say Y here.
+
+ To compile this driver as a module, choose M here: the module
+ will be called 8250_exar_st16c554.
+
config SERIAL_8250_HUB6
tristate "Support Hub6 cards"
depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
diff -urN linux-2.6.19-rc2.orig/drivers/serial/Makefile linux-2.6.19-rc2/drivers/serial/Makefile
--- linux-2.6.19-rc2.orig/drivers/serial/Makefile 2006-10-13 11:25:04.000000000 -0500
+++ linux-2.6.19-rc2/drivers/serial/Makefile 2006-10-22 15:14:11.000000000 -0500
@@ -17,6 +17,7 @@
obj-$(CONFIG_SERIAL_8250_FOURPORT) += 8250_fourport.o
obj-$(CONFIG_SERIAL_8250_ACCENT) += 8250_accent.o
obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_boca.o
+obj-$(CONFIG_SERIAL_8250_EXAR_ST16C554) += 8250_exar_st16c554.o
obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
obj-$(CONFIG_SERIAL_8250_AU1X00) += 8250_au1x00.o
diff -urN linux-2.6.19-rc2.orig/include/linux/serial_8250.h linux-2.6.19-rc2/include/linux/serial_8250.h
--- linux-2.6.19-rc2.orig/include/linux/serial_8250.h 2006-10-13 11:25:04.000000000 -0500
+++ linux-2.6.19-rc2/include/linux/serial_8250.h 2006-10-22 15:15:15.000000000 -0500
@@ -41,6 +41,7 @@
PLAT8250_DEV_FOURPORT,
PLAT8250_DEV_ACCENT,
PLAT8250_DEV_BOCA,
+ PLAT8250_DEV_EXAR_ST16C554,
PLAT8250_DEV_HUB6,
PLAT8250_DEV_MCA,
PLAT8250_DEV_AU1X00,

----------------------------------------------------

Cheers...Paul...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Windows CE 5.0 Stream Interface Driver
    ... I have written/modified a CE driver to access a quad serial Uart ... driver on a given serial or COM port when an application requests to do so. ... There is only one physical interrupt for all the Exar COM ports. ... Any information as to why only one port opens would be greatly appreciated. ...
    (microsoft.public.development.device.drivers)
  • Re: Exar multi port serial, Com16550 driver interrupt problem
    ... > It looks like you are trying to make the MS serial driver work with the Exar ... we have a dual uart from exar for which the WinCE driver from exar is giving ...
    (microsoft.public.windowsce.platbuilder)
  • Re: unrecognized pci-serial board
    ... FreeBSD MailingLists wrote: ... Is your board REX-PCI60 with EXAR XR17C152? ... EXAR XR17D15x is already supported with pucdriver. ...
    (freebsd-questions)
  • Re: 2.6.15-rc3-mm1
    ... > Hrm... ... ok, well, we have a board here based on Exar chips that can be ... > driven by the "jsm" driver but it also works fine with 8250... ...
    (Linux-Kernel)
  • Re: How to build a driver for 16C552 on EP931X
    ... I wasn't aware they had such a driver. ... We are using the Exar ST16C554 (Quad UART) with the standard MS ... to the PDD code for our system. ...
    (microsoft.public.windowsce.platbuilder)