起動時にPWMバックライトの明るさを設定する

起動時にPWMバックライトの明るさを設定する

私は Linux バージョン 3.10.17 を使用しており、デバイス ツリーを使用してカーネルを起動しています。

デバイスツリーでは、「pwm-backlight」互換のドライバを定義します。ドライバは変数を定義します。default-brightness-level

起動時に、ドライバーはこの値をドライバーの「明るさ」値に適用します。

値を保存して、「default-brightness-level」の代わりに使用する方法があるかどうかを知りたいです。目的は、明るさの値を保存して、Linux の次回起動時に使用できるようにすることです。

答え1

sysfsの使用

sysfs を使用してファイルに値を設定することは可能ですbrightness。 の下を見てください/sys/class/backlight。おそらく、バックライト デバイスのサブディレクトリがあります。そのディレクトリに、ファイル があるはずですbrightness

brightness-levels使用したい値 ( 内) のインデックスに対応する値をそのファイルにパイプします。例:

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

これにより、値が の 4 番目のエントリに設定されますbrightness-levels

このファイルは次のようにクエリすることもできます:

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

答え2

カスタム(ポータブル)dtbファイルの使用

注: あなたが言及していることは知っています「デフォルトの明るさレベル」の代わりにただし、dtb ファイルが作成されると、これを使用してカーネルの外部に保存されている構成を保存できます (つまり、カーネルを再構築せずに別のファイルにスワップアウトできます)。

カーネルの構築に使用された dtsi ファイルにアクセスできる場合は、その中の適切なセクションの値を変更できます。このファイルはarch/arm/boot/dtsカーネル ソースのディレクトリにあるはずです。

と同じレベルにcompatible = "pwm-backlight"、パラメータもありますdefault-brightness-level。この値を任意の値に変更します(配列のインデックスに対応しますbrightness-levels。例:

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

次に、dtsi を、ブート パーティションに含まれる dtb ファイルにコンパイルします。make dtbsコマンドを使用してコンパイルします。次のようになります。

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

出力された dtb ファイルは、ブートローダ スクリプトで参照されます。例として、UBoot の場合は次のようになります。

setenv dtbname myCustom.dtb

myCustom.dtbコマンドの出力ですmake dtbs

答え3

カーネルはこれを実行しません (バックライト値を保存し、次回の再起動時にそれを適用する)。ただし、カーネルが sysfs をサポートしている場合は、現在の値を設定ファイル (/etc/backlight.conf など) に保存し、起動時にそれを適用できます。

バックライトを変更するたびに:

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

起動時:

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

関連情報