fixing a PUC / uart speed issue

Marcel Moolenaar xcllnt at
Sat Mar 24 18:36:09 UTC 2007

On Mar 24, 2007, at 5:41 AM, Mike Tancsa wrote:

> At 02:10 AM 3/24/2007, Marcel Moolenaar wrote:
>> Try changing the frequency from COM_FREQ to (4 * COM_FREQ). The
>> ....
>> HTH,
> Thanks, it fixed it!   BTW, would this be for all such cards with  
> this PCI ID ? If so, should I file a PR ? If not, apart from  
> keeping a private set of patches, whats the best way to work around  
> this with each cvsup / buildworld ?

Well, the clock frequency used to feed the UART is really a property
of the add-in card, not of the chipset (Oxford in this case). While
many PCI cards have the vendor ID and device ID of the Oxford chipset
(and its manufacturer), it doesn't really help us to identify the
particular add-in card. IIRC, the sub-vendor and sub-device IDs are
all zeroes in your case. I doubt that we can use that to match the
actual add-in card and therefore use a 4x clock. Other cards exist
that are based on the Oxford chipset that use different clocks and
if they too have a sub-device or sub-vendor ID of all zeroes, then
there's still a conflict.

Maybe it's worthwhile to detect the clock frequency by programming
the UART for a fixed baudrate and then checking (using loopback)
how fast characters are being transmitted. Based on that it should
be possible to determine the right frequency.

Alternatively, we could also just use hints.

In any case: changing the entry in puc(4) will likely break some
other card, so that not a good idea.


Marcel Moolenaar
xcllnt at

More information about the freebsd-questions mailing list