From c27ea6d1c09af5e493e7221572d17015b0317355 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Mon, 26 Oct 2015 19:25:34 -0700 Subject: tty: serial: fsl_lpuart: fix DMA parsing With db6b1f827075 ("tty: serial: fsl_lpuart: implement module parameter to disable DMA") the DMA channel parsing has been moved to a function. However, assigning the pointer argument does not update the pointer in the structure, hence it was no longer possible to enable DMA. Fix this by returning the channel, which is easier to read too. --- drivers/tty/serial/fsl_lpuart.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'drivers') diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index f6549ac5a8cf..be6c011b642d 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -1798,13 +1798,16 @@ static struct uart_driver lpuart_reg = { .cons = LPUART_CONSOLE, }; -static void lpuart_request_dma_chan(struct lpuart_port *sport, - struct dma_chan *chan, const char *name) +static struct dma_chan *lpuart_request_dma_chan(struct lpuart_port *sport, + const char *name) { + struct dma_chan *chan; + chan = dma_request_slave_channel(sport->port.dev, name); if (!chan) dev_info(sport->port.dev, "DMA %s channel request failed, " "operating without %s DMA\n", name, name); + return chan; } static int lpuart_probe(struct platform_device *pdev) @@ -1877,8 +1880,8 @@ static int lpuart_probe(struct platform_device *pdev) } if (!nodma) { - lpuart_request_dma_chan(sport, sport->dma_tx_chan, "tx"); - lpuart_request_dma_chan(sport, sport->dma_rx_chan, "rx"); + sport->dma_tx_chan = lpuart_request_dma_chan(sport, "tx"); + sport->dma_rx_chan = lpuart_request_dma_chan(sport, "rx"); } if (of_property_read_bool(np, "linux,rs485-enabled-at-boot-time")) { -- cgit v1.2.3