A third-party Xorg video driver for Epaper panels.
It was primarily made as an exercise, but the code is modular enough to accept new models. Sadly, Xorg is missing lots of documentations, so this driver may have unidentified bugs.
The design tries its best to be non-blocking, so feel free to read the existing code to understand how deferred operations can be performed.
The source code currently uses an old version of gpiod,
which was the only available one in my old raspbian development rig.
So the gpiod code might not build properly on a more recent Linux distribution.
The SPI uses the raw Linux character device interface.
The build sequence expects the pkg-config package xorg-server to be installed.
sudo apt install xserver-xorg-dev # Debian
Download and extract a release tarball.
./configure
make
make install
Then, you can take inspiration from the example
xorg.conf in the repository to configure your server.
The driver is licensed under the MIT license, see COPYING for more informations.
Contributions are welcomed as long as the patch is of quality.
Coding-style is roughly CamelCase. For the rest, as long as it fits in, it's ok.
There is a lot of room for improvements, a few ideas where to begin:
- Support asynchronous SPI transfers.
- Abstract the GPIO and SPI interfaces, maybe even in external modules.
- Using the configuration file to find out the GPIO pins, and SPI mode/speed.
- Use the
bconfsystem to make some chipsets optional at build-time. - Support for Xorg forks (compatibility with Xlibre?).
- Split the source code in several files.
- More panel models.
-
E042A87WeAct Studio 4.20" 400x300 black & white, partial refresh is buggy sadly, can be improved.