]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/msm/adreno: fix a743 and a740 cx mem init
authorNeil Armstrong <neil.armstrong@linaro.org>
Wed, 26 Jun 2024 12:04:21 +0000 (14:04 +0200)
committerRob Clark <robdclark@chromium.org>
Sat, 29 Jun 2024 20:45:30 +0000 (13:45 -0700)
Disable the call to qcom_scm_gpu_init_regs() for a730 and a740
after init failures on the HDK8550 and HDK8450 platforms:
msm_dpu ae01000.display-controller: failed to load adreno gpu
msm_dpu ae01000.display-controller: failed to bind 3d00000.gpu (ops a3xx_ops [msm]): -5
msm_dpu ae01000.display-controller: adev bind failed: -5

While debugging, it happens the call to:
qcom_scm_gpu_init_regs(QCOM_SCM_GPU_ALWAYS_EN_REQ)
returns -5 and makes the gpu fail to initialize.

Remove the scm call since it's not done downstream either and
works fine without.

Fixes: 14b27d5df3ea ("drm/msm/a7xx: Initialize a750 "software fuse"")
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Patchwork: https://patchwork.freedesktop.org/patch/600972/
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/adreno/a6xx_gpu.c

index 03e23eef51265fb3af99b6be536a22f41823837d..95c7024ef247a72703aa4f7dcfd26a97c1592590 100644 (file)
@@ -1739,14 +1739,9 @@ static int a7xx_cx_mem_init(struct a6xx_gpu *a6xx_gpu)
                                         REG_A7XX_CX_MISC_SW_FUSE_VALUE);
                adreno_gpu->has_ray_tracing =
                        !!(fuse_val & A7XX_CX_MISC_SW_FUSE_VALUE_RAYTRACING);
-       } else {
-               if (adreno_is_a740(adreno_gpu)) {
-                       /* Raytracing is always enabled on a740 */
-                       adreno_gpu->has_ray_tracing = true;
-               }
-
-               if (qcom_scm_is_available())
-                       return qcom_scm_gpu_init_regs(QCOM_SCM_GPU_ALWAYS_EN_REQ);
+       } else if (adreno_is_a740(adreno_gpu)) {
+               /* Raytracing is always enabled on a740 */
+               adreno_gpu->has_ray_tracing = true;
        }
 
        return 0;