From: Simona Vetter <simona.vetter@ffwll.ch>
To: Herve Codina <herve.codina@bootlin.com>
Cc: "Alexander Stein" <alexander.stein@ew.tq-group.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>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
"Maíra Canal" <mcanal@igalia.com>,
"Raspberry Pi Kernel Maintenance" <kernel-list@raspberrypi.com>,
"Marek Vasut" <marex@denx.de>,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Louis Chauvet" <louis.chauvet@bootlin.com>,
"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v4 2/4] drm/atomic-helper: Introduce drm_atomic_helper_reset_crtc()
Date: Wed, 19 Feb 2025 14:41:48 +0100 [thread overview]
Message-ID: <Z7XfnPGDYspwG42y@phenom.ffwll.local> (raw)
In-Reply-To: <20250203145824.155869-3-herve.codina@bootlin.com>
On Mon, Feb 03, 2025 at 03:58:21PM +0100, Herve Codina wrote:
> drm_atomic_helper_reset_crtc() allows to reset the CRTC active outputs.
>
> This resets all active components available between the CRTC and
> connectors.
>
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> ---
> drivers/gpu/drm/drm_atomic_helper.c | 41 +++++++++++++++++++++++++++++
> include/drm/drm_atomic_helper.h | 2 ++
> 2 files changed, 43 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 8ed186ddaeaf..cac807df8a86 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -3363,6 +3363,47 @@ int drm_atomic_helper_disable_all(struct drm_device *dev,
> }
> EXPORT_SYMBOL(drm_atomic_helper_disable_all);
>
> +/**
> + * drm_atomic_helper_reset_crtc - reset the active outputs of a CRTC
> + * @crtc: DRM CRTC
> + * @ctx: lock acquisition context
> + *
> + * Reset the active outputs by indicating that connectors have changed.
> + * This implies a reset of all active components available between the CRTC and
> + * connectors.
I think you definitely want a
Note: This relies on resetting &drm_crtc_state.connectors_changed.
For drivers which optimize out unnecessary modesets this will
result in a no-op commit, achieving nothing.
> + *
> + * Returns:
> + * 0 on success or a negative error code on failure.
> + */
> +int drm_atomic_helper_reset_crtc(struct drm_crtc *crtc,
> + struct drm_modeset_acquire_ctx *ctx)
So this is pretty close to DP drivers doing link-retraining when
reconnecting a cable. Would be really nice if that could also be rolled
out there where it fits, and maybe augment the documentation accordingly
so that dp helpers point at this?
Either way would be good to extend the kerneldoc a bit to explain what
this is good for. Either way.
Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
Cheers, Sima
> +{
> + struct drm_atomic_state *state;
> + struct drm_crtc_state *crtc_state;
> + int ret;
> +
> + state = drm_atomic_state_alloc(crtc->dev);
> + if (!state)
> + return -ENOMEM;
> +
> + state->acquire_ctx = ctx;
> +
> + crtc_state = drm_atomic_get_crtc_state(state, crtc);
> + if (IS_ERR(crtc_state)) {
> + ret = PTR_ERR(crtc_state);
> + goto out;
> + }
> +
> + crtc_state->connectors_changed = true;
> +
> + ret = drm_atomic_commit(state);
> +out:
> + drm_atomic_state_put(state);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(drm_atomic_helper_reset_crtc);
> +
> /**
> * drm_atomic_helper_shutdown - shutdown all CRTC
> * @dev: DRM device
> diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
> index 9aa0a05aa072..53382fe93537 100644
> --- a/include/drm/drm_atomic_helper.h
> +++ b/include/drm/drm_atomic_helper.h
> @@ -139,6 +139,8 @@ int drm_atomic_helper_set_config(struct drm_mode_set *set,
>
> int drm_atomic_helper_disable_all(struct drm_device *dev,
> struct drm_modeset_acquire_ctx *ctx);
> +int drm_atomic_helper_reset_crtc(struct drm_crtc *crtc,
> + struct drm_modeset_acquire_ctx *ctx);
> void drm_atomic_helper_shutdown(struct drm_device *dev);
> struct drm_atomic_state *
> drm_atomic_helper_duplicate_state(struct drm_device *dev,
> --
> 2.47.1
>
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
next prev parent reply other threads:[~2025-02-19 13:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 14:58 [PATCH v4 0/4] Add support for errors recovery in the TI SN65DSI83 bridge driver Herve Codina
2025-02-03 14:58 ` [PATCH v4 1/4] dt-bindings: display: bridge: sn65dsi83: Add interrupt Herve Codina
2025-02-03 14:58 ` [PATCH v4 2/4] drm/atomic-helper: Introduce drm_atomic_helper_reset_crtc() Herve Codina
2025-02-03 15:56 ` Dmitry Baryshkov
2025-02-03 16:19 ` Herve Codina
2025-02-19 13:41 ` Simona Vetter [this message]
2025-02-20 10:44 ` Maxime Ripard
2025-02-20 14:07 ` Herve Codina
2025-02-03 14:58 ` [PATCH v4 3/4] drm/vc4: hdmi: Use drm_atomic_helper_reset_crtc() Herve Codina
2025-02-03 15:56 ` Dmitry Baryshkov
2025-02-03 16:20 ` Herve Codina
2025-02-03 14:58 ` [PATCH v4 4/4] drm: bridge: ti-sn65dsi83: Add error recovery mechanism Herve Codina
2025-02-03 15:56 ` [PATCH v4 0/4] Add support for errors recovery in the TI SN65DSI83 bridge driver Herve Codina
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=Z7XfnPGDYspwG42y@phenom.ffwll.local \
--to=simona.vetter@ffwll.ch \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alexander.stein@ew.tq-group.com \
--cc=andrzej.hajda@intel.com \
--cc=conor+dt@kernel.org \
--cc=dave.stevenson@raspberrypi.com \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=herve.codina@bootlin.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel-list@raspberrypi.com \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=louis.chauvet@bootlin.com \
--cc=luca.ceresoli@bootlin.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marex@denx.de \
--cc=mcanal@igalia.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=thomas.petazzoni@bootlin.com \
--cc=tzimmermann@suse.de \
/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®