]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
tty: omap-serial: Fix initial on-boot RTS GPIO level
authorRafael Gago <rafael.gago@gmail.com>
Thu, 21 Dec 2017 11:55:30 +0000 (12:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Jan 2018 15:45:17 +0000 (16:45 +0100)
The rs485 flag "SER_RS485_RTS_AFTER_SEND" was wrongly read from the GPIO
flags. This caused the RTS pin to be high during boot.

Signed-off-by: Rafael Gago Castano <rgc@hms.se>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/omap-serial.c

index 56e683373d6d62cee46bbcfadd87aa442ad3a30d..6420ae581a802fe3c614591dce7ded443e0610a6 100644 (file)
@@ -1602,7 +1602,6 @@ static int serial_omap_probe_rs485(struct uart_omap_port *up,
                                   struct device_node *np)
 {
        struct serial_rs485 *rs485conf = &up->port.rs485;
-       enum of_gpio_flags flags;
        int ret;
 
        rs485conf->flags = 0;
@@ -1622,13 +1621,13 @@ static int serial_omap_probe_rs485(struct uart_omap_port *up,
        }
 
        /* check for tx enable gpio */
-       up->rts_gpio = of_get_named_gpio_flags(np, "rts-gpio", 0, &flags);
+       up->rts_gpio = of_get_named_gpio(np, "rts-gpio", 0);
        if (gpio_is_valid(up->rts_gpio)) {
                ret = devm_gpio_request(up->dev, up->rts_gpio, "omap-serial");
                if (ret < 0)
                        return ret;
-               ret = gpio_direction_output(up->rts_gpio,
-                                           flags & SER_RS485_RTS_AFTER_SEND);
+               ret = rs485conf->flags & SER_RS485_RTS_AFTER_SEND ? 1 : 0;
+               ret = gpio_direction_output(up->rts_gpio, ret);
                if (ret < 0)
                        return ret;
        } else if (up->rts_gpio == -EPROBE_DEFER) {