Skip to content

Commit

Permalink
mediatek: enable sel_clk for spi-mt65xx
Browse files Browse the repository at this point in the history
Without explicitly enabling sel_clk, clk_disable_unused() will disable
it when boot is done, causing CPU hang on SPI1 register access on MT7986.
Explicitly enable sel_clk to make SPI1 functional.

Signed-off-by: Furong Xu <[email protected]>
Signed-off-by: Chuanhong Guo <[email protected]>
  • Loading branch information
HZFrodo authored and 981213 committed Dec 16, 2022
1 parent 9e2c01e commit 335c1e7
Showing 1 changed file with 29 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -1223,10 +1223,16 @@ static int mtk_spi_probe(struct platform
goto err_disable_spi_hclk;
}

+ ret = clk_prepare_enable(mdata->sel_clk);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to enable sel_clk (%d)\n", ret);
+ goto err_disable_spi_clk;
+ }
+
ret = clk_set_parent(mdata->sel_clk, mdata->parent_clk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to clk_set_parent (%d)\n", ret);
- goto err_disable_spi_clk;
+ goto err_disable_spi_sel_clk;
}

mdata->spi_clk_hz = clk_get_rate(mdata->spi_clk);
@@ -1277,6 +1283,8 @@ static int mtk_spi_probe(struct platform

err_disable_runtime_pm:
pm_runtime_disable(&pdev->dev);
+err_disable_spi_sel_clk:
+ clk_disable_unprepare(mdata->sel_clk);
err_disable_spi_clk:
clk_disable_unprepare(mdata->spi_clk);
err_disable_spi_hclk:

0 comments on commit 335c1e7

Please sign in to comment.