Message ID | 20170718105948.21986-6-u.kleine-koenig@pengutronix.de |
---|---|
State | New |
Headers | show |
On Tue, Jul 18, 2017 at 12:59:44PM +0200, Uwe Kleine-König wrote: > From: Sascha Hauer <s.hauer@pengutronix.de> > > We just got a common helper for parsing the rs485 specific > device tree properties. Use it and drop the open coded parser. > > As a side effect this adds support for parsing rs485-rts-delay and > rs485-rx-during-tx. As the driver doesn't support this though, probing > fails if these are defined. > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> > --- > drivers/tty/serial/fsl_lpuart.c | 24 ++++++++++++++++++------ > 1 file changed, 18 insertions(+), 6 deletions(-) > > diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c > index 4becfbf35c4c..cac81b143abe 100644 > --- a/drivers/tty/serial/fsl_lpuart.c > +++ b/drivers/tty/serial/fsl_lpuart.c > @@ -2161,6 +2161,24 @@ static int lpuart_probe(struct platform_device *pdev) > return ret; > } > > + of_get_rs485_mode(np, &sport->port.rs485); error checking? Elsewhere in this series as well. Also, why did you not cc: me on this series so I am sure to see it? thanks, greg k-h
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index 4becfbf35c4c..cac81b143abe 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -2161,6 +2161,24 @@ static int lpuart_probe(struct platform_device *pdev) return ret; } + of_get_rs485_mode(np, &sport->port.rs485); + + if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX) { + dev_err(&pdev->dev, "driver doesn't support RX during TX\n"); + return -ENOSYS; + } + + if (sport->port.rs485.delay_rts_before_send || + sport->port.rs485.delay_rts_after_send) { + dev_err(&pdev->dev, "driver doesn't support RTS delays\n"); + return -ENOSYS; + } + + if (sport->port.rs485.flags & SER_RS485_ENABLED) { + sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND; + writeb(UARTMODEM_TXRTSE, sport->port.membase + UARTMODEM); + } + sport->dma_tx_chan = dma_request_slave_channel(sport->port.dev, "tx"); if (!sport->dma_tx_chan) dev_info(sport->port.dev, "DMA tx channel request failed, " @@ -2171,12 +2189,6 @@ static int lpuart_probe(struct platform_device *pdev) dev_info(sport->port.dev, "DMA rx channel request failed, " "operating without rx DMA\n"); - if (of_property_read_bool(np, "linux,rs485-enabled-at-boot-time")) { - sport->port.rs485.flags |= SER_RS485_ENABLED; - sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND; - writeb(UARTMODEM_TXRTSE, sport->port.membase + UARTMODEM); - } - return 0; }