您的位置:首页 > 运维架构 > Linux

基于S3C2440的Linux-3.6.6移植——LCD背光的控制

2013-07-05 17:06 429 查看
在我的开发板上,通过S3C2440的GPG4引脚可以控制LCD的背光,即置1时LCD点亮,清零时LCD关闭。



Linux系统把LCD背光定义成LED平台设备。在Mach-zhaocj2440.c文件内,它的定义为:

static struct s3c24xx_led_platdata zhaocj2440_led_backlight_pdata = {

.name = "backlight",

.gpio = S3C2410_GPG(4),

.def_trigger = "backlight",

};



static struct platform_device zhaocj2440_led_backlight= {

.name = "s3c24xx_led",

.id = 5,

.dev = {

.platform_data = &zhaocj2440_led_backlight_pdata,

},

};



如果要为系统添加控制LCD背光的功能,只需要在zhaocj2440_features_str数组内添加一个"b"字段(b表示背光)即可,即:

static char zhaocj2440_features_str[12]__initdata = "4tb";



系统通过zhaocj2440_parse_features函数,把zhaocj2440_features_str数组内给出的各个设备逐一放入到features结构中,然后再通过zhaocj2440_init函数中的下列语句把上述设备添加到平台总线上:

if (features.count) /* the optional features */

platform_add_devices(features.optional,features.count);



由于系统是把LCD背光看成是LED设备,因此它的平台驱动也和LED的平台驱动一样,即:

static struct platform_driver s3c24xx_led_driver = {

.probe = s3c24xx_led_probe,

.remove = s3c24xx_led_remove,

.driver = {

.name = "s3c24xx_led",

.owner = THIS_MODULE,

},

};



关于LED的驱动,我在前面的文章中比较详细的介绍过,这里就不再赘述。



还有一点需要注意的是,系统初始化时,对控制LED的引脚设置是低电平的,因此系统启动后LED是不亮的。同样的,控制背光的GPG4引脚默认也是低电平,所以启动系统的时候,LCD也是不亮的。这样的设置对LED没什么不妥,但对LCD就不适合了。因此我们要改变对背光引脚的默认设置,让它为高电平。为了实现上述功能,只需要在Leds-s3c24xx.c文件内(drivers/leds目录下)的s3c24xx_led_probe函数中的适当位置(大约在第107行附件)添加下列语句即可:

if(pdata->name == "backlight")
gpio_set_value(pdata->gpio,1);


下面我们写一段应用程序来控制LCD的背光:

/****************

****backlight.c****

*****************/

#include<stdint.h>
#include<string.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdio.h>
#include<linux/input.h>
#include<unistd.h>

int main(int argc, char *argv[])
{
int fd;

fd =open("/sys/class/leds/backlight/brightness", O_RDWR);
if(fd<0)
{
printf("can not open file.\n");
return -1;
}

if(!strcmp(argv[1], "on"))
write(fd, “1”,1);
else if(!strcmp(argv[1], "off"))
write(fd, “0”, 1);

close(fd);
return 0;
}

把程序编译好后下载到temp目录下,运行:

[root@zhaocj /temp]# ./backlight on

打开背光,LCD可以显示



[root@zhaocj /temp]# ./backlight off

关闭背光,LCD不能显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: