Einstellen der Helligkeit der PWM-Hintergrundbeleuchtung beim Booten

1818
AntoineC

Ich arbeite mit Linux Version 3.10.17 und benutze den Gerätebaum, um den Kernel zu booten.

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

Beim Start wendet der Treiber diesen Wert auf den "Helligkeitswert" des Treibers an.

Ich würde gerne wissen, ob es einen Weg 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.

2
Ein paar Dinge: 1) Linux-Version 3.10.17 ist die Kernel-Version NICHT die Distribution, auf der diese verwendet wird - was für Ihre Frage einen großen Unterschied macht 2) Sie müssten entweder a) die Standard-Helligkeit auf was setzen Sie wollten, dass dieser 'on-boot'-Wert ODER ist. b) Erstellen / definieren Sie eine andere Ebene als Variable und verwenden Sie diese als kompilierte Variable für den Treiber. linuxdev2013 vor 7 Jahren 0

3 Antworten auf die Frage

0
CJBS

Verwenden einer benutzerdefinierten (tragbaren) dtb-Datei

Hinweis: Ich weiß, dass Sie anstelle der "Standardhelligkeitsstufe" erwähnen, aber wenn eine dtb-Datei erstellt wird, kann diese zum Speichern der außerhalb des Kernels gespeicherten Konfiguration verwendet werden (dh sie könnte mit einer anderen ausgetauscht werden) Datei, 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 unter dem entsprechenden Abschnitt dort ändern. Diese Datei sollte sich im arch/arm/boot/dtsVerzeichnis für die Kernelquelle befinden.

Auf derselben Ebene compatible = "pwm-backlight"gibt es auch einen default-brightness-levelParameter. Ändern Sie diesen Wert in einen beliebigen Wert (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"; }; 

Sie können das dtsi dann in eine dtb-Datei kompilieren, die sich auf Ihrer Boot-Partition befindet. Kompilieren Sie mit dem make dtbsBefehl. So etwas wie:

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 

Die Ausgabe-dtb-Datei wird dann in Ihrem Bootloader-Skript referenziert. Als Beispiel für UBoot heißt es:

setenv dtbname myCustom.dtb 

myCustom.dtbist die Ausgabe des make dtbsBefehls.

0
CJBS

Sysfs verwenden

Es sollte möglich sein, sysfs zu verwenden, um einen Wert für die brightnessDatei festzulegen . Schau mal unter /sys/class/backlight; Es ist höchstwahrscheinlich ein Unterverzeichnis für Ihr Hintergrundbeleuchtungsgerät. In diesem Verzeichnis sollte sich eine Datei befinden brightness.

Übergeben Sie einen Wert, der dem Index des Werts (in brightness-levels) entspricht, den Sie für diese Datei verwenden möchten. Zum Beispiel:

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

Dies sollte den Wert auf den vierten Eintrag in setzen brightness-levels.

Diese Datei kann auch abgefragt werden:

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

Der Kernel erledigt dies nicht für Sie (speichern Sie einen Wert für die Hintergrundbeleuchtung und wenden Sie ihn beim nächsten Neustart an). Wenn Ihr Kernel jedoch SysFS-Unterstützung bietet, können Sie den aktuellen Wert in einer Konfigurationsdatei behalten (zB /etc/backlight.conf). und wende es beim booten an.

Wann immer 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