[Letux-kernel] DSI panels with omapdrm on 4.20-rc

H. Nikolaus Schaller hns at goldelico.com
Tue Dec 18 12:21:48 CET 2018

Hi all,
I am still fighting to get our DSI panel on OMAP5 working again with 4.20-rc.

> Am 20.11.2018 um 10:17 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> Hi,
>> Am 19.11.2018 um 15:18 schrieb Sebastian Reichel <sre at kernel.org>:
>> Hi,
>>> So how can I debug the panel->enable()?
>>> Where should it be called from dss core?
>>> Then I could check the conditions to call enable().
>> This is called in omap_encoder_enable(). For debugging I suggest to
>> add "drm.debug=0xf" kernel argument. "drm/omap: don't check dispc
>> timings for DSI" fixes a similar problem for panel-dsi-cm.
> I have checked that and it looks all reasonable and I did enable
> the same on the 4.19 kernel and they are basically the same (some
> not obviously significant diffs in sequence or connector numbers).

We now have added Sebastian's latest patches and found a small bug in
our panel driver that prevented it from being enabled in v4.20-rc.

And we also include:
* drm/omap: Work around missing DISPC in runtime PM handlers

Now the driver becomes enabled, sends DCS commands to the panel and receives register values.

But panel still stays (almost) black and shows no image.

Somtimes there are errors:

[   20.852710] DSI: omapdss DSI error: VC(0) busy when trying to configure it!
[   20.852714] DSI: omapdss DSI error: VC(1) busy when trying to configure it!
[   20.852718] DSI: omapdss DSI error: VC(2) busy when trying to configure it!
[   20.852721] DSI: omapdss DSI error: VC(3) busy when trying to configure it!

On other occasions we can see a single vertical line displayed which appears to
show some X11 or framebuffer content. At least it changes if we launch e.g. xterm
and changes back if we stop it.

Now I have tried to use the debugfs to read out the omapdss registers and compare
with 4.19.10 (where the panel works).

There is a strange issue with dsi1.

Firstly, /sys/kernel/debug/omapdss/clk does not include the DSI1 clocks. Therefore
I can't check if dividers etc. are correct.

And trying to read dsi1_regs ends in a NULL pointer dereference in dsi_runtime_get()
called from dsi_dump_dsi_regs().

I have attached both logs.

Please check if you can see something there.

DSI panel Driver code is here:


BR and thanks,

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 4.19.txt
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20181218/ebac6ed2/attachment-0002.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 4.20.txt
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20181218/ebac6ed2/attachment-0003.txt>
-------------- next part --------------

More information about the Letux-kernel mailing list