OSDN Git Service

serial: samsung: Enable baud clock for UART reset procedure in resume
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 13 Sep 2018 08:21:25 +0000 (10:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 18 Sep 2018 14:07:24 +0000 (16:07 +0200)
Ensure that the baud clock is also enabled for UART register writes in
driver resume. On Exynos5433 SoC this is needed to avoid external abort
issue.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/samsung.c

index 2f8fa18..da1bd4b 100644 (file)
@@ -1941,7 +1941,11 @@ static int s3c24xx_serial_resume(struct device *dev)
 
        if (port) {
                clk_prepare_enable(ourport->clk);
+               if (!IS_ERR(ourport->baudclk))
+                       clk_prepare_enable(ourport->baudclk);
                s3c24xx_serial_resetport(port, s3c24xx_port_to_cfg(port));
+               if (!IS_ERR(ourport->baudclk))
+                       clk_disable_unprepare(ourport->baudclk);
                clk_disable_unprepare(ourport->clk);
 
                uart_resume_port(&s3c24xx_uart_drv, port);
@@ -1964,7 +1968,11 @@ static int s3c24xx_serial_resume_noirq(struct device *dev)
                        if (rx_enabled(port))
                                uintm &= ~S3C64XX_UINTM_RXD_MSK;
                        clk_prepare_enable(ourport->clk);
+                       if (!IS_ERR(ourport->baudclk))
+                               clk_prepare_enable(ourport->baudclk);
                        wr_regl(port, S3C64XX_UINTM, uintm);
+                       if (!IS_ERR(ourport->baudclk))
+                               clk_disable_unprepare(ourport->baudclk);
                        clk_disable_unprepare(ourport->clk);
                }
        }