Accept all SQE firmware versions for A660.

Re-organize the function a bit and print an error message for unexpected
GPU IDs instead of failing silently.

Signed-off-by: Jonathan Marek <jonat...@marek.ca>
---
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 36 +++++++++++++--------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c 
b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 4467273e66c0..261a20076f9d 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -541,6 +541,11 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu 
*a6xx_gpu,
         * Targets up to a640 (a618, a630 and a640) need to check for a
         * microcode version that is patched to support the whereami opcode or
         * one that is new enough to include it by default.
+        *
+        * a650 tier targets don't need whereami but still need to be
+        * equal to or newer than 0.95 for other security fixes
+        *
+        * a660 targets have all the critical security fixes from the start
         */
        if (adreno_is_a618(adreno_gpu) || adreno_is_a630(adreno_gpu) ||
                adreno_is_a640(adreno_gpu)) {
@@ -564,27 +569,20 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu 
*a6xx_gpu,
                DRM_DEV_ERROR(&gpu->pdev->dev,
                        "a630 SQE ucode is too old. Have version %x need at 
least %x\n",
                        buf[0] & 0xfff, 0x190);
-       }  else {
-               /*
-                * a650 tier targets don't need whereami but still need to be
-                * equal to or newer than 0.95 for other security fixes
-                */
-               if (adreno_is_a650(adreno_gpu)) {
-                       if ((buf[0] & 0xfff) >= 0x095) {
-                               ret = true;
-                               goto out;
-                       }
-
-                       DRM_DEV_ERROR(&gpu->pdev->dev,
-                               "a650 SQE ucode is too old. Have version %x 
need at least %x\n",
-                               buf[0] & 0xfff, 0x095);
+       } else if (adreno_is_a650(adreno_gpu)) {
+               if ((buf[0] & 0xfff) >= 0x095) {
+                       ret = true;
+                       goto out;
                }
 
-               /*
-                * When a660 is added those targets should return true here
-                * since those have all the critical security fixes built in
-                * from the start
-                */
+               DRM_DEV_ERROR(&gpu->pdev->dev,
+                       "a650 SQE ucode is too old. Have version %x need at 
least %x\n",
+                       buf[0] & 0xfff, 0x095);
+       } else if (adreno_is_a660(adreno_gpu)) {
+               ret = true;
+       } else {
+               DRM_DEV_ERROR(&gpu->pdev->dev,
+                       "unknown GPU, add it to 
a6xx_ucode_check_version()!!\n");
        }
 out:
        msm_gem_put_vaddr(obj);
-- 
2.26.1

Reply via email to