drm/mediatek: Turn off the layers with zero width or height
BugLink: https://bugs.launchpad.net/bugs/2083196 [ Upstream commit 6b9946f4550d8dad8bc1af2db97286ca449af786 ] 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:453c336463("drm/mediatek: Add ovl_adaptor support for MT8195") Fixes:d886c0009b("drm/mediatek: Add ETHDR support for MT8195") Reviewed-by: CK Hu <ck.hu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Fixes:119f517362("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.") Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com> Link: https://patchwork.kernel.org/project/dri-devel/patch/20240620-igt-v3-6-a9d62d2e2c7e@mediatek.com/ Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Portia Stephens <portia.stephens@canonical.com> Signed-off-by: Roxana Nicolescu <roxana.nicolescu@canonical.com>
This commit is contained in:
committed by
Mehmet Basaran
parent
aa4d85c566
commit
ffdd8f7531
@@ -132,7 +132,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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user