dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Neil Armstrong <narmstrong@baylibre.com>
To: Boris Brezillon <boris.brezillon@collabora.com>,
	dri-devel@lists.freedesktop.org
Cc: Nikita Yushchenko <nikita.yoush@cogentembedded.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	Jonas Karlman <jonas@kwiboo.se>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Rob Herring <robh+dt@kernel.org>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	kernel@collabora.com, Sam Ravnborg <sam@ravnborg.org>,
	devicetree@vger.kernel.org, Chris Healy <cphealy@gmail.com>
Subject: Re: [PATCH v3 04/21] drm/bridge: Rename bridge helpers targeting a bridge chain
Date: Fri, 25 Oct 2019 15:26:58 +0200	[thread overview]
Message-ID: <bebc1b04-a149-86a4-dd3f-ed475af0ea29@baylibre.com> (raw)
In-Reply-To: <20191023154512.9762-5-boris.brezillon@collabora.com>

On 23/10/2019 17:44, Boris Brezillon wrote:
> Change the prefix of bridge helpers targeting a bridge chain from
> drm_bridge_ to drm_bridge_chain_ to better reflect the fact that
> the operation will happen on all elements of chain, starting at the
> bridge passed in argument.
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> Changes in v3:
> * None
> 
> Changes in v2:
> * Pass te bridge, not the encoder, so we can later act on a sub-chain
>   instead of the whole chain
> ---
>  drivers/gpu/drm/drm_atomic_helper.c |  19 +++--
>  drivers/gpu/drm/drm_bridge.c        | 125 ++++++++++++++--------------
>  drivers/gpu/drm/drm_probe_helper.c  |   2 +-
>  drivers/gpu/drm/mediatek/mtk_hdmi.c |   4 +-
>  include/drm/drm_bridge.h            |  64 +++++++-------
>  5 files changed, 112 insertions(+), 102 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 587052751b48..cf678be58fa4 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -435,8 +435,9 @@ mode_fixup(struct drm_atomic_state *state)
>  		encoder = new_conn_state->best_encoder;
>  		funcs = encoder->helper_private;
>  
> -		ret = drm_bridge_mode_fixup(encoder->bridge, &new_crtc_state->mode,
> -				&new_crtc_state->adjusted_mode);
> +		ret = drm_bridge_chain_mode_fixup(encoder->bridge,
> +					&new_crtc_state->mode,
> +					&new_crtc_state->adjusted_mode);
>  		if (!ret) {
>  			DRM_DEBUG_ATOMIC("Bridge fixup failed\n");
>  			return -EINVAL;
> @@ -501,7 +502,7 @@ static enum drm_mode_status mode_valid_path(struct drm_connector *connector,
>  		return ret;
>  	}
>  
> -	ret = drm_bridge_mode_valid(encoder->bridge, mode);
> +	ret = drm_bridge_chain_mode_valid(encoder->bridge, mode);
>  	if (ret != MODE_OK) {
>  		DRM_DEBUG_ATOMIC("[BRIDGE] mode_valid() failed\n");
>  		return ret;
> @@ -1020,7 +1021,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
>  		 * Each encoder has at most one connector (since we always steal
>  		 * it away), so we won't call disable hooks twice.
>  		 */
> -		drm_atomic_bridge_disable(encoder->bridge, old_state);
> +		drm_atomic_bridge_chain_disable(encoder->bridge, old_state);
>  
>  		/* Right function depends upon target state. */
>  		if (funcs) {
> @@ -1034,7 +1035,8 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
>  				funcs->dpms(encoder, DRM_MODE_DPMS_OFF);
>  		}
>  
> -		drm_atomic_bridge_post_disable(encoder->bridge, old_state);
> +		drm_atomic_bridge_chain_post_disable(encoder->bridge,
> +						     old_state);
>  	}
>  
>  	for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) {
> @@ -1215,7 +1217,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
>  			funcs->mode_set(encoder, mode, adjusted_mode);
>  		}
>  
> -		drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode);
> +		drm_bridge_chain_mode_set(encoder->bridge, mode,
> +					  adjusted_mode);
>  	}
>  }
>  
> @@ -1332,7 +1335,7 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
>  		 * Each encoder has at most one connector (since we always steal
>  		 * it away), so we won't call enable hooks twice.
>  		 */
> -		drm_atomic_bridge_pre_enable(encoder->bridge, old_state);
> +		drm_atomic_bridge_chain_pre_enable(encoder->bridge, old_state);
>  
>  		if (funcs) {
>  			if (funcs->atomic_enable)
> @@ -1343,7 +1346,7 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
>  				funcs->commit(encoder);
>  		}
>  
> -		drm_atomic_bridge_enable(encoder->bridge, old_state);
> +		drm_atomic_bridge_chain_enable(encoder->bridge, old_state);
>  	}
>  
>  	drm_atomic_helper_commit_writebacks(dev, old_state);
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index cba537c99e43..54c874493c57 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -172,8 +172,8 @@ void drm_bridge_detach(struct drm_bridge *bridge)
>   */
>  
>  /**
> - * drm_bridge_mode_fixup - fixup proposed mode for all bridges in the
> - *			   encoder chain
> + * drm_bridge_chain_mode_fixup - fixup proposed mode for all bridges in the
> + *				 encoder chain
>   * @bridge: bridge control structure
>   * @mode: desired mode to be set for the bridge
>   * @adjusted_mode: updated mode that works for this bridge
> @@ -186,9 +186,9 @@ void drm_bridge_detach(struct drm_bridge *bridge)
>   * RETURNS:
>   * true on success, false on failure
>   */
> -bool drm_bridge_mode_fixup(struct drm_bridge *bridge,
> -			const struct drm_display_mode *mode,
> -			struct drm_display_mode *adjusted_mode)
> +bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge,
> +				 const struct drm_display_mode *mode,
> +				 struct drm_display_mode *adjusted_mode)
>  {
>  	bool ret = true;
>  
> @@ -198,15 +198,16 @@ bool drm_bridge_mode_fixup(struct drm_bridge *bridge,
>  	if (bridge->funcs->mode_fixup)
>  		ret = bridge->funcs->mode_fixup(bridge, mode, adjusted_mode);
>  
> -	ret = ret && drm_bridge_mode_fixup(bridge->next, mode, adjusted_mode);
> +	ret = ret && drm_bridge_chain_mode_fixup(bridge->next, mode,
> +						 adjusted_mode);
>  
>  	return ret;
>  }
> -EXPORT_SYMBOL(drm_bridge_mode_fixup);
> +EXPORT_SYMBOL(drm_bridge_chain_mode_fixup);
>  
>  /**
> - * drm_bridge_mode_valid - validate the mode against all bridges in the
> - * 			   encoder chain.
> + * drm_bridge_chain_mode_valid - validate the mode against all bridges in the
> + *				 encoder chain.
>   * @bridge: bridge control structure
>   * @mode: desired mode to be validated
>   *
> @@ -219,8 +220,9 @@ EXPORT_SYMBOL(drm_bridge_mode_fixup);
>   * RETURNS:
>   * MODE_OK on success, drm_mode_status Enum error code on failure
>   */
> -enum drm_mode_status drm_bridge_mode_valid(struct drm_bridge *bridge,
> -					   const struct drm_display_mode *mode)
> +enum drm_mode_status
> +drm_bridge_chain_mode_valid(struct drm_bridge *bridge,
> +			    const struct drm_display_mode *mode)
>  {
>  	enum drm_mode_status ret = MODE_OK;
>  
> @@ -233,12 +235,12 @@ enum drm_mode_status drm_bridge_mode_valid(struct drm_bridge *bridge,
>  	if (ret != MODE_OK)
>  		return ret;
>  
> -	return drm_bridge_mode_valid(bridge->next, mode);
> +	return drm_bridge_chain_mode_valid(bridge->next, mode);
>  }
> -EXPORT_SYMBOL(drm_bridge_mode_valid);
> +EXPORT_SYMBOL(drm_bridge_chain_mode_valid);
>  
>  /**
> - * drm_bridge_disable - disables all bridges in the encoder chain
> + * drm_bridge_chain_disable - disables all bridges in the encoder chain
>   * @bridge: bridge control structure
>   *
>   * Calls &drm_bridge_funcs.disable op for all the bridges in the encoder
> @@ -247,20 +249,21 @@ EXPORT_SYMBOL(drm_bridge_mode_valid);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_bridge_disable(struct drm_bridge *bridge)
> +void drm_bridge_chain_disable(struct drm_bridge *bridge)
>  {
>  	if (!bridge)
>  		return;
>  
> -	drm_bridge_disable(bridge->next);
> +	drm_bridge_chain_disable(bridge->next);
>  
>  	if (bridge->funcs->disable)
>  		bridge->funcs->disable(bridge);
>  }
> -EXPORT_SYMBOL(drm_bridge_disable);
> +EXPORT_SYMBOL(drm_bridge_chain_disable);
>  
>  /**
> - * drm_bridge_post_disable - cleans up after disabling all bridges in the encoder chain
> + * drm_bridge_chain_post_disable - cleans up after disabling all bridges in the
> + *				   encoder chain
>   * @bridge: bridge control structure
>   *
>   * Calls &drm_bridge_funcs.post_disable op for all the bridges in the
> @@ -269,7 +272,7 @@ EXPORT_SYMBOL(drm_bridge_disable);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_bridge_post_disable(struct drm_bridge *bridge)
> +void drm_bridge_chain_post_disable(struct drm_bridge *bridge)
>  {
>  	if (!bridge)
>  		return;
> @@ -277,25 +280,25 @@ void drm_bridge_post_disable(struct drm_bridge *bridge)
>  	if (bridge->funcs->post_disable)
>  		bridge->funcs->post_disable(bridge);
>  
> -	drm_bridge_post_disable(bridge->next);
> +	drm_bridge_chain_post_disable(bridge->next);
>  }
> -EXPORT_SYMBOL(drm_bridge_post_disable);
> +EXPORT_SYMBOL(drm_bridge_chain_post_disable);
>  
>  /**
> - * drm_bridge_mode_set - set proposed mode for all bridges in the
> - *			 encoder chain
> + * drm_bridge_chain_mode_set - set proposed mode for all bridges in the
> + *			       encoder chain
>   * @bridge: bridge control structure
> - * @mode: desired mode to be set for the bridge
> - * @adjusted_mode: updated mode that works for this bridge
> + * @mode: desired mode to be set for the encoder chain
> + * @adjusted_mode: updated mode that works for this encoder chain
>   *
>   * Calls &drm_bridge_funcs.mode_set op for all the bridges in the
>   * encoder chain, starting from the first bridge to the last.
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_bridge_mode_set(struct drm_bridge *bridge,
> -			 const struct drm_display_mode *mode,
> -			 const struct drm_display_mode *adjusted_mode)
> +void drm_bridge_chain_mode_set(struct drm_bridge *bridge,
> +			       const struct drm_display_mode *mode,
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	if (!bridge)
>  		return;
> @@ -303,13 +306,13 @@ void drm_bridge_mode_set(struct drm_bridge *bridge,
>  	if (bridge->funcs->mode_set)
>  		bridge->funcs->mode_set(bridge, mode, adjusted_mode);
>  
> -	drm_bridge_mode_set(bridge->next, mode, adjusted_mode);
> +	drm_bridge_chain_mode_set(bridge->next, mode, adjusted_mode);
>  }
> -EXPORT_SYMBOL(drm_bridge_mode_set);
> +EXPORT_SYMBOL(drm_bridge_chain_mode_set);
>  
>  /**
> - * drm_bridge_pre_enable - prepares for enabling all
> - *			   bridges in the encoder chain
> + * drm_bridge_chain_pre_enable - prepares for enabling all bridges in the
> + *				 encoder chain
>   * @bridge: bridge control structure
>   *
>   * Calls &drm_bridge_funcs.pre_enable op for all the bridges in the encoder
> @@ -318,20 +321,20 @@ EXPORT_SYMBOL(drm_bridge_mode_set);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_bridge_pre_enable(struct drm_bridge *bridge)
> +void drm_bridge_chain_pre_enable(struct drm_bridge *bridge)
>  {
>  	if (!bridge)
>  		return;
>  
> -	drm_bridge_pre_enable(bridge->next);
> +	drm_bridge_chain_pre_enable(bridge->next);
>  
>  	if (bridge->funcs->pre_enable)
>  		bridge->funcs->pre_enable(bridge);
>  }
> -EXPORT_SYMBOL(drm_bridge_pre_enable);
> +EXPORT_SYMBOL(drm_bridge_chain_pre_enable);
>  
>  /**
> - * drm_bridge_enable - enables all bridges in the encoder chain
> + * drm_bridge_chain_enable - enables all bridges in the encoder chain
>   * @bridge: bridge control structure
>   *
>   * Calls &drm_bridge_funcs.enable op for all the bridges in the encoder
> @@ -340,7 +343,7 @@ EXPORT_SYMBOL(drm_bridge_pre_enable);
>   *
>   * Note that the bridge passed should be the one closest to the encoder
>   */
> -void drm_bridge_enable(struct drm_bridge *bridge)
> +void drm_bridge_chain_enable(struct drm_bridge *bridge)
>  {
>  	if (!bridge)
>  		return;
> @@ -348,12 +351,12 @@ void drm_bridge_enable(struct drm_bridge *bridge)
>  	if (bridge->funcs->enable)
>  		bridge->funcs->enable(bridge);
>  
> -	drm_bridge_enable(bridge->next);
> +	drm_bridge_chain_enable(bridge->next);
>  }
> -EXPORT_SYMBOL(drm_bridge_enable);
> +EXPORT_SYMBOL(drm_bridge_chain_enable);
>  
>  /**
> - * drm_atomic_bridge_disable - disables all bridges in the encoder chain
> + * drm_atomic_bridge_chain_disable - disables all bridges in the encoder chain
>   * @bridge: bridge control structure
>   * @state: atomic state being committed
>   *
> @@ -364,24 +367,24 @@ EXPORT_SYMBOL(drm_bridge_enable);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_atomic_bridge_disable(struct drm_bridge *bridge,
> -			       struct drm_atomic_state *state)
> +void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge,
> +				     struct drm_atomic_state *state)
>  {
>  	if (!bridge)
>  		return;
>  
> -	drm_atomic_bridge_disable(bridge->next, state);
> +	drm_atomic_bridge_chain_disable(bridge->next, state);
>  
>  	if (bridge->funcs->atomic_disable)
>  		bridge->funcs->atomic_disable(bridge, state);
>  	else if (bridge->funcs->disable)
>  		bridge->funcs->disable(bridge);
>  }
> -EXPORT_SYMBOL(drm_atomic_bridge_disable);
> +EXPORT_SYMBOL(drm_atomic_bridge_chain_disable);
>  
>  /**
> - * drm_atomic_bridge_post_disable - cleans up after disabling all bridges in the
> - *				    encoder chain
> + * drm_atomic_bridge_chain_post_disable - cleans up after disabling all bridges
> + *					  in the encoder chain
>   * @bridge: bridge control structure
>   * @state: atomic state being committed
>   *
> @@ -392,8 +395,8 @@ EXPORT_SYMBOL(drm_atomic_bridge_disable);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_atomic_bridge_post_disable(struct drm_bridge *bridge,
> -				    struct drm_atomic_state *state)
> +void drm_atomic_bridge_chain_post_disable(struct drm_bridge *bridge,
> +					  struct drm_atomic_state *state)
>  {
>  	if (!bridge)
>  		return;
> @@ -403,13 +406,13 @@ void drm_atomic_bridge_post_disable(struct drm_bridge *bridge,
>  	else if (bridge->funcs->post_disable)
>  		bridge->funcs->post_disable(bridge);
>  
> -	drm_atomic_bridge_post_disable(bridge->next, state);
> +	drm_atomic_bridge_chain_post_disable(bridge->next, state);
>  }
> -EXPORT_SYMBOL(drm_atomic_bridge_post_disable);
> +EXPORT_SYMBOL(drm_atomic_bridge_chain_post_disable);
>  
>  /**
> - * drm_atomic_bridge_pre_enable - prepares for enabling all bridges in the
> - *				  encoder chain
> + * drm_atomic_bridge_chain_pre_enable - prepares for enabling all bridges in
> + *					the encoder chain
>   * @bridge: bridge control structure
>   * @state: atomic state being committed
>   *
> @@ -420,23 +423,23 @@ EXPORT_SYMBOL(drm_atomic_bridge_post_disable);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_atomic_bridge_pre_enable(struct drm_bridge *bridge,
> -				  struct drm_atomic_state *state)
> +void drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge,
> +					struct drm_atomic_state *state)
>  {
>  	if (!bridge)
>  		return;
>  
> -	drm_atomic_bridge_pre_enable(bridge->next, state);
> +	drm_atomic_bridge_chain_pre_enable(bridge->next, state);
>  
>  	if (bridge->funcs->atomic_pre_enable)
>  		bridge->funcs->atomic_pre_enable(bridge, state);
>  	else if (bridge->funcs->pre_enable)
>  		bridge->funcs->pre_enable(bridge);
>  }
> -EXPORT_SYMBOL(drm_atomic_bridge_pre_enable);
> +EXPORT_SYMBOL(drm_atomic_bridge_chain_pre_enable);
>  
>  /**
> - * drm_atomic_bridge_enable - enables all bridges in the encoder chain
> + * drm_atomic_bridge_chain_enable - enables all bridges in the encoder chain
>   * @bridge: bridge control structure
>   * @state: atomic state being committed
>   *
> @@ -447,8 +450,8 @@ EXPORT_SYMBOL(drm_atomic_bridge_pre_enable);
>   *
>   * Note: the bridge passed should be the one closest to the encoder
>   */
> -void drm_atomic_bridge_enable(struct drm_bridge *bridge,
> -			      struct drm_atomic_state *state)
> +void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge,
> +				    struct drm_atomic_state *state)
>  {
>  	if (!bridge)
>  		return;
> @@ -458,9 +461,9 @@ void drm_atomic_bridge_enable(struct drm_bridge *bridge,
>  	else if (bridge->funcs->enable)
>  		bridge->funcs->enable(bridge);
>  
> -	drm_atomic_bridge_enable(bridge->next, state);
> +	drm_atomic_bridge_chain_enable(bridge->next, state);
>  }
> -EXPORT_SYMBOL(drm_atomic_bridge_enable);
> +EXPORT_SYMBOL(drm_atomic_bridge_chain_enable);
>  
>  #ifdef CONFIG_OF
>  /**
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index a7c87abe88d0..c3ea722065c4 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -112,7 +112,7 @@ drm_mode_validate_pipeline(struct drm_display_mode *mode,
>  			continue;
>  		}
>  
> -		ret = drm_bridge_mode_valid(encoder->bridge, mode);
> +		ret = drm_bridge_chain_mode_valid(encoder->bridge, mode);
>  		if (ret != MODE_OK) {
>  			/* There is also no point in continuing for crtc check
>  			 * here. */
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index c79b1f855d89..ea68b5adccbe 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -1247,8 +1247,8 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn,
>  		struct drm_display_mode adjusted_mode;
>  
>  		drm_mode_copy(&adjusted_mode, mode);
> -		if (!drm_bridge_mode_fixup(hdmi->bridge.next, mode,
> -					   &adjusted_mode))
> +		if (!drm_bridge_chain_mode_fixup(hdmi->bridge.next, mode,
> +						 &adjusted_mode))
>  			return MODE_BAD;
>  	}
>  
> diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> index c0a2286a81e9..726435baf4ad 100644
> --- a/include/drm/drm_bridge.h
> +++ b/include/drm/drm_bridge.h
> @@ -254,9 +254,10 @@ struct drm_bridge_funcs {
>  	 * there is one) when this callback is called.
>  	 *
>  	 * Note that this function will only be invoked in the context of an
> -	 * atomic commit. It will not be invoked from &drm_bridge_pre_enable. It
> -	 * would be prudent to also provide an implementation of @pre_enable if
> -	 * you are expecting driver calls into &drm_bridge_pre_enable.
> +	 * atomic commit. It will not be invoked from
> +	 * &drm_bridge_chain_pre_enable. It would be prudent to also provide an
> +	 * implementation of @pre_enable if you are expecting driver calls into
> +	 * &drm_bridge_chain_pre_enable.
>  	 *
>  	 * The @atomic_pre_enable callback is optional.
>  	 */
> @@ -279,9 +280,9 @@ struct drm_bridge_funcs {
>  	 * chain if there is one.
>  	 *
>  	 * Note that this function will only be invoked in the context of an
> -	 * atomic commit. It will not be invoked from &drm_bridge_enable. It
> -	 * would be prudent to also provide an implementation of @enable if
> -	 * you are expecting driver calls into &drm_bridge_enable.
> +	 * atomic commit. It will not be invoked from &drm_bridge_chain_enable.
> +	 * It would be prudent to also provide an implementation of @enable if
> +	 * you are expecting driver calls into &drm_bridge_chain_enable.
>  	 *
>  	 * The @atomic_enable callback is optional.
>  	 */
> @@ -301,9 +302,10 @@ struct drm_bridge_funcs {
>  	 * signals) feeding it is still running when this callback is called.
>  	 *
>  	 * Note that this function will only be invoked in the context of an
> -	 * atomic commit. It will not be invoked from &drm_bridge_disable. It
> -	 * would be prudent to also provide an implementation of @disable if
> -	 * you are expecting driver calls into &drm_bridge_disable.
> +	 * atomic commit. It will not be invoked from
> +	 * &drm_bridge_chain_disable. It would be prudent to also provide an
> +	 * implementation of @disable if you are expecting driver calls into
> +	 * &drm_bridge_chain_disable.
>  	 *
>  	 * The @atomic_disable callback is optional.
>  	 */
> @@ -325,10 +327,11 @@ struct drm_bridge_funcs {
>  	 * called.
>  	 *
>  	 * Note that this function will only be invoked in the context of an
> -	 * atomic commit. It will not be invoked from &drm_bridge_post_disable.
> +	 * atomic commit. It will not be invoked from
> +	 * &drm_bridge_chain_post_disable.
>  	 * It would be prudent to also provide an implementation of
>  	 * @post_disable if you are expecting driver calls into
> -	 * &drm_bridge_post_disable.
> +	 * &drm_bridge_chain_post_disable.
>  	 *
>  	 * The @atomic_post_disable callback is optional.
>  	 */
> @@ -406,27 +409,28 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np);
>  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
>  		      struct drm_bridge *previous);
>  
> -bool drm_bridge_mode_fixup(struct drm_bridge *bridge,
> -			   const struct drm_display_mode *mode,
> -			   struct drm_display_mode *adjusted_mode);
> -enum drm_mode_status drm_bridge_mode_valid(struct drm_bridge *bridge,
> -					   const struct drm_display_mode *mode);
> -void drm_bridge_disable(struct drm_bridge *bridge);
> -void drm_bridge_post_disable(struct drm_bridge *bridge);
> -void drm_bridge_mode_set(struct drm_bridge *bridge,
> -			 const struct drm_display_mode *mode,
> -			 const struct drm_display_mode *adjusted_mode);
> -void drm_bridge_pre_enable(struct drm_bridge *bridge);
> -void drm_bridge_enable(struct drm_bridge *bridge);
> +bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge,
> +				 const struct drm_display_mode *mode,
> +				 struct drm_display_mode *adjusted_mode);
> +enum drm_mode_status
> +drm_bridge_chain_mode_valid(struct drm_bridge *bridge,
> +			    const struct drm_display_mode *mode);
> +void drm_bridge_chain_disable(struct drm_bridge *bridge);
> +void drm_bridge_chain_post_disable(struct drm_bridge *bridge);
> +void drm_bridge_chain_mode_set(struct drm_bridge *bridge,
> +			       const struct drm_display_mode *mode,
> +			       const struct drm_display_mode *adjusted_mode);
> +void drm_bridge_chain_pre_enable(struct drm_bridge *bridge);
> +void drm_bridge_chain_enable(struct drm_bridge *bridge);
>  
> -void drm_atomic_bridge_disable(struct drm_bridge *bridge,
> -			       struct drm_atomic_state *state);
> -void drm_atomic_bridge_post_disable(struct drm_bridge *bridge,
> +void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge,
> +				     struct drm_atomic_state *state);
> +void drm_atomic_bridge_chain_post_disable(struct drm_bridge *bridge,
> +					  struct drm_atomic_state *state);
> +void drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge,
> +					struct drm_atomic_state *state);
> +void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge,
>  				    struct drm_atomic_state *state);
> -void drm_atomic_bridge_pre_enable(struct drm_bridge *bridge,
> -				  struct drm_atomic_state *state);
> -void drm_atomic_bridge_enable(struct drm_bridge *bridge,
> -			      struct drm_atomic_state *state);
>  
>  #ifdef CONFIG_DRM_PANEL_BRIDGE
>  struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel);
> 

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2019-10-25 13:27 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 15:44 [PATCH v3 00/21] drm: Add support for bus-format negotiation Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 01/21] drm/vc4: Declare the DSI encoder as a bridge element Boris Brezillon
2019-11-24 10:01   ` Laurent Pinchart
2019-11-24 10:47     ` Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 02/21] drm/exynos: Don't reset bridge->next Boris Brezillon
2019-10-28 12:19   ` Inki Dae
2019-10-23 15:44 ` [PATCH v3 03/21] drm/exynos: Declare the DSI encoder as a bridge element Boris Brezillon
2019-11-24 10:24   ` Laurent Pinchart
2019-11-24 13:17     ` Boris Brezillon
2019-11-24 13:28       ` Boris Brezillon
2019-11-24 14:02       ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 04/21] drm/bridge: Rename bridge helpers targeting a bridge chain Boris Brezillon
2019-10-25 13:26   ` Neil Armstrong [this message]
2019-11-24 10:28   ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 05/21] drm/bridge: Introduce drm_bridge_chain_get_next_bridge() Boris Brezillon
2019-10-25 13:27   ` Neil Armstrong
2019-11-24 10:33   ` Laurent Pinchart
2019-11-24 10:56     ` Boris Brezillon
2019-11-24 14:04       ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 06/21] drm: Stop accessing encoder->bridge directly Boris Brezillon
2019-10-25 13:28   ` Neil Armstrong
2019-11-24 10:39   ` Laurent Pinchart
2019-11-24 13:40     ` Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 07/21] drm/bridge: Make the bridge chain a double-linked list Boris Brezillon
2019-10-25 13:29   ` Neil Armstrong
2019-11-05 16:02     ` Neil Armstrong
2019-11-24  7:48       ` Boris Brezillon
2019-11-24 13:57   ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 08/21] drm/bridge: Add the drm_for_each_bridge_in_chain() helper Boris Brezillon
2019-10-25 13:30   ` Neil Armstrong
2019-11-24 14:07   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 09/21] drm/bridge: Add a drm_bridge_state object Boris Brezillon
2019-10-25 14:35   ` Neil Armstrong
2019-11-05 16:05   ` Neil Armstrong
2019-11-24  7:50     ` Boris Brezillon
2019-12-02 16:42   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 10/21] drm/bridge: Clarify the atomic enable/disable hooks semantics Boris Brezillon
2019-10-25 14:33   ` Neil Armstrong
2019-12-02 16:50   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 11/21] drm/bridge: Patch atomic hooks to take a drm_bridge_state Boris Brezillon
2019-12-02 16:57   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 12/21] drm/bridge: Add an ->atomic_check() hook Boris Brezillon
2019-10-25 14:35   ` Neil Armstrong
2019-12-02 17:03   ` Laurent Pinchart
2019-12-03 10:11     ` Boris Brezillon
2019-12-03 10:15       ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 13/21] drm/bridge: Add the drm_bridge_chain_get_prev_bridge() helper Boris Brezillon
2019-10-25 14:34   ` Neil Armstrong
2019-12-02 17:05   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 14/21] drm/bridge: Add the necessary bits to support bus format negotiation Boris Brezillon
2019-12-03 10:03   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 15/21] drm/imx: pd: Use bus format/flags provided by the bridge when available Boris Brezillon
2019-12-03 13:50   ` Philipp Zabel
2019-10-23 15:45 ` [PATCH v3 16/21] drm/bridge: lvds-encoder: Implement basic bus format negotiation Boris Brezillon
2019-12-03 10:14   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 17/21] dt-bindings: display: bridge: lvds-transmitter: Add new props Boris Brezillon
2019-10-25 19:57   ` Rob Herring
2019-10-31 13:04     ` Boris Brezillon
2019-12-02 17:11   ` Laurent Pinchart
2019-12-03 12:38     ` Boris Brezillon
2019-12-03 13:22       ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 18/21] drm/bridge: panel: Propage bus format/flags Boris Brezillon
2019-12-03 10:17   ` Laurent Pinchart
2020-01-22  9:27     ` Boris Brezillon
2019-10-23 15:45 ` [PATCH v3 19/21] drm/panel: simple: Add support for Toshiba LTA089AC29000 panel Boris Brezillon
2019-12-02 17:17   ` Laurent Pinchart
2019-12-03 12:42     ` Boris Brezillon
2019-12-03 13:28       ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 20/21] dt-bindings: display: panel: Add the LTA089AC29000 variant Boris Brezillon
2019-10-25 19:58   ` Rob Herring
2019-10-25 19:58     ` Rob Herring
2019-12-02 17:19   ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 21/21] ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition Boris Brezillon
2019-10-24 11:27 ` [PATCH v3 00/21] drm: Add support for bus-format negotiation Neil Armstrong
2019-10-24 13:22   ` Boris Brezillon
2019-11-24  0:46 ` Ezequiel Garcia
2019-11-24  0:46   ` Ezequiel Garcia
2019-11-24  7:32   ` Boris Brezillon
2019-11-24  9:34     ` Ezequiel Garcia

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=bebc1b04-a149-86a4-dd3f-ed475af0ea29@baylibre.com \
    --to=narmstrong@baylibre.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=andrew.smirnov@gmail.com \
    --cc=boris.brezillon@collabora.com \
    --cc=cphealy@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@siol.net \
    --cc=jonas@kwiboo.se \
    --cc=kernel@collabora.com \
    --cc=kyungmin.park@samsung.com \
    --cc=mark.rutland@arm.com \
    --cc=nikita.yoush@cogentembedded.com \
    --cc=robh+dt@kernel.org \
    --cc=sam@ravnborg.org \
    --cc=sw0312.kim@samsung.com \
    --cc=thierry.reding@gmail.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