On Wed, May 11, 2022 at 8:28 PM Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> 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. > > #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 This seems a bit confusing to me, how come a Host initialization depends on the downstream bridge call flow? Thanks, Jagan.