From: Maxime Ripard <mripard@kernel.org>
To: Aradhya Bhatia <a-bhatia1@ti.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Jyri Sarha <jyri.sarha@iki.fi>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>,
Daniel Vetter <daniel@ffwll.ch>,
DRI Development List <dri-devel@lists.freedesktop.org>,
Linux Kernel List <linux-kernel@vger.kernel.org>,
Sam Ravnborg <sam@ravnborg.org>,
Thierry Reding <treding@nvidia.com>,
Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
Boris Brezillon <boris.brezillon@bootlin.com>,
Nishanth Menon <nm@ti.com>,
Vignesh Raghavendra <vigneshr@ti.com>,
Praneeth Bajjuri <praneeth@ti.com>, Udit Kumar <u-kumar1@ti.com>,
Devarsh Thakkar <devarsht@ti.com>,
Jayesh Choudhary <j-choudhary@ti.com>,
Jai Luthra <j-luthra@ti.com>
Subject: Re: [PATCH 6/7] drm/bridge: Introduce early_enable and late disable
Date: Tue, 21 May 2024 15:15:06 +0200 [thread overview]
Message-ID: <20240521-realistic-imposing-lemur-aac3ad@houat> (raw)
In-Reply-To: <ba8d0b98-67d2-41e2-b568-a40543a9b0fa@ti.com>
[-- Attachment #1: Type: text/plain, Size: 4792 bytes --]
Hi,
On Thu, May 16, 2024 at 03:10:15PM GMT, Aradhya Bhatia wrote:
> >> /**
> >> * @pre_enable:
> >> *
> >> @@ -285,6 +319,26 @@ struct drm_bridge_funcs {
> >> */
> >> void (*enable)(struct drm_bridge *bridge);
> >>
> >> + /**
> >> + * @atomic_early_enable:
> >> + *
> >> + * This callback should enable the bridge. It is called right before
> >> + * the preceding element in the display pipe is enabled. If the
> >> + * preceding element is a bridge this means it's called before that
> >> + * bridge's @atomic_early_enable. If the preceding element is a
> >> + * &drm_crtc it's called right before the crtc's
> >> + * &drm_crtc_helper_funcs.atomic_enable hook.
> >> + *
> >> + * The display pipe (i.e. clocks and timing signals) feeding this bridge
> >> + * will not yet be running when this callback is called. The bridge can
> >> + * enable the display link feeding the next bridge in the chain (if
> >> + * there is one) when this callback is called.
> >> + *
> >> + * The @early_enable callback is optional.
> >> + */
> >> + void (*atomic_early_enable)(struct drm_bridge *bridge,
> >> + struct drm_bridge_state *old_bridge_state);
> >> +
> >> /**
> >> * @atomic_pre_enable:
> >> *
> >> @@ -361,6 +415,21 @@ struct drm_bridge_funcs {
> >> void (*atomic_post_disable)(struct drm_bridge *bridge,
> >> struct drm_bridge_state *old_bridge_state);
> >>
> >> + /**
> >> + * @atomic_late_disable:
> >> + *
> >> + * This callback should disable the bridge. It is called right after the
> >> + * preceding element in the display pipe is disabled. If the preceding
> >> + * element is a bridge this means it's called after that bridge's
> >> + * @atomic_late_disable. If the preceding element is a &drm_crtc it's
> >> + * called right after the crtc's &drm_crtc_helper_funcs.atomic_disable
> >> + * hook.
> >> + *
> >> + * The @atomic_late_disable callback is optional.
> >> + */
> >> + void (*atomic_late_disable)(struct drm_bridge *bridge,
> >> + struct drm_bridge_state *old_bridge_state);
> >> +
> >
> > But more importantly, I don't quite get the use case you're trying to
> > solve here.
> >
> > If I got the rest of your series, the Cadence DSI bridge needs to be
> > powered up before its source is started. You can't use atomic_enable or
> > atomic_pre_enable because it would start the source before the DSI
> > bridge. Is that correct?
> >
>
> That's right. I cannot use bridge_atomic_pre_enable /
> bridge_atomic_enable here. But that's because my source is CRTC, which
> gets enabled via crtc_atomic_enable.
>
>
> > If it is, then how is it different from what
> > drm_atomic_bridge_chain_pre_enable is doing? The assumption there is
> > that it starts enabling bridges last to first, to it should be enabled
> > before anything starts.
> >
> > The whole bridge enabling order code starts to be a bit of a mess, so it
> > would be great if you could list all the order variations we have
> > currently, and why none work for cdns-dsi.
> >
>
> Of course! I can elaborate on the order.
>
> Without my patches (and given there isn't any bridge setting the
> "pre_enable_prev_first" flag) the order of enable for any single display
> chain, looks like this -
>
> crtc_enable
>
> bridge[n]_pre_enable
> ---
> bridge[1]_pre_enable
>
> encoder_enable
>
> bridge[1]_enable
> ---
> bridge[n]_enable
>
> The tidss enables at the crtc_enable level, and hence is the first
> entity with stream on. cdns-dsi doesn't stand a chance with
> bridge_atmoic_pre_enable / bridge_atmoic_enable hooks. And there is no
> bridge call happening before crtc currently.
Thanks for filling the blanks :)
I assume that since cdns-dsi is a bridge, and it only has a simple
encoder implementation, for it to receive some video signal we need to
enable the CRTC before the bridge.
If so, I think that's the original intent between the bridge pre_enable.
The original documentation had:
pre_enable: this contains things needed to be done for the bridge
before this contains things needed to be done for the bridge before
this contains things needed to be done for the bridge before.
and the current one has:
The display pipe (i.e. clocks and timing signals) feeding this bridge
will not yet be running when this callback is called. The bridge must
not enable the display link feeding the next bridge in the chain (if
there is one) when this callback is called.
I would say the CRTC is such a source, even more so now that the encoder
is usually transparent, so I think we should instead move the crtc
enable call after the bridge pre_enable.
Would that work?
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
next prev parent reply other threads:[~2024-05-21 13:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-11 15:30 [PATCH 0/7] drm/bridge: cdns-dsi: Fix the color-shift issue Aradhya Bhatia
2024-05-11 15:30 ` [PATCH 1/7] drm/tidss: Add CRTC mode_fixup Aradhya Bhatia
2024-05-16 8:10 ` Maxime Ripard
2024-05-16 11:03 ` Aradhya Bhatia
2024-05-21 13:18 ` Maxime Ripard
2024-05-30 9:39 ` Aradhya Bhatia
2024-05-11 15:30 ` [PATCH 2/7] drm/bridge: cdns-dsi: Fix minor bugs Aradhya Bhatia
2024-05-16 8:11 ` Maxime Ripard
2024-05-16 9:41 ` Aradhya Bhatia
2024-05-11 15:30 ` [PATCH 3/7] drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready Aradhya Bhatia
2024-05-22 10:23 ` [EXTERNAL] " Dominik Haller
2024-05-11 15:30 ` [PATCH 4/7] drm/bridge: cdns-dsi: Reset the DCS write FIFO Aradhya Bhatia
2024-05-11 15:30 ` [PATCH 5/7] drm/bridge: cdns-dsi: Support atomic bridge APIs Aradhya Bhatia
2024-05-21 20:20 ` Markus Elfring
2024-05-11 15:30 ` [PATCH 6/7] drm/bridge: Introduce early_enable and late disable Aradhya Bhatia
2024-05-16 8:22 ` Maxime Ripard
2024-05-16 9:40 ` Aradhya Bhatia
2024-05-21 13:15 ` Maxime Ripard [this message]
2024-05-24 11:08 ` Aradhya Bhatia
2024-05-28 11:43 ` Maxime Ripard
2024-05-30 9:43 ` Aradhya Bhatia
2024-05-11 15:30 ` [PATCH 7/7] drm/bridge: cdns-dsi: Implement early_enable and late_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=20240521-realistic-imposing-lemur-aac3ad@houat \
--to=mripard@kernel.org \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=a-bhatia1@ti.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=boris.brezillon@bootlin.com \
--cc=daniel@ffwll.ch \
--cc=devarsht@ti.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=j-choudhary@ti.com \
--cc=j-luthra@ti.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=jyri.sarha@iki.fi \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=neil.armstrong@linaro.org \
--cc=nm@ti.com \
--cc=praneeth@ti.com \
--cc=rfoss@kernel.org \
--cc=sam@ravnborg.org \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=treding@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®