• N
    USB: serial: ftdi_sio: use rounding when calculating baud rate divisors · 6abd8371
    Nikolaj Fogh 提交于
    Improve baud-rate generation by using rounding-to-closest instead of
    truncation in divisor calculation.
    
    Results have been verified by logic analyzer on an FT232RT (232BM) chip.
    The following table shows the wanted baud rate, the baud rate obtained
    with the old method (truncation), with the new method (rounding) and the
    baud rate generated by the windows 10 driver. The numbers in parentheses
    is the error.
    
    +- Wanted --+------ Old -------+------ New -------+------ Win -------+
    |    9600   |    9600 (0.00%)  |    9604 (0.05%)  |    9605 (0.05%)  |
    |   19200   |   19200 (0.00%)  |   19199 (0.01%)  |   19198 (0.01%)  |
    |   38400   |   38395 (0.01%)  |   38431 (0.08%)  |   38394 (0.02%)  |
    |   57600   |   57725 (0.22%)  |   57540 (0.10%)  |   57673 (0.13%)  |
    |  115200   |  115307 (0.09%)  |  115330 (0.11%)  |  115320 (0.10%)  |
    |  921600   |  919963 (0.18%)  |  920386 (0.13%)  |  920810 (0.09%)  |
    |  961200   |  996512 (3.67%)  |  956480 (0.49%)  |  956937 (0.44%)  |
    +-----------+------------------+------------------+------------------+
    
    The error due to noise in the measurements is in the order of a few
    tenths of a %. As can be seen, the baud rate is significantly improved
    for some rates (e.g. 961200), and corresponds to the output given by the
    windows driver.
    
    The theoretical baud rate has been calculated for all baud rates from 1
    to 3M, and as expected, the error is centered around 0, with a triangle
    shape instead of a sawtooth, so the maximum error is decreased to half.
    Signed-off-by: NNikolaj Fogh <nikolajfogh@gmail.com>
    [ johan: edit commit message slightly ]
    Signed-off-by: NJohan Hovold <johan@kernel.org>
    6abd8371
ftdi_sio.c 97.7 KB