Firefly开源社区

标题: 修复Firefly-rk3288 android5.1接VGA显示器黑屏无显示问题 [打印本页]

作者: guoke5    时间: 2016-9-18 23:28
标题: 修复Firefly-rk3288 android5.1接VGA显示器黑屏无显示问题
本帖最后由 guoke5 于 2016-9-19 17:51 编辑

下载了Firefly-rk3288 android5.1 最新的代码,按照官网的介绍成功编译ROM,并将Android5.1的ROM镜像烧到板子上,板子是接着VGA显示器(最高分辨率1280×1024)的,烧ROM后板子重新开机,显示器却一直是黑屏的,没有显示内容,VGA显示器一直提示“输入不支持”。
除了VGA显示器没有显示,其他系统都是正常的,adb shell也可以正常接入,于是查看了一下当前设置的VGA分辨率,不查不知道 ,一查吓一跳:
  1. shell@firefly:/ $ cat sys/class/display/VGA/mode                              
  2. 1920x1080p-60
复制代码


什么?设置给系统的VGA分辨率居然为1920x1080!我的显示器根本支持不了那么高的分辨率,难怪显示器会黑屏。

按照同样的编译方法,试了Android4.4的ROM,发现是OK的
  1. shell@firefly:/ $ cat sys/class/display/display0.vga/mode
  2. 1280x1024p-60
复制代码



于是查看了Android5.1关于VGA显示部分的内核代码(kernel/drivers/video/rockchip/vga),发现Android5.1代码在设置默认VGA分辨率时,固定设置为VGA分辨率列表的最大值(1920*1080).kernel/drivers/video/rockchip/vga/firefly-vga.c (vga_find_best_mode直接使用了vga_find_max_mode的返回值,而vga_find_max_mode的返回值却是1920*1080)

对比了Android4.4的SDK,发现vga_find_best_mode里面并没有直接使用vga_find_max_mode的返回值来设置系统分辨率。5.1的代码,vga_find_best_mode里面最后强制使用了vga_find_max_mode返回的值来设置分辨率,而vga_find_max_mode里面返回的却是1920×1080!因此导致显示器黑屏,只要却掉该处代码,显示即可正常。
  1. diff --git a/kernel/drivers/video/rockchip/vga/firefly_vga.c b/kernel/drivers/video/rockchip/vga/firefly_vga.c
  2. index 06a7df4..6bcde3c 100644
  3. --- a/kernel/drivers/video/rockchip/vga/firefly_vga.c
  4. +++ b/kernel/drivers/video/rockchip/vga/firefly_vga.c
  5. @@ -292,7 +292,7 @@ static struct fb_videomode *vga_find_best_mode(void)
  6.                 printk("vga-ddc: read and parse edid failed errno:%d.\n", res);
  7.         }
  8.         
  9. -       best  = vga_find_max_mode();
  10. +
  11.         return best;
复制代码
猜测:vga_find_max_mode里面有bug,没有过滤掉显示器不支持的分辨率,导致直接取了分辨率列表的最大值。        




Selection_001.png (39.39 KB, 下载次数: 46)

Selection_001.png

Selection_002.png (77.27 KB, 下载次数: 58)

Selection_002.png

Selection_003.png (68.01 KB, 下载次数: 50)

Selection_003.png

Selection_004.png (41.06 KB, 下载次数: 57)

Selection_004.png

作者: zhansb    时间: 2016-9-19 10:22
{:3_48:}赞一个
作者: hardy_bbs    时间: 2016-9-21 22:10
你好
“修复Firefly-rk3288 android5.1接VGA显示器黑屏无显示问题”
http://developer.t-firefly.com/f ... 7&highlight=VGA
我也遇到这个问题 苦于技术能力无法编译固件 能否发个你改过的固件

我的QQ 254561683 不胜感激
作者: guoke5    时间: 2016-9-21 23:53
hardy_bbs 发表于 2016-9-21 22:10
你好
“修复Firefly-rk3288 android5.1接VGA显示器黑屏无显示问题”
http://developer.t-firefly.com/f . ...

我明天上传到百度云给你
作者: hardy_bbs    时间: 2016-9-22 07:50
非常感激 作为报答 本人愿意无偿提供价值50元的神器账号一个  :)
作者: guoke5    时间: 2016-9-25 15:07
hardy_bbs 发表于 2016-9-22 07:50
非常感激 作为报答 本人愿意无偿提供价值50元的神器账号一个  :)

已经上传完毕,发你qq?
作者: cheng_86    时间: 2017-7-17 12:01
赞一个。。此贴帮助很大。。。
作者: hotglaygto    时间: 2017-10-26 17:31
感謝樓主  學到很多東西




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1