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()可以去控制所有圖層合成之後的數據。