• Ed Blake's avatar
    serial: 8250_dw: Improve clock rate setting · de9e33bd
    Ed Blake authored
    Currently dw8250_set_termios sets the input clock to the nearest
    achievable rate to baudx16.  If necessary, the input clock is then
    divided down to baudx16 using an integer divider within the UART
    device, with the divisor calculated in the 8250 core driver.
    
    However, the clock rate set by dw8250_set_termios and subsequently
    divided down could be considerably different to the target baudx16
    rate, resulting in incorrect operation.  This patch fixes this by
    iteratively searching for an input clock rate that is within +/-1.6%
    of an integer multiple of the target baudx16 rate.
    Signed-off-by: default avatarEd Blake <ed.blake@sondrel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    de9e33bd
8250_dw.c 17.4 KB