From: Theodore Ts'o <tytso@athena.mit.edu> Subject: Re: 16550 uarts and .99pl8 Date: 26 Apr 1993 22:57:46 -0400
From: ewtroan@ewt.raleigh.ibm.com (Erik Troan)
Date: Mon, 26 Apr 1993 13:36:44 GMT
I'm having this problem. Looking at the chip tells me its a 16550C, and
the kernel tells me its a 16550A at bootup.
Don't worry about it. There are no real functional differences between
the NS16550A, the NS16550AF, the PC16550, and the PC16550C --- indeed, I
don't believe there is a software method for distinguishing between
them. The only real thing that is at all important is distinguishing
between these three cases:
*) NS8250 UART's (don't have a scratch register, don't have FIFO)
*) NS16450/NS16550 UART's (don't have a FIFO -- or a working FIFO)
*) NS16550A/NS16550AF,PC16550,PC16550C (has a working FIFO).
And all Linux cares about is whether or not the chip has a working FIFO
or not --- if it does, it will print that it has a 16550A; otherwise, it
will print that it has detected a 16550 or a 16450.
Note: there are actually very few NS16550's out there --- they were only
produced for a few months before National Semiconductor realized there
was a bug in a chip, and quickly fixed it. Most of them are in the
first generation PS/2's, which means most Linuxer's probably won't run
into them.
One thing that is confusing is that there are other chip manufacturers
other than National Semiconductor making 16550A compatible UART's. So
just because the chip says "16550" doesn't necessarily mean that you
can't use its FIFO's --- take a look at what the kernel says. If the
kernel detects a 16550A, you can probably trust its FIFO's.
- Ted