From: myung-su.cha Date: Mon, 28 Jan 2019 12:59:09 +0000 (+0900) Subject: [RAMEN9610-11497][COMMMON] serial: samsung: Set default Baud rate as 115200 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=6c6f13dd0e7d8aa83bc5c02db8fffd9ae10d3ce4;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git [RAMEN9610-11497][COMMMON] serial: samsung: Set default Baud rate as 115200 Abnormal resume latency issue in user binary is because Baud rate is set 9600. To resolve this issue, this patch makes Baud rate as 115200 when requested Baud rate is 0. Change-Id: I71b54f2adc63f96032b9c628a5afb7e5e5377fc8 Signed-off-by: myung-su.cha --- diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index 7728eafbfc2d..3fe28ec62f01 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c @@ -962,6 +962,8 @@ static void s3c24xx_serial_set_termios(struct uart_port *port, */ baud = uart_get_baud_rate(port, termios, old, MIN_BAUD, MAX_BAUD); + if (ourport->dbg_uart_ch && (baud == 9600)) + baud = ourport->dbg_uart_baud; quot = s3c24xx_serial_getclk(ourport, baud, &clk, &clk_sel); if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) quot = port->custom_divisor; @@ -1027,6 +1029,24 @@ static void s3c24xx_serial_set_termios(struct uart_port *port, break; } + if (ourport->dbg_uart_ch) { + switch (ourport->dbg_word_len) { + case 5: + ulcon = S3C2410_LCON_CS5; + break; + case 6: + ulcon = S3C2410_LCON_CS6; + break; + case 7: + ulcon = S3C2410_LCON_CS7; + break; + case 8: + default: + ulcon = S3C2410_LCON_CS8; + break; + } + } + /* preserve original lcon IR settings */ if (!ourport->usi_v2) ulcon |= (cfg->ulcon & S3C2410_LCON_IRM); @@ -1716,6 +1736,22 @@ static int s3c24xx_serial_probe(struct platform_device *pdev) else ourport->usi_v2 = 0; + if (of_get_property(pdev->dev.of_node, "samsung,dbg-uart-ch", NULL)) + ourport->dbg_uart_ch = 1; + else + ourport->dbg_uart_ch = 0; + + if (ourport->dbg_uart_ch == 1) { + if (of_property_read_u32(pdev->dev.of_node, "samsung,dbg-uart-baud", &ourport->dbg_uart_baud)) { + ourport->dbg_uart_baud = 115200; + dev_err(&pdev->dev, "No DBG baud rate value. Use 115200 Baud rate\n"); + } + if (of_property_read_u32(pdev->dev.of_node, "samsung,dbg-word-len", &ourport->dbg_word_len)) { + ourport->dbg_word_len = 8; + dev_err(&pdev->dev, "No DBG word length value. Use 8 word length\n"); + } + } + if (of_get_property(pdev->dev.of_node, "samsung,rts-gpio-control", NULL)) { ourport->rts_control = 1; ourport->default_uart_pinctrl = devm_pinctrl_get(&pdev->dev); diff --git a/drivers/tty/serial/samsung.h b/drivers/tty/serial/samsung.h index ccc6220224fd..a12348e56944 100644 --- a/drivers/tty/serial/samsung.h +++ b/drivers/tty/serial/samsung.h @@ -91,6 +91,9 @@ struct s3c24xx_uart_port { unsigned int in_band_wakeup; unsigned int dbg_mode; + unsigned int dbg_uart_ch; + unsigned int dbg_uart_baud; + unsigned int dbg_word_len; }; /* conversion functions */