管理员
|
阅读:2720回复:0
linux背光子系统(backlight)
楼主#
更多
发布于:2011-12-30 14:59
 | |  |  | (linux2.6.34) 概述 ===== linux的背光(backlight)子系统用于在/sys目录下提供用户空间控制LCD或者其他显示设备的背光亮度的接口。这里的亮度并不是亮和灭两个状态,可有很多个等级的亮度,便于用户空间根据节能、可视范围等需求调节背光的亮度。 相关代码 ====== 背光子系统的代码在/driver/video/backlight目录中。 其中重要的文件是:generic_bl.c backlight.c lcd.c 为了支持背光子系统需要在内核中使用以下配置: Device Drives ---> Graphics Support ---> [*]Backlight ; LCD device support ---> <*>Platform LCD controls <*>Lowlevel Backlight controls 重要的数据结构 ========== include/linux/backlight.h ---------------------------- /* 单词解释:来自星际译王 <--- 简明英汉袖珍辞典---> intensity [in'tensiti] n.强烈,剧烈,强度 亮度 */ struct generic_bl_info { const char *name; //名字字符指针,这个名字会出现在/sys/class/backlight/中 int max_intensity; //最大亮度 int default_intensity; //默认亮度 int limit_mask; //亮度值的掩码,如0xff void (*set_bl_intensity)(int intensity); //设置亮度的函数 void (*kick_battery)(void); //设置亮度之后调用的函数,与电池相关,可以不定义 }; 如何使用背光子系统 ================= 这是一个例子 http://lxr.linux.no/linux+v3.1.6/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c#L205 static void eukrea_mbimx27_bl_set_intensity(int intensity) { /*在这个函数中根据参数intensity的值设置背光,具体通过PWM还是其它手段,要根据硬件了*/ } static struct generic_bl_info eukrea_mbimx27_bl_info = { .name = "eukrea_mbimx27-bl", .max_intensity = 0xff, .default_intensity = 0xff, .set_bl_intensity = eukrea_mbimx27_bl_set_intensity, }; static struct platform_device eukrea_mbimx27_bl_dev = { .name = "generic-bl", //这个名字必须是"generic-bl" .id = 1, .dev = { .platform_data = ;eukrea_mbimx27_bl_info, }, }; 注册eukrea_mbimx27_bl_dev 之后就可以在/sys/class/backlight/eukrea_mbimx27-bl/下看到背光的属性文件了。 sys文件属性说明 ============== 背光子系统的文件在/sys/class/backlight/XXX/中,其中XXX是背光设备的名字,这个名字是注册的时候指定的. /sys/class/backlight/XXX/下的属性文件有: actual_brightness brightness max_brightness subsystem@ bl_power device@ power/ uevent 重要的文件有两个: max_brightness :最大亮度值 brightness:当前实际的亮度值(内核中记录的值) 可以使用"cat /sys/class/backlight/XXX/brightness"查看当前背光亮度,使用"echo _数字_ >> /sys/class/backlight/XXX/brightness"设置背光亮度。 如: [root@M3250 zhiyuan_backlight]# pwd /sys/class/backlight/zhiyuan_backlight [root@M3250 zhiyuan_backlight]# ls actual_brightness brightness max_brightness subsystem@ bl_power device@ power/ uevent [root@M3250 zhiyuan_backlight]# cat brightness 200 [root@M3250 zhiyuan_backlight]# echo 255 >> brightness [root@M3250 zhiyuan_backlight]# cat brightness 255 [root@M3250 zhiyuan_backlight]# cat max_brightness 255 [root@M3250 zhiyuan_backlight]#
| |  | |  |
|