Estou trabalhando com Linux versão 3.10.17, usando a árvore de dispositivos para inicializar o kernel.
Na árvore de dispositivos, defino um driver compatível com "pwm-backlight". O driver define uma variável,default-brightness-level
Na inicialização, o driver aplica esse valor ao valor de "brilho" do driver.
Gostaria de saber se existe uma maneira de salvar um valor e usá-lo em vez do "nível de brilho padrão". O objetivo é poder salvar um valor de brilho e utilizá-lo na próxima inicialização do Linux.
Responder1
Usando sysfs
Deveria ser possível usar sysfs para definir um valor para o brightness
arquivo. Dê uma olhada abaixo /sys/class/backlight
; provavelmente há um subdiretório com seu dispositivo de luz de fundo. Nesse diretório deve haver um arquivo brightness
.
Canalize um valor correspondente ao índice do valor (in brightness-levels
) que você deseja usar para esse arquivo. Por exemplo:
me@mydevice:/ $ echo 3 > /sys/class/backlight/backlight_lvds.0/brightness
Isso deve definir o valor para a quarta entrada em brightness-levels
.
Este arquivo também pode ser consultado:
me@mydevice:/ $ cat /sys/class/backlight/backlight_lvds.0/brightness
3
Responder2
Usando um arquivo dtb personalizado (portátil)
Nota: eu sei que você mencionouem vez do "nível de brilho padrão", mas se um arquivo dtb for criado, então ele poderá ser usado para salvar a configuração que é salva fora do kernel (ou seja, pode ser trocada por um arquivo diferente sem reconstruir o kernel).
Se você tiver acesso ao arquivo dtsi com o qual o Kernel foi construído, poderá modificar o valor na seção apropriada. Este arquivo deve estar no arch/arm/boot/dts
diretório da fonte do kernel.
No mesmo nível do compatible = "pwm-backlight"
, também existe um default-brightness-level
parâmetro. Altere este valor para um valor de sua preferência (corresponde ao índice do brightness-levels
array. Por exemplo:
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";
};
Você pode então compilar o dtsi em um arquivo dtb incluído na sua partição de inicialização. Compile usando o 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
O arquivo dtb de saída é então referenciado no script do bootloader. Por exemplo, para UBoot, é:
setenv dtbname myCustom.dtb
myCustom.dtb
é a saída do make dtbs
comando.
Responder3
O kernel não fará isso para você (salve um valor de luz de fundo e aplique-o na próxima reinicialização), mas se o seu kernel tiver suporte a sysfs, você poderá manter o valor atual em um arquivo de configuração (pode ser, por exemplo, /etc/backlight.conf) e aplique-o na inicialização.
Sempre que você altera a luz de fundo:
echo <newvalue> > /sys/class/backlight/<subdir>/brightness
echo <newvalue> > /etc/backlight.conf
Na inicialização:
if [ -f /etc/backlight.conf ]; then
cat /etc/backlight.conf > /sys/class/backlight/<subdir>/brightness
fi