]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/msm/adreno: use version ranges in A8xx UBWC code
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Wed, 20 May 2026 14:51:25 +0000 (17:51 +0300)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Fri, 22 May 2026 13:43:13 +0000 (16:43 +0300)
In order to simplify handling of UBWC minor revisions (like 3.1 or 4.3)
use version ranges instead of a case switch.

Reviewed-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/726506/
Link: https://lore.kernel.org/r/20260520-ubwc-rework-v5-18-72f2749bc807@oss.qualcomm.com
drivers/gpu/drm/msm/adreno/a8xx_gpu.c

index 5c73a9ebb22bb19b435b505962b4b090c06c1558..29d559fe468344c0e3edd46150c57fc645cdc01a 100644 (file)
@@ -286,26 +286,24 @@ static void a8xx_set_ubwc_config(struct msm_gpu *gpu)
        u32 hbb, hbb_hi, hbb_lo, mode;
        u8 uavflagprd_inv = 2;
 
-       switch (ubwc_version) {
-       case UBWC_6_0:
+       if (ubwc_version > UBWC_6_0)
+               dev_err(&gpu->pdev->dev, "Unknown UBWC version: 0x%x\n", ubwc_version);
+
+       if (ubwc_version == UBWC_6_0)
                yuvnotcomptofc = true;
-               rgb565_predicator = true;
-               break;
-       case UBWC_5_0:
-               rgb565_predicator = true;
-               break;
-       case UBWC_4_0:
-               rgb565_predicator = true;
-               fp16compoptdis = true;
+
+       if (ubwc_version < UBWC_5_0 &&
+           ubwc_version >= UBWC_4_0)
                rgba8888_lossless = true;
-               break;
-       case UBWC_3_0:
+
+       if (ubwc_version < UBWC_4_3)
                fp16compoptdis = true;
-               break;
-       default:
-               dev_err(&gpu->pdev->dev, "Unknown UBWC version: 0x%x\n", ubwc_version);
-               break;
-       }
+
+       if (cfg->ubwc_enc_version >= UBWC_4_0)
+               rgb565_predicator = true;
+
+       if (ubwc_version < UBWC_3_0)
+               dev_err(&gpu->pdev->dev, "Unsupported UBWC version: 0x%x\n", ubwc_version);
 
        mode = qcom_ubwc_version_tag(cfg);