WSL2-Linux-Kernel/drivers/tty/serial
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
..
8250 serial: 8250_pci: use module_pci_driver to simplify the code 2012-10-30 14:04:52 -07:00
cpm_uart Powerpc 8xx CPM_UART setting MAXIDL register proportionaly to baud rate 2012-09-26 13:39:39 -07:00
jsm serial: jsm: Convert jsm_printk to jsm_dbg 2012-10-30 14:04:52 -07:00
21285.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
68328serial.c TTY: use tty_port_link_device 2012-08-13 16:50:19 -07:00
Kconfig serial: Unneeded ARCH dependencies are removed 2012-11-15 17:11:42 -08:00
Makefile serial/arc-uart: Add new driver 2012-10-30 14:06:52 -07:00
altera_jtaguart.c Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6 2011-10-27 08:35:41 +02:00
altera_uart.c tty: serial: altera_uart: Use platform_{get,set}_drvdata 2012-09-05 12:33:39 -07:00
amba-pl010.c drivers/tty/serial/amba-pl0{10,11}.c: use clk_prepare_enable and clk_disable_unprepare 2012-09-05 12:33:39 -07:00
amba-pl011.c serial/amba-pl011: use devm_* managed resources 2012-10-25 11:29:44 -07:00
apbuart.c apbuart: fix section mismatch warning 2011-12-27 16:33:13 -05:00
apbuart.h
ar933x_uart.c tty/serial/ar933x_uart: fix baud rate calculation 2012-11-15 17:15:02 -08:00
arc_uart.c serial/arc-uart: Add new driver 2012-10-30 14:06:52 -07:00
atmel_serial.c tty/serial: atmel_serial: fix RS485 half-duplex problem 2012-04-09 10:30:39 -07:00
bcm63xx_uart.c serial: bcm63xx_uart: fix irq storm after rx fifo overrun. 2011-06-16 12:01:58 -07:00
bfin_sport_uart.c serial: bfin-sport-uart: Add tty ASYNC_CTS_FLOW flag to do CTS flow control. 2011-12-09 19:05:33 -08:00
bfin_sport_uart.h tty: bfin-sport-uart: Rx interrupt is not called always with irq disabled. 2011-12-09 19:05:33 -08:00
bfin_uart.c serial: bfin-uart: avoid dead lock in rx irq handler in smp kernel 2012-11-15 16:59:58 -08:00
clps711x.c serial: clps711x: Cleanup driver 2012-10-24 11:39:48 -07:00
crisv10.c TTY: use tty_port_link_device 2012-08-13 16:50:19 -07:00
crisv10.h
dz.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
dz.h
efm32-uart.c serial/efm32: add new driver 2012-01-26 11:29:47 -08:00
icom.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
icom.h
ifx6x60.c serial: ifx6x60: ifx_spi_write don't need to do mrdy_assert when fifo is not empty 2012-11-15 16:51:38 -08:00
ifx6x60.h serial:ifx6x60:Prevent data transfer when IFX6x60 port is shutdown 2012-11-01 08:50:01 -07:00
imx.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
ioc3_serial.c TTY: serial: move the dereference below the NULL test 2012-09-10 16:33:02 -07:00
ioc4_serial.c TTY: serial: move the dereference below the NULL test 2012-09-10 16:33:02 -07:00
ip22zilog.c Fix common misspellings 2011-03-31 11:26:23 -03:00
ip22zilog.h
kgdb_nmi.c tty/serial: Add kgdb_nmi driver 2012-09-26 13:52:36 -07:00
kgdboc.c KGDB/KDB fixes and cleanups 2012-10-13 11:16:58 +09:00
lantiq.c SERIAL: MIPS: lantiq: implement OF support 2012-05-21 14:31:54 +01:00
lpc32xx_hs.c serial: Add driver for LPC32xx High Speed UARTs 2012-06-12 15:48:01 -07:00
m32r_sio.c m32r_sio: remove dependency on struct serial_uart_config 2012-09-05 13:15:07 -07:00
m32r_sio.h TTY: serial, include pci.h in m32r_sio 2012-03-08 11:47:02 -08:00
m32r_sio_reg.h m32r: relocate drivers back out of 8250 dir 2012-02-08 15:04:32 -08:00
max310x.c tty: serial: max310x: Remove explicit use of devm_kfree 2012-09-05 12:33:40 -07:00
max3100.c tty: serial: max3100: Fix error case 2012-09-17 04:45:29 -07:00
mcf.c TTY: irq: Remove IRQF_DISABLED 2011-09-22 16:08:57 -07:00
mfd.c serial: mfd: Add nmi_touch_watchdog() into the console write function 2012-11-15 17:06:10 -08:00
mpc52xx_uart.c ARM: soc: non-critical bug fixes 2012-10-01 18:02:07 -07:00
mpsc.c
mrst_max3110.c TTY: Remove redundant spi driver bus initialization 2011-11-26 20:19:21 -08:00
mrst_max3110.h max3110: add sysrq support 2011-08-26 11:01:15 -07:00
msm_serial.c msm_serial: fix clock rate on DMA-based uarts 2012-09-10 16:33:36 -07:00
msm_serial.h tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
msm_serial_hs.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
msm_smd_tty.c TTY: use tty_port_register_device 2012-08-13 16:50:19 -07:00
mux.c tty/serial/mux.c: linux/tty.h included twice 2012-02-24 13:50:45 -08:00
mxs-auart.c serial: mxs-auart: put the device in the error path 2012-09-11 12:21:33 -07:00
netx-serial.c tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
nwpserial.c tty: Add export.h for EXPORT_SYMBOL/THIS_MODULE to exporters 2011-10-31 19:31:28 -04:00
of_serial.c tty: of_serial: fix return value check in of_platform_serial_setup() 2012-11-01 08:50:01 -07:00
omap-serial.c Merge 3.7-rc3 into tty-next 2012-10-29 09:00:57 -07:00
pch_uart.c pch_uart: check kzalloc result in dma_handle_tx() 2012-08-16 12:10:16 -07:00
pmac_zilog.c pmac_zilog,kdb: Fix console poll hook to return instead of loop 2012-08-16 12:20:20 -07:00
pmac_zilog.h tty/serial/pmac_zilog: Fix suspend & resume 2011-12-16 11:10:01 +11:00
pnx8xxx_uart.c
pxa.c tty: serial: KGDB support for PXA 2012-10-24 11:38:28 -07:00
sa1100.c ARM: 7342/2: sa1100: prepare for sparse irq conversion 2012-03-25 23:57:20 +01:00
samsung.c serial: samsung: use clk_prepare_enable and clk_disable_unprepare 2012-10-24 11:29:30 -07:00
samsung.h serial: samsung: merge probe() function from all SoC specific extensions 2011-12-23 10:07:00 +09:00
sb1250-duart.c SERIAL: MIPS Swarm sb1250-duart.c driver needs module.h 2012-05-15 17:48:50 +02:00
sc26xx.c serial: Add note about migration to driver SCCNXP 2012-09-05 13:24:40 -07:00
sccnxp.c tty: serial: sccnxp: Fix bug with unterminated platform_id list 2012-10-05 09:34:37 -07:00
serial_core.c serial: cast before shifting on port io 2012-11-15 16:59:58 -08:00
serial_ks8695.c serial: ks8695: use __iomem pointers for MMIO 2012-09-19 15:37:13 +02:00
serial_txx9.c serial: fix serial_txx9.c build warning/typo 2012-06-12 15:41:18 -07:00
sh-sci.c sh: Fix up more fallout from pointless ARM __iomem churn. 2012-10-15 14:08:48 +09:00
sh-sci.h serial: sh-sci: use serial_port_in/out vs sci_in/out. 2012-03-30 19:50:15 +09:00
sirfsoc_uart.c drivers/tty/serial/sirfsoc_uart.c: drop frees of devm_ alloc'd data 2012-09-05 12:41:57 -07:00
sirfsoc_uart.h serial/sirf: fixup for changes to pin control 2012-02-22 17:59:12 +01:00
sn_console.c Miscellaneous Itanium patches 2012-03-23 17:19:37 -07:00
suncore.c tty: sparc: rename drivers/tty/serial/suncore.h -> include/linux/sunserialcore.h 2012-02-10 10:44:35 -08:00
sunhv.c Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
sunsab.c Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
sunsab.h
sunsu.c serial: diminish usage of struct serial_uart_config 2012-09-05 13:15:07 -07:00
sunzilog.c serial/sunzilog: fix keyboard on SUN SPARCstation 2012-04-04 00:37:10 -07:00
sunzilog.h
timbuart.c TTY: serial: convert drivers/tty/serial/* to use module_platform_driver() 2011-11-30 20:11:46 +09:00
timbuart.h
uartlite.c uartlite: remove IRQF_SAMPLE_RANDOM which is now a no-op 2012-07-19 10:39:42 -04:00
ucc_uart.c serial: Kill off NO_IRQ 2012-01-26 17:14:50 -08:00
vr41xx_siu.c serial: Kill off NO_IRQ 2012-01-26 17:14:50 -08:00
vt8500_serial.c serial: vt8500: fix possible memory leak in vt8500_serial_probe() 2012-10-24 11:34:51 -07:00
xilinx_uartps.c serial: xilinx_uartps: kill CONFIG_OF conditional 2012-11-15 16:58:19 -08:00
zs.c SERIAL: MIPS DECstation zs.c driver needs module.h 2012-05-15 17:48:50 +02:00
zs.h