From: rmk@rmkhome.UUCP (Rick Kelly)
Organization: The Man With Ten Cats
Date: Sun, 13 Sep 1992 05:38:57 GMT
Reply-To: rmk@rmkhome.UUCP (Rick Kelly)

In article <TYTSO.92Sep12125450@tsx-11.mit.edu> tytso@athena.mit.edu (Theodore Y. Ts'o) writes:
>In article <!nwn!6h.harp@netcom.com> harp@netcom.com (Gregory O. Harp) writes:
>
>   First, I had to hack the kernel serial code to handle that speed.
>   Linux currently only supports 38.4Kbps as "shipped."  
>
>I've been working on a heavily revised version of the serial driver,
>that supports more boards (including the AST FourPort boards) as well
>some other neat features.  One of the neat features is a way 
>to control what speed "38400" baud means when you specify it
>to the kernel, using setserial.  You can set it to mean 38400, 57600,
>115200, or "custom divsor".  With custom divisor, you basically get to
>specify "div" in the equation 
>
>			baud = 1843200 / (div * 16)
>
>I'll be shipping my new serial driver to Linus soon, so look for it in a
>Linux release near you.  Some of the other fixes which should be popular
>is that I've managed to use over 100k less memory in the tty drivers,
>which means 100k more memory for user programs.  I figure that should be
>nice for people who have 2 or 4 meg machines.  :-)
>
>   BTW, the reason I keep saying 16550A and not just 16550 is because a
>   glance at the code tells me that Linux is only enabling the FIFO if
>   the UART is the 16550A (refer to lines 265-272 of serial.c).  Linus,
>   can you tell us why you don't use the FIFO on the 16550?  I've
>   personally never used the FIFO because my projects were for 16450
>   UARTs, but I'm not aware of any problems.
>
>The initial version of the 16550 which were shipped by National
>Semiconductor had a bug, so that their FIFO's where *not* reliable.  The
>spec sheets from National specific state that if you have a 16550, you
>should not attempt to use the FIFO's.  Fortunately, relatively few
>16550's were actually shipped before the problem was discovered, and
>most of those ended up in PS/2's.  These days, when people talk about
>16550's, they generally mean recent versions of the chips that have the
>working FIFO's.  These chips will be labelled: "NS16550A", "NS16550AF",
>"PC16550C", or "PC16550CF", (apparently PC16550CF is the most recent
>chip version; although I've been assured by National Semiconductor that
>most of the bugs which were fixed in the PC16550CF's shouldn't give me
>any trouble if I only have a NS16550A).
>
>In any case, because the original 16550's had such a serious bug,
>National thoughtfully gave us a software way of detecting whether or not
>the chip was one of the chips with the FIFO bug, or not.  All of the
>more recent chips will ID themselves as a 16550A; it is only the
>original buggy chips that will ID themselves as a 16550.
>
>You generally don't need to worry about this.  Although it might be
>prudent to check a serial board that you're thinking about to see
>whether it has one of the newer chips, it is very unlikely that if you
>were buying a serial board that you would actually run into one that had
>one of the original 16550 chips.


The PC16550CF has been alleged to be faster than the NS16550A.  As far as
I know, it is a drop in work-alike.

-- 

Rick Kelly	rmk@rmkhome.UUCP	unixland!rmkhome!rmk	rmk@frog.UUCP