* [linux-next:master 3205/5236] drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2666 vop2_setup_layer_mixer() error: uninitialized symbol 'old_win'.
@ 2024-12-23 13:35 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-12-23 13:35 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Andy Yan <andy.yan@rock-chips.com>
CC: Heiko Stuebner <heiko@sntech.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 8155b4ef3466f0e289e8fcc9e6e62f3f4dceeac2
commit: 0ca953ac226eaffbe1a795f5e517095a8d494921 [3205/5236] drm/rockchip: vop2: Fix the windows switch between different layers
:::::: branch date: 3 days ago
:::::: commit date: 9 days ago
config: powerpc-randconfig-r072-20241223 (https://download.01.org/0day-ci/archive/20241223/202412232121.J7FqM7Ct-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 14.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412232121.J7FqM7Ct-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2666 vop2_setup_layer_mixer() error: uninitialized symbol 'old_win'.
Old smatch warnings:
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:692 vop2_afbc_transform_offset() error: uninitialized symbol 'tx'.
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:693 vop2_afbc_transform_offset() error: uninitialized symbol 'ty'.
vim +/old_win +2666 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
604be85547ce4d Andy Yan 2022-04-22 2537
604be85547ce4d Andy Yan 2022-04-22 2538 static void vop2_setup_layer_mixer(struct vop2_video_port *vp)
604be85547ce4d Andy Yan 2022-04-22 2539 {
604be85547ce4d Andy Yan 2022-04-22 2540 struct vop2 *vop2 = vp->vop2;
604be85547ce4d Andy Yan 2022-04-22 2541 struct drm_plane *plane;
604be85547ce4d Andy Yan 2022-04-22 2542 u32 layer_sel = 0;
604be85547ce4d Andy Yan 2022-04-22 2543 u32 port_sel;
0ca953ac226eaf Andy Yan 2024-12-14 2544 u8 layer_id;
0ca953ac226eaf Andy Yan 2024-12-14 2545 u8 old_layer_id;
0ca953ac226eaf Andy Yan 2024-12-14 2546 u8 layer_sel_id;
0ca953ac226eaf Andy Yan 2024-12-14 2547 unsigned int ofs;
dd49ee4614cfb0 Andy Yan 2023-12-11 2548 u32 ovl_ctrl;
604be85547ce4d Andy Yan 2022-04-22 2549 int i;
604be85547ce4d Andy Yan 2022-04-22 2550 struct vop2_video_port *vp0 = &vop2->vps[0];
604be85547ce4d Andy Yan 2022-04-22 2551 struct vop2_video_port *vp1 = &vop2->vps[1];
604be85547ce4d Andy Yan 2022-04-22 2552 struct vop2_video_port *vp2 = &vop2->vps[2];
dd49ee4614cfb0 Andy Yan 2023-12-11 2553 struct rockchip_crtc_state *vcstate = to_rockchip_crtc_state(vp->crtc.state);
604be85547ce4d Andy Yan 2022-04-22 2554
dd49ee4614cfb0 Andy Yan 2023-12-11 2555 ovl_ctrl = vop2_readl(vop2, RK3568_OVL_CTRL);
dd49ee4614cfb0 Andy Yan 2023-12-11 2556 ovl_ctrl |= RK3568_OVL_CTRL__LAYERSEL_REGDONE_IMD;
dd49ee4614cfb0 Andy Yan 2023-12-11 2557 if (vcstate->yuv_overlay)
dd49ee4614cfb0 Andy Yan 2023-12-11 2558 ovl_ctrl |= RK3568_OVL_CTRL__YUV_MODE(vp->id);
dd49ee4614cfb0 Andy Yan 2023-12-11 2559 else
dd49ee4614cfb0 Andy Yan 2023-12-11 2560 ovl_ctrl &= ~RK3568_OVL_CTRL__YUV_MODE(vp->id);
dd49ee4614cfb0 Andy Yan 2023-12-11 2561
dd49ee4614cfb0 Andy Yan 2023-12-11 2562 vop2_writel(vop2, RK3568_OVL_CTRL, ovl_ctrl);
dd49ee4614cfb0 Andy Yan 2023-12-11 2563
604be85547ce4d Andy Yan 2022-04-22 2564 port_sel = vop2_readl(vop2, RK3568_OVL_PORT_SEL);
604be85547ce4d Andy Yan 2022-04-22 2565 port_sel &= RK3568_OVL_PORT_SEL__SEL_PORT;
604be85547ce4d Andy Yan 2022-04-22 2566
604be85547ce4d Andy Yan 2022-04-22 2567 if (vp0->nlayers)
604be85547ce4d Andy Yan 2022-04-22 2568 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT0_MUX,
604be85547ce4d Andy Yan 2022-04-22 2569 vp0->nlayers - 1);
604be85547ce4d Andy Yan 2022-04-22 2570 else
604be85547ce4d Andy Yan 2022-04-22 2571 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT0_MUX, 8);
604be85547ce4d Andy Yan 2022-04-22 2572
604be85547ce4d Andy Yan 2022-04-22 2573 if (vp1->nlayers)
604be85547ce4d Andy Yan 2022-04-22 2574 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT1_MUX,
604be85547ce4d Andy Yan 2022-04-22 2575 (vp0->nlayers + vp1->nlayers - 1));
604be85547ce4d Andy Yan 2022-04-22 2576 else
604be85547ce4d Andy Yan 2022-04-22 2577 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT1_MUX, 8);
604be85547ce4d Andy Yan 2022-04-22 2578
604be85547ce4d Andy Yan 2022-04-22 2579 if (vp2->nlayers)
604be85547ce4d Andy Yan 2022-04-22 2580 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT2_MUX,
604be85547ce4d Andy Yan 2022-04-22 2581 (vp2->nlayers + vp1->nlayers + vp0->nlayers - 1));
604be85547ce4d Andy Yan 2022-04-22 2582 else
2bdb481bf7a93c Andy Yan 2024-04-22 2583 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SET__PORT2_MUX, 8);
604be85547ce4d Andy Yan 2022-04-22 2584
604be85547ce4d Andy Yan 2022-04-22 2585 layer_sel = vop2_readl(vop2, RK3568_OVL_LAYER_SEL);
604be85547ce4d Andy Yan 2022-04-22 2586
604be85547ce4d Andy Yan 2022-04-22 2587 ofs = 0;
604be85547ce4d Andy Yan 2022-04-22 2588 for (i = 0; i < vp->id; i++)
604be85547ce4d Andy Yan 2022-04-22 2589 ofs += vop2->vps[i].nlayers;
604be85547ce4d Andy Yan 2022-04-22 2590
604be85547ce4d Andy Yan 2022-04-22 2591 drm_atomic_crtc_for_each_plane(plane, &vp->crtc) {
604be85547ce4d Andy Yan 2022-04-22 2592 struct vop2_win *win = to_vop2_win(plane);
0ca953ac226eaf Andy Yan 2024-12-14 2593 struct vop2_win *old_win;
0ca953ac226eaf Andy Yan 2024-12-14 2594
0ca953ac226eaf Andy Yan 2024-12-14 2595 layer_id = (u8)(plane->state->normalized_zpos + ofs);
0ca953ac226eaf Andy Yan 2024-12-14 2596
0ca953ac226eaf Andy Yan 2024-12-14 2597 /*
0ca953ac226eaf Andy Yan 2024-12-14 2598 * Find the layer this win bind in old state.
0ca953ac226eaf Andy Yan 2024-12-14 2599 */
0ca953ac226eaf Andy Yan 2024-12-14 2600 for (old_layer_id = 0; old_layer_id < vop2->data->win_size; old_layer_id++) {
0ca953ac226eaf Andy Yan 2024-12-14 2601 layer_sel_id = (layer_sel >> (4 * old_layer_id)) & 0xf;
0ca953ac226eaf Andy Yan 2024-12-14 2602 if (layer_sel_id == win->data->layer_sel_id)
0ca953ac226eaf Andy Yan 2024-12-14 2603 break;
0ca953ac226eaf Andy Yan 2024-12-14 2604 }
0ca953ac226eaf Andy Yan 2024-12-14 2605
0ca953ac226eaf Andy Yan 2024-12-14 2606 /*
0ca953ac226eaf Andy Yan 2024-12-14 2607 * Find the win bind to this layer in old state
0ca953ac226eaf Andy Yan 2024-12-14 2608 */
0ca953ac226eaf Andy Yan 2024-12-14 2609 for (i = 0; i < vop2->data->win_size; i++) {
0ca953ac226eaf Andy Yan 2024-12-14 2610 old_win = &vop2->win[i];
0ca953ac226eaf Andy Yan 2024-12-14 2611 layer_sel_id = (layer_sel >> (4 * layer_id)) & 0xf;
0ca953ac226eaf Andy Yan 2024-12-14 2612 if (layer_sel_id == old_win->data->layer_sel_id)
0ca953ac226eaf Andy Yan 2024-12-14 2613 break;
0ca953ac226eaf Andy Yan 2024-12-14 2614 }
604be85547ce4d Andy Yan 2022-04-22 2615
604be85547ce4d Andy Yan 2022-04-22 2616 switch (win->data->phys_id) {
604be85547ce4d Andy Yan 2022-04-22 2617 case ROCKCHIP_VOP2_CLUSTER0:
604be85547ce4d Andy Yan 2022-04-22 2618 port_sel &= ~RK3568_OVL_PORT_SEL__CLUSTER0;
604be85547ce4d Andy Yan 2022-04-22 2619 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__CLUSTER0, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2620 break;
604be85547ce4d Andy Yan 2022-04-22 2621 case ROCKCHIP_VOP2_CLUSTER1:
604be85547ce4d Andy Yan 2022-04-22 2622 port_sel &= ~RK3568_OVL_PORT_SEL__CLUSTER1;
604be85547ce4d Andy Yan 2022-04-22 2623 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__CLUSTER1, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2624 break;
5a028e8f062fc8 Andy Yan 2023-12-11 2625 case ROCKCHIP_VOP2_CLUSTER2:
5a028e8f062fc8 Andy Yan 2023-12-11 2626 port_sel &= ~RK3588_OVL_PORT_SEL__CLUSTER2;
5a028e8f062fc8 Andy Yan 2023-12-11 2627 port_sel |= FIELD_PREP(RK3588_OVL_PORT_SEL__CLUSTER2, vp->id);
5a028e8f062fc8 Andy Yan 2023-12-11 2628 break;
5a028e8f062fc8 Andy Yan 2023-12-11 2629 case ROCKCHIP_VOP2_CLUSTER3:
5a028e8f062fc8 Andy Yan 2023-12-11 2630 port_sel &= ~RK3588_OVL_PORT_SEL__CLUSTER3;
5a028e8f062fc8 Andy Yan 2023-12-11 2631 port_sel |= FIELD_PREP(RK3588_OVL_PORT_SEL__CLUSTER3, vp->id);
5a028e8f062fc8 Andy Yan 2023-12-11 2632 break;
604be85547ce4d Andy Yan 2022-04-22 2633 case ROCKCHIP_VOP2_ESMART0:
604be85547ce4d Andy Yan 2022-04-22 2634 port_sel &= ~RK3568_OVL_PORT_SEL__ESMART0;
604be85547ce4d Andy Yan 2022-04-22 2635 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__ESMART0, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2636 break;
604be85547ce4d Andy Yan 2022-04-22 2637 case ROCKCHIP_VOP2_ESMART1:
604be85547ce4d Andy Yan 2022-04-22 2638 port_sel &= ~RK3568_OVL_PORT_SEL__ESMART1;
604be85547ce4d Andy Yan 2022-04-22 2639 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__ESMART1, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2640 break;
5a028e8f062fc8 Andy Yan 2023-12-11 2641 case ROCKCHIP_VOP2_ESMART2:
5a028e8f062fc8 Andy Yan 2023-12-11 2642 port_sel &= ~RK3588_OVL_PORT_SEL__ESMART2;
5a028e8f062fc8 Andy Yan 2023-12-11 2643 port_sel |= FIELD_PREP(RK3588_OVL_PORT_SEL__ESMART2, vp->id);
5a028e8f062fc8 Andy Yan 2023-12-11 2644 break;
5a028e8f062fc8 Andy Yan 2023-12-11 2645 case ROCKCHIP_VOP2_ESMART3:
5a028e8f062fc8 Andy Yan 2023-12-11 2646 port_sel &= ~RK3588_OVL_PORT_SEL__ESMART3;
5a028e8f062fc8 Andy Yan 2023-12-11 2647 port_sel |= FIELD_PREP(RK3588_OVL_PORT_SEL__ESMART3, vp->id);
5a028e8f062fc8 Andy Yan 2023-12-11 2648 break;
604be85547ce4d Andy Yan 2022-04-22 2649 case ROCKCHIP_VOP2_SMART0:
604be85547ce4d Andy Yan 2022-04-22 2650 port_sel &= ~RK3568_OVL_PORT_SEL__SMART0;
604be85547ce4d Andy Yan 2022-04-22 2651 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__SMART0, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2652 break;
604be85547ce4d Andy Yan 2022-04-22 2653 case ROCKCHIP_VOP2_SMART1:
604be85547ce4d Andy Yan 2022-04-22 2654 port_sel &= ~RK3568_OVL_PORT_SEL__SMART1;
604be85547ce4d Andy Yan 2022-04-22 2655 port_sel |= FIELD_PREP(RK3568_OVL_PORT_SEL__SMART1, vp->id);
604be85547ce4d Andy Yan 2022-04-22 2656 break;
604be85547ce4d Andy Yan 2022-04-22 2657 }
604be85547ce4d Andy Yan 2022-04-22 2658
0ca953ac226eaf Andy Yan 2024-12-14 2659 layer_sel &= ~RK3568_OVL_LAYER_SEL__LAYER(layer_id, 0x7);
0ca953ac226eaf Andy Yan 2024-12-14 2660 layer_sel |= RK3568_OVL_LAYER_SEL__LAYER(layer_id, win->data->layer_sel_id);
0ca953ac226eaf Andy Yan 2024-12-14 2661 /*
0ca953ac226eaf Andy Yan 2024-12-14 2662 * When we bind a window from layerM to layerN, we also need to move the old
0ca953ac226eaf Andy Yan 2024-12-14 2663 * window on layerN to layerM to avoid one window selected by two or more layers.
0ca953ac226eaf Andy Yan 2024-12-14 2664 */
0ca953ac226eaf Andy Yan 2024-12-14 2665 layer_sel &= ~RK3568_OVL_LAYER_SEL__LAYER(old_layer_id, 0x7);
0ca953ac226eaf Andy Yan 2024-12-14 @2666 layer_sel |= RK3568_OVL_LAYER_SEL__LAYER(old_layer_id, old_win->data->layer_sel_id);
604be85547ce4d Andy Yan 2022-04-22 2667 }
604be85547ce4d Andy Yan 2022-04-22 2668
604be85547ce4d Andy Yan 2022-04-22 2669 vop2_writel(vop2, RK3568_OVL_LAYER_SEL, layer_sel);
604be85547ce4d Andy Yan 2022-04-22 2670 vop2_writel(vop2, RK3568_OVL_PORT_SEL, port_sel);
604be85547ce4d Andy Yan 2022-04-22 2671 }
604be85547ce4d Andy Yan 2022-04-22 2672
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-12-23 13:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-23 13:35 [linux-next:master 3205/5236] drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2666 vop2_setup_layer_mixer() error: uninitialized symbol 'old_win' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.