Skip to content

CNflysky/RPI_DSI_Displays

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPI_DSI_Displays

Hardware & Kernel DRM Driver for RPI DSI Displays.
Note: This repository is still under development. Feel free to open issues if you have any questions or suggestions.
Simplified Chinese(简体中文)

Why DSI?

Compared from SPI/DPI panels,DSI panels has taken these advantages:

  • High refresh rate(~60fps)
  • Easy to wire
  • Consume less gpio resources
  • Low power consumption

Limitation

Circuit

Due to the circuit design of Raspberry Pi boards, RPi 4b on-board DSI connector only routes out 2 DSI lanes, with a maximum resolution of 720p.
If you want to drive a panel with more than 2 lanes, you may need to consider the compute module or RPi 5.

RPiOS

You must enable DRM first in order to use this driver.
In Raspberry Pi OS releases after 2022-1-28, DRM is enabled by default.
Old releases of RPiOS may not support DRM,so use latest version of RPiOS is recommended.

Supported Panel

Part Number Diagonal Resolution Interface Connector TP Target Note
W280BF036I 2.8 Inch VGA(480x640) DSI 1 Lane 24p None w280bf036i
TDO-QHD0500D5 5.3 Inch QHD(540x960) DSI 2 Lane 33p FT5406 tdo-qhd0500d5

Configuration

*Note: this tutorial and code only keep compatibility with latest RPiOS. If you are using old RPiOS, you are on your own.
Check for kernel headers:

ls /lib/modules/`uname -r`/build

If not, install it:

sudo apt install linux-headers-rpi-v8 # for arm64,armv7 install linux-headers-rpi-v7, RPi 5 install linux-headers-rpi-2712

Install make and dtc:

sudo apt install make device-tree-compiler

Clone:

git clone https://github.com/CNflysky/RPI_DSI_Displays --depth 1
cd RPI_DSI_Displays/src

Select target among Target column of Supported Panel table.
e.g. install 2.8 Inch driver for RPi 4:

make w280bf036i
sudo make install

Reboot.

use sudo make remove to uninstall driver.

If you want to get adapters,take a look at adaptersdirectory.
You can view it on OSHWHub too:Link(Chinese version only)

Rotation

edit dts files:

rpi_dsi_display:rpi-dsi-display@0 {
				compatible    = <...>;
				status        = "okay";
				reg           = <0>;
				backlight = <&rpi_dsi_display_gpio_backlight>;
				rotation = <0>; // Rotation: [0, 90, 180, 270]
                ...
}

Debug

Follow these steps:

# check overlay loaded by firmware
sudo vclog --msg | grep rpidisp
# does kernel module loaded? 
lsmod | grep panel_rpi_dsi_display
dmesg | grep panel_rpi_dsi_display
# check overlay applyed or not
sudo find /proc/device-tree/ -name *rpi-dsi-display*
cat *found node*/status
# check backlight node
cat /sys/class/backlight/rpi-dsi-display-bl/brightness
echo 128 | sudo tee -a /sys/class/backlight/rpi-dsi-display-bl/brightness
# if problem still exists, submit an issue

Port your own panel driver

Here
Translated from my blog,may not 100% accurate.

Gallery

W280BF036I

w280bf036i_neofetch w280bf036i_htop w280bf036i_vim w280bf036i_cmatrix w280bf036i_ufotest

About

Hardware & Kernel DRM Driver for RPI DSI Displays.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors