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

Marek Vasut marex at denx.de
Wed May 11 15:47:30 UTC 2022


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 at raspberrypi.com>  wrote:
>>> On Fri, 4 Mar 2022 at 15:18, Dave Stevenson
>>> <dave.stevenson at raspberrypi.com>  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 at samsung.com>
> 
> 
> 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@amarulasolutions.com/
> ). 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.


More information about the dri-devel mailing list