Работа с DSI дисплеем
На DSI разъеме LCD поддерживается подключение дисплеев.
Ревизия платы Eltay SC rev.1.0.0
В ревизии платы REV1.0.0 линии I2C на разъеме перепутаны местами. Для обхода этой особенности используется программная I2C-шина i2c-gpio.
При включении overlay-файла камеры аппаратный интерфейс I2C1, используемый также для HDMI, отключается. Поэтому на данной ревизии платы DSI дисплей и HDMI не могут использоваться одновременно.
Также не поддерживается одновременная работа камеры и дисплея, подключенных к разъемам CAM и LCD соответственно.
Для включения дисплея нужно добавить слой eltay-sc-soft-i2c-rpi-7inch-dsi.dtbo в конфигурационный файл /boot/extlinux/extlinux.conf:
fdtoverlays /boot/overlays/eltay-sc-soft-i2c-rpi-7inch-dsi.dtbo
После сохранения изменений необходимо перезагрузить устройство. После загрузки должна появиться программная I2C-шина дисплея. Ее можно проверить командой:
i2cdetect -l
Ожидаемый результат — наличие адаптера i2c-gpio-dsi, например:
i2c-5 i2c i2c-gpio-dsi I2C adapter
Также на этой шине должен быть виден контроллер питания/подсветки дисплея по адресу 0x45. Если драйвер уже привязался к устройству, вместо адреса будет отображаться UU:
i2cdetect -y 5
Ревизия платы Eltay SC rev.1.0.1
В ревизии платы Eltay SC rev.1.0.1 I2C-линии разъема LCD подключены к аппаратной шине I2C1. Программная I2C-шина для дисплея не используется. При включении дисплея аппаратный интерфейс I2C1 не отключается, поэтому HDMI и дисплей могут оставаться включенными одновременно на уровне I2C-шины.
Для включения дисплея нужно добавить overlay-файл eltay-sc-i2c1-rpi-7inch-dsi.dtbo в конфигурационный файл /boot/extlinux/extlinux.conf:
fdtoverlays /boot/overlays/eltay-sc-i2c1-rpi-7inch-dsi.dtbo
После сохранения изменений необходимо перезагрузить устройство. После загрузки нужно проверить, что аппаратная шина I2C1 зарегистрирована в Linux как i2c-1:
i2cdetect -l
Ожидаемый результат — наличие адаптера i2c-1, соответствующего аппаратному контроллеру I2C1.
На шине i2c-1 должен быть виден контроллер питания/подсветки дисплея по адресу 0x45. Если драйвер уже привязался к устройству, вместо адреса будет отображаться UU:
i2cdetect -y 1
Работа с дисплеем
После включения соответствующего overlay-файла и перезагрузки устройства дисплей должен включиться. На экране должна появиться консоль Linux с приглашением ввода логина.
Для проверки, что DSI-дисплей определился в DRM-подсистеме, нужно выполнить:
ls -l /sys/class/drm/
Ожидаемый результат - появление DSI-коннектора, например:
/drm/card0/card1-DSI-1
Номер карты может отличаться, поэтому далее нужно использовать фактическое имя найденного DSI-коннектора. Посмотреть статус, подставив номер определившейся карты (для примера card1-DSI-1) можно командами:
cat /sys/class/drm/card1-DSI-1/status
cat /sys/class/drm/card1-DSI-1/modes
cat /sys/class/graphics/fb0/name
cat /sys/class/graphics/fb0/virtual_size
Ожидаемый результат:
connected
800x480
mali-dpdrmfb
800,480
Для вывода картинки, например /home/test.jpg, на экран можно воспользоваться командой (для дисплея 800x480 с 32-битным буфером):
ffmpeg -y \
-i /home/test.jpg \
-vf "scale=800:480:force_original_aspect_ratio=decrease,pad=800:480:(ow-iw)/2:(oh-ih)/2:black,format=bgra" \
-frames:v 1 \
-f rawvideo \
-pix_fmt bgra \
/dev/fb0