diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 7a761f7c9781dd28a6402ae754eb57f42d50ef3f..78f809759ed73dc15d8458ef2e8133d7bdf4a6d6 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -702,13 +702,16 @@ static int imx_startup(struct uart_port *port) int retval; unsigned long flags, temp; - retval = clk_prepare_enable(sport->clk_per); - if (retval) - goto error_out1; - - retval = clk_prepare_enable(sport->clk_ipg); - if (retval) - goto error_out1; + if (!uart_console(port)) { + retval = clk_prepare_enable(sport->clk_per); + if (retval) + goto error_out1; + retval = clk_prepare_enable(sport->clk_ipg); + if (retval) { + clk_disable_unprepare(sport->clk_per); + goto error_out1; + } + } imx_setup_ufcr(sport, 0); @@ -1578,8 +1581,10 @@ static int serial_imx_probe(struct platform_device *pdev) goto deinit; platform_set_drvdata(pdev, sport); - clk_disable_unprepare(sport->clk_per); - clk_disable_unprepare(sport->clk_ipg); + if (!uart_console(&sport->port)) { + clk_disable_unprepare(sport->clk_per); + clk_disable_unprepare(sport->clk_ipg); + } return 0; deinit: