This diff to add the PCIE954 IC basically works, but there's a
problem with the frequency divisors. They should be 4000000*16 on
all ports; however, if this is actually set in pucdata.c, the
baud rate at the port is wrong, it doesn't seem to match any
standard speed. It is internally consistent i.e. loop back
two ports on the device set to this speed and they see data
sent to each other.

If 4000000*8 is set in pucdata.c, all four ports are functional,
but of course you have to set the port to an incorrect speed
(e.g. cu -l cua06 -s 4800 when you really want 9600 baud).

I've investigated flags from pucdata.c, this is masked with
PUC_COM_CLOCKMASK in com_puc.c but that is ok, it's passed
correctly to com.c (no truncation).

I've investigated comspeed(), we get the same result from
that function when it's broken (4M*16, 9600) as when it's
working (4M*8, 4800).

If anyone has ideas for other places to look or things to
try, please let me know...


Index: pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.1520
diff -u -p -r1.1520 pcidevs
--- pcidevs     6 Jan 2010 23:18:08 -0000       1.1520
+++ pcidevs     25 Jan 2010 22:32:43 -0000
@@ -4311,6 +4311,7 @@ product OXFORD2 EXSYS_EX41098     0x9511  Exs
 product OXFORD2 OX16PCI954P    0x9513  OX16PCI954 Parallel
 product OXFORD2 OX16PCI952     0x9521  OX16PCI952
 product OXFORD2 OX16PCI952P    0x9523  OX16PCI952 Parallel
+product OXFORD2 OXPCIE954      0xc208  OXPCIE954
 
 /* Pacific Data products */
 product PDC QSTOR_SATA         0x2068  QStor SATA
Index: pucdata.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/pucdata.c,v
retrieving revision 1.66
diff -u -p -r1.66 pucdata.c
--- pucdata.c   23 Nov 2009 02:06:38 -0000      1.66
+++ pucdata.c   25 Jan 2010 22:32:43 -0000
@@ -871,7 +871,7 @@ const struct puc_device_description puc_
         * Boards with an Oxford Semiconductor chip.
         *
         * Oxford Semiconductor provides documentation for their chip at:
-        * <URL:http://www.oxsemi.com/products/uarts/index.html>
+        * <URL:http://www.plxtech.com/products/uart/>
         *
         * As sold by Kouwell <URL:http://www.kouwell.com/>.
         * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
@@ -952,6 +952,18 @@ const struct puc_device_description puc_
                { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
+           },
+       },
+
+       /* Oxford Semiconductor OXPCIE954 PCIE UARTs */
+       {
+           {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXPCIE954,      0, 0 },
+           {   0xffff, 0xffff,                                         0, 0 },
+           { /* XXX Wrong speed; should be 4000000 * 16, but it fails */
+               { PUC_PORT_TYPE_COM, 0x10, 0x1000, 4000000 * 8 },
+               { PUC_PORT_TYPE_COM, 0x10, 0x1200, 4000000 * 8 },
+               { PUC_PORT_TYPE_COM, 0x10, 0x1400, 4000000 * 8 },
+               { PUC_PORT_TYPE_COM, 0x10, 0x1600, 4000000 * 8 },
            },
        },

Reply via email to