summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>2013-03-25 17:51:15 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-26 03:36:48 +0400
commitb0b8c84cf58d2486d48f486b5c47af7a7a33a497 (patch)
tree6ac36520e3535d9bac0bb1bf20a2945e5879d471 /drivers
parent44a459fd83376d08b0dea776354761ebb1bacde1 (diff)
downloadlinux-b0b8c84cf58d2486d48f486b5c47af7a7a33a497.tar.xz
serial: of_serial: Handle auto-flow-control property
Automatic Flow Control capability is not tied to this property. This is only one way of detecting it. The property is limited to be used only with 8250 driver. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/tty/serial/of_serial.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
index 267711b5cb4d..39c7ea4cb14f 100644
--- a/drivers/tty/serial/of_serial.c
+++ b/drivers/tty/serial/of_serial.c
@@ -14,7 +14,6 @@
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/serial_core.h>
-#include <linux/serial_8250.h>
#include <linux/serial_reg.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -22,6 +21,8 @@
#include <linux/nwpserial.h>
#include <linux/clk.h>
+#include "8250/8250.h"
+
struct of_serial_info {
struct clk *clk;
int type;
@@ -171,11 +172,17 @@ static int of_platform_serial_probe(struct platform_device *ofdev)
#ifdef CONFIG_SERIAL_8250
case PORT_8250 ... PORT_MAX_8250:
{
- /* For now the of bindings don't support the extra
- 8250 specific bits */
struct uart_8250_port port8250;
memset(&port8250, 0, sizeof(port8250));
port8250.port = port;
+
+ if (port.fifosize)
+ port8250.capabilities = UART_CAP_FIFO;
+
+ if (of_property_read_bool(ofdev->dev.of_node,
+ "auto-flow-control"))
+ port8250.capabilities |= UART_CAP_AFE;
+
ret = serial8250_register_8250_port(&port8250);
break;
}