]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
serial: sh-sci: Set the SCSCR TE and RE bits in the driver
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 11 Jan 2017 14:43:23 +0000 (16:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jan 2017 13:17:04 +0000 (14:17 +0100)
The Transmit Enable and Receive Enable bits are set in the scscr field
of all instances of the sh-sci platform data. Set them in the driver
directly to prepare for their removal from platform data.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sh-sci.c

index b33199af8877399f54b184c5e2e4020fa3c95314..28e96213bad8098544d45e3da245adbb48acb87c 100644 (file)
@@ -2343,7 +2343,8 @@ done:
                serial_port_out(port, SCFCR, ctrl);
        }
 
-       scr_val |= s->cfg->scscr & ~(SCSCR_CKE1 | SCSCR_CKE0);
+       scr_val |= SCSCR_RE | SCSCR_TE |
+                  (s->cfg->scscr & ~(SCSCR_CKE1 | SCSCR_CKE0));
        dev_dbg(port->dev, "SCSCR 0x%x\n", scr_val);
        serial_port_out(port, SCSCR, scr_val);
        if ((srr + 1 == 5) &&
@@ -2793,7 +2794,8 @@ static void serial_console_write(struct console *co, const char *s,
 
        /* first save SCSCR then disable interrupts, keep clock source */
        ctrl = serial_port_in(port, SCSCR);
-       ctrl_temp = (sci_port->cfg->scscr & ~(SCSCR_CKE1 | SCSCR_CKE0)) |
+       ctrl_temp = SCSCR_RE | SCSCR_TE |
+                   (sci_port->cfg->scscr & ~(SCSCR_CKE1 | SCSCR_CKE0)) |
                    (ctrl & (SCSCR_CKE1 | SCSCR_CKE0));
        serial_port_out(port, SCSCR, ctrl_temp);
 
@@ -2996,7 +2998,6 @@ sci_parse_dt(struct platform_device *pdev, unsigned int *dev_id)
        p->flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF;
        p->type = SCI_OF_TYPE(match->data);
        p->regtype = SCI_OF_REGTYPE(match->data);
-       p->scscr = SCSCR_RE | SCSCR_TE;
 
        if (of_find_property(np, "uart-has-rtscts", NULL))
                p->capabilities |= SCIx_HAVE_RTSCTS;
@@ -3164,9 +3165,9 @@ static int __init early_console_setup(struct earlycon_device *device,
        sci_ports[0].cfg = &port_cfg;
        sci_ports[0].cfg->type = type;
        sci_probe_regmap(sci_ports[0].cfg);
-       port_cfg.scscr = sci_serial_in(&sci_ports[0].port, SCSCR) |
-                        SCSCR_RE | SCSCR_TE;
-       sci_serial_out(&sci_ports[0].port, SCSCR, port_cfg.scscr);
+       port_cfg.scscr = sci_serial_in(&sci_ports[0].port, SCSCR);
+       sci_serial_out(&sci_ports[0].port, SCSCR,
+                      SCSCR_RE | SCSCR_TE | port_cfg.scscr);
 
        device->con->write = serial_console_write;
        return 0;