mirror of https://gitee.com/openkylin/linux.git
serial: pl011: Add device tree support for RX DMA polling
Add equivalent attributes to those provided in the platform data for use when RX DMA is enabled. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2d3b7d6e7d
commit
98267d33e2
|
@ -6,12 +6,17 @@ Required properties:
|
||||||
- interrupts: exactly one interrupt specifier
|
- interrupts: exactly one interrupt specifier
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- pinctrl: When present, must have one state named "sleep"
|
- pinctrl: When present, must have one state named "sleep"
|
||||||
and one state named "default"
|
and one state named "default"
|
||||||
- clocks: When present, must refer to exactly one clock named
|
- clocks: When present, must refer to exactly one clock named
|
||||||
"apb_pclk"
|
"apb_pclk"
|
||||||
- dmas: When present, may have one or two dma channels.
|
- dmas: When present, may have one or two dma channels.
|
||||||
The first one must be named "rx", the second one
|
The first one must be named "rx", the second one
|
||||||
must be named "tx".
|
must be named "tx".
|
||||||
|
- auto-poll: Enables polling when using RX DMA.
|
||||||
|
- poll-rate-ms: Rate at which poll occurs when auto-poll is set,
|
||||||
|
default 100ms.
|
||||||
|
- poll-timeout-ms: Poll timeout when auto-poll is set, default
|
||||||
|
3000ms.
|
||||||
|
|
||||||
See also bindings/arm/primecell.txt
|
See also bindings/arm/primecell.txt
|
||||||
|
|
|
@ -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
|
} else if (!plat && dev->of_node) {
|
||||||
uap->dmarx.auto_poll_rate = false;
|
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));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue