Système d'exploitation - sous-système de rétroéclairage de Linux

Basé sur Linux 3.18.y

Aperçu

    Le sous-système de rétroéclairage Linux est utilisé pour fournir une interface pour contrôler la luminosité du rétroéclairage des écrans LCD ou d'autres périphériques d'affichage dans l'espace utilisateur sous le répertoire / sys.
    La luminosité ici n'est pas deux états d'activation et de désactivation, mais peut avoir de nombreux niveaux de luminosité, ce qui est pratique pour que l'espace utilisateur ajuste la luminosité du rétroéclairage en fonction des besoins d'économie d'énergie et de portée visuelle.

Code associé

    Le code du sous-système de rétroéclairage se trouve dans le répertoire / driver / video / backlight.
    Le fichier important est: generic_bl.c backlight.c lcd.c

Configuration du noyau

    Afin de prendre en charge le sous-système de rétroéclairage, la configuration suivante doit être utilisée dans le noyau:

    Device Drives  --->
        Graphics Support --->
            [*]Backlight & LCD device support --->
                <*>Platform LCD controls
                <*>Lowlevel Backlight controls

Structure de données importante

    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);                    //设置亮度之后调用的函数,与电池相关,可以不定义
    };

Comment utiliser le sous-système de rétroéclairage

    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);

    Après avoir enregistré eukrea_mbimx27_bl_dev, vous pouvez voir le fichier de propriétés de rétroéclairage sous / sys / class / backlight / eukrea_mbimx27-bl /.

description des attributs du fichier sys

    Les fichiers du sous-système de rétroéclairage se trouvent dans / sys / class / backlight / XXX /, où XXX est le nom du périphérique de rétroéclairage, qui est spécifié lors de l'enregistrement.

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

 

Je suppose que tu aimes

Origine blog.csdn.net/Ivan804638781/article/details/101203615
conseillé
Classement