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 brightness
archivo. 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/dts
directorio de la fuente del kernel.
Al mismo nivel que compatible = "pwm-backlight"
, también hay un default-brightness-level
parámetro. Cambia este valor por un valor de tu agrado (corresponde al índice del brightness-levels
array. 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 dtbs
comando. 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.dtb
es la salida del make dtbs
comando.
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