Ustawianie jasności podświetlenia PWM podczas rozruchu

2

Pracuję z Linuksem w wersji 3.10.17, używając drzewa urządzeń do uruchomienia jądra.

W drzewie urządzeń definiuję sterownik zgodny z „pwm-backlight”. Sterownik definiuje zmienną,default-brightness-level

Przy uruchomieniu sterownik stosuje tę wartość do wartości „jasności” sterownika.

Chciałbym wiedzieć, czy istnieje sposób na zapisanie wartości i użycie jej zamiast „domyślnego poziomu jasności”. Celem jest zapisanie wartości jasności i użycie jej przy następnym uruchomieniu Linuksa.

AntoineC
źródło
Kilka rzeczy: 1) wersja Linux 3.10.17 jest wersją jądra, a NIE dystrybucją, na której będzie ona używana - co stanowi dużą różnicę w twoim pytaniu 2) musiałbyś albo a) ustawić domyślny poziom jasności na chcesz, aby ta wartość „przy rozruchu” była LUB b) utwórz / zdefiniuj kolejny poziom jako zmienną i użyj go jako zmiennej skompilowanej dla sterownika.
linuxdev2013

Odpowiedzi:

0

Używanie sysfs

Powinno być możliwe użycie sysfs do ustawienia wartości w brightnesspliku. Spójrz pod /sys/class/backlight; najprawdopodobniej istnieje podkatalog z twoim urządzeniem podświetlającym. W tym katalogu powinien znajdować się plik brightness.

Potokuj wartość odpowiadającą indeksowi wartości (in brightness-levels), której chcesz użyć do tego pliku. Na przykład:

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

To powinno ustawić wartość na 4. wpis w brightness-levels.

Można również zapytać o ten plik:

me@mydevice:/ $ cat  /sys/class/backlight/backlight_lvds.0/brightness
3
CJBS
źródło
0

Używanie niestandardowego (przenośnego) pliku dtb

Uwaga: Wiem, że wspominasz o „domyślnym poziomie jasności” , ale jeśli utworzono plik dtb, można go użyć do zapisania konfiguracji zapisanej poza jądrem (tzn. Można go wymienić na inny plik bez przebudowywania jądra).

Jeśli masz dostęp do pliku dtsi, z którym zbudowane zostało jądro, możesz zmodyfikować wartość w odpowiedniej sekcji tam. Ten plik powinien znajdować się w arch/arm/boot/dtskatalogu źródła jądra.

Na tym samym poziomie co compatible = "pwm-backlight"istnieje również default-brightness-levelparametr. Zmień tę wartość na wartość, która ci się podoba (odpowiada indeksowi brightness-levelstablicy. Na przykład:

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";
    };

Następnie możesz skompilować dtsi do pliku dtb, który znajduje się na partycji rozruchowej. Skompiluj za pomocą make dtbspolecenia. Coś jak:

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

Wyjściowy plik dtb jest następnie przywoływany w skrypcie bootloadera. Na przykład dla UBoot jest to:

setenv dtbname myCustom.dtb

myCustom.dtbjest wynikiem make dtbspolecenia.

CJBS
źródło
0

Jądro nie zrobi tego za Ciebie (zapisz wartość podświetlenia i zastosuj ją przy następnym restarcie), ale jeśli twoje jądro obsługuje sysfs, możesz zachować bieżącą wartość w pliku konfiguracyjnym (może to być np. /Etc/backlight.conf) i zastosuj przy uruchamianiu.

Po każdej zmianie podświetlenia:

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

Podczas uruchamiania:

if [ -f /etc/backlight.conf ]; then
    cat /etc/backlight.conf > /sys/class/backlight/<subdir>/brightness
fi
Grodriguez
źródło