drm/msm/adreno: adreno_gpu: Don't set OPP scaling clock w/ GMU
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Sat, 1 Apr 2023 11:54:38 +0000 (13:54 +0200)
committerRob Clark <robdclark@chromium.org>
Mon, 3 Apr 2023 14:38:54 +0000 (07:38 -0700)
Recently I contributed the switch to OPP API for all Adreno generations.
I did however also skip over the fact that GPUs with a GMU don't specify
a core clock of any kind in the GPU node. While that didn't break
anything, it did introduce unwanted spam in the dmesg:

adreno 5000000.gpu: error -ENOENT: _opp_set_clknames: Couldn't find clock with name: core_clk

Guard the entire logic so that it's not used with GMU-equipped GPUs.

Fixes: 9f251f934012 ("drm/msm/adreno: Use OPP for every GPU generation")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/530347/
Link: https://lore.kernel.org/r/20230223-topic-gmuwrapper-v6-1-2034115bb60c@linaro.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/adreno/adreno_gpu.c

index bb38e72..6934cee 100644 (file)
@@ -1074,18 +1074,22 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
        u32 speedbin;
        int ret;
 
-       /*
-        * This can only be done before devm_pm_opp_of_add_table(), or
-        * dev_pm_opp_set_config() will WARN_ON()
-        */
-       if (IS_ERR(devm_clk_get(dev, "core"))) {
+       /* Only handle the core clock when GMU is not in use */
+       if (config->rev.core < 6) {
                /*
-                * If "core" is absent, go for the legacy clock name.
-                * If we got this far in probing, it's a given one of them exists.
+                * This can only be done before devm_pm_opp_of_add_table(), or
+                * dev_pm_opp_set_config() will WARN_ON()
                 */
-               devm_pm_opp_set_clkname(dev, "core_clk");
-       } else
-               devm_pm_opp_set_clkname(dev, "core");
+               if (IS_ERR(devm_clk_get(dev, "core"))) {
+                       /*
+                        * If "core" is absent, go for the legacy clock name.
+                        * If we got this far in probing, it's a given one of
+                        * them exists.
+                        */
+                       devm_pm_opp_set_clkname(dev, "core_clk");
+               } else
+                       devm_pm_opp_set_clkname(dev, "core");
+       }
 
        adreno_gpu->funcs = funcs;
        adreno_gpu->info = adreno_info(config->rev);