Настройка яркости подсветки ШИМ при загрузке

1757
AntoineC

Я работаю с версией Linux 3.10.17, используя дерево устройств для загрузки ядра.

В дереве устройств я определяю драйвер, совместимый с pwm-backlight. Драйвер определяет переменную,default-brightness-level

При запуске драйвер применяет это значение к значению «яркости» драйвера.

Я хотел бы знать, если есть способ сохранить значение и использовать его вместо «по умолчанию уровень яркости». Цель состоит в том, чтобы иметь возможность сохранить значение яркости и использовать его при следующем запуске Linux.

2
Пара вещей: 1) linux версия 3.10.17 - это версия ядра, а НЕ дистрибутив, на котором это будет использоваться - что имеет большое значение для вашего вопроса 2) вам придется либо: a) установить уровень яркости по умолчанию, чем Вы хотели, чтобы это значение при загрузке было ИЛИ b) создать / определить другой уровень в качестве переменной и использовать его в качестве скомпилированной переменной для драйвера. linuxdev2013 7 лет назад 0

3 ответа на вопрос

0
CJBS

Использование собственного (переносимого) файла DTB

Примечание: я знаю, что вы упоминаете вместо «default- bright -level», но если создается файл 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команды.

0
CJBS

Использование sysfs

Должна быть возможность использовать sysfs для установки значения в brightnessфайл. Посмотрите под /sys/class/backlight; скорее всего, есть подкаталог с вашим устройством подсветки. В этом каталоге должен быть файл brightness.

Передайте значение, соответствующее индексу значения (in 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 
0
Grodriguez

Ядро не сделает этого за вас (сохраните значение подсветки и примените его при следующем перезапуске), но если ваше ядро ​​поддерживает 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 

Похожие вопросы