Firefly开源社区

标题: vga输出 1440x900 分辨率问题 [打印本页]

作者: eagle_lzt    时间: 2014-12-11 09:33
标题: vga输出 1440x900 分辨率问题
       板子买了好久,终于有时间调试一下了。首先分辨率适配问题,从驱动里面发现firefly把常见的分辨率模式基本都加入进去了。
在这里赞一个。
      我跑的linux,后来发现不管用哪个显示器都是1920x1080,随即研究代码后,修改lcd-box.dtsi,终于和我的
1440x900分辨率匹配了,但是高兴地太早了,显示的很模糊,fbset一看是16位的,随即又研究代码,将framebuffer驱动默认
bpp改成了32位,心想这下ok了,但是高兴的又太早了,一看还是显示的不清晰,但是fbset显示的都是正确的,郁闷,随即查看
显示器的参数,结果一看明白了:fbset显示的是1440x900 32位,但是显示器接收到的是1152x900. 怪不得字体什么的模糊!原来
不是最佳的,而且垂直刷新率66Hz,但是驱动参数里设置都是按照60设置的。
      后来又换了一个1600x900的显示器,将板子输出调成1600x900, 结果显示效果很完美,很稳定。但是显示器接收到的垂直刷新率
是65Hz.
      所以问题来了,1400x900为什么成了1152x900,1440x900和1600x900的垂直刷新率为啥不是60,而是60+

硬件:t-firefly rk3288 正式版
kernel: linux 3.10.37
rootfs:自带lubuntu

      望firefly的大牛帮忙看看,调调,我好及时做好demo给客户看,谢谢了!

有图有真相:






作者: zhansb    时间: 2014-12-11 15:15
把/class/graphics/fb0/screen_info发出来看看
作者: eagle_lzt    时间: 2014-12-11 19:37
zhansb 发表于 2014-12-11 15:15
把/class/graphics/fb0/screen_info发出来看看

/class/graphics/fb0/screen_info
z-order:
  layer3_sel_win[3]
  layer2_sel_win[2]
  layer1_sel_win[1]
  layer0_sel_win[0]
win0:
  state:0,   fmt:ARGB888,   y_vir:320,   uv_vir:320
  xact: 320,   yact: 240,   dsp_x: 320,   dsp_y: 240,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x00000000,   uv_addr:0x00000000
win1:
  state:1,   fmt:ARGB888,   y_vir:1440,   uv_vir:4192
  xact:1440,   yact: 900,   dsp_x:1440,   dsp_y: 900,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x10000000,   uv_addr:0x00000000
win2:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
win3:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0   addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000





cat /sys/class/display/display0.VGA/mode
1440x900p-60



作者: eagle_lzt    时间: 2014-12-11 19:37
zhansb 发表于 2014-12-11 15:15
把/class/graphics/fb0/screen_info发出来看看

/class/graphics/fb0/screen_info
z-order:
  layer3_sel_win[3]
  layer2_sel_win[2]
  layer1_sel_win[1]
  layer0_sel_win[0]
win0:
  state:0,   fmt:ARGB888,   y_vir:320,   uv_vir:320
  xact: 320,   yact: 240,   dsp_x: 320,   dsp_y: 240,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x00000000,   uv_addr:0x00000000
win1:
  state:1,   fmt:ARGB888,   y_vir:1440,   uv_vir:4192
  xact:1440,   yact: 900,   dsp_x:1440,   dsp_y: 900,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x10000000,   uv_addr:0x00000000
win2:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
win3:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0   addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000





cat /sys/class/display/display0.VGA/mode
1440x900p-60



作者: eagle_lzt    时间: 2014-12-11 19:39
zhansb 发表于 2014-12-11 15:15
把/class/graphics/fb0/screen_info发出来看看

/class/graphics/fb0/screen_info
z-order:
  layer3_sel_win[3]
  layer2_sel_win[2]
  layer1_sel_win[1]
  layer0_sel_win[0]
win0:
  state:0,   fmt:ARGB888,   y_vir:320,   uv_vir:320
  xact: 320,   yact: 240,   dsp_x: 320,   dsp_y: 240,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x00000000,   uv_addr:0x00000000
win1:
  state:1,   fmt:ARGB888,   y_vir:1440,   uv_vir:4192
  xact:1440,   yact: 900,   dsp_x:1440,   dsp_y: 900,   x_st:   0,   y_st:   0
  y_h_fac:    4096,   y_v_fac:    4096,   uv_h_fac:    4096,   uv_v_fac:    4096
  y_addr: 0x10000000,   uv_addr:0x00000000
