发光的大白菜 发表于 2017-10-26 09:07:43

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

我们在系统【设置】中将VGA的分辨率设置为1024x768,屏幕分辨率可以成功设置,点击保存后也可以保持1024x768这个分辨率,但是重启后又会变回原来的分辨率1920x1080。要怎么改才能保存VGA的分辨率呢?
我们需要的不是固定一种分辨率,而是可以动态更改的。

发光的大白菜 发表于 2017-10-26 12:35:21

怎么没人回复呢?只有我自己碰到这种问题吗?不应该啊,这应该是系统的问题吧。

发光的大白菜 发表于 2017-11-6 15:25:52

本帖最后由 发光的大白菜 于 2017-11-6 15:32 编辑

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

      res = vga_parse_edid();
    for(i = 0; i < 2 && res != 0; i++) {
            mdelay(30);
            res = vga_parse_edid();
    }
   
      if (res == 0) {
                mode = vga_find_max_mode();
                if (mode) {
                         vga_set_modelist();
                         best = (struct fb_videomode *)fb_find_nearest_mode(mode, &ddev->modelist);
                }
      } else {
            vga_set_default_modelist();
                printk("vga-ddc: read and parse edid failed errno:%d.\n", res);
      }
                best= vga_find_max_mode();</span>
      return best;
}

发光的大白菜 发表于 2017-11-6 15:31:24

另外,我在wiki中看到firefly-rk3288的vga是支持自动识别显示器分辨率的


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

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

      if (buf == NULL)
                return -ENOMEM;

      // Check ddc i2c communication is available or not.
      rc = vga_edid_i2c_read_regs(ddev->client, 0, buf, 6);
      if(rc == 6) {
                memset(buf, 0, len);
                // Read EDID.


页: [1]
查看完整版本: RK3288 android 5.1 VGA分辨率设置不能保存怎么办?