Re: Bug in drivers/serial/of_serial.c?
From: Arnd Bergmann <arnd@arndb.de>
Date: 2009-11-19 13:01:45
On Thursday 19 November 2009, Alon Ziv wrote:
On Monday, November 16, 2009, Arnd wrote:quoted
quoted
- { .type = "serial", .compatible = "ns16550", .data = (void*)PORT_16550, },quoted
quoted
+ { .type = "serial", .compatible = "ns16550", .data = (void*)PORT_16550A, },quoted
Does not seem logical. If the device claims compatibility withns16550, we shouldquoted
not automatically assume it's an ns16550a. Why not add another lineforquoted
Unfortunately, there is no way to change what the device claims--it's encoded into the OpenFirmware tree by the EDK tools. And, in any case, the device is actually not lying: it is compatible with NS16550--just with a non-buggy one. Unfortunately the kernel driver for 8250-class UARTs makes the conservative choice to assume any 16550 is one of the (early, buggy) revisions where the FIFO was non-functional; any 16550 with working UART is classed as a 16550A.
In that case, add another entry for the device encoded in the firmware itself. The ns16550 entry should be the second one after a more specific one telling which device it is exactly. Arnd <><