Improve the accuracy of the baud rate generator by using round-to-closest instead of truncating when calculating baud rate divisors.
Quoted 10 lines · Nikolaj Fogh
Quoted 9 lines · Johan Hovold
Quoted 7 lines · Nikolaj Fogh
I have experienced that the
ftdi_siodriver gives less-than-optimal baud rates as the driver truncates instead of rounds to nearest during baud rate divisor calculation.This patch improves on the baud rate generation. The generated baud rate corresponds to the optimal baud rate achievable with the chip. This is what the windows driver gives as well.
Quoted 8 lines
Quoted 3 lines
How did you verify this? Did you trace and compare the divisors actually requested by the Windows driver, or did you measure the resulting rates using a scope?
I verified it by scope. Granted, I only verified it for one baud rate (961200). Whether it gives the same as the Windows driver in general, I'm not sure. However, I would think that rounding instead of flooring would always yield the most accurate result.
I'm not so sure in this case. The driver uses "sub-integer" divisors and looks like it depends on truncation rather than rounding. Some background here:
https://www.ftdichip.com/Support/Knowledgebase/index.html?whatbaudratesareachieveabl.htm
If you want to change these calculations you need to make a stronger case for it and verify that we don't mess up some other rate inadvertently.
Thanks,
Johan