Date: Tue, 3 Mar 2009 09:15:42 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: marcel@freebsd.org, Navdeep Parhar <nparhar@gmail.com> Subject: Re: puc support for a generic card (patch attached) Message-ID: <200903030915.43037.jhb@freebsd.org> In-Reply-To: <d04e16b70903021305u69138cfav8b6838c7199a60ed@mail.gmail.com> References: <d04e16b70903021305u69138cfav8b6838c7199a60ed@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903030915.43037.jhb>