[PATCH v4 19/29] drm/msm/adreno: use version ranges in A8xx UBWC code
From: Dmitry Baryshkov
Date: Thu May 07 2026 - 09:09:07 EST
In order to simplify handling of UBWC minor revisions (like 3.1 or 4.3)
use version ranges instead of a case switch.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
---
drivers/gpu/drm/msm/adreno/a8xx_gpu.c | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a8xx_gpu.c b/drivers/gpu/drm/msm/adreno/a8xx_gpu.c
index 5c73a9ebb22b..29d559fe4683 100644
--- a/drivers/gpu/drm/msm/adreno/a8xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a8xx_gpu.c
@@ -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);
--
2.47.3