This patchset adds RS-485 support to the DW UART driver. The patchset has two main parts. The first part adds HW support for RS-485 itself in various modes of operation and the second part focuses on enabling 9th bit addressing mode that can be used on a multipoint RS-485 communications line. SW half-duplex patch (3/7) depends on UART_CAP_NOTEMT for which there is existing work from others: https://marc.info/?l=linux-kernel&m=161245538311420&w=2 That patchset is not yet applied (and requires revision from its author). To configure multipoint addressing, ADDRB flag is added to termios and two new IOCTLs are added into serial core. On the driver side, I looked into using mux subsystem but its model didn't seem to match well enough to how RS-485 multipoint can be operated. I'm aware of the RS485 changes Lino Sanfilippo recently posted which will make one assignment in the patchset redundant. I'll make the adjustment if those get applied. Ilpo Järvinen (7): serial: 8250_dwlib: RS485 HW half duplex support serial: 8250_dwlib: RS485 HW full duplex support serial: 8250_dwlib: Implement SW half duplex support dt_bindings: snps-dw-apb-uart: Add RS485 serial: termbits: ADDRB to indicate 9th bit addressing mode serial: General support for multipoint addresses serial: 8250_dwlib: Support for 9th bit multipoint addressing .../bindings/serial/snps-dw-apb-uart.yaml | 17 ++ .../driver-api/serial/serial-rs485.rst | 23 +- arch/alpha/include/uapi/asm/ioctls.h | 3 + arch/alpha/include/uapi/asm/termbits.h | 1 + arch/mips/include/uapi/asm/ioctls.h | 3 + arch/mips/include/uapi/asm/termbits.h | 1 + arch/parisc/include/uapi/asm/ioctls.h | 3 + arch/parisc/include/uapi/asm/termbits.h | 1 + arch/powerpc/include/uapi/asm/ioctls.h | 3 + arch/powerpc/include/uapi/asm/termbits.h | 1 + arch/sh/include/uapi/asm/ioctls.h | 3 + arch/sparc/include/uapi/asm/ioctls.h | 3 + arch/sparc/include/uapi/asm/termbits.h | 1 + arch/xtensa/include/uapi/asm/ioctls.h | 3 + drivers/tty/amiserial.c | 6 +- drivers/tty/moxa.c | 1 + drivers/tty/mxser.c | 1 + drivers/tty/serial/8250/8250_core.c | 2 + drivers/tty/serial/8250/8250_dwlib.c | 246 +++++++++++++++++- drivers/tty/serial/8250/8250_dwlib.h | 6 + drivers/tty/serial/serial_core.c | 62 +++++ drivers/tty/tty_ioctl.c | 2 + drivers/usb/serial/usb-serial.c | 5 +- include/linux/serial_core.h | 6 + include/uapi/asm-generic/ioctls.h | 3 + include/uapi/asm-generic/termbits.h | 1 + include/uapi/linux/serial.h | 10 + 27 files changed, 410 insertions(+), 7 deletions(-) -- 2.30.2