主题 : mini2440+NEC3.5 TFT LCD 移植内核时要注意的 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 4819
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-03-30
最后登录: 2009-04-07
楼主  发表于: 2009-03-30 22:57

 mini2440+NEC3.5 TFT LCD 移植内核时要注意的

我移植的是 2.6.27  版内核

LCD 参数设置正确,可LCD无论如何就是点不亮。

后来仔细阅读了mini2440 自带的 2440test 里的LCD 控制部分代码,发现是没有设置 GPG4 (LCD_PWREN)

需要修改 drivers/video/s3c2410.c
加入一个函数
static void  LCD_POWER_ON()
{
        writel(readl(S3C2410_GPGUP)  | (1<<4) ,  S3C2410_GPGUP);
        writel(readl(S3C2410_GPGCON) | (3<<8),   S3C2410_GPGCON);
}

再在 s3c2410fb_init_registers() 的末尾调用 LCD_POWER_ON().

我是新手,如果这样改有问题,还请大牛指教。


*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-03-31 08:02
这个操作是对的,但不要加在s3c2410fb.c里,那是通用的FrameBuffer驱动.你可以把这个函数加在内核初始化这个硬件平台所调用的函数里,通常应该在arch/arm/mach-s3c2440/mach-xxx.c里
"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: 4819
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-03-30
最后登录: 2009-04-07
2楼  发表于: 2009-03-31 11:17
谢谢,我明白了,这样以后移植到其它版本内核也会方便点.

另外还发现一个问题,就是 FRAMEBUFFER CONSOLE 的光标 在QT启动以后,还老死不死的在那边,屏幕的左边会出现一个黑色的小方块

去掉FRAMEBUFFER CONSOLE 支持的话,整个LCD又点不亮了。MS fb 设备一定要有 fbcon 激活的样子, 没有fbcon 的话, set_par(对应 s3c2410fb.c 中的s3c2410fb_set_par) 函数不会被调用

实在没法子,还是用了阴的办法

在 s3c2410fb.c 中定义一个函数
static int s3c2410fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
{
    // disable cursor
    return 0;
}

再在 static struct fb_ops s3c2410fb_ops ={ 结构中加入一行
.fb_cursor      = s3c2410fb_cursor

这样光标就被KO了

不知道有没有比这合适的办法,或者有另外的编译选项我没注意到的
级别: 新手上路
UID: 3464
精华: 0
发帖: 11
金钱: 120 两
威望: 120 点
综合积分: 22 分
注册时间: 2009-01-12
最后登录: 2009-12-23
3楼  发表于: 2009-03-31 13:19
引用楼主nbysy于2009-03-30 22:57发表的 mini2440+NEC3.5 TFT LCD 移植内核时要注意的 :
我移植的是 2.6.27  版内核

LCD 参数设置正确,可LCD无论如何就是点不亮。

后来仔细阅读了mini2440 自带的 2440test 里的LCD 控制部分代码,发现是没有设置 GPG4 (LCD_PWREN)
.......



怀疑困扰我很久的问题,被你点通了,晚上回去测试!!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2009-03-31 22:49
去掉FRAMEBUFFER CONSOLE 支持的话,整个LCD又点不亮了。MS fb 设备一定要有 fbcon 激活的样子, 没有fbcon 的话, set_par(对应 s3c2410fb.c 中的s3c2410fb_set_par) 函数不会被调用

能否点亮LCD不依赖于framebuffer console。没有fbcon的话, s3c2410fb_set_par()应该会通过framebuffer设备的ioctl()里的FBIOPUT_VSCREENINFO命令调用到。如果没有, 这应该是QT配置的问题。
"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: 3464
精华: 0
发帖: 11
金钱: 120 两
威望: 120 点
综合积分: 22 分
注册时间: 2009-01-12
最后登录: 2009-12-23
5楼  发表于: 2009-04-01 21:14
不知道该说什么好,楼主解决了我困扰我2个月的问题,屏幕终于点亮了.

我也看过哪个ucII的代码,但真没注意到还有个GPG
[ 此帖被dowell在2009-04-01 21:19重新编辑 ]