On 05/26/2015 06:08 PM, Tony Lindgren wrote: > * Peter Ujfalusi <peter.ujfalusi@xxxxxx> [150526 06:28]: >> Switch to use ma_request_slave_channel_compat_reason() to request the DMA >> channels. In case of error, return the error code we received including >> -EPROBE_DEFER >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> >> CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> >> --- >> drivers/tty/serial/8250/8250_dma.c | 18 ++++++++---------- >> 1 file changed, 8 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c >> index 21d01a491405..a617eca4e97d 100644 >> --- a/drivers/tty/serial/8250/8250_dma.c >> +++ b/drivers/tty/serial/8250/8250_dma.c >> @@ -182,21 +182,19 @@ int serial8250_request_dma(struct uart_8250_port *p) >> dma_cap_set(DMA_SLAVE, mask); >> >> /* Get a channel for RX */ >> - dma->rxchan = dma_request_slave_channel_compat(mask, >> - dma->fn, dma->rx_param, >> - p->port.dev, "rx"); >> - if (!dma->rxchan) >> - return -ENODEV; >> + dma->rxchan = dma_request_slave_channel_compat_reason(mask, dma->fn, >> + dma->rx_param, p->port.dev, "rx"); >> + if (IS_ERR(dma->rxchan)) >> + return PTR_ERR(dma->rxchan); >> >> dmaengine_slave_config(dma->rxchan, &dma->rxconf); >> >> /* Get a channel for TX */ >> - dma->txchan = dma_request_slave_channel_compat(mask, >> - dma->fn, dma->tx_param, >> - p->port.dev, "tx"); >> - if (!dma->txchan) { >> + dma->txchan = dma_request_slave_channel_compat_reason(mask, dma->fn, >> + dma->tx_param, p->port.dev, "tx"); >> + if (IS_ERR(dma->txchan)) { >> dma_release_channel(dma->rxchan); >> - return -ENODEV; >> + return PTR_ERR(dma->txchan); >> } >> >> dmaengine_slave_config(dma->txchan, &dma->txconf); > > In general the drivers need to work just fine also without DMA. > > Does this handle the case properly where no DMA channel is configured > for the driver in the dts file? The 8250 core will fall back to PIO mode if the DMA can not be requested. At the morning I was looking at the 8250 stack and realized that serial8250_request_dma() will not be called at driver probe time so this patch can be ignored and will be dropped from the v2 series. -- Péter -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html