LCD Driver 筆記

Posted 4:06 PM by 陳俞安 in Labels: ,
要讓 s3c2440 LCD 正常顯示要修改 LCD 相關暫存器的設定,設定部份都是參考 Eboot 的設定。
至於為甚麼要這樣設定,我也不是很清楚。

修改 LCD driver info:
linux/arch/arm/mach-s3c2440/mach-smdk2440.c

/* LCD driver info */
static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = { 
        .lcdcon5        = S3C2410_LCDCON5_FRM565 |
                          S3C2410_LCDCON5_INVVLINE |
                          S3C2410_LCDCON5_INVVFRAME |
                          S3C2410_LCDCON5_PWREN |
                          S3C2410_LCDCON5_HWSWP |
                          S3C2410_LCDCON5_INVVDEN
                          S3C2410_LCDCON5_INVVCLK
        .type           = S3C2410_LCDCON1_TFT, 
        .width          = 240,
        .height         = 320, 
        .pixclock       = 166667, /* HCLK 60 MHz, divisor 10 */
        .xres           = 240,
        .yres           = 320,
        .bpp            = 16,
        .left_margin    = 8,
        .right_margin   = 4,
        .hsync_len      = 4,
        .upper_margin   = 6,
        .lower_margin   = 8,
        .vsync_len      = 2,
};


static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
        .displays       = &smdk2440_lcd_cfg,
        .num_displays   = 1,
        .default_display = 0,  

        .gpccon         = 0xaa8096a9, 
        .gpccon_mask    = 0xffc0ffff, 
        .gpcup          = (0x1f<<11) | (0xff<<0), 
        .gpcup_mask     = 0x00000000, 
        .gpdcon         = 0xaa80aaa0, 
        .gpdcon_mask    = 0xffc0fff0, 
        .gpdup          = (0x1f<<11) | (0x3f<<2), 
        .gpdup_mask     = 0x00000000,  

        .lpcsel         = 0xc0c,
};

將 LCD 暫存去設定改成上面的值,畫面就可以正常顯示。

*ps: lpcsel 就是 TCONSEL

現在遇到的問題:
S3C2440 LCD 設定必須使用 SPI0 ,而 kernel 的 LCD Driver 並沒有實做出來。
也就是說現在透過 SPI0 設定 LCD 的部份,是由 vivi 完成的。
如果說 vivi 沒有初始化 LCD,則進入 kernel 後 LCD 也不會正常顯示。
所以必須在 kernel LCD driver 加入 spi0 的設定,讓 kernel 不用透過 vivi 也能讓 LCD 正常顯示。

S3c2440 SPI0 相關 GPIO 腳位:

  • GPE11 ---> SPIMISO0
  • GPE12 ---> SPIMOSI0
  • GPE13 ---> SPICLK0
  • GPC5 ----> OUTPUT ??
  • GPC6 ----> OUTPUT ??


1 comment(s) to... “LCD Driver 筆記”

1 comments:

jserv said...

需要查閱 smdk2440 的 schematic。

openmoko GTA02 (based on smdk2440) 的定義是:
GPC5 / LPCOE / LCD_LPCOE
GPC6 / LPCREV / LCD_LPCREV

另外,我們有個簡易的工具可列印 GPIO 狀態:
http://svn.openmoko.org/trunk/src/target/gpio/

Ref: http://svnweb.openmoko.org/trunk/doc/hardware/SMDK2440/gpio.txt?rev=1921&view=markup