win2:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
win3:
  state:0
  fmt:ARGB888
  area0:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area1:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0   addr:0x00000000
  area2:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000
  area3:  state:0,  y_vir: 320,  dsp_x: 320,  dsp_y: 240,  x_st:   0,  y_st:   0,  addr:0x00000000





cat /sys/class/display/display0.VGA/mode
1440x900p-60



作者: crazycat    时间: 2015-2-4 00:20
我先前也有改過VGA , 強迫輸出 1024x768 or 1280x720 如下 ..
另外PAD版本可以用VGA嗎 ? 我有VGA需求在PAD板上改

const struct fb_videomode sda7123_vga_mode[] = {
        //name                                refresh                xres        yres        pixclock                        h_bp        h_fp        v_bp        v_fp        h_pw        v_pw        polariry        PorI        flag(used for vic)
        {"1024x768p@60Hz",        60,                        1024,        768,        65000000,        160,        24,                29,                3,                136,        6,                0,                        0,                0        },
        {"1280x720p@60Hz",        60,                        1280,        720,        74250000,        220,   110,          20,                5,                 40,        5,                FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,                        0,                0        },       
//        {"1280x1024p@60Hz",        60,                        1280,        1024,        108000000,        248,        48,                38,                1,                112,        3,                FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,                        0,                6        },
//        {"1366x768p@60Hz",        60,                        1366,        768,        85500000,        213,        70,                24,                3,                143,        3,                FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,                        0,                0        },
};
作者: zhansb    时间: 2015-2-4 09:08
crazycat 发表于 2015-2-4 00:20
我先前也有改過VGA , 強迫輸出 1024x768 or 1280x720 如下 ..
另外PAD版本可以用VGA嗎 ? 我有VGA需求在PAD ...

PAD版的接下来我们会加上去,敬请期待:victory:
作者: danzuiji    时间: 2015-3-24 17:38
楼主,你的问题解决没有?我的也是,不过有一个分辨率和频率可以匹配。显示感觉还是有问题。
作者: zhanlie507    时间: 2015-4-25 21:26
楼主,问题解决了么,我的显示还是看的头晕
作者: eagle_lzt    时间: 2015-4-27 09:59
zhanlie507 发表于 2015-4-25 21:26
楼主,问题解决了么,我的显示还是看的头晕

1600x900可以的,1440x900还是那样,显示的是1152x900.
作者: suky8    时间: 2015-8-26 16:43
eagle_lzt 发表于 2015-4-27 09:59
1600x900可以的,1440x900还是那样,显示的是1152x900.

请问你的问题解决了吗,我想请教一下,我想加入HDMI能有1920*1200P60输出,我应该怎么做呢,麻烦了
作者: spiderh    时间: 2015-8-27 09:10
zhansb 发表于 2014-12-11 15:15
把/class/graphics/fb0/screen_info发出来看看

这个问题解决了没有?
在android也会有类似的问题。
以1440x900
是因为在文件 /kernel/drivers/video/rockchip/lcdc/rk3288_lcdc.c 的 方法rk3288_lcdc_set_dclk中
ret = clk_set_rate(lcdc_dev->dclk, screen->mode.pixclock);
这一句,不管pixclock设置是10800000 还是 106500000 clk_get_rate 所返回的值都是 118000000。
这样就导致1440x900分辨率下timing错乱,输出分辨率为1152x900,刷新率成了67。
该问题在hdmi其实都一样,刷新率也是67的,只不过hdmi能修正为1440x900的显示而已。
clk的设置以及返回一点都不懂,请问这个地方该怎么做。
作者: phoenix    时间: 2015-11-16 13:38
楼主,请问你的linux平台下VGA的分辨率问题搞定没?
作者: hongyin    时间: 2016-3-9 17:15
你好,请问修改framebuffer默认bpp的地方在哪?
作者: biaoun    时间: 2016-6-2 22:59
spiderh 发表于 2015-8-27 09:10
这个问题解决了没有?
在android也会有类似的问题。
以1440x900

你的这个问题解决了吗?我在android遇到同样的问题,时钟修改不了
作者: 746277441    时间: 2016-6-29 20:22
你好,请问修改framebuffer默认bpp的地方在哪?




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