|
@@ -341,6 +341,7 @@ static void pl011_dma_probe_initcall(struct device *dev, struct uart_amba_port *
|
|
dmaengine_slave_config(chan, &rx_conf);
|
|
dmaengine_slave_config(chan, &rx_conf);
|
|
uap->dmarx.chan = chan;
|
|
uap->dmarx.chan = chan;
|
|
|
|
|
|
|
|
+ uap->dmarx.auto_poll_rate = false;
|
|
if (plat && plat->dma_rx_poll_enable) {
|
|
if (plat && plat->dma_rx_poll_enable) {
|
|
/* Set poll rate if specified. */
|
|
/* Set poll rate if specified. */
|
|
if (plat->dma_rx_poll_rate) {
|
|
if (plat->dma_rx_poll_rate) {
|
|
@@ -361,9 +362,24 @@ static void pl011_dma_probe_initcall(struct device *dev, struct uart_amba_port *
|
|
plat->dma_rx_poll_timeout;
|
|
plat->dma_rx_poll_timeout;
|
|
else
|
|
else
|
|
uap->dmarx.poll_timeout = 3000;
|
|
uap->dmarx.poll_timeout = 3000;
|
|
- } else
|
|
|
|
- uap->dmarx.auto_poll_rate = false;
|
|
|
|
-
|
|
|
|
|
|
+ } else if (!plat && dev->of_node) {
|
|
|
|
+ uap->dmarx.auto_poll_rate = of_property_read_bool(
|
|
|
|
+ dev->of_node, "auto-poll");
|
|
|
|
+ if (uap->dmarx.auto_poll_rate) {
|
|
|
|
+ u32 x;
|
|
|
|
+
|
|
|
|
+ if (0 == of_property_read_u32(dev->of_node,
|
|
|
|
+ "poll-rate-ms", &x))
|
|
|
|
+ uap->dmarx.poll_rate = x;
|
|
|
|
+ else
|
|
|
|
+ uap->dmarx.poll_rate = 100;
|
|
|
|
+ if (0 == of_property_read_u32(dev->of_node,
|
|
|
|
+ "poll-timeout-ms", &x))
|
|
|
|
+ uap->dmarx.poll_timeout = x;
|
|
|
|
+ else
|
|
|
|
+ uap->dmarx.poll_timeout = 3000;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
dev_info(uap->port.dev, "DMA channel RX %s\n",
|
|
dev_info(uap->port.dev, "DMA channel RX %s\n",
|
|
dma_chan_name(uap->dmarx.chan));
|
|
dma_chan_name(uap->dmarx.chan));
|
|
}
|
|
}
|