diff --git a/abi_gki_aarch64_a9a13eeea9.xml b/abi_gki_aarch64_a9a13eeea9.xml index e10d240c0007..13fe559a562f 100644 --- a/abi_gki_aarch64_a9a13eeea9.xml +++ b/abi_gki_aarch64_a9a13eeea9.xml @@ -1685,6 +1685,11 @@ + + + + + @@ -18429,6 +18434,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -26271,7 +26299,7 @@ - + @@ -26562,7 +26590,7 @@ - + @@ -26767,7 +26795,7 @@ - + @@ -26860,7 +26888,7 @@ - + @@ -26868,7 +26896,7 @@ - + @@ -26931,13 +26959,13 @@ - + - + @@ -28599,25 +28627,25 @@ - + - + - + - + @@ -28646,23 +28674,23 @@ - + - + - + - + @@ -28674,7 +28702,7 @@ - + @@ -28721,7 +28749,7 @@ - + @@ -28745,7 +28773,7 @@ - + @@ -28945,7 +28973,7 @@ - + @@ -28958,7 +28986,7 @@ - + @@ -28982,7 +29010,7 @@ - + @@ -29017,7 +29045,7 @@ - + @@ -29030,7 +29058,7 @@ - + @@ -29450,7 +29478,7 @@ - + @@ -29779,7 +29807,7 @@ - + @@ -30161,14 +30189,14 @@ - + - + @@ -30308,7 +30336,7 @@ - + @@ -30408,7 +30436,7 @@ - + @@ -41064,10 +41092,10 @@ - - - - + + + + @@ -46403,17 +46431,6 @@ - - - - - - - - - - - @@ -46487,7 +46504,7 @@ - + @@ -48249,7 +48266,7 @@ - + @@ -48580,7 +48597,7 @@ - + @@ -50373,7 +50390,7 @@ - + @@ -50382,7 +50399,7 @@ - + @@ -50927,8 +50944,8 @@ - - + + @@ -51126,6 +51143,17 @@ + + + + + + + + + + + @@ -58769,6 +58797,23 @@ + + + + + + + + + + + + + + + + + @@ -59141,23 +59186,6 @@ - - - - - - - - - - - - - - - - - @@ -69568,7 +69596,7 @@ - + @@ -82693,7 +82721,7 @@ - + @@ -84010,14 +84038,6 @@ - - - - - - - - @@ -84321,6 +84341,14 @@ + + + + + + + + @@ -84367,6 +84395,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84378,7 +84499,7 @@ - + @@ -84523,7 +84644,7 @@ - + @@ -84582,6 +84703,14 @@ + + + + + + + + @@ -84593,8 +84722,8 @@ - - + + @@ -84688,7 +84817,7 @@ - + @@ -84859,25 +84988,6 @@ - - - - - - - - - - - - - - - - - - - @@ -85057,7 +85167,7 @@ - + @@ -85080,68 +85190,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -85312,12 +85361,13 @@ - + + @@ -85619,7 +85669,7 @@ - + @@ -85635,7 +85685,7 @@ - + @@ -85744,7 +85794,7 @@ - + @@ -85753,7 +85803,7 @@ - + @@ -85761,10 +85811,10 @@ - + - + @@ -85772,6 +85822,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -85836,7 +85910,7 @@ - + @@ -85845,6 +85919,14 @@ + + + + + + + + @@ -86300,6 +86382,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86678,13 +86814,13 @@ - + - + - + @@ -86708,7 +86844,7 @@ - + @@ -86741,7 +86877,7 @@ - + @@ -86750,11 +86886,11 @@ - + - + @@ -86763,7 +86899,7 @@ - + @@ -86955,7 +87091,7 @@ - + @@ -86977,7 +87113,7 @@ - + @@ -86996,10 +87132,10 @@ - + - + @@ -87585,10 +87721,10 @@ - + - + @@ -89208,23 +89344,23 @@ - + - + - + - + - + @@ -89254,7 +89390,7 @@ - + @@ -89281,7 +89417,7 @@ - + @@ -89292,7 +89428,7 @@ - + @@ -90789,10 +90925,10 @@ - + - + @@ -92324,7 +92460,7 @@ - + @@ -92336,7 +92472,7 @@ - + @@ -93746,23 +93882,7 @@ - - - - - - - - - - - - - - - - - + @@ -93770,15 +93890,15 @@ - + - + - + @@ -93786,15 +93906,15 @@ - + - + - + @@ -93802,15 +93922,7 @@ - - - - - - - - - + @@ -93824,7 +93936,7 @@ - + @@ -93835,7 +93947,7 @@ - + @@ -93843,7 +93955,7 @@ - + @@ -93854,7 +93966,7 @@ - + @@ -93865,7 +93977,7 @@ - + @@ -93873,7 +93985,7 @@ - + @@ -93881,7 +93993,7 @@ - + @@ -93889,7 +94001,7 @@ - + @@ -93897,7 +94009,7 @@ - + @@ -93905,7 +94017,7 @@ - + @@ -93913,7 +94025,7 @@ - + @@ -93921,7 +94033,7 @@ - + @@ -94500,7 +94612,7 @@ - + @@ -94508,7 +94620,7 @@ - + @@ -94516,7 +94628,7 @@ - + @@ -94524,7 +94636,7 @@ - + @@ -94549,7 +94661,7 @@ - + @@ -94626,15 +94738,15 @@ - + - + - + - + @@ -94664,7 +94776,7 @@ - + @@ -94678,7 +94790,7 @@ - + @@ -94765,10 +94877,10 @@ - + - + @@ -95272,7 +95384,7 @@ - + @@ -95483,7 +95595,7 @@ - + @@ -95605,7 +95717,7 @@ - + @@ -95638,22 +95750,22 @@ - + - + - + - + - + @@ -95662,7 +95774,7 @@ - + @@ -95673,7 +95785,7 @@ - + @@ -95701,7 +95813,7 @@ - + @@ -95718,7 +95830,7 @@ - + @@ -95727,15 +95839,15 @@ - + - + - + @@ -95752,7 +95864,7 @@ - + @@ -95760,7 +95872,7 @@ - + @@ -95791,7 +95903,7 @@ - + @@ -95869,13 +95981,13 @@ - + - + @@ -96040,7 +96152,7 @@ - + @@ -97687,7 +97799,7 @@ - + @@ -97804,10 +97916,10 @@ - + - + @@ -97892,10 +98004,10 @@ - + - + @@ -97914,10 +98026,10 @@ - + - + @@ -99295,7 +99407,7 @@ - + @@ -100273,7 +100385,7 @@ - + @@ -100504,7 +100616,7 @@ - + @@ -100884,7 +100996,7 @@ - + @@ -100946,12 +101058,12 @@ - + - + @@ -100962,7 +101074,7 @@ - + diff --git a/abi_gki_aarch64_qcom_whitelist b/abi_gki_aarch64_qcom_whitelist index 02f1faa3067f..38dfd5749512 100644 --- a/abi_gki_aarch64_qcom_whitelist +++ b/abi_gki_aarch64_qcom_whitelist @@ -1668,6 +1668,11 @@ platform_get_resource platform_get_resource_byname platform_irq_count + pm_clk_add + pm_clk_create + pm_clk_destroy + pm_clk_resume + pm_clk_suspend pm_generic_resume pm_generic_runtime_resume pm_generic_runtime_suspend diff --git a/drivers/clk/qcom/camcc-shima.c b/drivers/clk/qcom/camcc-shima.c index aa4ce8a76bf6..238063e42111 100644 --- a/drivers/clk/qcom/camcc-shima.c +++ b/drivers/clk/qcom/camcc-shima.c @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include #include @@ -2737,6 +2739,17 @@ static int cam_cc_shima_probe(struct platform_device *pdev) if (IS_ERR(regmap)) return PTR_ERR(regmap); + pm_runtime_enable(&pdev->dev); + ret = pm_clk_create(&pdev->dev); + if (ret) + goto disable_pm_runtime; + + ret = pm_clk_add(&pdev->dev, "cfg_ahb"); + if (ret < 0) { + dev_err(&pdev->dev, "Unable to get ahb clock handle\n"); + goto destroy_pm_clk; + } + clk_lucid_5lpe_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll0_config); clk_lucid_5lpe_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll1_config); clk_zonda_5lpe_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll2_config); @@ -2748,14 +2761,26 @@ static int cam_cc_shima_probe(struct platform_device *pdev) ret = qcom_cc_really_probe(pdev, &cam_cc_shima_desc, regmap); if (ret) { dev_err(&pdev->dev, "Failed to register CAM CC clocks\n"); - return ret; + goto destroy_pm_clk; } dev_info(&pdev->dev, "Registered CAM CC clocks\n"); + return 0; + +destroy_pm_clk: + pm_clk_destroy(&pdev->dev); + +disable_pm_runtime: + pm_runtime_disable(&pdev->dev); + return ret; } +static const struct dev_pm_ops cam_cc_shima_pm_ops = { + SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) +}; + static void cam_cc_shima_sync_state(struct device *dev) { qcom_cc_sync_state(dev, &cam_cc_shima_desc); @@ -2767,6 +2792,7 @@ static struct platform_driver cam_cc_shima_driver = { .name = "cam_cc-shima", .of_match_table = cam_cc_shima_match_table, .sync_state = cam_cc_shima_sync_state, + .pm = &cam_cc_shima_pm_ops, }, }; diff --git a/drivers/clk/qcom/gpucc-shima.c b/drivers/clk/qcom/gpucc-shima.c index 9b577f008482..23f7cccadfc9 100644 --- a/drivers/clk/qcom/gpucc-shima.c +++ b/drivers/clk/qcom/gpucc-shima.c @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include @@ -519,20 +521,43 @@ static int gpu_cc_shima_probe(struct platform_device *pdev) if (IS_ERR(regmap)) return PTR_ERR(regmap); + pm_runtime_enable(&pdev->dev); + ret = pm_clk_create(&pdev->dev); + if (ret) + goto disable_pm_runtime; + + ret = pm_clk_add(&pdev->dev, "cfg_ahb"); + if (ret < 0) { + dev_err(&pdev->dev, "Unable to get ahb clock handle\n"); + goto destroy_pm_clk; + } + clk_lucid_5lpe_pll_configure(&gpu_cc_pll0, regmap, &gpu_cc_pll0_config); clk_lucid_5lpe_pll_configure(&gpu_cc_pll1, regmap, &gpu_cc_pll1_config); ret = qcom_cc_really_probe(pdev, &gpu_cc_shima_desc, regmap); if (ret) { dev_err(&pdev->dev, "Failed to register GPU CC clocks\n"); - return ret; + goto destroy_pm_clk; } dev_info(&pdev->dev, "Registered GPU CC clocks\n"); + return 0; + +destroy_pm_clk: + pm_clk_destroy(&pdev->dev); + +disable_pm_runtime: + pm_runtime_disable(&pdev->dev); + return ret; } +static const struct dev_pm_ops gpu_cc_shima_pm_ops = { + SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) +}; + static void gpu_cc_shima_sync_state(struct device *dev) { qcom_cc_sync_state(dev, &gpu_cc_shima_desc); @@ -544,6 +569,7 @@ static struct platform_driver gpu_cc_shima_driver = { .name = "gpu_cc-shima", .of_match_table = gpu_cc_shima_match_table, .sync_state = gpu_cc_shima_sync_state, + .pm = &gpu_cc_shima_pm_ops, }, }; diff --git a/drivers/clk/qcom/videocc-shima.c b/drivers/clk/qcom/videocc-shima.c index 614353d98bf4..cae46f83a983 100644 --- a/drivers/clk/qcom/videocc-shima.c +++ b/drivers/clk/qcom/videocc-shima.c @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include @@ -575,20 +577,43 @@ static int video_cc_shima_probe(struct platform_device *pdev) if (IS_ERR(regmap)) return PTR_ERR(regmap); + pm_runtime_enable(&pdev->dev); + ret = pm_clk_create(&pdev->dev); + if (ret) + goto disable_pm_runtime; + + ret = pm_clk_add(&pdev->dev, "cfg_ahb"); + if (ret < 0) { + dev_err(&pdev->dev, "Unable to get ahb clock handle\n"); + goto destroy_pm_clk; + } + clk_lucid_5lpe_pll_configure(&video_pll0, regmap, &video_pll0_config); clk_lucid_5lpe_pll_configure(&video_pll1, regmap, &video_pll1_config); ret = qcom_cc_really_probe(pdev, &video_cc_shima_desc, regmap); if (ret) { dev_err(&pdev->dev, "Failed to register VIDEO CC clocks\n"); - return ret; + goto destroy_pm_clk; } dev_info(&pdev->dev, "Registered VIDEO CC clocks\n"); + return 0; + +destroy_pm_clk: + pm_clk_destroy(&pdev->dev); + +disable_pm_runtime: + pm_runtime_disable(&pdev->dev); + return ret; } +static const struct dev_pm_ops video_cc_shima_pm_ops = { + SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) +}; + static void video_cc_shima_sync_state(struct device *dev) { qcom_cc_sync_state(dev, &video_cc_shima_desc); @@ -600,6 +625,7 @@ static struct platform_driver video_cc_shima_driver = { .name = "video_cc-shima", .of_match_table = video_cc_shima_match_table, .sync_state = video_cc_shima_sync_state, + .pm = &video_cc_shima_pm_ops, }, };