On Tue, Jun 18, 2013 at 12:12:53PM -0700, David Daney wrote: > A few differences needed by OCTEON: > > o These are DWC UARTS, but have USR at a different offset. > > o OCTEON must have 64-bit wide register accesses, so we have OCTEON > specific register accessors. > > o No UCV register, so we hard code some properties. > > Signed-off-by: David Daney <david.daney@xxxxxxxxxx> <snip> > @@ -270,10 +301,8 @@ static int dw8250_probe(struct platform_device *pdev) > uart.port.serial_out = dw8250_serial_out; > uart.port.private_data = data; > > - dw8250_setup_port(&uart); > - > if (pdev->dev.of_node) { > - err = dw8250_probe_of(&uart.port); > + err = dw8250_probe_of(&uart.port, data); > if (err) > return err; > } else if (ACPI_HANDLE(&pdev->dev)) { > @@ -284,6 +313,9 @@ static int dw8250_probe(struct platform_device *pdev) > return -ENODEV; > } > > + if (!data->no_ucv) > + dw8250_setup_port(&uart); Moving the dw8250_setup_port() call here breaks dw8250_probe_acpi(). It expects values from the CPR register for the DMA burst size calculation. The DMA support can be moved to a separate function. This way it can be called after this point, and it will then be available for both DT and ACPI. I can make a patch tomorrow. That should solve this issue. Thanks, -- heikki