Configurando o brilho da luz de fundo PWM na inicialização

2

Estou trabalhando com o 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

No início, o driver aplica esse valor ao valor "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 é salvar um valor de brilho e usá-lo no próximo lançamento do Linux.

    
por AntoineC 21.06.2016 / 10:56

3 respostas

0

Usando o sysfs

Deve ser possível usar o sysfs para definir um valor para o arquivo brightness . Dê uma olhada em /sys/class/backlight ; provavelmente há um subdiretório com seu dispositivo de luz de fundo. Nesse diretório, deve haver um arquivo brightness .

Pipe um valor correspondente ao índice do valor (em 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
    
por 01.07.2016 / 02:32
0

Usando um arquivo dtb personalizado (portátil)

Note: I know you mention instead of the "default-brightness-level", but if a dtb file is made, then this can be used to save the configuration that is saved outside of the kernel (i.e. could be swapped out with a different file without rebuilding the kernel).

Se você tiver acesso ao arquivo dtsi com o qual o Kernel foi criado, poderá modificar o valor na seção apropriada. Este arquivo deve estar no diretório arch/arm/boot/dts da fonte do kernel.

No mesmo nível que o compatible = "pwm-backlight" , existe também um parâmetro default-brightness-level . Altere este valor para um valor de seu gosto (corresponde ao índice da matriz brightness-levels . 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 que está incluído na sua partição de inicialização. Compile usando o comando make dtbs . 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 em seu script de bootloader. Por exemplo, para o UBoot, é:

setenv dtbname myCustom.dtb

myCustom.dtb é a saída do comando make dtbs .

    
por 01.07.2016 / 02:15
0

O kernel não fará isso por você (salve um valor de luz de fundo e aplique-o na próxima reinicialização), mas se o seu kernel tiver suporte sysfs, você pode manter o valor atual em um arquivo de configuração (por exemplo, / etc / backlight .conf), e aplicá-lo na inicialização.

Sempre que você alterar 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
    
por 30.08.2016 / 10:46