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

本文深入解析Linux背光子系统的工作原理与实现细节,包括关键数据结构、配置选项及如何在用户空间控制LCD背光亮度。介绍了背光子系统的内核配置、重要文件和数据结构,展示了具体的代码示例,帮助开发者理解并使用该子系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于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.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"设置背光亮度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值