]> git.baikalelectronics.ru Git - kernel.git/commit
usb: pl2303: fix+improve the divsor based baud rate encoding method
authorFrank Schäfer <fschaefer.oss@googlemail.com>
Tue, 6 Aug 2013 17:26:23 +0000 (19:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 12 Aug 2013 22:43:40 +0000 (15:43 -0700)
commit7163fc4b3e26b70568c277263aaa819004f9ddae
tree62c4240190ae7099a71bcc65938277777ef13e1e
parenta769a2cb13157715e3ec798f1a0db343c7fc9bbd
usb: pl2303: fix+improve the divsor based baud rate encoding method

Based on the formula in the code description, Reinhard Max and me have
investigated the devices behavior / functional principle of the divisor
based baud rate encoding method.

It turned out, that (although beeing a good starting point) the current
code has some flaws. It doesn't work correctly for a wide range of baud
rates and the divisor resolution can be improved. It also doesn't
report the actually set baud rate.

This patch fixes and improves the code for the divisor based baud rate
encoding method a lot. It can now be used for the whole range of baud
rates from 46 baud to 24M baud with a very good divisor resolution and
userspace can read back the resulting baud rate.

It also documents the formula used for encoding and the hardware
behavior (including special cases).

The basic algorithm, rounding and several code comments/explanations
are provided by Reinhard Max.
I've added some minor fixes, the handling of the special cases and
further code/algorithm descriptions.

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Reinhard Max <max@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/pl2303.c