• Alexey Pelykh's avatar
    OMAP/serial: Support 1Mbaud and similar baudrates that require Mode16 instead of Mode13 · 5fe21236
    Alexey Pelykh authored
    Original table in OMAP TRM named "UART Mode Baud Rates, Divisor
    Values, and Error Rates" determines modes not for all common baud
    rates. E.g. for 1000000 baud rate mode should be 16x, but according to
    that table it's determined as 13x. According to current implementation
    of mode divisor selection, after requesting 1000000 baudrate from
    driver, later one will configure chip to use MODE13 divisor. Assuming
    48Mhz as common UART clock speed, MODE13 divisor will effectively give
    1230769 baudrate, what is quite far from desired 1000000 baudrate.
    While with MODE16 divisor, chip will produce exact 1000000 baudrate.
    In old driver that served UART devices (8250.c and serial_core.c) this
    divisor could have been configured by user-space program, but in
    omap_serial.c driver implementation this ability was not implemented
    (afaik, by design) thus disallowing proper usage of MODE16-compatible
    baudrates.
    Signed-off-by: default avatarAlexey Pelykh <alexey.pelykh@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    5fe21236
omap-serial.c 42.8 KB