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()可以去控制所有图层合成之后的数据。