puc support for a generic card (patch attached)
John Baldwin
jhb at freebsd.org
Tue Mar 3 06:32:19 PST 2009
On Monday 02 March 2009 4:05:02 pm Navdeep Parhar wrote:
> 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 at 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);
FWIW, the traditional reason for this is that we made the sio/uart or ppc
drivers claim single port devices directly and only use puc for multiple-port
cards. I'm not sure if that should still be the case or not. Marcel, do you
have an opinion?
> 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,
>
--
John Baldwin
More information about the freebsd-hackers
mailing list