Define a device tree binding for an rs485 bus termination GPIO (patch [3/4]), amend the serial core to retrieve the GPIO from the device tree and amend the default ->rs485_config() callback for 8250 drivers to change the GPIO on request from user space (patch [4/4]). Retrieving the GPIO from the device tree may fail, so allow uart_get_rs485_mode() to return an errno and change all callers to check for failure (patch [2/4]). Fix a bug in the 8250 core if retrieval of the GPIO initially fails with -EPROBE_DEFER and is later retried (patch [1/4]). Changes v1 -> v2: Patch [1/4]: * Drop unnecessary "else" after "if ... goto" statement. (Andy) * Document applicability to older kernels in commit message. (Andy) * Add Fixes tag. (Andy) Patch [4/4]: * Drop unnecessary devm_gpiod_put(). (Andy) * Use GPIOD_OUT_LOW macro for brevity. (Andy) * Document the rationale for disabling termination by default. * Drop nonsensical read of GPIO after setting its direction to out. Link to v1: https://lore.kernel.org/linux-serial/cover.1588505407.git.lukas@xxxxxxxxx/ Lukas Wunner (4): serial: 8250: Avoid error message on reprobe serial: Allow uart_get_rs485_mode() to return errno dt-bindings: serial: Add binding for rs485 bus termination GPIO serial: 8250: Support rs485 bus termination GPIO .../devicetree/bindings/serial/rs485.yaml | 4 ++++ drivers/tty/serial/8250/8250_core.c | 18 ++++++++++----- drivers/tty/serial/8250/8250_port.c | 4 ++++ drivers/tty/serial/ar933x_uart.c | 6 +++-- drivers/tty/serial/atmel_serial.c | 6 +++-- drivers/tty/serial/fsl_lpuart.c | 5 ++++- drivers/tty/serial/imx.c | 6 ++++- drivers/tty/serial/omap-serial.c | 4 +++- drivers/tty/serial/serial_core.c | 22 ++++++++++++++++++- drivers/tty/serial/stm32-usart.c | 8 +++---- include/linux/serial_core.h | 4 +++- 11 files changed, 69 insertions(+), 18 deletions(-) -- 2.26.2