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

 

在我的开发板上,通过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不能显示

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值