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: move features out of the DPU_HW_BLK_INFO

As features bits are now unused by some of the hardware block
configuration structures, remove the 'features' from the DPU_HW_BLK_INFO
so that it doesn't get included into hw info structures by default and
only include it when necessary.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/655420/
Link: https://lore.kernel.org/r/20250522-dpu-drop-features-v5-30-3b2085a07884@oss.qualcomm.com

authored by

Dmitry Baryshkov and committed by
Dmitry Baryshkov
139d9964 3d6cce0b

+13 -20
-1
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h
··· 20 20 static const struct dpu_mdp_cfg sm6150_mdp = { 21 21 .name = "top_0", 22 22 .base = 0x0, .len = 0x45c, 23 - .features = 0, 24 23 .clk_ctrls = { 25 24 [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, 26 25 [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 },
-1
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h
··· 22 22 static const struct dpu_mdp_cfg sm6125_mdp = { 23 23 .name = "top_0", 24 24 .base = 0x0, .len = 0x45c, 25 - .features = 0, 26 25 .clk_ctrls = { 27 26 [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, 28 27 [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 },
+7 -10
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
··· 154 154 * @id: enum identifying this block 155 155 * @base: register base offset to mdss 156 156 * @len: length of hardware block 157 - * @features bit mask identifying sub-blocks/features 158 157 */ 159 158 #define DPU_HW_BLK_INFO \ 160 159 char name[DPU_HW_BLK_NAME_LEN]; \ 161 160 u32 id; \ 162 161 u32 base; \ 163 - u32 len; \ 164 - unsigned long features 162 + u32 len 165 163 166 164 /** 167 165 * struct dpu_scaler_blk: Scaler information ··· 374 376 /* struct dpu_mdp_cfg : MDP TOP-BLK instance info 375 377 * @id: index identifying this block 376 378 * @base: register base offset to mdss 377 - * @features bit mask identifying sub-blocks/features 378 379 * @clk_ctrls clock control register definition 379 380 */ 380 381 struct dpu_mdp_cfg { ··· 389 392 */ 390 393 struct dpu_ctl_cfg { 391 394 DPU_HW_BLK_INFO; 395 + unsigned long features; 392 396 unsigned int intr_start; 393 397 }; 394 398 ··· 405 407 */ 406 408 struct dpu_sspp_cfg { 407 409 DPU_HW_BLK_INFO; 410 + unsigned long features; 408 411 const struct dpu_sspp_sub_blks *sblk; 409 412 u32 xin_id; 410 413 enum dpu_clk_ctrl_type clk_ctrl; ··· 423 424 */ 424 425 struct dpu_lm_cfg { 425 426 DPU_HW_BLK_INFO; 427 + unsigned long features; 426 428 const struct dpu_lm_sub_blks *sblk; 427 429 u32 pingpong; 428 430 u32 dspp; ··· 434 434 * struct dpu_dspp_cfg - information of DSPP blocks 435 435 * @id enum identifying this block 436 436 * @base register offset of this block 437 - * @features bit mask identifying sub-blocks/features 438 437 * supported by this block 439 438 * @sblk sub-blocks information 440 439 */ ··· 446 447 * struct dpu_pingpong_cfg - information of PING-PONG blocks 447 448 * @id enum identifying this block 448 449 * @base register offset of this block 449 - * @features bit mask identifying sub-blocks/features 450 450 * @intr_done: index for PINGPONG done interrupt 451 451 * @intr_rdptr: index for PINGPONG readpointer done interrupt 452 452 * @sblk sub-blocks information ··· 462 464 * struct dpu_merge_3d_cfg - information of DSPP blocks 463 465 * @id enum identifying this block 464 466 * @base register offset of this block 465 - * @features bit mask identifying sub-blocks/features 466 - * supported by this block 467 467 * @sblk sub-blocks information 468 468 */ 469 469 struct dpu_merge_3d_cfg { ··· 479 483 */ 480 484 struct dpu_dsc_cfg { 481 485 DPU_HW_BLK_INFO; 486 + unsigned long features; 482 487 const struct dpu_dsc_sub_blks *sblk; 483 488 }; 484 489 ··· 487 490 * struct dpu_intf_cfg - information of timing engine blocks 488 491 * @id enum identifying this block 489 492 * @base register offset of this block 490 - * @features bit mask identifying sub-blocks/features 491 493 * @type: Interface type(DSI, DP, HDMI) 492 494 * @controller_id: Controller Instance ID in case of multiple of intf type 493 495 * @prog_fetch_lines_worst_case Worst case latency num lines needed to prefetch ··· 517 521 */ 518 522 struct dpu_wb_cfg { 519 523 DPU_HW_BLK_INFO; 524 + unsigned long features; 520 525 u8 vbif_idx; 521 526 u32 maxlinewidth; 522 527 u32 xin_id; ··· 586 589 */ 587 590 struct dpu_vbif_cfg { 588 591 DPU_HW_BLK_INFO; 592 + unsigned long features; 589 593 u32 default_ot_rd_limit; 590 594 u32 default_ot_wr_limit; 591 595 u32 xin_halt_timeout; ··· 604 606 * @name string name for debug purposes 605 607 * @id enum identifying this block 606 608 * @base register offset of this block 607 - * @features bit mask identifying sub-blocks/features 608 609 */ 609 610 struct dpu_cdm_cfg { 610 611 DPU_HW_BLK_INFO;
+2 -3
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc_1_2.c
··· 360 360 DPU_REG_WRITE(hw, sblk->ctl.base + DSC_CTL, mux_cfg); 361 361 } 362 362 363 - static void _setup_dcs_ops_1_2(struct dpu_hw_dsc_ops *ops, 364 - const unsigned long features) 363 + static void _setup_dcs_ops_1_2(struct dpu_hw_dsc_ops *ops) 365 364 { 366 365 ops->dsc_disable = dpu_hw_dsc_disable_1_2; 367 366 ops->dsc_config = dpu_hw_dsc_config_1_2; ··· 390 391 391 392 c->idx = cfg->id; 392 393 c->caps = cfg; 393 - _setup_dcs_ops_1_2(&c->ops, c->caps->features); 394 + _setup_dcs_ops_1_2(&c->ops); 394 395 395 396 return c; 396 397 }
+2 -3
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c
··· 33 33 } 34 34 } 35 35 36 - static void _setup_merge_3d_ops(struct dpu_hw_merge_3d *c, 37 - unsigned long features) 36 + static void _setup_merge_3d_ops(struct dpu_hw_merge_3d *c) 38 37 { 39 38 c->ops.setup_3d_mode = dpu_hw_merge_3d_setup_3d_mode; 40 39 }; ··· 61 62 62 63 c->idx = cfg->id; 63 64 c->caps = cfg; 64 - _setup_merge_3d_ops(c, c->caps->features); 65 + _setup_merge_3d_ops(c); 65 66 66 67 return c; 67 68 }
+2 -2
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
··· 264 264 } 265 265 266 266 static void _setup_mdp_ops(struct dpu_hw_mdp_ops *ops, 267 - unsigned long cap, const struct dpu_mdss_version *mdss_rev) 267 + const struct dpu_mdss_version *mdss_rev) 268 268 { 269 269 ops->setup_split_pipe = dpu_hw_setup_split_pipe; 270 270 ops->setup_clk_force_ctrl = dpu_hw_setup_clk_force_ctrl; ··· 313 313 * Assign ops 314 314 */ 315 315 mdp->caps = cfg; 316 - _setup_mdp_ops(&mdp->ops, mdp->caps->features, mdss_rev); 316 + _setup_mdp_ops(&mdp->ops, mdss_rev); 317 317 318 318 return mdp; 319 319 }