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给客户看,谢谢了!

有图有真相:

把/class/graphics/fb0/screen_info发出来看看

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

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

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

我先前也有改過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 },
};

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

PAD版的接下来我们会加上去,敬请期待:victory:

楼主,你的问题解决没有?我的也是,不过有一个分辨率和频率可以匹配。显示感觉还是有问题。

楼主,问题解决了么,我的显示还是看的头晕

zhanlie507 发表于 2015-4-25 21:26
楼主,问题解决了么,我的显示还是看的头晕

1600x900可以的,1440x900还是那样,显示的是1152x900.

eagle_lzt 发表于 2015-4-27 09:59
1600x900可以的,1440x900还是那样,显示的是1152x900.

请问你的问题解决了吗,我想请教一下,我想加入HDMI能有1920*1200P60输出,我应该怎么做呢,麻烦了

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的设置以及返回一点都不懂,请问这个地方该怎么做。

楼主,请问你的linux平台下VGA的分辨率问题搞定没?

你好,请问修改framebuffer默认bpp的地方在哪?

spiderh 发表于 2015-8-27 09:10
这个问题解决了没有?
在android也会有类似的问题。
以1440x900

你的这个问题解决了吗?我在android遇到同样的问题,时钟修改不了

你好,请问修改framebuffer默认bpp的地方在哪?