lkml.org 
[lkml]   [2024]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 06/13] drm/mediatek: Turn off the layers with zero width or height
    Date
    We found that IGT (Intel GPU Tool) will try to commit layers with
    zero width or height and lead to undefined behaviors in hardware.
    Disable the layers in such a situation.

    Fixes: 777b7bc86a0a3 ("drm/mediatek: Add ovl_adaptor support for MT8195")
    Fixes: fa97fe71f6f93 ("drm/mediatek: Add ETHDR support for MT8195")

    Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
    ---
    drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c | 2 +-
    drivers/gpu/drm/mediatek/mtk_ethdr.c | 7 ++++++-
    2 files changed, 7 insertions(+), 2 deletions(-)

    diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c b/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c
    index d4a13a1402148..68a20312ac6f1 100644
    --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c
    +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl_adaptor.c
    @@ -157,7 +157,7 @@ void mtk_ovl_adaptor_layer_config(struct device *dev, unsigned int idx,
    merge = ovl_adaptor->ovl_adaptor_comp[OVL_ADAPTOR_MERGE0 + idx];
    ethdr = ovl_adaptor->ovl_adaptor_comp[OVL_ADAPTOR_ETHDR0];

    - if (!pending->enable) {
    + if (!pending->enable || !pending->width || !pending->height) {
    mtk_merge_stop_cmdq(merge, cmdq_pkt);
    mtk_mdp_rdma_stop(rdma_l, cmdq_pkt);
    mtk_mdp_rdma_stop(rdma_r, cmdq_pkt);
    diff --git a/drivers/gpu/drm/mediatek/mtk_ethdr.c b/drivers/gpu/drm/mediatek/mtk_ethdr.c
    index 73dc4da3ba3bd..69872b77922eb 100644
    --- a/drivers/gpu/drm/mediatek/mtk_ethdr.c
    +++ b/drivers/gpu/drm/mediatek/mtk_ethdr.c
    @@ -160,7 +160,12 @@ void mtk_ethdr_layer_config(struct device *dev, unsigned int idx,
    if (idx >= 4)
    return;

    - if (!pending->enable) {
    + if (!pending->enable || !pending->width || !pending->height) {
    + /*
    + * instead of disabling layer with MIX_SRC_CON directly
    + * set the size to 0 to avoid screen shift due to mixer
    + * mode switch (hardware behavior)
    + */
    mtk_ddp_write(cmdq_pkt, 0, &mixer->cmdq_base, mixer->regs, MIX_L_SRC_SIZE(idx));
    return;
    }
    --
    2.18.0

    \
     
     \ /
      Last update: 2024-05-27 15:04    [W:7.652 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site