* bit[9] : 1 = HSYNC信号要反转,即低电平有效
* bit[8] : 1 = VSYNC信号要反转,即低电平有效
* bit[6] : 0 = VDEN不用反转
* bit[3] : 0 = PWREN输出0
*
* BSWP = 0, HWSWP = 0, BPP24BL = 0 : 当bpp=24时,2440会给每一个象素分配32位即4字节,哪一个字节是不使用的 看2440手册P412
* bit[12]: 0, LSB valid, 即最高字节不使用
* bit[1] : 0 = BSWP
* bit[0] : 0 = HWSWP
*/
3.分配显存(framebuffer), 并把地址告诉LCD控制器
a.分配
s3c_lcd->screen_base = dma_alloc_writecombine(NULL, s3c_lcd->fix.smem_len, &s3c_lcd->fix.smem_start, GFP_KERNEL);
b.设置
LCDSADDR1

我们只需要将LCD地址右移1位置。然后将前两位(没用到的)清零即可。
lcd_regs->lcdsaddr1 = (s3c_lcd->fix.smem_start >> 1) & ~(3<<30); //最高两位清零LCDSADDR2

这里用到结束地址(其实就是开始地址+长度)然后右移动1位,最后将没用到的位清零。
lcd_regs->lcdsaddr2 = ((s3c_lcd->fix.smem_start + s3c_lcd->fix.smem_len) >> 1) & 0x1fffff;
LCDSADDR3

表示的一行的长度,用半字(2字节)表示:
lcd_regs->lcdsaddr3 = (240*32/16); /* 一行的长度(单位: 2字节) */
d.注册: register_framebuffer
我们做的这些要叫内核知道,所以最后要注册一下
参考:韦东山视频二期
黄刚的S3C2440上LCD驱动(FrameBuffer)实例开发讲解 www.linuxidc.com/Linux/2011-03/33600.htm