Skip to content

Commit ecfc577

Browse files
Shubhrajyoti Dattagregkh
authored andcommitted
serial: xuartps: Enable clocks in the pm disable case also
When Power management is disabled then the clocks are not getting enabled. This patch enables it for the !PM case also. While at it also pm_runtime_set_active is called before calling pm_runtime_enable. Reported-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent cade358 commit ecfc577

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

drivers/tty/serial/xilinx_uartps.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,12 +1521,12 @@ static int cdns_uart_probe(struct platform_device *pdev)
15211521
return PTR_ERR(cdns_uart_data->uartclk);
15221522
}
15231523

1524-
rc = clk_prepare(cdns_uart_data->pclk);
1524+
rc = clk_prepare_enable(cdns_uart_data->pclk);
15251525
if (rc) {
15261526
dev_err(&pdev->dev, "Unable to enable pclk clock.\n");
15271527
return rc;
15281528
}
1529-
rc = clk_prepare(cdns_uart_data->uartclk);
1529+
rc = clk_prepare_enable(cdns_uart_data->uartclk);
15301530
if (rc) {
15311531
dev_err(&pdev->dev, "Unable to enable device clock.\n");
15321532
goto err_out_clk_dis_pclk;
@@ -1580,8 +1580,8 @@ static int cdns_uart_probe(struct platform_device *pdev)
15801580

15811581
pm_runtime_use_autosuspend(&pdev->dev);
15821582
pm_runtime_set_autosuspend_delay(&pdev->dev, UART_AUTOSUSPEND_TIMEOUT);
1583-
pm_runtime_enable(&pdev->dev);
15841583
pm_runtime_set_active(&pdev->dev);
1584+
pm_runtime_enable(&pdev->dev);
15851585

15861586
rc = uart_add_one_port(&cdns_uart_uart_driver, port);
15871587
if (rc) {
@@ -1601,9 +1601,9 @@ static int cdns_uart_probe(struct platform_device *pdev)
16011601
pm_runtime_disable(&pdev->dev);
16021602
pm_runtime_set_suspended(&pdev->dev);
16031603
pm_runtime_dont_use_autosuspend(&pdev->dev);
1604-
clk_unprepare(cdns_uart_data->uartclk);
1604+
clk_disable_unprepare(cdns_uart_data->uartclk);
16051605
err_out_clk_dis_pclk:
1606-
clk_unprepare(cdns_uart_data->pclk);
1606+
clk_disable_unprepare(cdns_uart_data->pclk);
16071607

16081608
return rc;
16091609
}
@@ -1627,8 +1627,8 @@ static int cdns_uart_remove(struct platform_device *pdev)
16271627
#endif
16281628
rc = uart_remove_one_port(&cdns_uart_uart_driver, port);
16291629
port->mapbase = 0;
1630-
clk_unprepare(cdns_uart_data->uartclk);
1631-
clk_unprepare(cdns_uart_data->pclk);
1630+
clk_disable_unprepare(cdns_uart_data->uartclk);
1631+
clk_disable_unprepare(cdns_uart_data->pclk);
16321632
pm_runtime_disable(&pdev->dev);
16331633
pm_runtime_set_suspended(&pdev->dev);
16341634
pm_runtime_dont_use_autosuspend(&pdev->dev);

0 commit comments

Comments
 (0)