Date: Tue, 24 May 2011 07:55:38 -0400 From: John Baldwin <jhb@freebsd.org> To: "N.J. Mann" <njm@njm.me.uk> Cc: freebsd-hardware@freebsd.org Subject: Re: Sunix 4056A PCI 4 port RS-232 card - only 2 ports configured Message-ID: <201105240755.38404.jhb@freebsd.org> In-Reply-To: <20110523151708.GA671@titania.njm.me.uk> References: <20110522110002.GB91694@titania.njm.me.uk> <201105231026.54178.jhb@freebsd.org> <20110523151708.GA671@titania.njm.me.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, May 23, 2011 11:17:08 am N.J. Mann wrote: > In message <201105231026.54178.jhb@freebsd.org>, > John Baldwin (jhb@freebsd.org) wrote: > > On Sunday, May 22, 2011 7:00:02 am N.J. Mann wrote: > > > Hi, > > > > > > > > > I am trying to setup a console server, but I am having a problem with > > > the hardware. The RS-232 card I am using is a Sunix 4056A Universal PCI > > > 4 port RS-232 card. However, only two ports are being configured, uart2 > > > and uart3 - uart0 and uart1 are on the motherboard. I had assumed that > > > all I had to do was install the card, add puc(4) to my kernel and it > > > would just work. > > > > > > uname: > > > ------ > > > FreeBSD 9.0-CURRENT #0: Thu May 19 15:01:10 UTC 2011 i386 > > > > > > I CVSup'ed about fours before then. > > > > > > > > > relevant parts of verbose dmesg: > > > -------------------------------- > > > found-> vendor=0x1409, dev=0x7168, revid=0x01 > > > domain=0, bus=0, slot=10, func=0 > > > class=07-00-02, hdrtype=0x00, mfdev=0 > > > cmdreg=0x0081, statreg=0x0280, cachelnsz=0 (dwords) > > > lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns) > > > intpin=a, irq=3 > > > map[10]: type I/O Port, range 32, base 0xe000, size 5, enabled > > > map[14]: type I/O Port, range 32, base 0xe400, size 4, enabled > > > pcib0: matched entry for 0.10.INTA > > > pcib0: slot 10 INTA hardwired to IRQ 18 > > > [...] > > > puc0: <Timedia technology 4 Port Serial> port 0xe000-0xe01f,0xe400-0xe40f > > > irq 18 at device 10.0 on pci0 > > > ioapic0: routing intpin 18 (PCI IRQ 18) to lapic 0 vector 52 > > > uart2: <16550 or compatible> on puc0 > > > uart2: fast interrupt > > > uart3: <16550 or compatible> on puc0 > > > uart3: fast interrupt > > > > > > > > > I can provide a full verbose dmesg if required, together with any other > > > information which may be relevant. > > > > > > Any and all help gratefully received. > > > > Hmm, for Timedia it looks like the puc(4) driver uses the subvendor device ID > > to figure out how many ports your card has, but it does see 4 ports (the > > device descrption is correct). Does 'devinfo -v' show any other child > > devices of 'puc0' besides the two uart devices? > > No. > > puc0 pnpinfo vendor=0x1409 device=0x7168 subvendor=0x1409 subdevice=0x4056 class=0x070002 at slot=10 function=0 > uart2 > uart3 > > (If you want the complete output of devinfo just ask - I assumed from > your question you only wanted the puc-releated section.) Yeah, this is all I wanted. Hmm, so from the description we can see that it thinks you have 4 ports: snprintf(desc, sizeof(desc), "Timedia technology %d Port Serial", (int)sc->sc_cfg_data); and the code that sets sc_cfg_data sets it to the number of supported ports that PUC_CFG_GET_NPORTS returns: case PUC_CFG_GET_NPORTS: ... if (subdev == subdevs[dev].ids[id]) { sc->sc_cfg_data = subdevs[dev].ports; *res = sc->sc_cfg_data; return (0); } You might need to just add some printfs to puc_bfe_attach(). It would be good to see if the PUC_CFG_GET_NPORTS request in attach also returned 4 in res (the description string is set in puc_bfe_probe()). > BTW I saw the patch for puc(4) you just posted to current@. Is it worth > me trying that? That patch is just cosmetic. It would be nice to have it tested, but it won't fix your bug. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105240755.38404.jhb>