Low level E ink drawing on Onyx
I discovered how to draw to the screen of my Poke3 without anything more than the kernel.
AFAIK, this is not documented anywhere. If it is, I'd certainly like to know.
The Freescale (NXP) iMX6 processors have built-in hardware to handle Eink.
The Qualcomms do not. They use software. Therefore the usage is different.
Short version of how to draw:
Open /dev/graphics/fb0
Get finfo & vinfo (exactly like any LCD or Eink)
Close it.
Open /dev/ebc (this is the software interface, only on Onyx)
mmap /dev/ebc with a size of width*height*4 rounded up to 4096 (i.e. 32 bit without stride rounded to pagesize)
Doodle on this frame buffer (without stride, i.e, no extra bytes on line ends)
You can unmap now if you like
Fill a struct mxcfb_update_data (just like iMX6 Eink)
ioctl(fd, 0x700c, &update);
You can close now if you like
This only works with 64 bit executables as the driver ignores 32 bit requests.
They made this all sneakier because the driver does not return an error on a bad ioctl code, so no scanning for good codes.
(I disassembled the kernel to figure this out.)
|