You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to get a Startek 5 inch touchscreen working on a RaspberryPi 3 B. It's running latest raspbian with a 4.14.98 kernel. I have added the patches from this pull request: raspberrypi#2693 and verified that the Official display works.
The Startek panel use an Ilitek ILI9806E controller device. It is hard wired for 2 lanes and only has the DSI interface available (so no I2C or SPI). There is an upstream driver for an ILI9881C device: ili9881.c from which I created an ili9806e driver. When the kernel boots everything looks good: vc4-drm binds dsi1, /dev/fb0 is created and indeed xorg log indicates happiness but the display remains blank (backlight is permanently powered by an external supply).
In an attempt to debug I added some code to the prepare function in the driver to try and read the device ID just after resetting the panel. However, although the read apparently succeeds it returns 0 bytes:
[ 5.442202] [drm:vc4_dsi_host_transfer [vc4]] ERROR DSI returned 0b, expecting 1b
[ 5.442272] [drm:vc4_dsi_host_transfer [vc4]] ERROR DSI transfer failed, resetting: -6
Reading the device ID requires firstly switching to command page 1 in the ILI9806E and then reading the ID register. To switch you have to write a 5 byte sequence to register 255 so the fact it's reading 0 bytes suggests it's reading from the wrong register. A couple of questions spring to mind:
The official display is single lane so is this potentially an issue with having 2 lanes or is vc4-dsi known to work with 2 lanes?
What about reading over the dsi interface, is that known to work?
The Raspberry Pi panel's bridge apparently doesn't respond well to reads, so I've never used them. Looking at the code, the IRQ handler wakes up the transfer's completion on TXPKT1_DONE, while for a read you'd want to wait until RX1_PKT. Perhaps that will help you.
Hello,
I'm trying to get a Startek 5 inch touchscreen working on a RaspberryPi 3 B. It's running latest raspbian with a 4.14.98 kernel. I have added the patches from this pull request: raspberrypi#2693 and verified that the Official display works.
The Startek panel use an Ilitek ILI9806E controller device. It is hard wired for 2 lanes and only has the DSI interface available (so no I2C or SPI). There is an upstream driver for an ILI9881C device: ili9881.c from which I created an ili9806e driver. When the kernel boots everything looks good: vc4-drm binds dsi1, /dev/fb0 is created and indeed xorg log indicates happiness but the display remains blank (backlight is permanently powered by an external supply).
In an attempt to debug I added some code to the prepare function in the driver to try and read the device ID just after resetting the panel. However, although the read apparently succeeds it returns 0 bytes:
[ 5.442202] [drm:vc4_dsi_host_transfer [vc4]] ERROR DSI returned 0b, expecting 1b
[ 5.442272] [drm:vc4_dsi_host_transfer [vc4]] ERROR DSI transfer failed, resetting: -6
Reading the device ID requires firstly switching to command page 1 in the ILI9806E and then reading the ID register. To switch you have to write a 5 byte sequence to register 255 so the fact it's reading 0 bytes suggests it's reading from the wrong register. A couple of questions spring to mind:
Here's the full dmesg output. dmesg.txt
Any thoughts, pointers, suggestions very much appreciated.
The text was updated successfully, but these errors were encountered: