Re: [PATCH V2 0/3] DSI host and peripheral initialisation ordering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/11/22 16:58, Marek Szyprowski wrote:
Hi Dave,

On 05.04.2022 13:43, Dave Stevenson wrote:
On Fri, 18 Mar 2022 at 12:25, Dave Stevenson
<dave.stevenson@xxxxxxxxxxxxxxx>  wrote:
On Fri, 4 Mar 2022 at 15:18, Dave Stevenson
<dave.stevenson@xxxxxxxxxxxxxxx>  wrote:
Hi All
A gentle ping on this series. Any comments on the approach?
Thanks.
I realise the merge window has just closed and therefore folks have
been busy, but no responses on this after a month?

Do I give up and submit a patch to document that DSI is broken and no one cares?

Thanks for pointing this patchset in the 'drm: bridge: Add Samsung MIPI
DSIM bridge' thread, otherwise I would miss it since I'm not involved
much in the DRM development.

This resolves most of the issues in the Exynos DSI and its recent
conversion to the drm bridge framework. I've added the needed
prepare_upstream_first flags to the panels and everything works fine
without the bridge chain order hacks.

Feel free to add:

Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>


The only remaining thing to resolve is the moment of enabling DSI host.
The proper sequence is:

1. host power on, 2. device power on, 3. host init, 4. device init, 5.
video enable.

+CC Raphael, STM32MP1 has similar topic.

#1 is done in dsi's pre_enable, #2 is done in panel's prepare. #3 was so
far done in the first host transfer call, which usually happens in
panel's prepare, then the #4 happens. Then video enable is done in the
enable callbacks.

Jagan wants to move it to the dsi host pre_enable() to let it work with
DSI bridges controlled over different interfaces
(https://lore.kernel.org/all/20220504114021.33265-6-jagan@xxxxxxxxxxxxxxxxxxxx/
). This however fails on Exynos with DSI panels, because when dsi's
pre_enable is called, the dsi device is not yet powered. I've discussed
this with Andrzej Hajda and we came to the conclusion that this can be
resolved by adding the init() callback to the struct mipi_dsi_host_ops.
Then DSI client (next bridge or panel) would call it after powering self
on, but before sending any DSI commands in its pre_enable/prepare functions.

I've prepared a prototype of such solution. This approach finally
resolved all the initialization issues! The bridge chain finally matches
the hardware, no hack are needed, and everything is controlled by the
DRM core. This prototype also includes the Jagan's patches, which add
IMX support to Samsung DSIM. If one is interested, here is my git repo
with all the PoC patches:

https://github.com/mszyprow/linux/tree/v5.18-next-20220511-dsi-rework

Can you CC me on the iMX DSIM discussion/patches ? It seems I was left out of it all, even though I work with the iMX8M DRM stuff extensively.



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux