On Fri, 25 Mar 2011 14:07:09 -0600 Mark Leonard wrote:
> Hi,
>
> I've recently purchased a 16-port PCI-e serial card with Oxford UARTs.
> OpenBSD 4.8 detects the Oxford chips, but doesn't seem to be able to
> use the 'unknown product 0xc308'. This thread
> http://www.mail-archive.com/[email protected]/msg100575.html implies
> that most of the steps to support this card may have already been
> taken.
Update to that earlier thread:
I have been running a patch below for a while and baud rate seems to
be correct on amd64 at least. I have tested my card against one
ARM development board and with custom max232 circuit using
xbee or usb-ftdi on the other side [1].
I think Stuart Henderson tried some similar diff, but couldn't get
it working properly.
(For a card with 8 uarts and different id, the diff needs to be
modified a little.)
Index: dev/pci//pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.1590
diff -u -p -u -r1.1590 pcidevs
--- dev/pci//pcidevs 26 Jan 2011 07:09:09 -0000 1.1590
+++ dev/pci//pcidevs 13 Apr 2011 17:24:23 -0000
@@ -4481,6 +4481,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 OX16PCIE952 0xc158 OX16PCIE952
/* Pacific Data products */
product PDC QSTOR_SATA 0x2068 QStor SATA
Index: dev/pci//pcidevs.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs.h,v
retrieving revision 1.1587
diff -u -p -u -r1.1587 pcidevs.h
--- dev/pci//pcidevs.h 26 Jan 2011 07:10:53 -0000 1.1587
+++ dev/pci//pcidevs.h 13 Apr 2011 17:24:25 -0000
@@ -4486,6 +4486,7 @@
#define PCI_PRODUCT_OXFORD2_OX16PCI954P 0x9513 /* OX16PCI954
Parallel */
#define PCI_PRODUCT_OXFORD2_OX16PCI952 0x9521 /* OX16PCI952 */
#define PCI_PRODUCT_OXFORD2_OX16PCI952P 0x9523 /* OX16PCI952
Parallel */
+#define PCI_PRODUCT_OXFORD2_OX16PCIE952 0xc158 /* OX16PCIE952
*/
/* Pacific Data products */
#define PCI_PRODUCT_PDC_QSTOR_SATA 0x2068 /* QStor SATA */
Index: dev/pci//pcidevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs_data.h,v
retrieving revision 1.1582
diff -u -p -u -r1.1582 pcidevs_data.h
--- dev/pci//pcidevs_data.h 26 Jan 2011 07:10:53 -0000 1.1582
+++ dev/pci//pcidevs_data.h 13 Apr 2011 17:24:28 -0000
@@ -15040,6 +15040,10 @@ static const struct pci_known_product pc
"OX16PCI952 Parallel",
},
{
+ PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCIE952,
+ "OX16PCIE952",
+ },
+ {
PCI_VENDOR_PDC, PCI_PRODUCT_PDC_QSTOR_SATA,
"QStor SATA",
},
Index: dev/pci//pucdata.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/pucdata.c,v
retrieving revision 1.72
diff -u -p -u -r1.72 pucdata.c
--- dev/pci//pucdata.c 22 Jul 2010 17:16:10 -0000 1.72
+++ dev/pci//pucdata.c 13 Apr 2011 17:24:28 -0000
@@ -897,6 +897,17 @@ const struct puc_device_description puc_
{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
},
},
+#if 1
+ /* Oxford Semiconductor OX16PCIE952 PCIe `950 UARTs - 128 byte FIFOs */
+ { /* "Oxford Semiconductor OX16PCIE952 UARTs", */
+ { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCIE952, 0, 0 },
+ { 0xffff, 0xffff, 0, 0 },
+ {
+ { PUC_PORT_TYPE_COM, 0x10, 0x1000, 4000000 * 8 * 2},
+ { PUC_PORT_TYPE_COM, 0x10, 0x1200, 4000000 * 8 * 2},
+ },
+ },
+#endif
/* Oxford Semiconductor OX16PCI952 PCI Parallel port */
{ /* "Oxford Semiconductor OX16PCI952 Parallel port", */
--
Tero Koskinen <[email protected]>
[1] http://www.flickr.com/photos/66708330@N00/5613690175/