在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2586|回复: 0

[原创] RK3288 增加双屏异显 eDP+LVDS

[复制链接]
发表于 2020-2-16 20:25:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
CPU:RK3288
系统:Android 5.1
下面是官方文档中的信息。
1、rk3288 支持的显示接口可以任意组合。
2、双屏异显时,一个显示接口当主屏,另一个当副屏;主副屏由板级 dts 文件确定,启动后无法动态更改。
3、当两路显示接口显示不同分辨率时,rk3288 只能为一路显示接口提供精确时钟,另一路显示接口时钟会有微小频偏。
瑞芯微虽然提供了 Android 5.1 的补丁,但是本人在移植过程中出现一些问题(打补丁最好一行行核对,不要图方便直接使用指令)。
设备 eDP 为主屏,lvds 为副屏。
(1)首先修改两个屏参文件 lcd-xxx.dtsi。
eDP 屏参文件补丁
diff --gita/kernel/arch/arm/boot/dts/lcd-NV116FH1.dtsib/kernel/arch/arm/boot/dts/lcd-NV116FH1.dtsi
index3862b05..7bf992f 100755
--- a/kernel/arch/arm/boot/dts/lcd-NV116FH1.dtsi
+++b/kernel/arch/arm/boot/dts/lcd-NV116FH1.dtsi
@@ -3,11 +3,9 @@
  *
  */
-/ {
-
-        disp_timings: display-timings {
-                        native-mode =<&timing0>;
-                        timing0: timing0 {
+        display-timings {
+                        native-mode =<&nv116fhm>;
+                        nv116fhm: timing0 {
                 screen-type =<SCREEN_EDP>;
                 out-face    = <OUT_P666>;
                 clock-frequency = <205000000>;
@@ -30,4 +30,3 @@
                swap-gb = <0>;
                         };
               };
-};
lvds 屏参文件补丁
diff --gita/kernel/arch/arm/boot/dts/lcd-ZJ080NA-08A.dtsib/kernel/arch/arm/boot/dts/lcd-ZJ080NA-08A.dtsi
old mode 100644
new mode 100755
indexfc6385c..58f999be
---a/kernel/arch/arm/boot/dts/lcd-ZJ080NA-08A.dtsi
+++b/kernel/arch/arm/boot/dts/lcd-ZJ080NA-08A.dtsi
@@ -3,11 +3,10 @@
  *
  */
-/ {
-        disp_timings: display-timings {
-                        native-mode =<&timing0>;
-                        timing0: timing0 {
+        display-timings {
+                        native-mode =<&zj080na>;
+                        zj080na: timing0 {
                 screen-type =<SCREEN_DUAL_LVDS>;
                 lvds-format =<LVDS_8BIT_1>;
                 out-face    = <OUT_P888>;
@@ -30,4 +30,3 @@
                swap-gb = <0>;
             };
         };
-};
(2)根据官方提供,打上 kernel 补丁
file:///C:/Users/sw/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif kernel 补丁
(3)根据官方提供,打上 hardware 补丁
file:///C:/Users/sw/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif hardware 补丁
(4)根据官方提供,打上 framework 补丁
file:///C:/Users/sw/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif framework 补丁
(5)官方提供的补丁打完了,但是此时编译可能会报错,如下:
cts/tests/tests/view/src/android/view/cts/WindowTest.java:846: error: WindowTest.MockWindow is not abstract and does not override abstract methodmoveExtendDisplay() in Window
public class MockWindowextends Window {
^
Note: Some inputfiles use or override a deprecated API.
Note: Recompilewith -Xlint:deprecation for details.
1 error
make: *** [out/target/common/obj/APPS/CtsViewTestCases_intermediates/classes-full-debug.jar]Error 41
make: *** Waiting for unfinished jobs....
Note: Some inputfiles use or override a deprecated API.
Note: Recompilewith -Xlint:deprecation for details.
Note: Some inputfiles use unchecked or unsafe operations.
Note: Recompilewith -Xlint:unchecked for details.
Note: Some inputfiles use or override a deprecated API.
Note: Recompilewith -Xlint:deprecation for details.
Note: Some inputfiles use unchecked or unsafe operations.
Note: Recompilewith -Xlint:unchecked for details.
Warning:AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android);using existing value in manifest.
Warning:AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android);using existing value in manifest.
#### make failedto build some targets (03:55 (mm:ss)) ####
根据编译错误提示,需要修改cts/tests/tests/view/src/android/view/cts/WindowTest.java 文件。
diff --gita/cts/tests/tests/view/src/android/view/cts/WindowTest.javab/cts/tests/tests/view/src/android/view/cts/WindowTest.java
index3c5386d..8732ae7 100755
---a/cts/tests/tests/view/src/android/view/cts/WindowTest.java
+++b/cts/tests/tests/view/src/android/view/cts/WindowTest.java
@@ -998,6 +998,19 @@ public class WindowTestextends ActivityInstrumentationTestCase2<WindowCtsActivi
         }
         @Override
+        public void moveAppToDisplay(int id) {
+        }
+
+        @Override
+        public void syncDualDisplay(){
+        }
+
+        @Override
+        public voidmoveExtendDisplay() {
+        }
+
+
+        @Override
         public voidsetDefaultWindowFormat(int format) {
            super.setDefaultWindowFormat(format);
         }
(6)此时可以编译成功,在屏参正确的前提下,主屏显示正常,副屏出现花屏,需要在 system.prop里添加属性 ro.htg.force=1。
diff --gita/device/rockchip/rk3288/system.prop b/device/rockchip/rk3288/system.prop
index26a2b09..c4f2c3d 100755
---a/device/rockchip/rk3288/system.prop
+++b/device/rockchip/rk3288/system.prop
@@ -12,6 +12,7 @@rild.libpath=/system/lib/libril-rk29-dataonly.so
rild.libargs=-d /dev/ttyACM0
persist.tegra.nvmmlite = 1
ro.audio.monitorOrientation=true
+ro.htg.force=1
#NFC
debug.nfc.fw_download=false
此时大功告成,双屏可以正常显示,也可以实现双屏异显。
如果 lcd 出现重复性黑屏亮屏,找到对应的屏参文件,在正常范围内调节频率 clk 值即可。
display-timings {
                        native-mode =<&ee101ia>;
                        ee101ia: timing0 {
                screen-type =<SCREEN_DUAL_LVDS>;
                lvds-format =<LVDS_8BIT_1>;
                out-face    = <OUT_P888>;
                color-mode = <COLOR_RGB>;
                // 调节 lcd 频率
                clock-frequency = <148500000>;
                hactive = <1920>;
                vactive = <1080>;
如果单屏调试都正常点亮,打补丁后,点不亮或者有花屏现象,尝试增大对应屏的电源使能延时
lcd_en {
    rockchip,power_type = <GPIO>;
    gpios = <&gpio7 GPIO_A5GPIO_ACTIVE_HIGH>;
-   rockchip,delay = <10>;
+   rockchip,delay = <100>;
};
ookkk.jpg

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 16:56 , Processed in 0.016978 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表