• Lukas Wunner's avatar
    serial: fsl_lpuart: Support common rs485 binding for RTS polarity · 01d84535
    Lukas Wunner authored
    Invoke the ->rs485_config callback on probe to set UARTMODEM_TXRTSPOL
    appropriately based on the UART's device properties.
    
    This implicitly sets UARTMODEM_TXRTSE if rs485 was enabled in the device
    properties, so drop the identical code from lpuart_probe().
    
    It also fixes a bug:  If an unsupported rs485 property was specified
    (rs485-rx-during-tx or rs485-rts-delay), the driver returns -ENOSYS
    without performing any cleanup, in particular without calling
    uart_remove_one_port() or clk_disable_unprepare(), thus leaking the
    uart_port. But with the invocation of ->rs485_config, the unsupported
    properties are now cleared in struct serial_rs485 and thus ignored.
    It therefore seems sufficient to just log an error instead of bailing
    out.
    
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    01d84535
fsl_lpuart.c 61.2 KB