From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [linux-next:master 3205/5236] drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2666 vop2_setup_layer_mixer() error: uninitialized symbol 'old_win'.
Date: Mon, 23 Dec 2024 21:35:07 +0800 [thread overview]
Message-ID: <202412232121.J7FqM7Ct-lkp@intel.com> (raw)
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
reply other threads:[~2024-12-23 13:35 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202412232121.J7FqM7Ct-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.