Firefly开源社区

打印 上一主题 下一主题

RK3288 android 5.1 VGA分辨率设置不能保存怎么办?

99

积分

0

威望

0

贡献

技术小白

积分
99

RK3288 android 5.1 VGA分辨率设置不能保存怎么办?

发表于 2017-10-26 09:07:43      浏览:9060 | 回复:3        打印      只看该作者   [复制链接] 楼主
我们在系统【设置】中将VGA的分辨率设置为1024x768,屏幕分辨率可以成功设置,点击保存后也可以保持1024x768这个分辨率,但是重启后又会变回原来的分辨率1920x1080。要怎么改才能保存VGA的分辨率呢?
我们需要的不是固定一种分辨率,而是可以动态更改的。
回复

使用道具 举报

99

积分

0

威望

0

贡献

技术小白

积分
99
发表于 2017-10-26 12:35:21        只看该作者  沙发
怎么没人回复呢?只有我自己碰到这种问题吗?不应该啊,这应该是系统的问题吧。
回复

使用道具 举报

99

积分

0

威望

0

贡献

技术小白

积分
99
发表于 2017-11-6 15:25:52        只看该作者  板凳
本帖最后由 发光的大白菜 于 2017-11-6 15:32 编辑

今天发现在vga驱动中,vga_find_best_mode()方法直接返回了一个最大的分辨率,这里是否会导致VGA分辨率一直保持1920*1080呢?
  1. static struct fb_videomode *vga_find_best_mode(void)
  2. {
  3.         int res = -1,i;
  4.         struct fb_videomode *mode = NULL, *best = NULL;

  5.         res = vga_parse_edid();
  6.     for(i = 0; i < 2 && res != 0; i++) {
  7.             mdelay(30);
  8.             res = vga_parse_edid();
  9.     }
  10.    
  11.         if (res == 0) {
  12.                 mode = vga_find_max_mode();
  13.                 if (mode) {
  14.                          vga_set_modelist();
  15.                          best = (struct fb_videomode *)fb_find_nearest_mode(mode, &ddev->modelist);
  16.                 }
  17.         } else {
  18.             vga_set_default_modelist();
  19.                 printk("vga-ddc: read and parse edid failed errno:%d.\n", res);
  20.         }
  21.                 best  = vga_find_max_mode();</span>
  22.         return best;
  23. }
复制代码

回复

使用道具 举报

99

积分

0

威望

0

贡献

技术小白

积分
99
发表于 2017-11-6 15:31:24        只看该作者  地板
另外,我在wiki中看到firefly-rk3288的vga是支持自动识别显示器分辨率的


但是在驱动中发现,代码成功获取了EDID数据,但是好像并没有对它进行分析处理,这样怎么支持自动识别显示器分辨率呢?
  1. static int vga_edid_read(char *buf, int len)
  2. {
  3.         int rc;

  4.         if (ddev == NULL || ddev->client == NULL)
  5.                 return -ENODEV;

  6.         if (buf == NULL)
  7.                 return -ENOMEM;

  8.         // Check ddc i2c communication is available or not.
  9.         rc = vga_edid_i2c_read_regs(ddev->client, 0, buf, 6);
  10.         if(rc == 6) {
  11.                 memset(buf, 0, len);
  12.                 // Read EDID.
复制代码



回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表