Einstellen der Helligkeit der PWM-Hintergrundbeleuchtung beim Booten

Einstellen der Helligkeit der PWM-Hintergrundbeleuchtung beim Booten

Ich arbeite mit Linux Version 3.10.17 und verwende den Gerätebaum zum Booten des Kernels.

Im Gerätebaum definiere ich einen "pwm-backlight" kompatiblen Treiber. Der Treiber definiert eine Variable,default-brightness-level

Beim Start wendet der Treiber diesen Wert auf den „Helligkeit“-Wert des Treibers an.

Ich würde gerne wissen, ob es eine Möglichkeit gibt, einen Wert zu speichern und ihn anstelle der „Standardhelligkeitsstufe“ zu verwenden. Der Zweck besteht darin, einen Helligkeitswert speichern und beim nächsten Start von Linux verwenden zu können.

Antwort1

Verwenden von sysfs

Es sollte möglich sein, mit sysfs einen Wert für die Datei festzulegen brightness. Schauen Sie unter nach /sys/class/backlight; dort gibt es höchstwahrscheinlich ein Unterverzeichnis mit Ihrem Hintergrundbeleuchtungsgerät. In diesem Verzeichnis sollte eine Datei vorhanden sein brightness.

Leiten Sie einen Wert, der dem Index des Werts (in brightness-levels) entspricht, den Sie verwenden möchten, an diese Datei weiter. Beispiel:

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

Dadurch sollte der Wert auf den vierten Eintrag in gesetzt werden brightness-levels.

Diese Datei kann auch abgefragt werden:

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

Antwort2

Verwenden einer benutzerdefinierten (portablen) dtb-Datei

Hinweis: Ich weiß, Sie erwähnenanstelle der "Standard-Helligkeitsstufe", aber wenn eine dtb-Datei erstellt wird, kann diese verwendet werden, um die Konfiguration zu speichern, die außerhalb des Kernels gespeichert ist (d. h. sie könnte durch eine andere Datei ersetzt werden, ohne den Kernel neu zu erstellen).

Wenn Sie Zugriff auf die dtsi-Datei haben, mit der der Kernel erstellt wurde, können Sie den Wert dort im entsprechenden Abschnitt ändern. Diese Datei sollte sich im arch/arm/boot/dtsVerzeichnis für die Kernelquelle befinden.

Auf derselben Ebene wie der compatible = "pwm-backlight"gibt es auch einen default-brightness-levelParameter. Ändern Sie diesen Wert in einen Wert Ihrer Wahl (er entspricht dem Index des brightness-levelsArrays. Beispiel:

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

Anschließend können Sie die dtsi-Datei in eine dtb-Datei kompilieren, die in Ihrer Boot-Partition enthalten ist. Kompilieren Sie mit dem folgenden make dtbsBefehl. Etwa so:

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

Auf die Ausgabe-dtb-Datei wird dann in Ihrem Bootloader-Skript verwiesen. Für UBoot lautet sie beispielsweise:

setenv dtbname myCustom.dtb

myCustom.dtbist die Ausgabe des make dtbsBefehls.

Antwort3

Der Kernel erledigt dies nicht für Sie (speichert einen Hintergrundbeleuchtungswert und wendet ihn beim nächsten Neustart an), aber wenn Ihr Kernel SysFS-Unterstützung hat, können Sie den aktuellen Wert in einer Konfigurationsdatei speichern (könnte z. B. /etc/backlight.conf sein) und ihn beim Booten anwenden.

Wenn Sie die Hintergrundbeleuchtung ändern:

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

Beim Booten:

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

verwandte Informationen