[PATCH] Add support for Exar XR17V358IV to puc(4)

From: Ryan Stone <rysto32_at_gmail.com>
Date: Wed, 13 Mar 2013 13:29:27 -0400
I've implemented support for Exar XR17V358IV 8-port UARTs.  These are quite
similar to previous Exar UARTs, with the notable exception of the strange
125MHz clock.  I've done some basic testing using it as a tty at 9600 baud
and 115200 baud, but nothing really extensive.  I can't seem to find any
tools for stressing out serial ports.  I'm not sure if anybody has any
suggestions for this.

I plan to commit this within a couple of days if nobody has any
objections.  I'll try to get it MFC'ed for 8.4-RELEASE,

The patch can be found here:
http://people.freebsd.org/~rstone/patches/exar_358.diff

I've also included it inline in case anybody wants to review it:

commit d1da80b5c90b3ae5a44db165cb032e9e86d2c804
Author: Ryan Stone <rstone_at_FreeBSD.org>
Date:   Mon Mar 11 17:02:13 2013 -0400

    add support for Exar XR17V358IV 8-port serial port to puc(4)

diff --git a/sys/dev/puc/pucdata.c b/sys/dev/puc/pucdata.c
index 6d933e8..34d6986 100644
--- a/sys/dev/puc/pucdata.c
+++ b/sys/dev/puc/pucdata.c
_at__at_ -50,6 +50,7 _at__at_ __FBSDID("$FreeBSD$");
 static puc_config_f puc_config_amc;
 static puc_config_f puc_config_diva;
 static puc_config_f puc_config_exar;
+static puc_config_f puc_config_exar_pcie;
 static puc_config_f puc_config_icbook;
 static puc_config_f puc_config_moxa;
 static puc_config_f puc_config_oxford_pcie;
_at__at_ -630,6 +631,13 _at__at_ const struct puc_cfg puc_pci_devices[] = {
            PUC_PORT_8S, 0x10, 0, -1,
        },

+       {   0x13a8, 0x0358, 0xffff, 0,
+           "Exar XR17V358IV",
+           125000000,
+           PUC_PORT_8S, 0x10, 0, -1,
+           .config_function = puc_config_exar_pcie
+       },
+
        {   0x13fe, 0x1600, 0x1602, 0x0002,
            "Advantech PCI-1602",
            DEFAULT_RCLK * 8,
_at__at_ -1186,6 +1194,17 _at__at_ puc_config_exar(struct puc_softc *sc, enum
puc_cfg_cmd cmd, int port,
 }

 static int
+puc_config_exar_pcie(struct puc_softc *sc, enum puc_cfg_cmd cmd, int port,
+    intptr_t *res)
+{
+       if (cmd == PUC_CFG_GET_OFS) {
+               *res = port * 0x400;
+               return (0);
+       }
+       return (ENXIO);
+}
+
+static int
 puc_config_icbook(struct puc_softc *sc, enum puc_cfg_cmd cmd, int port,
     intptr_t *res)
 {
Received on Wed Mar 13 2013 - 16:51:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:35 UTC