文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>2.6.30内核LCD驱动移植(LCD花屏问题解决思路)

2.6.30内核LCD驱动移植(LCD花屏问题解决思路)

时间:2009-08-21  来源:七分之雨后

使用2.6.30.4内核原版的LCD驱动s3c2410fb.c,编译之后linux_cmd_line 设置console=tty;
屏幕花屏;

关键在于 :arch/arm/mach-s3c2440/mach-smdk2440.c
配合 driver/video/Kconfig ,使得lcd的参数可配置;

花屏的主要原因猜测应该在于“s3c2410fb_display.pixclock” 参数的设置

/*============arch/arm/mach-s3c2440/mach-smdk2440.c=============== */

/* LCD driver info */

#if defined(CONFIG_FB_S3C2410_N240320)

#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 100000

#define LCD_RIGHT_MARGIN 36
#define LCD_LEFT_MARGIN 19
#define LCD_HSYNC_LEN 5

#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 5
#define LCD_VSYNC_LEN 1

#elif defined(CONFIG_FB_S3C2410_T240320)
#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000

#define LCD_RIGHT_MARGIN 29
#define LCD_LEFT_MARGIN 10
#define LCD_HSYNC_LEN 5

#define LCD_UPPER_MARGIN 3
#define LCD_LOWER_MARGIN 5
#define LCD_VSYNC_LEN 1

#elif defined(CONFIG_FB_S3C2410_TFT800480)
#define LCD_WIDTH 800
#define LCD_HEIGHT 480
#define LCD_PIXCLOCK 40000

#define LCD_RIGHT_MARGIN 67
#define LCD_LEFT_MARGIN 40
#define LCD_HSYNC_LEN 31

#define LCD_UPPER_MARGIN 25
#define LCD_LOWER_MARGIN 5
#define LCD_VSYNC_LEN 1

#elif defined(CONFIG_FB_S3C2410_VGA1024768)
#define LCD_WIDTH 1024
#define LCD_HEIGHT 768
#define LCD_PIXCLOCK 80000

#define LCD_RIGHT_MARGIN 15
#define LCD_LEFT_MARGIN 199
#define LCD_HSYNC_LEN 15

#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 1
#define LCD_VSYNC_LEN 1
#define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_HWSWP)

#elif defined(CONFIG_FB_S3C2410_T320240)
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
#define LCD_PIXCLOCK 170000

#define LCD_RIGHT_MARGIN 68
#define LCD_LEFT_MARGIN 20
#define LCD_HSYNC_LEN 31

#define LCD_UPPER_MARGIN 12
#define LCD_LOWER_MARGIN 12
#define LCD_VSYNC_LEN 2

#endif

#if defined (LCD_WIDTH)

static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

#if !defined (LCD_CON5)
    .lcdcon5 = S3C2410_LCDCON5_FRM565 |
              S3C2410_LCDCON5_INVVLINE |
              S3C2410_LCDCON5_INVVFRAME |
              S3C2410_LCDCON5_PWREN |
              S3C2410_LCDCON5_HWSWP,
#else
    .lcdcon5 = LCD_CON5,
#endif

    .type = S3C2410_LCDCON1_TFT,

    .width = LCD_WIDTH,
    .height = LCD_HEIGHT,

    .pixclock = LCD_PIXCLOCK,
    .xres = LCD_WIDTH,
    .yres = LCD_HEIGHT,
    .bpp = 16,
    .left_margin = LCD_LEFT_MARGIN + 1,
    .right_margin = LCD_RIGHT_MARGIN + 1,
    .hsync_len = LCD_HSYNC_LEN + 1,
    .upper_margin = LCD_UPPER_MARGIN + 1,
    .lower_margin = LCD_LOWER_MARGIN + 1,
    .vsync_len = LCD_VSYNC_LEN + 1,
};

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

#if 0
    /* currently setup by downloader */
    .gpccon = 0xaa940659,
    .gpccon_mask = 0xffffffff,
    .gpcup = 0x0000ffff,
    .gpcup_mask = 0xffffffff,
    .gpdcon = 0xaa84aaa0,
    .gpdcon_mask = 0xffffffff,
    .gpdup = 0x0000faff,
    .gpdup_mask = 0xffffffff,
#endif

    .lpcsel = ((0xCE6) & ~7) | 1<<4,
};

#endif

========================== drivers/video/Kconfig =========

config FB_S3C2410
    tristate "S3C2410 LCD framebuffer support"
    depends on FB && ARCH_S3C2410
    select FB_CFB_FILLRECT
    select FB_CFB_COPYAREA
    select FB_CFB_IMAGEBLIT
    ---help---
      Frame buffer driver for the built-in LCD controller in the Samsung
      S3C2410 processor.

      This driver is also available as a module ( = code which can be
      inserted and removed from the running kernel whenever you want). The
      module will be called s3c2410fb. If you want to compile it as a module,
      say M here and read <file:Documentation/kbuild/modules.txt>.

      If unsure, say N.

choice
    prompt "LCD select"
    depends on FB_S3C2410
    help
       S3C24x0 LCD size select

config FB_S3C2410_T240320
    boolean "3.5 inch 240X320 TFT LCD"
    depends on FB_S3C2410
    help
      3.5 inch 320X240 TFT LCD

config FB_S3C2410_N240320
    boolean "3.5 inch 240X320 NEC LCD"
    depends on FB_S3C2410
    help
       3.5 inch 240x320 NEC LCD

config FB_S3C2410_TFT800480
    boolean "7 inch 800x480 TFT LCD"
    depends on FB_S3C2410
    help
       7 inch 800x480 TFT LCD

config FB_S3C2410_VGA1024768
    boolean "VGA 1024x768"
    depends on FB_S3C2410
    help
       VGA 1024x768

endchoice

/* ========================= 原版2.6.30 的 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,

    .type = S3C2410_LCDCON1_TFT,

    .width = 240,
    .height = 320,

    .pixclock = 166667, /* HCLK 60 MHz, divisor 10 */
    .xres = 240,
    .yres = 320,
    .bpp = 16,
    .left_margin = 20,
    .right_margin = 8,
    .hsync_len = 4,
    .upper_margin = 8,
    .lower_margin = 7,
    .vsync_len = 4,
};

相关阅读 更多 +
排行榜 更多 +
边境检察最后区域手机版下载

边境检察最后区域手机版下载

角色扮演 下载
酋长你别跑手游下载

酋长你别跑手游下载

休闲益智 下载
心动漫画app下载官方版

心动漫画app下载官方版

浏览阅读 下载