Configuración del brillo de la retroiluminación PWM en el arranque

Configuración del brillo de la retroiluminación PWM en el arranque

Estoy trabajando con la versión 3.10.17 de Linux y uso el árbol de dispositivos para iniciar el kernel.

En el árbol de dispositivos, defino un controlador compatible con "pwm-backlight". El controlador define una variable,default-brightness-level

Al arrancar, el conductor aplica este valor al valor de "brillo" del conductor.

Me gustaría saber si hay alguna manera de guardar un valor y usarlo en lugar del "nivel de brillo predeterminado". El propósito es poder guardar un valor de brillo y usarlo en el próximo inicio de Linux.

Respuesta1

Usando sistemas

Debería ser posible utilizar sysfs para establecer un valor para el brightnessarchivo. Eche un vistazo a continuación /sys/class/backlight; Lo más probable es que haya un subdirectorio con su dispositivo de retroiluminación. En ese directorio debería haber un archivo brightness.

Canalice un valor correspondiente al índice del valor (en brightness-levels) que desea usar en ese archivo. Por ejemplo:

me@mydevice:/ $ echo 3 > /sys/class/backlight/backlight_lvds.0/brightness

Esto debería establecer el valor en la cuarta entrada en brightness-levels.

Este archivo también se puede consultar:

me@mydevice:/ $ cat  /sys/class/backlight/backlight_lvds.0/brightness
3

Respuesta2

Usando un archivo dtb personalizado (portátil)

Nota: sé que mencionasen lugar del "nivel de brillo predeterminado", pero si se crea un archivo dtb, entonces se puede usar para guardar la configuración que se guarda fuera del kernel (es decir, se puede intercambiar con un archivo diferente sin reconstruir el kernel).

Si tiene acceso al archivo dtsi con el que se creó el Kernel, puede modificar el valor en la sección correspondiente allí. Este archivo debe estar en el arch/arm/boot/dtsdirectorio de la fuente del kernel.

Al mismo nivel que compatible = "pwm-backlight", también hay un default-brightness-levelparámetro. Cambia este valor por un valor de tu agrado (corresponde al índice del brightness-levelsarray. Por ejemplo:

backlight_lvds {
        compatible = "pwm-backlight";
        pwms = <&pwm4 0 500000>;
        brightness-levels = <100 75 60 50 40 30 20 10 5 0>;
        /* Default brightness level (index into the array defined by the "brightness-levels" property) */
        default-brightness-level = <5>;
        status = "okay";
    };

Luego puede compilar el dtsi en un archivo dtb que se incluye en su partición de arranque. Compile usando el make dtbscomando. Algo como:

cd ~/MyOS/kernel_imx 
export CROSS_COMPILE=`pwd`/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- 
make myboard_defconfig 
make dtbs

Luego se hace referencia al archivo dtb de salida en el script del gestor de arranque. Como ejemplo, para UBoot, es:

setenv dtbname myCustom.dtb

myCustom.dtbes la salida del make dtbscomando.

Respuesta3

El kernel no hará esto por usted (guardará un valor de retroiluminación y lo aplicará en el siguiente reinicio), pero si su kernel admite sysfs, puede mantener el valor actual en un archivo de configuración (podría ser, por ejemplo, /etc/backlight.conf). y aplíquelo en el arranque.

Siempre que cambie la luz de fondo:

echo <newvalue> > /sys/class/backlight/<subdir>/brightness
echo <newvalue> > /etc/backlight.conf

En el arranque:

if [ -f /etc/backlight.conf ]; then
    cat /etc/backlight.conf > /sys/class/backlight/<subdir>/brightness
fi

información relacionada