Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1412206
  • 博文数量: 1334
  • 博客积分: 645
  • 博客等级: 上士
  • 技术积分: 5762
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-25 16:56
文章分类

全部博文(1334)

文章存档

2014年(108)

2013年(1059)

2012年(169)

分类: LINUX

2013-07-17 23:37:25

LCD背光驱动基于PWM1(timer1),因为使用的是GPB1这个IO口来控制,由它输出的PWM来控制背光的亮暗程度。

内核中通用的驱动文件为:drivers/video/backlight/pwm_bl.c

调光原理:PWM输出的频率固定,改变PWM的占空比即可改变LCD背光的亮度

在mach-xc2440.c中添加LCD背光驱动的支持:

加入必要的头文件:
#include
#include

在xc2440_devices[ ]结构体中加入:
&xc2440_backlight_device,

构建LCD背光设备的platform_device结构体:
  1. /* LCD Backlight */
  2. static int xc2440_backlight_init(struct device *dev)
  3. {
  4.     gpio_request(S3C2410_GPB(1), "Backlight");
  5.     gpio_direction_output(S3C2410_GPB(1), 0);
  6.     s3c_gpio_setpull(S3C2410_GPB(1), S3C_GPIO_PULL_NONE);
  7.     s3c_gpio_cfgpin(S3C2410_GPB(1), S3C2410_GPB1_TOUT1);

  8.     return 0;
  9. }

  10. static void xc2440_backlight_exit(struct device *dev)
  11. {
  12.     gpio_direction_output(S3C2410_GPB(1), 1);
  13. }

  14. static struct platform_pwm_backlight_data xc2440_backlight_data = {
  15.     .pwm_id = 1,
  16.     .max_brightness = 100,
  17.     .dft_brightness = 40,
  18.     .pwm_period_ns = 800000,
  19.     .init = xc2440_backlight_init,
  20.     .exit = xc2440_backlight_exit,
  21. };

  22. static struct platform_device xc2440_backlight_device = {
  23.     .name = "pwm-backlight",
  24.     .dev = {
  25.         .parent = &s3c_device_timer[1].dev,
  26.         .platform_data = &xc2440_backlight_data,
  27.     },
  28.     .id = 1,
  29. };

说明:
platform_device的name是pwm-backlight,这个和driver中的name一致,dev的parent是s3c_device_timer[1],也就是上一节移植的PWM1设备

platform_data中max_brightness是最大背光亮度值,dft_brightness是初始值,pwm_period_ns是PWM的输出频率,这个要在driver中转成频率值

我这个配置中:背光调节范围是(0~100),初始值是40,频率是1KHz左右

在init函数中将GPB1管脚设置为TOUT1模式,在exit函数中禁止GPB1输出

查看drivers/video/backlight目录下的Kconifg文件,定义了pwm bl的配置:
  1. config BACKLIGHT_PWM
  2.     tristate "Generic PWM based Backlight Driver"
  3.     depends on HAVE_PWM

配置内核,支持LCD背光驱动:
  1. Device Drivers --->
  2.          Graphics support --->
  3.          [*] Backlight & LCD device support --->
  4.                <*> Lowlevel Backlight control
  5.                  <*> Generic PWM based Backlight Driver


查看设备:
/sys/class/backlight/pwm-backlight.1/brightness

操作设备:
#cat  /sys/class/backlight/pwm-backlight.1/max_brightness  (查看背光最大值)
#echo 15 > /sys/class/backlight/pwm-backlight.1/brightness  (设置背光亮度)


阅读(539) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~