設定 framebuffer 的 timeing parameter 的 structure: include/linux/fb.h
struct fb_videomode {
const char *name; /* optional */
u32 refresh; /* optional */
u32 xres;
u32 yres;
u32 pixclock;
u32 left_margin;
u32 right_margin;
u32 upper_margin;
u32 lower_margin;
u32 hsync_len;
u32 vsync_len;
u32 sync;
u32 vmode;
u32 flag;
};
好像沒有提到 "單位",是 dot clock , time 還是 scanline ?
這些parameter 的意義可以參考:
Lcd Controller Timing Parameters
根據 L 先生的參數:
+ /* 800x480 @ 58 Hz , pixel clk @ 32MHz */
"PVI-2003A-WVGA",
58, // refresh
800, // x res
480, // y res
31250, // pixclock
86, // left margin
42, // right margin
33, // upper margin
10, // lower margin
128, // hync len
2, // vsync len
FB_SYNC_CLK_LAT_FALL | FB_SYNC_EXT,
FB_VMODE_NONINTERLACED,
0,},
每個的單位都不一樣:
- left, right margine 和 hsync len 的單位是 pixle clock
- upper. lower 和 vsync len的單位是 horizontal scanline
當完全設定正確的時候 frame rate (e.g 57Hz ?) 就會正確。
這個 data 宣告在
LCD 設定正確後,power up sequence 也要正確。
ref :
Lcd Power Up Sequence
- 但是每一個 panel 的 power up sequence 不一定一樣。
沒有留言:
張貼留言