From: Ray Jui Date: Wed, 8 Oct 2014 00:35:47 +0000 (-0700) Subject: serial: 8250_dw: Add DMA support for non-ACPI platforms X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a8b26e1af94825296f29eee6bfc001c5543d3c7e;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git serial: 8250_dw: Add DMA support for non-ACPI platforms The dma pointer under struct uart_8250_port is currently left unassigned for non-ACPI platforms. It should be pointing to the dma member in struct dw8250_data like how it was done for ACPI, so the core 8250 code will try to request for DMA when registering the port If DMA is not enabled in device tree, request DMA will fail and the driver will fall back to PIO Signed-off-by: Ray Jui Reviewed-by: JD (Jiandong) Zheng Reviewed-by: Scott Branden Tested-by: Scott Branden Reviewed-by: Heikki Krogerus Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index beea6ca73ee5..73a14ae8f0ae 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -290,6 +290,14 @@ static int dw8250_probe_of(struct uart_port *p, if (has_ucv) dw8250_setup_port(up); + /* if we have a valid fifosize, try hooking up DMA here */ + if (p->fifosize) { + up->dma = &data->dma; + + up->dma->rxconf.src_maxburst = p->fifosize / 4; + up->dma->txconf.dst_maxburst = p->fifosize / 4; + } + if (!of_property_read_u32(np, "reg-shift", &val)) p->regshift = val;