Gabor Juhos 2dff8ad926 tty/serial/ar933x_uart: fix baud rate calculation
The UART of the AR933x SoC implements a fractional divisor
for generating the desired baud rate.

The current code uses a fixed value for the fractional
part of the divisor, and this leads to improperly
calculated baud rates:

   baud    scale   step  real baud         diff
     300   5207*   8192     17756     17456   5818.66%
     600   2603*   8192     35511     34911   5818.50%
    1200   1301*   8192     71023     69823   5818.58%
    2400    650*   8192     11241      8841    368.37%
    4800    324*   8192     22645     17845    371.77%
    9600    161    8192      9645        45      0.46%
   14400    107    8192     14468        68      0.47%
   19200     80    8192     19290        90      0.46%
   28800     53    8192     28935       135      0.46%
   38400     39    8192     39063       663      1.72%
   57600     26    8192     57870       270      0.46%
  115200     12    8192    120192      4992      4.33%
  230400      5    8192    260417     30017     13.02%
  460800      2    8192    520833     60033     13.02%
  921600      0    8192   1562500    640900     69.93%

After the patch, the integer and fractional parts of the
divisor will be calculated dynamically. This ensures that
the UART will use correct baud rates:

   baud    scale   step  real baud         diff
     300      6      11       300         0      0.00%
     600     54     173       600         0      0.00%
    1200     30     195      1200         0      0.00%
    2400     30     390      2400         0      0.00%
    4800     48    1233      4800         0      0.00%
    9600     78    3976      9600         0      0.00%
   14400     98    7474     14400         0      0.00%
   19200     55    5637     19200         0      0.00%
   28800    130   19780     28800         0      0.00%
   38400     36    7449     38400         0      0.00%
   57600     78   23857     57600         0      0.00%
  115200     43   26575    115200         0      0.00%
  230400     23   28991    230400         0      0.00%
  460800     11   28991    460800         0      0.00%
  921600      5   28991    921599        -1      0.00%

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-15 17:15:02 -08:00
..
2012-03-28 18:30:01 +01:00
2012-08-13 16:50:19 -07:00
2012-10-30 14:06:52 -07:00
2012-10-24 11:39:48 -07:00
2012-08-13 16:50:19 -07:00
2012-03-28 18:30:03 +01:00
2012-01-26 11:29:47 -08:00
2012-03-28 18:30:03 +01:00
2012-10-01 19:11:38 -07:00
2012-09-26 13:52:36 -07:00
2012-10-13 11:16:58 +09:00
2012-10-30 14:06:52 -07:00
2012-09-17 04:45:29 -07:00
2011-09-22 16:08:57 -07:00
2011-08-26 11:01:15 -07:00
2012-10-29 09:00:57 -07:00
2012-10-24 11:38:28 -07:00
2012-03-23 17:19:37 -07:00
2012-03-28 18:30:03 +01:00
2012-03-28 18:30:03 +01:00
2012-01-26 17:14:50 -08:00
2012-01-26 17:14:50 -08:00