Re: make 16C950 UARTs work

From: Petr Vandrovec
Date: Wed Aug 02 2006 - 19:26:00 EST

Russell King wrote:
On Wed, Aug 02, 2006 at 11:08:56PM +0100, Alan Cox wrote:

Ar Mer, 2006-08-02 am 15:49 -0400, ysgrifennodd Dave Jones:

This patch has been submitted a number of times, and doesn't seem
to get any upstream traction, which is a shame, as it seems to work
for users, and I keep inadvertantly dropping it from the Fedora
kernel everytime I rebase it.

We really ought to do that based on the PCI subvendor/subdevice id of
the boards in use if possible surely ? It ought to be safe for x86
because nobody is going to use anything but chip default values so they
can avoid needing a ROM.

Not correct - there are PCMCIA-based versions of these chips and they
do have weirdo values in the registers to cope with custom crystals
which magically vanish if you reset the UART.

But current serial.c IS resetting UART. Unconditionally. So I have no idea how is card setup supposed to survive...

dwmw2's 950-based bluetooth CF card does exactly this.

To my knowledge right fix for this is allowing non-standard baud rates and then asking Dave to find which xtal his card uses. I have to use baud_base 50400 (xtal 806.4kHz) with one of my 16c950 pcmcia modems, and 1152000 with another (xtal 18.432MHz) one. Under Windows both work "out of the box" as prescaller is programmed to 7/16 (resp. 10) by their EPROM, but Linux driver ditches this setting out of 16c950 registers (by resetting chip). In second case fortunately code knows how to program 10 times bigger values to the registers, but with first modem it fails as it has no idea how to derive 115200Bd from 806kHz XTAL...
Petr Vandrovec

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at