Sistema operativo - subsistema de retroiluminación de linux

Basado en Linux 3.18.y

Visión de conjunto

    El subsistema de retroiluminación de Linux se utiliza para proporcionar una interfaz para controlar el brillo de la retroiluminación de la pantalla LCD u otros dispositivos de visualización en el espacio de usuario en el directorio / sys.
    El brillo aquí no es dos estados de encendido y apagado, pero puede tener muchos niveles de brillo, lo que es conveniente para que el espacio del usuario ajuste el brillo de la luz de fondo de acuerdo con las necesidades de ahorro de energía y rango visual.

Código relacionado

    El código del subsistema de retroiluminación se encuentra en el directorio / driver / video / backlight.
    El archivo importante es: generic_bl.c backlight.c lcd.c

Configuración del kernel

    Para admitir el subsistema de retroiluminación, es necesario utilizar la siguiente configuración en el kernel:

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

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

Cómo utilizar el subsistema de retroiluminación

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

    Después de registrar eukrea_mbimx27_bl_dev, puede ver el archivo de propiedades de retroiluminación en / sys / class / backlight / eukrea_mbimx27-bl /.

descripción del atributo del archivo sys

    Los archivos del subsistema de retroiluminación están en / sys / class / backlight / XXX /, donde XXX es el nombre del dispositivo de retroiluminación, que se especifica durante el registro.

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

 

Supongo que te gusta

Origin blog.csdn.net/Ivan804638781/article/details/101203615
Recomendado
Clasificación