linux/drivers/tty/serial/8250
Ilpo Järvinen f287f971e2 serial: 8250_dwlib: Support for 9th bit multipoint addressing
Add 9th bit multipoint addressing mode for DW UART. 9th bit addressing
can be used only when HW RS485 is available.

Updating RAR (receive address register) is bit tricky because busy
indication is not be available when DW UART is strictly 16550
compatible, which is the case with the hardware I was testing with. RAR
should not be updated while receive is in progress which is now
achieved by deasserting RE and waiting for one frame (in case rx would
be in progress, the driver seems to have no way of knowing it w/o busy
indication). Because of this complexity, it's better to avoid doing it
unless really needed.

Co-developed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Co-developed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Co-developed-by: Raymond Tan <raymond.tan@intel.com>
Co-developed-by: Lakshmi Sowjanya <lakshmi.sowjanya.d@intel.com>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Raymond Tan <raymond.tan@intel.com>
Signed-off-by: Lakshmi Sowjanya <lakshmi.sowjanya.d@intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20220624204210.11112-7-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-27 14:44:20 +02: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_alpha.c serial: 8250: Move Alpha-specific quirk out of the core 2021-12-30 13:23:44 +01:00
8250_aspeed_vuart.c serial: 8250_aspeed_vuart: Fix potential NULL dereference in aspeed_vuart_probe 2022-04-15 11:31:29 +02:00
8250_bcm2835aux.c serial: 8250_bcm2835aux: Use serial8250_em485_supported 2022-06-10 13:49:25 +02:00
8250_bcm7271.c serial: 8250_bcm7271: Fix return error code in case of dma_alloc_coherent() failure 2022-01-06 15:53:49 +01:00
8250_boca.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_core.c serial: 8250: create lsr_save_mask 2022-06-27 14:44:20 +02:00
8250_dma.c serial: 8250: use THRE & __stop_tx also with DMA 2022-04-26 13:28:34 +02:00
8250_dw.c serial: 8250: create lsr_save_mask 2022-06-27 14:44:20 +02:00
8250_dwlib.c serial: 8250_dwlib: Support for 9th bit multipoint addressing 2022-06-27 14:44:20 +02:00
8250_dwlib.h serial: 8250_dwlib: RS485 HW half & full duplex support 2022-04-26 14:47:28 +02:00
8250_early.c serial: Consolidate BOTH_EMPTY use 2022-06-27 14:41:31 +02: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: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
8250_fintek.c serial: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
8250_fourport.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_fsl.c serial: 8250: make saved LSR larger 2022-06-27 14:44:20 +02:00
8250_gsc.c serial: parisc: GSC: fix build when IOSAPIC is not set 2022-02-14 19:34:42 +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: make saved LSR larger 2022-06-27 14:44:20 +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 serial: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
8250_lpss.c serial: 8250_lpss: Use 32-bit reads 2022-06-27 14:44:20 +02:00
8250_men_mcb.c 8250-men-mcb: fix signed/unsigned confusion 2020-06-27 16:12:45 +02:00
8250_mid.c serial: 8250_mid: Balance reference count for PCI DMA device 2022-02-25 10:35:59 +01:00
8250_mtk.c Revert "serial: 8250_mtk: Make sure to select the right FEATURE_SEL" 2022-05-19 18:30:12 +02:00
8250_of.c serial: 8250_of: Use serial8250_em485_supported 2022-06-10 13:49:25 +02:00
8250_omap.c serial: 8250: make saved LSR larger 2022-06-27 14:44:20 +02:00
8250_pci.c serial: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
8250_pericom.c serial: 8250_pericom: Use UART_LCR_DLAB 2022-06-27 14:33:15 +02:00
8250_pnp.c serial: 8250: remove duplicated BRI0A49 and BDP3336 entries 2021-09-22 16:59:13 +02:00
8250_port.c serial: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
8250_pxa.c serial: 8250: pxa: Remove unneeded <linux/pm_runtime.h> 2022-05-05 22:34:27 +02:00
8250_tegra.c serial: 8250_tegra: mark acpi_device_id as unused with !ACPI 2022-03-18 13:18:25 +01:00
8250_uniphier.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
8250.h serial: take termios_rwsem for ->rs485_config() & pass termios as param 2022-06-27 14:44:20 +02:00
Kconfig serial: 8250: Make SERIAL_8250_EM available for arm64 systems 2022-04-15 11:11:11 +02:00
Makefile serial: 8250: Move Alpha-specific quirk out of the core 2021-12-30 13:23:44 +01:00
serial_cs.c serial_cs: Add Option International GSM-Ready 56K/ISDN modem 2021-06-16 09:20:29 +02:00