Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Mar 2009 13:05:02 -0800
From:      Navdeep Parhar <nparhar@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   puc support for a generic card (patch attached)
Message-ID:  <d04e16b70903021305u69138cfav8b6838c7199a60ed@mail.gmail.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
This may interest puc and uart maintainers.

I needed an extra serial port on my FreeBSD machine and bought a
store-branded "1-Port Serial PCI Adapter" from a local computer
store.

This is what pciconf shows:
puc0@pci0:4:1:0: class=0x070002 card=0x00011000 chip=0x98359710
rev=0x01 hdr=0x00

And here's what puc identified it as:
puc0: <NetMos NM9835 Dual UART and 1284 Printer port> port
0xec00-0xec07,0xe480-0xe487,0xe400-0xe407,0xe080-0xe087,0xe000-0xe007,0xdc00-0xdc0f
irq 16 at device 1.0 on pci4

Visual inspection shows the card has missing circuitry and headers
for the extra serial and parallel port that the chip supports.  puc
gave me 2 serial port and 1 parallel port devices for the card, and
none of them would work (not even the first serial port device).

I had to tweak pucdata.c to get the card working.  Patch against
HEAD is attached, and also pasted at the end of this email (in case
this list drops attachements).

Regards,
Navdeep

diff -r 025cb00d19d7 sys/dev/puc/puc.c
--- a/sys/dev/puc/puc.c	Sat Feb 28 12:42:37 2009 -0800
+++ b/sys/dev/puc/puc.c	Mon Mar 02 12:21:07 2009 -0800
@@ -440,9 +440,6 @@
 	sc->sc_dev = dev;
 	sc->sc_cfg = cfg;

-	/* We don't attach to single-port serial cards. */
-	if (cfg->ports == PUC_PORT_1S || cfg->ports == PUC_PORT_1P)
-		return (EDOOFUS);
 	error = puc_config(sc, PUC_CFG_GET_NPORTS, 0, &res);
 	if (error)
 		return (error);
diff -r 025cb00d19d7 sys/dev/puc/pucdata.c
--- a/sys/dev/puc/pucdata.c	Sat Feb 28 12:42:37 2009 -0800
+++ b/sys/dev/puc/pucdata.c	Mon Mar 02 12:21:07 2009 -0800
@@ -761,6 +761,12 @@
 	    PUC_PORT_2P, 0x10, 8, 0,
 	},

+	{   0x9710, 0x9835, 0x1000, 1,
+	    "NetMos NM9835 based 1-port serial",
+	    DEFAULT_RCLK,
+	    PUC_PORT_1S, 0x10, 4, 0,
+	},
+
 	{   0x9710, 0x9835, 0xffff, 0,
 	    "NetMos NM9835 Dual UART and 1284 Printer port",
 	    DEFAULT_RCLK,

[-- Attachment #2 --]
diff -r 025cb00d19d7 sys/dev/puc/puc.c
--- a/sys/dev/puc/puc.c	Sat Feb 28 12:42:37 2009 -0800
+++ b/sys/dev/puc/puc.c	Mon Mar 02 12:55:26 2009 -0800
@@ -440,9 +440,6 @@
 	sc->sc_dev = dev;
 	sc->sc_cfg = cfg;
 
-	/* We don't attach to single-port serial cards. */
-	if (cfg->ports == PUC_PORT_1S || cfg->ports == PUC_PORT_1P)
-		return (EDOOFUS);
 	error = puc_config(sc, PUC_CFG_GET_NPORTS, 0, &res);
 	if (error)
 		return (error);
diff -r 025cb00d19d7 sys/dev/puc/pucdata.c
--- a/sys/dev/puc/pucdata.c	Sat Feb 28 12:42:37 2009 -0800
+++ b/sys/dev/puc/pucdata.c	Mon Mar 02 12:55:26 2009 -0800
@@ -761,6 +761,12 @@
 	    PUC_PORT_2P, 0x10, 8, 0,
 	}, 
 
+	{   0x9710, 0x9835, 0x1000, 1,
+	    "NetMos NM9835 based 1-port serial",
+	    DEFAULT_RCLK,
+	    PUC_PORT_1S, 0x10, 4, 0,
+	},
+
 	{   0x9710, 0x9835, 0xffff, 0,
 	    "NetMos NM9835 Dual UART and 1284 Printer port",
 	    DEFAULT_RCLK,

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d04e16b70903021305u69138cfav8b6838c7199a60ed>