第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【驱动模块】 -- linux的背光(backlight)子系统【转】

【驱动模块】 -- linux的背光(backlight)子系统【转】

时间:2018-12-22 13:23:07

相关推荐

【驱动模块】 -- linux的背光(backlight)子系统【转】

基于Linux 3.18.y

概述

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.hdriver/video/backlight/genrtic_bl.c/* 通用的背光控制代码,driver已经注册好了,只需要注册device就能使用 */struct generic_bl_info {const char *name;//名字字符指针,这个名字会出现在/sys/class/backlight/中int max_intensity; //最大亮度int default_intensity;//默认亮度int limit_mask; //亮度值的掩码,如0xffvoid (*set_bl_intensity)(int intensity);//设置亮度的函数void (*kick_battery)(void);//设置亮度之后调用的函数,与电池相关,可以不定义};

如何使用背光子系统

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,},};platform_device_register(&eukrea_mbimx27_bl_dev);

注册 eukrea_mbimx27_bl_dev 之后就可以在/sys/class/backlight/eukrea_mbimx27-bl/下看到背光的属性文件了。

sys文件属性说明

背光子系统的文件在/sys/class/backlight/XXX/中,其中XXX是背光设备的名字,这个名字是注册的时候指定的.

/sys/class/backlight/XXX/下的属性文件有:actual_brightness brightness max_brightnesssubsystem@bl_power device@ power/ uevent重要的文件有两个:max_brightness :最大亮度值brightness:当前实际的亮度值(内核中记录的值)可以使用 "cat /sys/class/backlight/XXX/brightness"查看当前背光亮度,使用 "echo _数字_ >> /sys/class/backlight/XXX/brightness"设置背光亮度。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。