Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
现象:
添加好LVDS屏幕之后,显示画面mirror.

解决方法:
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 087034d..fab5671 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -1956,6 +1957,8 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL));
VOP_CTRL_SET(vop, data01_swap,
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_LINK));
+ //Kris, 191113, mirror display.
+ VOP_CTRL_SET(vop, xmirror, 1);
break;
case DRM_MODE_CONNECTOR_DisplayPort:
VOP_CTRL_SET(vop, dp_dclk_pol, 0);
一开始修改的是vop_plane_atomic_update()中的xmirror信息,发现只是开机动画正常了,但是进入桌面还是异常。
原因是vop_plane_atomic_update()不是控制所有图层,而开机动画只有一个图层,进入桌面之后有多个图层。而通过VOP_CTRL_SET()可以去控制所有图层合成之后的数据。

在RK3399平台上,运行Android 7.1系统,遇到LVDS屏幕显示画面镜像反转的问题。通过分析发现,仅修改vop_plane_atomic_update()中的xmirror信息无法解决,因为该函数只影响开机动画的单个图层。实际解决方案是使用VOP_CTRL_SET()函数来控制所有图层合成后的数据,确保桌面显示正常。
1285

被折叠的 条评论
为什么被折叠?



