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-10-30 14:04:52 -07:00
2012-09-26 13:39:39 -07:00
2012-10-30 14:04:52 -07:00
2012-03-28 18:30:01 +01:00
2012-08-13 16:50:19 -07:00
2011-10-27 08:35:41 +02:00
2012-09-05 12:33:39 -07:00
2012-09-05 12:33:39 -07:00
2012-10-25 11:29:44 -07:00
2011-12-27 16:33:13 -05:00
2012-11-15 17:15:02 -08:00
2012-10-30 14:06:52 -07:00
2012-04-09 10:30:39 -07:00
2011-12-09 19:05:33 -08:00
2011-12-09 19:05:33 -08:00
2012-11-15 16:59:58 -08: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-11-15 16:51:38 -08:00
2012-11-01 08:50:01 -07:00
2012-10-01 19:11:38 -07:00
2012-09-10 16:33:02 -07:00
2012-09-10 16:33:02 -07:00
2012-11-15 17:11:42 -08:00
2012-09-26 13:52:36 -07:00
2012-10-13 11:16:58 +09:00
2012-05-21 14:31:54 +01:00
2012-06-12 15:48:01 -07:00
2012-02-08 15:04:32 -08:00
2012-09-05 13:15:07 -07:00
2012-03-08 11:47:02 -08:00
2012-10-30 14:06:52 -07:00
2012-09-05 12:33:40 -07:00
2012-09-17 04:45:29 -07:00
2011-09-22 16:08:57 -07:00
2012-11-15 17:06:10 -08:00
2012-10-01 18:02:07 -07:00
2011-11-26 20:19:21 -08:00
2011-08-26 11:01:15 -07:00
2012-03-28 18:30:03 +01:00
2012-09-10 16:33:36 -07:00
2012-08-13 16:50:19 -07:00
2012-02-24 13:50:45 -08:00
2012-09-11 12:21:33 -07:00
2011-10-31 19:31:28 -04:00
2012-11-01 08:50:01 -07:00
2012-10-29 09:00:57 -07:00
2012-08-16 12:10:16 -07:00
2012-08-16 12:20:20 -07:00
2011-12-16 11:10:01 +11:00
2012-10-24 11:38:28 -07:00
2012-03-25 23:57:20 +01:00
2012-10-24 11:29:30 -07:00
2011-12-23 10:07:00 +09:00
2012-05-15 17:48:50 +02:00
2012-09-05 13:24:40 -07:00
2012-10-05 09:34:37 -07:00
2012-11-15 16:59:58 -08:00
2012-09-19 15:37:13 +02:00
2012-06-12 15:41:18 -07:00
2012-10-15 14:08:48 +09:00
2012-03-30 19:50:15 +09:00
2012-09-05 12:41:57 -07:00
2012-02-22 17:59:12 +01:00
2012-03-23 17:19:37 -07:00
2012-02-10 10:44:35 -08:00
2012-03-28 18:30:03 +01:00
2012-03-28 18:30:03 +01:00
2012-09-05 13:15:07 -07:00
2012-04-04 00:37:10 -07:00
2011-11-30 20:11:46 +09:00
2012-07-19 10:39:42 -04:00
2012-01-26 17:14:50 -08:00
2012-01-26 17:14:50 -08:00
2012-10-24 11:34:51 -07:00
2012-11-15 16:58:19 -08:00
2012-05-15 17:48:50 +02:00