Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

serial: imx: Support common rs485 binding for RTS polarity

Invoke the ->rs485_config callback on probe to adjust the initial RTS
polarity based on the UART's device properties.

This implicitly fixes a bug: If RTS control is not available, rs485
should be disabled even if it was enabled through a device property.
Log an error when that occurs.

Cc: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Lukas Wunner and committed by
Greg Kroah-Hartman
b8f3bff0 01d84535

+6
+6
drivers/tty/serial/imx.c
··· 2092 2092 2093 2093 uart_get_rs485_mode(&pdev->dev, &sport->port.rs485); 2094 2094 2095 + if (sport->port.rs485.flags & SER_RS485_ENABLED && 2096 + (!sport->have_rtscts || !sport->have_rtsgpio)) 2097 + dev_err(&pdev->dev, "no RTS control, disabling rs485\n"); 2098 + 2099 + imx_rs485_config(&sport->port, &sport->port.rs485); 2100 + 2095 2101 /* Disable interrupts before requesting them */ 2096 2102 reg = readl_relaxed(sport->port.membase + UCR1); 2097 2103 reg &= ~(UCR1_ADEN | UCR1_TRDYEN | UCR1_IDEN | UCR1_RRDYEN |