主题 : linux2.6.26+LTV350,不能出现小企鹅啊 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
楼主  发表于: 2009-08-26 01:18

 linux2.6.26+LTV350,不能出现小企鹅啊

郁闷好几天了,寻求各位同仁的帮助:
我的内核是linux2.6.26的,lcd是LTV350QV-F04,从nfs到usb都很顺利,但是到了lcd的移植一直没有成功,我修改了arch/arm/mach-s3c2440/mach-smdk2440.c,以下是我的lcd主要两个结构体的配置和通过内核打印出来的寄存器的值
s3c2410fb: devinit
s3c2410fb: got and enabled clock
s3c2410fb: map_video_memory(fbi=c3c76230) map_size 307200
s3c2410fb: map_video_memory: clear ffc00000:0004b000
s3c2410fb: map_video_memory: dma=33d80000 cpu=ffc00000 size=0004b000
s3c2410fb: got video memory
s3c2410fb: LPCSEL    = 0x00000cf0
s3c2410fb: replacing TPAL 00000000
s3c2410fb: check_var(var=c3c76008, info=c3c76000)
s3c2410fb: pixclk 145624, divisor is 14
s3c2410fb: s3c2410fb_activate_var: var->xres  = 320
s3c2410fb: s3c2410fb_activate_var: var->yres  = 240
s3c2410fb: s3c2410fb_activate_var: var->bpp   = 32
s3c2410fb: setting vert: up=4, low=3, sync=3
s3c2410fb: setting horz: lft=30, rt=10, sync=19
s3c2410fb: new register set:
s3c2410fb: lcdcon[1] = 0x0000067a
s3c2410fb: lcdcon[2] = 0x033bc082
s3c2410fb: lcdcon[3] = 0x00493f1d
s3c2410fb: lcdcon[4] = 0x00000012
s3c2410fb: lcdcon[5] = 0x00000708
s3c2410fb: LCDSADDR1 = 0x19ec0000
s3c2410fb: LCDSADDR2 = 0x19ee5800
s3c2410fb: LCDSADDR3 = 0x00000280
Console: switching to colour frame buffer device 40x30
fb0: s3c2410fb frame buffer device
fb1: Virtual frame buffer device, using 1024K of video memory


* LCD driver info */

static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

    .lcdcon5    = S3C2410_LCDCON5_BPP24BL |
              S3C2410_LCDCON5_INVVCLK |
              S3C2410_LCDCON5_INVVLINE |
              S3C2410_LCDCON5_INVVFRAME |
              S3C2410_LCDCON5_PWREN |
              S3C2410_LCDCON5_BSWP |
              S3C2410_LCDCON5_HWSWP,

    .type        = S3C2410_LCDCON1_TFT,

    .width        = 320,
    .height        = 240,

    .pixclock    = 145624,//174757, /* HCLK 101.25 MHz, DOTCLK 6.867M ,divisor 6 */
    .xres        = 320,
    .yres        = 240,
    .bpp        = 32,
    .left_margin    = 30,//20,
    .right_margin    = 10,//8,
    .hsync_len    = 19,//4,
    .upper_margin    = 4,//8,
    .lower_margin    = 3,//7,
    .vsync_len    = 3,//4,
};

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

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

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

还有,关于内核的配置,我参照前人的配置,该打开的也都打开了。
关于vspw,hspw等值,我根据pdf中的时序图取的值,dotclolk也是根据里面的公式算出来的,
关于pixclk都是我参照ltv350的pdf算出来的,但是现在怎么显示不了logo,希望能得到各位同仁的指点。
我用光盘中的测试程序测试了lcd,是可以正常显示的,硬件没有什么问题。
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
1楼  发表于: 2009-08-27 16:20
还是无人问津啊,看来是我问的有点问题
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2009-08-28 09:08
你有QQ2440的光盘吧,先确保用光盘上的Linux 2.6.13可以正常点亮屏幕,然后再从2.6.13的源代码里把LCD部分抄过来,注意从2.6.13到2.6.26, S3C2440的Frambuffer数据结构有变动。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
3楼  发表于: 2009-08-29 22:53
楼上的你好,我用了光盘里的linux2.6.13的内核,也点不亮我的板子,我用光盘里提供的2440test.bin测试过了我的板子,lcd是能够点亮的,而且能够正常的显示图片,所以我很是郁闷。其实这样看来,应该是我的内核的问题了,但是我用的就是那个针对samsing320*240的lcd的内核配置,就是不行。请求高手救救我啊。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2009-08-30 12:07
用光盘上的Supervivi + 2.6.13的内核也不行吗?是背光都不亮还是亮了之后没显示图像?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
5楼  发表于: 2009-08-31 00:53
我现在用的是u-boot1.3.2+linux2.6.13nfs的启动方式,现在是背光都不亮,一点反应都没有。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2009-08-31 09:34
2440test中三星3.5寸屏的驱动代码在光盘的"非操作系统示例代码\2440test\src\LCD_LTS350Q1_PE1.c"里,注意下面几个分别控制背光,LCD电源,LCD Controller输出开关的函数是否在你的uboot或者内核中实现了。我相信这些控制在supervivi里已经实现了,所以用supervivi + 2.6.13的内核应该是没有问题的(有问题就去找友善之臂吧,希望他们还技术支持这个板子)。
复制代码
  1. void Lcd_Tft_LTS350Q1_PE1_Init(void)
  2. {
  3.     //qjy: turn on the blacklight!
  4.     GPB1_TO_OUT();
  5.     GPB1_TO_1();
  6.     Lcd_Init();
  7.     LcdBkLtSet( 70 ) ;
  8.     Lcd_PowerEnable(0, 1);
  9.     Lcd_EnvidOnOff(1);        //turn on vedio
  10.     Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00) );  
  11.     #define LCD_BLANK        12
[ 此帖被kasim在2009-08-31 10:42重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
7楼  发表于: 2009-08-31 17:33
非常感谢kasim不厌其烦的帮助,呵呵,我正在联系他们。有新的进展我会过来结贴
级别: 新手上路
UID: 4318
精华: 0
发帖: 10
金钱: 100 两
威望: 70 点
综合积分: 20 分
注册时间: 2009-03-09
最后登录: 2009-11-20
8楼  发表于: 2009-09-02 00:49
今天终于把问题解决了,在kasim的提示下,我看了一下友善之臂的2440test的源程序,同时看了一下qq2440的原理图,发现qq2440用的是GPG4来控制LCD_PWREN管脚的,但是友善提供的linux2.6.13的内核在machine-init中初始化的是其它的几个gpio,我想可能是用在另外的板子上的,真是无语啊。我对照原理图调整了gpio的初始化,由于我的lcd是samsung的,帖子中的lpcsel的值我调整为0xf82,终于小企鹅出现了。
总结一下:针对不同的板子可能需要调整backlight控制管脚的初始化。
再次感谢kasim