設定開機時 PWM 背光亮度

設定開機時 PWM 背光亮度

我正在使用 Linux 版本 3.10.17,使用設備樹來引導核心。

在裝置樹中,我定義了一個「pwm-backlight」相容驅動程式。驅動程式定義了一個變量,default-brightness-level

啟動時,驅動程式將此值套用至驅動程式的「亮度」值。

我想知道是否有辦法保存值並使用它而不是“預設亮度等級”。目的是能夠保存一個亮度值並在Linux下次啟動時使用它。

答案1

使用系統檔案系統

應該可以使用 sysfs 為brightness檔案設定一個值。看看下面/sys/class/backlight;您的背光設備很可能有一個子目錄。在該目錄中,應該有一個文件brightness.

brightness-levels透過管道將與要使用的值(在 中)的索引相對應的值傳輸到該檔案。例如:

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

這應該將該值設為 中的第四個條目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

相關內容