天嵌 ARM开发社区

 找回密码
 注册
查看: 2228|回复: 4

LCD移植时图像移位

[复制链接]
zhu04303661 发表于 2010-1-4 15:55:05 | 显示全部楼层 |阅读模式
我按照下面的操作移植LCD驱动的,驱动是移植上去了图像也出来了,但是就是整个图像的位置都向左上角移动了一定的距离,不知道是怎么回事,我开始移位是LCD的参数设置不对,可是我怎么调整都不行,故来求救。
2.6.32已经包含了s3c2440的frame buffer LCD驱动了,我们要做的就是传递正确的platform_data给内核就可以了。具体移植过程如下:
1)根据实际的LCD屏的物理尺寸大小,修改platform_data结构中的s3c2410fb_display结构变量。具体内容如下:
/* 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          = 320,          // 240,
.height         = 240,                          // 320,

.pixclock       = 100000,  //166667, /* HCLK 60 MHz, divisor 10 */
.setclkval = 0x3,  /* 新加入的项目的是减少计算pixclock的复杂度*/  

        .xres           = 320,  // 240,
        .yres           = 240,  // 320,
        .bpp            = 16,
        .left_margin    = 33,   //20,
        .right_margin   = 22,   //8,
        .hsync_len      = 44,   //4,
        .upper_margin   = 9,    //8,
        .lower_margin   = 3,    //7,
       .vsync_len      = 15,   //4,
};
2)修改s3c2410fb_display结构定义,添加setclkval成员。编辑arch/arm/mach-s3c2410/include/mach/fb.h文件,具体修改内容如下:
在struct s3c2410fb_display 中的unsigned pixclock 后面添加行:   
       unsigned setclkval;             /*新添加的set clock value*/
3)修改s3c2410 frame buffer驱动,使得计算pixclock更加简洁。编辑drivers/video/s3c2410fb.c,具体修改内容如下:

static void s3c2410fb_activate_var(struct fb_info *info)
        {
     struct s3c2410fb_mach_info *platform_dev = fbi->dev->platform_data;
struct s3c2410fb_display *default_display = platform_dev->displays+platform_dev->default_display;
                ......
//fbi->regs.lcdcon1 |=  S3C2410_LCDCON1_CLKVAL(clkdiv);
        fbi->regs.lcdcon1 |=  S3C2410_LCDCON1_CLKVAL(default_display->setclkval);
                ......
        }
  4)LCD驱动内核配置选项如下:Device Drivers->Graphics support->Support for frame buffer devices->Enable firmware EDID、Enable Video Mode Handling Helpers和S3C2410 LCD framebuffer support,同时在Graphics support选项中还要选择Console display driver support->Framebuffer Console support;
5)添加开机Logo。具体Logo图片可以自行选择,我用的是Linux内核自带的logo图标,具体路径如下:drivers/video/logo/logo_linux_clut224.ppm。
     A)使用gimp工具修改该logo图标为224色且保存为ascii码形式。之后将修改后的logo图片文件放回到原位置。
     B)内核配置选项如下:Device Drivers->Graphics support->Bootup logo->Standard 224-color Linux logo
亚瑟王 发表于 2010-1-5 11:14:27 | 显示全部楼层
在我们提供的移植手册里面讲LCD移植章节时已经讲过了的,你没有注意到一个细节,在smdk2440_fb_info__initdata中最后一行的.lpcsel = ..............,是屏蔽了的。
 楼主| zhu04303661 发表于 2010-1-6 16:17:34 | 显示全部楼层
问题解决了,非常感谢
wangpeihui123 发表于 2011-1-3 14:43:25 | 显示全部楼层
怎么解决的,,
wangpeihui123 发表于 2011-1-3 14:52:01 | 显示全部楼层
我屏蔽了,,怎么还是不行啊,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 22:30 , Processed in 1.040079 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表