Linux3.18.yに基づく
概要概要
Linuxバックライトサブシステムは、/ sysディレクトリの下のユーザースペースにあるLCDまたはその他のディスプレイデバイスのバックライトの明るさを制御するためのインターフェイスを提供するために使用されます。
ここでの明るさは、オンとオフの2つの状態ではありませんが、さまざまなレベルの明るさを持つことができます。これは、ユーザースペースが省エネと視界のニーズに応じてバックライトの明るさを調整するのに便利です。
関連コード
バックライトサブシステムのコードは、/ driver / video / backlightディレクトリにあります。
重要なファイルは次のとおりです。generic_bl.cbackback.clcd.c
カーネル構成
バックライトサブシステムをサポートするには、カーネルで次の構成を使用する必要があります。
Device Drives --->
Graphics Support --->
[*]Backlight & LCD device support --->
<*>Platform LCD controls
<*>Lowlevel Backlight controls
重要なデータ構造
include/linux/backlight.h
driver/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; //亮度值的掩码,如0xff
void (*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_brightness subsystem@
bl_power device@ power/ uevent
重要的文件有两个:
max_brightness :最大亮度值
brightness:当前实际的亮度值(内核中记录的值)
可以使用 "cat /sys/class/backlight/XXX/brightness"查看当前背光亮度,使用 "echo _数字_ >> /sys/class/backlight/XXX/brightness"设置背光亮度。