mirror_ubuntu-kernels/drivers/tty/serial/8250
Al Cooper 9cabe26e65 serial: 8250_bcm7271: UART errors after resuming from S2
There is a small window in time during resume where the hardware
flow control signal RTS can be asserted (which allows a sender to
resume sending data to the UART) but the baud rate has not yet
been restored. This will cause corrupted data and FRAMING, OVERRUN
and BREAK errors. This is happening because the MCTRL register is
shadowed in uart_port struct and is later used during resume to set
the MCTRL register during both serial8250_do_startup() and
uart_resume_port(). Unfortunately, serial8250_do_startup()
happens before the UART baud rate is restored. The fix is to clear
the shadowed mctrl value at the end of suspend and restore it at the
end of resume.

Fixes: 41a469482d ("serial: 8250: Add new 8250-core based Broadcom STB driver")
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Al Cooper <alcooperx@gmail.com>
Link: https://lore.kernel.org/r/20211201201402.47446-1-alcooperx@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-12-03 14:14:49 +01:00
..
8250_accent.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_acorn.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_aspeed_vuart.c serial: 8250: fix handle_irq locking 2021-07-21 12:53:26 +02:00
8250_bcm2835aux.c serial: 8250: Simplify with dev_err_probe() 2020-09-04 17:14:29 +02:00
8250_bcm7271.c serial: 8250_bcm7271: UART errors after resuming from S2 2021-12-03 14:14:49 +01:00
8250_boca.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_core.c tty/serial: make port of serial8250_register_8250_port const 2021-05-20 16:59:14 +02:00
8250_dma.c serial: 8250: factor out serial8250_{set,clear}_THRI() helpers 2019-06-18 09:36:55 +02:00
8250_dw.c serial: 8250_dw: drop bogus uartclk optimisation 2021-10-21 10:38:49 +02:00
8250_dwlib.c serial: 8250_lpss: Extract dw8250_do_set_termios() for common use 2021-10-10 15:22:34 +02:00
8250_dwlib.h serial: 8250_lpss: Extract dw8250_do_set_termios() for common use 2021-10-10 15:22:34 +02:00
8250_early.c tty: serial: 8250: 8250_port: Move prototypes to shared location 2020-11-13 15:28:12 +01:00
8250_em.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
8250_exar_st16c554.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_exar.c serial: 8250_exar: Add ->unregister_gpio() callback 2021-07-21 12:48:47 +02:00
8250_fintek.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
8250_fourport.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_fsl.c serial: 8250_fsl: Move fsl8250_data to ACPI section 2021-09-22 16:59:13 +02:00
8250_gsc.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
8250_hp300.c tty: add SPDX identifiers to all remaining files in drivers/tty/ 2017-11-08 13:08:12 +01:00
8250_hub6.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_ingenic.c serial: 8250_ingenic: Use of_device_get_match_data 2021-08-26 14:51:10 +02:00
8250_ioc3.c Fix up remaining devm_ioremap_nocache() in SGI IOC3 8250 UART driver 2020-02-08 14:19:39 -08:00
8250_lpc18xx.c tty: Remove dev_err() usage after platform_get_irq() 2019-09-04 12:43:49 +02:00
8250_lpss.c serial: 8250_lpss: Enable PSE UART Auto Flow Control 2021-10-10 15:22:35 +02:00
8250_men_mcb.c 8250-men-mcb: fix signed/unsigned confusion 2020-06-27 16:12:45 +02:00
8250_mid.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_mtk.c serial: 8250_mtk: fix uart corruption issue when rx power off 2021-07-29 17:06:37 +02:00
8250_of.c serial: 8250: of: Check for CONFIG_SERIAL_8250_BCM7271 2021-05-13 16:22:48 +02:00
8250_omap.c serial: 8250: 8250_omap: Fix RX_LVL register offset 2021-09-14 10:06:37 +02:00
8250_pci.c serial: 8250_pci: rewrite pericom_do_set_divisor() 2021-11-25 18:42:15 +01:00
8250_pnp.c serial: 8250: remove duplicated BRI0A49 and BDP3336 entries 2021-09-22 16:59:13 +02:00
8250_port.c serial: 8250: Fix RTS modem control while in rs485 mode 2021-11-25 18:41:09 +01:00
8250_pxa.c serial: 8250_pxa: Switch to use platform_get_irq() 2020-06-27 16:12:56 +02:00
8250_tegra.c 8250_tegra: clean up tegra_uart_handle_break 2021-01-07 16:17:31 +01:00
8250_uniphier.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
8250.h serial: 8250: Use BIT(x) for UART_{CAP,BUG}_* 2021-05-20 17:14:50 +02:00
Kconfig Merge 5.15-rc6 into tty-next 2021-10-18 09:38:54 +02:00
Makefile serial: 8250: Add new 8250-core based Broadcom STB driver 2021-03-26 15:18:30 +01:00
serial_cs.c serial_cs: Add Option International GSM-Ready 56K/ISDN modem 2021-06-16 09:20:29 +02:00