dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: Maxime Ripard <mripard@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org,
	Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.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>
Subject: Re: [PATCH v4 04/15] drm/bridge: Switch private_obj initialization to atomic_create_state
Date: Mon, 9 Feb 2026 09:30:11 +0100	[thread overview]
Message-ID: <ead8313b-3823-467f-a402-d5436bfc13fa@suse.de> (raw)
In-Reply-To: <20260128-drm-private-obj-reset-v4-4-90891fa3d3b0@redhat.com>



Am 28.01.26 um 13:43 schrieb Maxime Ripard:
> The bridge implementation relies on a drm_private_obj, that is
> initialized by allocating and initializing a state, and then passing it
> to drm_private_obj_init.
>
> Since we're gradually moving away from that pattern to the more
> established one relying on a atomic_create_state implementation, let's
> migrate this instance to the new pattern.
>
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>
> Cc: Andrzej Hajda <andrzej.hajda@intel.com>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Robert Foss <rfoss@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Jonas Karlman <jonas@kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> ---
>   drivers/gpu/drm/drm_atomic_state_helper.c |  1 +
>   drivers/gpu/drm/drm_bridge.c              | 31 ++++++++++++++++---------------
>   2 files changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index d21f32f0ad51f4305f75d01be58dc404acf7674c..716631e8a10a04674ae498b7fcbfc64a668a051e 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -823,10 +823,11 @@ EXPORT_SYMBOL(drm_atomic_helper_bridge_destroy_state);
>    */
>   void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge,
>   				      struct drm_bridge_state *state)
>   {
>   	memset(state, 0, sizeof(*state));
> +	__drm_atomic_helper_private_obj_create_state(&bridge->base, &state->base);
>   	state->bridge = bridge;
>   }
>   EXPORT_SYMBOL(__drm_atomic_helper_bridge_reset);
>   
>   /**
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index 3b165a0d1e779ebcf7fe710a28ce3d15d7ab9c81..94864e05619d1678ea6c0571e889f951e17d8d16 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -458,11 +458,25 @@ drm_bridge_atomic_destroy_priv_state(struct drm_private_obj *obj,
>   	struct drm_bridge *bridge = drm_priv_to_bridge(obj);
>   
>   	bridge->funcs->atomic_destroy_state(bridge, state);
>   }
>   
> +static struct drm_private_state *
> +drm_bridge_atomic_create_priv_state(struct drm_private_obj *obj)
> +{
> +	struct drm_bridge *bridge = drm_priv_to_bridge(obj);
> +	struct drm_bridge_state *state;
> +
> +	state = bridge->funcs->atomic_reset(bridge);
> +	if (IS_ERR(state))
> +		return ERR_CAST(state);
> +
> +	return &state->base;
> +}
> +
>   static const struct drm_private_state_funcs drm_bridge_priv_state_funcs = {
> +	.atomic_create_state = drm_bridge_atomic_create_priv_state,
>   	.atomic_duplicate_state = drm_bridge_atomic_duplicate_priv_state,
>   	.atomic_destroy_state = drm_bridge_atomic_destroy_priv_state,
>   };
>   
>   static bool drm_bridge_is_atomic(struct drm_bridge *bridge)
> @@ -535,30 +549,17 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
>   		ret = bridge->funcs->attach(bridge, encoder, flags);
>   		if (ret < 0)
>   			goto err_reset_bridge;
>   	}
>   
> -	if (drm_bridge_is_atomic(bridge)) {
> -		struct drm_bridge_state *state;
> -
> -		state = bridge->funcs->atomic_reset(bridge);
> -		if (IS_ERR(state)) {
> -			ret = PTR_ERR(state);
> -			goto err_detach_bridge;
> -		}
> -
> +	if (drm_bridge_is_atomic(bridge))
>   		drm_atomic_private_obj_init(bridge->dev, &bridge->base,
> -					    &state->base,
> +					    NULL,
>   					    &drm_bridge_priv_state_funcs);
> -	}
>   
>   	return 0;
>   
> -err_detach_bridge:
> -	if (bridge->funcs->detach)
> -		bridge->funcs->detach(bridge);
> -
>   err_reset_bridge:
>   	bridge->dev = NULL;
>   	bridge->encoder = NULL;
>   	list_del(&bridge->chain_node);
>   
>

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)



  reply	other threads:[~2026-02-09  8:30 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-28 12:43 [PATCH v4 00/15] drm/atomic: Allocate drm_private_state through a callback Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 01/15] drm/atomic: Make drm_atomic_private_obj_init fallible Maxime Ripard
2026-02-09  8:29   ` Thomas Zimmermann
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 02/15] drm/atomic: Add new atomic_create_state callback to drm_private_obj Maxime Ripard
2026-02-09  8:29   ` Thomas Zimmermann
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 03/15] drm/atomic-helper: Add private_obj atomic_create_state helper Maxime Ripard
2026-02-09  8:29   ` Thomas Zimmermann
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 04/15] drm/bridge: Switch private_obj initialization to atomic_create_state Maxime Ripard
2026-02-09  8:30   ` Thomas Zimmermann [this message]
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 05/15] drm/dp_mst: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 06/15] drm/dp_tunnel: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 07/15] drm/amdgpu: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 08/15] drm/arm: komeda: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 09/15] drm/ingenic: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 10/15] drm/msm: mdp5: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 11/15] drm/msm: dpu1: " Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 12/15] drm/omapdrm: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 13/15] drm/tegra: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 14/15] drm/vc4: " Maxime Ripard
2026-02-07 20:34   ` Maíra Canal
2026-02-10  9:13     ` Maxime Ripard
2026-02-10  9:11   ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 15/15] drm/atomic: Remove state argument to drm_atomic_private_obj_init Maxime Ripard
2026-02-07 20:37   ` Maíra Canal

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=ead8313b-3823-467f-a402-d5436bfc13fa@suse.de \
    --to=tzimmermann@suse.de \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=dmitry.baryshkov@oss.qualcomm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=rfoss@kernel.org \
    --cc=simona@ffwll.ch \
    /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