[Letux-kernel] DSI panels with omapdrm on 4.20-rc
H. Nikolaus Schaller
hns at goldelico.com
Wed Dec 19 17:36:22 CET 2018
Hi Tomi,
> Am 19.12.2018 um 10:30 schrieb Tomi Valkeinen <tomi.valkeinen at ti.com>:
>
> On 18/12/18 20:09, H. Nikolaus Schaller wrote:
>
>>> Comparing it to the (mostly) working kernel, I found out that the bus
>>> flags are again broken. I attached a quick hack patch that seems to fix
>>> them, and with that I get a working 400x400 plane, but underflows with
>>> full-screen plane.
>>>
>>> I couldn't quite figure out how to fix the bus-flags correctly, though.
>>
>> Hm. For me this patch does not make a difference.
>>
>> But I think we are close to a solution.
>
> Ok... Well, the VC stuff works ok for me, as far as I see.
>
> I pushed my hacky test branch to:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git
> 4.20/omap5-video-dsi-test
>
> It has one additional fix "fix dsi depopulate", which is needed if you
> want to unload modules.
It seems as if that one already makes the difference!
Well, we
modprobe -r omapdrm
modprobe -r drm_kms_helper
and then reload the modules with different rotation parameter.
>
> The panel r63311 driver probes fine, and can read something via DSI (I
> get a proper reply for MIPI_DCS_GET_PIXEL_FORMAT), and everything seems
> to be ok.
Good!
Unfortunately I think I have no working r63311 setup any more since
we switched to a different panel in the Pyra project.
>
> The only problem with my branch are FIFO underflows. Apparently these
> were present on older kernels too, and is probably somehow related to
> horizontal blanking. 1080x1920 plane causes underflows, but 1000x1920
> does not.
I haven't seen that but it might be that if horizontal blanking is
too short, it might not be enough to send long DCS commands.
>
> Maybe you can compare your driver to the r63311 driver in my branch
> (although the r63311 driver is a total mess =).
Yes, it is... Anyways, it works which is a good starting point for optimizations :)
I have compared drivers and only found that I try to set dssdev->driver
to a private structure. And there was a spurious omapdss_device_disconnect()
in the remove() function. But both do not seem to be critical.
Maybe I should clean up my driver (remove some bells and whistles) and submit
it upstream as soon as the Pyra is being mass produced and shipped. Then we
would have a good reference implementation and hardware to test for future
regressions.
So in summary I have added these patches not yet in v4.20-rc7 (plus the panel driver):
b2b80dbeff3a fix dsi depopulate
2ef5e09c79d9 drm/omap: hackfix dsi bus flags
b8aedc2b8295 drm/omap: fix crash in DSI debug dumps
5cceb44e03e3 drm/omap: add support for manually updated displays
87dfb765c3be drm/omap: add framedone interrupt support
50f581c97fbe drm/omap: fix incorrect union usage
977e0c2e641f drm/omap: don't check dispc timings for DSI
f62952e37eae drm/omap: use DRM_DEBUG_DRIVER instead of CORE
Do you plan to get these fixes already into v4.20.0?
BR and thanks,
Nikolaus
More information about the Letux-kernel
mailing list