]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
serial: clps711x: Add support for N_IRDA line discipline
authorAlexander Shiyan <shc_work@mail.ru>
Tue, 31 Dec 2013 16:49:41 +0000 (20:49 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jan 2014 01:06:18 +0000 (17:06 -0800)
This patch replace custom handling of IrDA feature with N_IRDA
line discipline, so IrDA mode can be used with irtty driver.

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt
drivers/tty/serial/clps711x.c

index 8bbdd21ed6acc2ec688f6b6f5ec7ab9bdfc843b2..12f3cf834debafda85c3b19ce9145eca650f57c6 100644 (file)
@@ -9,7 +9,6 @@ Required properties:
 
 Optional properties:
 - uart-use-ms: Indicate the UART has modem signal (DCD, DSR, CTS).
-- uart-use-irda: Indicate the UART use IRDA mode.
 
 Note: Each UART port should have an alias correctly numbered
 in "aliases" node.
index 4f59f1cb9116ecae13a5b537701d52bc7f099ba1..5a931f97aa7c301038c827739adeb63f2d51e4ff 100644 (file)
@@ -232,6 +232,16 @@ static void uart_clps711x_break_ctl(struct uart_port *port, int break_state)
        writel_relaxed(ubrlcr, port->membase + UBRLCR_OFFSET);
 }
 
+static void uart_clps711x_set_ldisc(struct uart_port *port, int ld)
+{
+       if (!port->line) {
+               struct clps711x_port *s = dev_get_drvdata(port->dev);
+
+               regmap_update_bits(s->syscon, SYSCON_OFFSET, SYSCON1_SIREN,
+                                  (ld == N_IRDA) ? SYSCON1_SIREN : 0);
+       }
+}
+
 static int uart_clps711x_startup(struct uart_port *port)
 {
        struct clps711x_port *s = dev_get_drvdata(port->dev);
@@ -342,6 +352,7 @@ static const struct uart_ops uart_clps711x_ops = {
        .stop_rx        = uart_clps711x_nop_void,
        .enable_ms      = uart_clps711x_nop_void,
        .break_ctl      = uart_clps711x_break_ctl,
+       .set_ldisc      = uart_clps711x_set_ldisc,
        .startup        = uart_clps711x_startup,
        .shutdown       = uart_clps711x_shutdown,
        .set_termios    = uart_clps711x_set_termios,
@@ -482,15 +493,8 @@ static int uart_clps711x_probe(struct platform_device *pdev)
                if (IS_ERR(s->syscon))
                        return PTR_ERR(s->syscon);
 
-               if (!index) {
-                       bool use_irda;
-
+               if (!index)
                        s->use_ms = of_property_read_bool(np, "uart-use-ms");
-                       use_irda = of_property_read_bool(np, "uart-use-irda");
-                       regmap_update_bits(s->syscon, SYSCON_OFFSET,
-                                          SYSCON1_SIREN,
-                                          use_irda ? SYSCON1_SIREN : 0);
-               }
        }
 
        s->port.line            = index;