Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dpu: replace VBIF-related array with bare pointers

As we no longer have multiple VBIF instances, it doesn't make sense to
keep VBIF data as arrays. Drop the extra wrapping and keep only a single
instance of each of the structures.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/707776/
Link: https://lore.kernel.org/r/20260227-drop-vbif-nrt-v1-3-2b97d0438182@oss.qualcomm.com

+27 -47
-1
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
··· 286 286 287 287 enum dpu_vbif { 288 288 VBIF_RT, 289 - VBIF_MAX, 290 289 }; 291 290 292 291 /**
+11 -17
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
··· 886 886 887 887 static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms) 888 888 { 889 - int i; 890 - 891 889 dpu_kms->hw_intr = NULL; 892 890 893 891 /* safe to call these more than once during shutdown */ 894 892 _dpu_kms_mmu_destroy(dpu_kms); 895 893 896 - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { 897 - dpu_kms->hw_vbif[i] = NULL; 898 - } 894 + dpu_kms->hw_vbif = NULL; 899 895 900 896 dpu_kms_global_obj_fini(dpu_kms); 901 897 ··· 1216 1220 struct dpu_hw_vbif *hw; 1217 1221 const struct dpu_vbif_cfg *vbif = dpu_kms->catalog->vbif; 1218 1222 1219 - hw = dpu_hw_vbif_init(dev, vbif, dpu_kms->vbif[vbif->id]); 1223 + hw = dpu_hw_vbif_init(dev, vbif, dpu_kms->vbif); 1220 1224 if (IS_ERR(hw)) { 1221 1225 rc = PTR_ERR(hw); 1222 1226 DPU_ERROR("failed to init vbif: %d\n", rc); 1223 1227 goto err_pm_put; 1224 1228 } 1225 1229 1226 - dpu_kms->hw_vbif[vbif->id] = hw; 1230 + dpu_kms->hw_vbif = hw; 1227 1231 1228 1232 /* TODO: use the same max_freq as in dpu_kms_hw_init */ 1229 1233 max_core_clk_rate = dpu_kms_get_clk_rate(dpu_kms, "core"); ··· 1339 1343 } 1340 1344 DRM_DEBUG("mapped dpu address space @%p\n", dpu_kms->mmio); 1341 1345 1342 - dpu_kms->vbif[VBIF_RT] = msm_ioremap_mdss(mdss_dev, 1343 - dpu_kms->pdev, 1344 - "vbif_phys"); 1345 - if (IS_ERR(dpu_kms->vbif[VBIF_RT])) { 1346 - ret = PTR_ERR(dpu_kms->vbif[VBIF_RT]); 1346 + dpu_kms->vbif = msm_ioremap_mdss(mdss_dev, dpu_kms->pdev, "vbif_phys"); 1347 + if (IS_ERR(dpu_kms->vbif)) { 1348 + ret = PTR_ERR(dpu_kms->vbif); 1347 1349 DPU_ERROR("vbif register memory map failed: %d\n", ret); 1348 - dpu_kms->vbif[VBIF_RT] = NULL; 1350 + dpu_kms->vbif = NULL; 1349 1351 return ret; 1350 1352 } 1351 1353 ··· 1364 1370 } 1365 1371 DRM_DEBUG("mapped dpu address space @%p\n", dpu_kms->mmio); 1366 1372 1367 - dpu_kms->vbif[VBIF_RT] = msm_ioremap(pdev, "vbif"); 1368 - if (IS_ERR(dpu_kms->vbif[VBIF_RT])) { 1369 - ret = PTR_ERR(dpu_kms->vbif[VBIF_RT]); 1373 + dpu_kms->vbif = msm_ioremap(pdev, "vbif"); 1374 + if (IS_ERR(dpu_kms->vbif)) { 1375 + ret = PTR_ERR(dpu_kms->vbif); 1370 1376 DPU_ERROR("vbif register memory map failed: %d\n", ret); 1371 - dpu_kms->vbif[VBIF_RT] = NULL; 1377 + dpu_kms->vbif = NULL; 1372 1378 return ret; 1373 1379 } 1374 1380
+2 -2
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
··· 63 63 const struct qcom_ubwc_cfg_data *mdss; 64 64 65 65 /* io/register spaces: */ 66 - void __iomem *mmio, *vbif[VBIF_MAX]; 66 + void __iomem *mmio, *vbif; 67 67 68 68 struct regulator *vdd; 69 69 struct regulator *mmagic; ··· 81 81 82 82 struct dpu_rm rm; 83 83 84 - struct dpu_hw_vbif *hw_vbif[VBIF_MAX]; 84 + struct dpu_hw_vbif *hw_vbif; 85 85 struct dpu_hw_mdp *hw_mdp; 86 86 87 87 bool has_danger_ctrl;
+14 -27
drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c
··· 11 11 #include "dpu_hw_vbif.h" 12 12 #include "dpu_trace.h" 13 13 14 - static struct dpu_hw_vbif *dpu_get_vbif(struct dpu_kms *dpu_kms, enum dpu_vbif vbif_idx) 15 - { 16 - if (vbif_idx < ARRAY_SIZE(dpu_kms->hw_vbif)) 17 - return dpu_kms->hw_vbif[vbif_idx]; 18 - 19 - return NULL; 20 - } 21 - 22 14 static const char *dpu_vbif_name(enum dpu_vbif idx) 23 15 { 24 16 switch (idx) { ··· 162 170 u32 ot_lim; 163 171 int ret; 164 172 165 - vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); 173 + vbif = dpu_kms->hw_vbif; 166 174 if (!vbif) { 167 175 DRM_DEBUG_ATOMIC("invalid arguments vbif %d\n", vbif != NULL); 168 176 return; ··· 211 219 return; 212 220 } 213 221 214 - vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); 222 + vbif = dpu_kms->hw_vbif; 215 223 216 224 if (!vbif || !vbif->cap) { 217 225 DPU_ERROR("invalid vbif %d\n", params->vbif_idx); ··· 247 255 void dpu_vbif_clear_errors(struct dpu_kms *dpu_kms) 248 256 { 249 257 struct dpu_hw_vbif *vbif; 250 - u32 i, pnd, src; 258 + u32 pnd, src; 251 259 252 - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { 253 - vbif = dpu_kms->hw_vbif[i]; 254 - if (vbif && vbif->ops.clear_errors) { 255 - vbif->ops.clear_errors(vbif, &pnd, &src); 256 - if (pnd || src) { 257 - DRM_DEBUG_KMS("%s: pnd 0x%X, src 0x%X\n", 258 - dpu_vbif_name(vbif->idx), pnd, src); 259 - } 260 + vbif = dpu_kms->hw_vbif; 261 + if (vbif && vbif->ops.clear_errors) { 262 + vbif->ops.clear_errors(vbif, &pnd, &src); 263 + if (pnd || src) { 264 + DRM_DEBUG_KMS("%s: pnd 0x%X, src 0x%X\n", 265 + dpu_vbif_name(vbif->idx), pnd, src); 260 266 } 261 267 } 262 268 } ··· 266 276 void dpu_vbif_init_memtypes(struct dpu_kms *dpu_kms) 267 277 { 268 278 struct dpu_hw_vbif *vbif; 269 - int i, j; 279 + int j; 270 280 271 - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { 272 - vbif = dpu_kms->hw_vbif[i]; 273 - if (vbif && vbif->cap && vbif->ops.set_mem_type) { 274 - for (j = 0; j < vbif->cap->memtype_count; j++) 275 - vbif->ops.set_mem_type( 276 - vbif, j, vbif->cap->memtype[j]); 277 - } 281 + vbif = dpu_kms->hw_vbif; 282 + if (vbif && vbif->cap && vbif->ops.set_mem_type) { 283 + for (j = 0; j < vbif->cap->memtype_count; j++) 284 + vbif->ops.set_mem_type(vbif, j, vbif->cap->memtype[j]); 278 285 } 279 286 } 280 287