From: Aradhya Bhatia <aradhya.bhatia@linux.dev>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>, Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Nishanth Menon <nm@ti.com>, Vignesh Raghavendra <vigneshr@ti.com>,
Devarsh Thakkar <devarsht@ti.com>,
Praneeth Bajjuri <praneeth@ti.com>, Udit Kumar <u-kumar1@ti.com>,
Jayesh Choudhary <j-choudhary@ti.com>,
DRI Development List <dri-devel@lists.freedesktop.org>,
Linux Kernel List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v7 11/12] drm/atomic-helper: Re-order bridge chain pre-enable and post-disable
Date: Fri, 17 Jan 2025 18:37:00 +0530 [thread overview]
Message-ID: <f34a0c76-cb61-4c5a-b16c-e6f715f1d048@linux.dev> (raw)
In-Reply-To: <psce5mzs5kyw76pkb75lmxliddph6b7yob6nunmxy4ne7g7zin@axa67tkcgr5j>
Hi Dmitry,
On 14/01/25 16:54, Dmitry Baryshkov wrote:
> On Tue, Jan 14, 2025 at 11:26:25AM +0530, Aradhya Bhatia wrote:
>> Move the bridge pre_enable call before crtc enable, and the bridge
>> post_disable call after the crtc disable.
>>
>> The sequence of enable after this patch will look like:
>>
>> bridge[n]_pre_enable
>> ...
>> bridge[1]_pre_enable
>>
>> crtc_enable
>> encoder_enable
>>
>> bridge[1]_enable
>> ...
>> bridge[n]_enable
>>
>> And, the disable sequence for the display pipeline will look like:
>>
>> bridge[n]_disable
>> ...
>> bridge[1]_disable
>>
>> encoder_disable
>> crtc_disable
>>
>> bridge[1]_post_disable
>> ...
>> bridge[n]_post_disable
>>
>> The definition of bridge pre_enable hook says that,
>> "The display pipe (i.e. clocks and timing signals) feeding this bridge
>> will not yet be running when this callback is called".
>>
>> Since CRTC is also a source feeding the bridge, it should not be enabled
>> before the bridges in the pipeline are pre_enabled. Fix that by
>> re-ordering the sequence of bridge pre_enable and bridge post_disable.
>
> The patch contains both refactoring of the corresponding functions and
> changing of the order. Please split it into two separate commits.
>
I assume that you already understand this, so this is just for the
record -
There is no trivial way to do this. Initially, this is what I had in my
mind - about what the split patches would look like.
#1
* refactoring of entire loops into separate functions.
* Separate out the pre_enable and enable operations inside the
encoder_bridge_enable().
* call them in their (seemingly) original sequences
- crtc_enable
- encoder_bridge_enable(pre_enable)
- encoder_bridge_enable(!pre_enable)
#2
* rearrange the calls to re-order the operation
- encoder_bridge_enable(pre_enable)
- crtc_enable
- encoder_bridge_enable(!pre_enable)
This would have made the patch#2 seem quite trivial, as patch#1 would
take the brunt of changes, while keeping the functionality intact.
What I have now realized is that, the above isn't possible,
unfortunately. The moment we separate out pre_enable and enable into 2
different calls, the overall sequence gets even changed when there are
multiple pipelines in the system.
So to implement the split properly, the first patch would look like this
#1
* refactoring of entire loops into separate functions.
* The calling sequences will be as follows -
- crtc_enable()
- encoder_bridge_enable()
- this will do both pre_enable and enable
unconditionally.
The pre_enable and enable operations wouldn't be separated in patch 1,
just that the crtc enable and encoder bridge pre_enable/enable loops
would be put into individual functions.
The next patch will then introduce booleans, and separate out pre_enable
and enable, and implement the new order -
#2
* pre_enable and enable operations will be conditionally segregated
inside encoder_bridge_enable(), based on the pre_enable boolean.
* The calling sequences will then be updated to -
- encoder_bridge_enable(pre_enable)
- crtc_enable()
- encoder_bridge_enable(!pre_enable)
This wouldn't be all that much trivial as I had imagined it to be earlier.
It would also *kind of* like these patches in a previous revision,
v5:11/13 [0], and v5:12/13 [1]. The only differences being,
1) these older patches separated out only the bridge/encoder operations
into a function, and not the crtc operations, and
2) An enum is being used instead of the booleans.
I believe this is what you are looking for? If I have misunderstood
something, do let me know.
Regards
Aradhya
[0]: v5:11/13
drm/atomic-helper: Separate out Encoder-Bridge enable and disable
https://lore.kernel.org/all/20241019200530.270738-4-aradhya.bhatia@linux.dev/
[1]: v5:12/13
drm/atomic-helper: Re-order bridge chain pre-enable and post-disable
https://lore.kernel.org/all/20241019200530.270738-5-aradhya.bhatia@linux.dev/
next prev parent reply other threads:[~2025-01-17 13:07 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-14 5:56 [PATCH v7 00/12] drm/bridge: cdns-dsi: Fix the color-shift issue Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 01/12] drm/bridge: cdns-dsi: Fix connecting to next bridge Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 02/12] drm/bridge: cdns-dsi: Move to devm_drm_of_get_bridge() Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 03/12] drm/bridge: cdns-dsi: Fix phy de-init and flag it so Aradhya Bhatia
2025-01-14 12:30 ` Tomi Valkeinen
2025-01-14 14:44 ` Aradhya Bhatia
2025-01-14 15:20 ` Tomi Valkeinen
2025-01-14 16:32 ` Aradhya Bhatia
2025-01-15 8:17 ` Tomi Valkeinen
2025-01-17 13:12 ` Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 04/12] drm/bridge: cdns-dsi: Fix the link and phy init order Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 05/12] drm/bridge: cdns-dsi: Fix the clock variable for mode_valid() Aradhya Bhatia
2025-01-14 11:13 ` Dmitry Baryshkov
2025-01-14 5:56 ` [PATCH v7 06/12] drm/bridge: cdns-dsi: Check return value when getting default PHY config Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 07/12] drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 08/12] drm/mipi-dsi: Add helper to find input format Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 09/12] drm/bridge: cdns-dsi: Support atomic bridge APIs Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 10/12] drm/bridge: cdns-dsi: Move DSI mode check to _atomic_check() Aradhya Bhatia
2025-01-14 11:15 ` Dmitry Baryshkov
2025-01-14 12:47 ` Tomi Valkeinen
2025-01-14 5:56 ` [PATCH v7 11/12] drm/atomic-helper: Re-order bridge chain pre-enable and post-disable Aradhya Bhatia
2025-01-14 11:24 ` Dmitry Baryshkov
2025-01-14 13:04 ` Tomi Valkeinen
2025-01-14 16:35 ` Aradhya Bhatia
2025-01-14 16:43 ` Maxime Ripard
2025-01-14 16:52 ` Aradhya Bhatia
2025-01-17 13:07 ` Aradhya Bhatia [this message]
2025-01-20 8:38 ` Dmitry Baryshkov
2025-01-20 17:48 ` Aradhya Bhatia
2025-01-21 10:50 ` Dmitry Baryshkov
2025-01-21 17:42 ` Aradhya Bhatia
2025-01-14 5:56 ` [PATCH v7 12/12] drm/bridge: cdns-dsi: Use pre_enable/post_disable to enable/disable Aradhya Bhatia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f34a0c76-cb61-4c5a-b16c-e6f715f1d048@linux.dev \
--to=aradhya.bhatia@linux.dev \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=devarsht@ti.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=j-choudhary@ti.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=nm@ti.com \
--cc=praneeth@ti.com \
--cc=rfoss@kernel.org \
--cc=simona@ffwll.ch \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=tzimmermann@suse.de \
--cc=u-kumar1@ti.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.