#define INTERLACE_F 0 // 0:progressive, 1:interlace
#define VIDOUT 0 // 00:RGB I/F
#define PNRMODE 0 // 00 RGB p00 = RGB Parallel format (RGB)
/*
01 = RGB Parallel format (BGR)
10 = Serial Format (R->G->B)
11 = Serial Format (B->G->R)
*/
#define CLKVALUP 0 // select clkval_f update timing control
#define CLKVAL_F 3 // 33 = 133/N+1 N=3
#define VCLKFREE 0 // Normal mode
#define CLKDIR 1 // Divided by clkval_f
#define CLKSEL_F 0 // hclk
#define ENVID 1
#define ENVID_F 1
#define IVCLK 0 // Data be latched at the falling edge of DCLK.
#define IHSYNC 1 // inverted
#define IVSYNC 1 // inverted
#define IVDEN 0 // normal
#define HFPD 210 //
#define HSPW 10 // HS pulse width(DCLK)
#define HBPD 46-HSPW // HS BLANKING
#define VFPD 22
#define VSPW 10
#define VBPD 23 - VSPW
#define ROW 480
#define COLUMN 800
#define LEFTTOPX_F 0
#define LEFTTOPY_F 0
#define RIGHTBOTX_F (COLUMN-1)
#define RIGHTBOTY_F (ROW-1)
#define FRAMEBUGGER 0x58000000
int LcdInit(void)
{
// gpio Init
setValAll(GPICON, 0xaaaaaaaa);
setValAll(GPJCON, 0xaaaaaa);
// config display controller
setValnbit(MIFPCON, 3, 1, 0); // normal mode
setValnbit(SPCON, 0, 2, 1); // RGB I/F Style
setValnbit(VIDCON0, 29, 1, 0); // 逐行扫描
setValnbit(VIDCON0, 26, 2, 0); // rgb i/f
setValnbit(VIDCON0, 17, 2, 0); // RGB Parallel format(RGB)
setValnbit(VIDCON0, 16, 1, CLKVALUP); // always
setValnbit(VIDCON0, 6, 8, CLKVAL_F); // 133/(1+1) = 66
setValnbit(VIDCON0, 4, 1, CLKDIR);
setValnbit(VIDCON0, 2, 2, CLKSEL_F);
setValnbit(VIDCON0, 1, 1, ENVID);
setValnbit(VIDCON0, 0, 1, ENVID_F);
setValnbit(VIDCON1, 7, 1, IVCLK);
setValnbit(VIDCON1, 6, 1, IHSYNC);
setValnbit(VIDCON1, 5, 1, IVSYNC);
setValnbit(VIDCON1, 4, 1, IVDEN);
setValnbit(VIDTCON0, 16, 8, VBPD);
setValnbit(VIDTCON0, 8, 8, VFPD);
setValnbit(VIDTCON0, 0, 8, VSPW);
setValnbit(VIDTCON1, 16, 8, HBPD);
setValnbit(VIDTCON1, 8, 8, HFPD);
setValnbit(VIDTCON1, 0, 8, HSPW);
setValnbit(VIDTCON2, 0, 11, COLUMN - 1);
setValnbit(VIDTCON2, 11, 11, ROW - 1);
setValnbit(WINCON0, 2, 4, 0xb); // 24BPP
setValnbit(WINCON0, 0, 1, 1); // enable video control signal
setValnbit(VIDOSD0A, 0, 11, LEFTTOPY_F);
setValnbit(VIDOSD0A, 11, 11, LEFTTOPX_F);
setValnbit(VIDOSD0B, 0, 11, RIGHTBOTY_F);
setValnbit(VIDOSD0B, 11, 11, RIGHTBOTX_F);
setValnbit(VIDOSD0C, 0, 24, ROW*COLUMN);
setValnbit(VIDW00ADD0B0, 0, 24, FRAMEBUGGER);
setValnbit(VIDW00ADD1B0, 0, 24, ROW*COLUMN*4);
setValnbit(GPECON, 0, 4, 1); // output
setValnbit(GPEDAT, 0, 1, 1); // HIGHT
setValnbit(GPFCON, 30, 2, 1);
setValnbit(GPFDAT, 15, 1, 1);