Sunix 4056A PCI 4 port RS-232 card - only 2 ports configured
N.J. Mann
njm at njm.me.uk
Thu May 26 20:23:52 UTC 2011
In message <EBD3B0ED-711D-4E0F-8109-9C3AC3F52279 at xcllnt.net>,
Marcel Moolenaar (marcel at xcllnt.net) wrote:
>
> On May 26, 2011, at 6:42 AM, N.J. Mann wrote:
>
> *snip*
>
> >> For you, the first thing is to see whether the UART ports work
> >> if you tweak the probe functions, like so:
> >>
> >> Index: uart_dev_ns8250.c
> >> ===================================================================
> >> --- uart_dev_ns8250.c (revision 222217)
> >> +++ uart_dev_ns8250.c (working copy)
> >> @@ -243,7 +243,7 @@
> >> if (val & 0x30)
> >> return (ENXIO);
> >> val = uart_getreg(bas, REG_MCR);
> >> - if (val & 0xe0)
> >> + if (val & 0xa0)
> >> return (ENXIO);
> >>
> >> return (0);
> >
> > I tried this and the result is that ports 3 and 4 now attach okay.
> > However, the baud rate of these two is wrong. If I select 9600 they
> > actually send and receive at 1200, i.e. eight times slower. The speed
> > setting for the first two ports is correct. (I checked all four ports at
> > 9600, 38400 and 115200.)
>
> See John's email for the baudrate issue.
>
> >> Secondly, I'd like to know the vendor of the Quad-port UART. Either
> >> it's Sunix's own implementation (this seems to be the case), or they
> >> simply OEM someone else's. In any case: I'd like to see the datasheet
> >> of the ASIC so as to understand the meaning/function of the bit.
> >
> > I took the card out of the PC to see exactly what is on it. There are
> > three LSI chips, plus four RS-232 interface chips. The largest of the
> > LSI chips is a SUN1889 and it appears to connect to ports 1 and 2, and
> > to the PCI bus. The other two LSI chips are both SUN1699. The first of
> > these seems to be for port 3 and the second for port 4. I tried finding
> > data sheets for these chips on the web, but all I could find was
> > marketing leaflets for various single- and multi-port RS-232 and RS-422
> > interface cards. Perhaps you will have better luck in searching than I
> > did.
>
> Thanks! This what really useful. It seems that the SUN1699 has MCR
> bit 6 set by default or it's even hardwired as 1. There have been
> various reports on the FreeBSD mailing lists relating to the SUN1699
> and how uart(4) doesn't attach due to the MCR having a value of 0x40.
>
> Looking at the Sunix driver for Linux I cannot see any reference to
> this bit at all. The code does not mask it out or force it to 1
> either. So, from what I can tell, it has absolutely no meaning.
>
> So, I'll change FreeBSD to just ignore this bit. There's even an open
> PR for this:
> http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/129663
>
> Thanks a lot of working with us!
John's latest patch has fixed the speed problem, so I now have a fully
working card.
%%%%%
puc0: <Timedia technology 4 Port Serial> port 0xdc00-0xdc1f,0xe000-0xe00f irq 17 at device 9.0 on pci0
ioapic0: routing intpin 17 (PCI IRQ 17) to lapic 0 vector 52
uart2: <16550 or compatible> on puc0
uart2: fast interrupt
uart3: <16550 or compatible> on puc0
uart3: fast interrupt
uart4: <16550 or compatible> on puc0
uart4: fast interrupt
uart5: <16550 or compatible> on puc0
uart5: fast interrupt
%%%%%
Many thanks.
Cheers,
Nick.
--
More information about the freebsd-hardware
mailing list