Hi,

On 21/11/2025 16:08, Linus Walleij wrote:
> Export and namespace those not prefixed with drm_* so
> it becomes possible to write custom commit tail functions
> in individual drivers using the helper infrastructure.
> 
> Signed-off-by: Linus Walleij <[email protected]>
> ---
>  drivers/gpu/drm/drm_atomic_helper.c | 54 
> +++++++++++++++++++++----------------
>  include/drm/drm_atomic_helper.h     | 19 +++++++++++++
>  2 files changed, 50 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> b/drivers/gpu/drm/drm_atomic_helper.c
> index d5ebe6ea0acb..906eb4b0852c 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -1162,8 +1162,8 @@ crtc_needs_disable(struct drm_crtc_state *old_state,
>              new_state->self_refresh_active;
>  }
>  
> -static void
> -encoder_bridge_disable(struct drm_device *dev, struct drm_atomic_state 
> *state)
> +void
> +drm_encoder_bridge_disable(struct drm_device *dev, struct drm_atomic_state 
> *state)
>  {
>       struct drm_connector *connector;
>       struct drm_connector_state *old_conn_state, *new_conn_state;
> @@ -1229,9 +1229,10 @@ encoder_bridge_disable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>               }
>       }
>  }
> +EXPORT_SYMBOL(drm_encoder_bridge_disable);

I'm not sure if it's a hard rule, but probably exported functions should
have a kernel doc.

 Tomi

>  
> -static void
> -crtc_disable(struct drm_device *dev, struct drm_atomic_state *state)
> +void
> +drm_crtc_disable(struct drm_device *dev, struct drm_atomic_state *state)
>  {
>       struct drm_crtc *crtc;
>       struct drm_crtc_state *old_crtc_state, *new_crtc_state;
> @@ -1282,9 +1283,10 @@ crtc_disable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>                       drm_crtc_vblank_put(crtc);
>       }
>  }
> +EXPORT_SYMBOL(drm_crtc_disable);
>  
> -static void
> -encoder_bridge_post_disable(struct drm_device *dev, struct drm_atomic_state 
> *state)
> +void
> +drm_encoder_bridge_post_disable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>  {
>       struct drm_connector *connector;
>       struct drm_connector_state *old_conn_state, *new_conn_state;
> @@ -1335,15 +1337,16 @@ encoder_bridge_post_disable(struct drm_device *dev, 
> struct drm_atomic_state *sta
>               drm_bridge_put(bridge);
>       }
>  }
> +EXPORT_SYMBOL(drm_encoder_bridge_post_disable);
>  
>  static void
>  disable_outputs(struct drm_device *dev, struct drm_atomic_state *state)
>  {
> -     encoder_bridge_disable(dev, state);
> +     drm_encoder_bridge_disable(dev, state);
>  
> -     crtc_disable(dev, state);
> +     drm_crtc_disable(dev, state);
>  
> -     encoder_bridge_post_disable(dev, state);
> +     drm_encoder_bridge_post_disable(dev, state);
>  }
>  
>  /**
> @@ -1446,8 +1449,8 @@ void 
> drm_atomic_helper_calc_timestamping_constants(struct drm_atomic_state *stat
>  }
>  EXPORT_SYMBOL(drm_atomic_helper_calc_timestamping_constants);
>  
> -static void
> -crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *state)
> +void
> +drm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *state)
>  {
>       struct drm_crtc *crtc;
>       struct drm_crtc_state *new_crtc_state;
> @@ -1508,6 +1511,7 @@ crtc_set_mode(struct drm_device *dev, struct 
> drm_atomic_state *state)
>               drm_bridge_put(bridge);
>       }
>  }
> +EXPORT_SYMBOL(drm_crtc_set_mode);
>  
>  /**
>   * drm_atomic_helper_commit_modeset_disables - modeset commit to disable 
> outputs
> @@ -1531,12 +1535,12 @@ void drm_atomic_helper_commit_modeset_disables(struct 
> drm_device *dev,
>       drm_atomic_helper_update_legacy_modeset_state(dev, state);
>       drm_atomic_helper_calc_timestamping_constants(state);
>  
> -     crtc_set_mode(dev, state);
> +     drm_crtc_set_mode(dev, state);
>  }
>  EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_disables);
>  
> -static void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
> -                                             struct drm_atomic_state *state)
> +void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
> +                                      struct drm_atomic_state *state)
>  {
>       struct drm_connector *connector;
>       struct drm_connector_state *new_conn_state;
> @@ -1555,9 +1559,10 @@ static void drm_atomic_helper_commit_writebacks(struct 
> drm_device *dev,
>               }
>       }
>  }
> +EXPORT_SYMBOL(drm_atomic_helper_commit_writebacks);
>  
> -static void
> -encoder_bridge_pre_enable(struct drm_device *dev, struct drm_atomic_state 
> *state)
> +void
> +drm_encoder_bridge_pre_enable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>  {
>       struct drm_connector *connector;
>       struct drm_connector_state *new_conn_state;
> @@ -1588,9 +1593,10 @@ encoder_bridge_pre_enable(struct drm_device *dev, 
> struct drm_atomic_state *state
>               drm_bridge_put(bridge);
>       }
>  }
> +EXPORT_SYMBOL(drm_encoder_bridge_pre_enable);
>  
> -static void
> -crtc_enable(struct drm_device *dev, struct drm_atomic_state *state)
> +void
> +drm_crtc_enable(struct drm_device *dev, struct drm_atomic_state *state)
>  {
>       struct drm_crtc *crtc;
>       struct drm_crtc_state *old_crtc_state;
> @@ -1619,9 +1625,10 @@ crtc_enable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>               }
>       }
>  }
> +EXPORT_SYMBOL(drm_crtc_enable);
>  
> -static void
> -encoder_bridge_enable(struct drm_device *dev, struct drm_atomic_state *state)
> +void
> +drm_encoder_bridge_enable(struct drm_device *dev, struct drm_atomic_state 
> *state)
>  {
>       struct drm_connector *connector;
>       struct drm_connector_state *new_conn_state;
> @@ -1664,6 +1671,7 @@ encoder_bridge_enable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>               drm_bridge_put(bridge);
>       }
>  }
> +EXPORT_SYMBOL(drm_encoder_bridge_enable);
>  
>  /**
>   * drm_atomic_helper_commit_modeset_enables - modeset commit to enable 
> outputs
> @@ -1682,11 +1690,11 @@ encoder_bridge_enable(struct drm_device *dev, struct 
> drm_atomic_state *state)
>  void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
>                                             struct drm_atomic_state *state)
>  {
> -     encoder_bridge_pre_enable(dev, state);
> +     drm_encoder_bridge_pre_enable(dev, state);
>  
> -     crtc_enable(dev, state);
> +     drm_crtc_enable(dev, state);
>  
> -     encoder_bridge_enable(dev, state);
> +     drm_encoder_bridge_enable(dev, state);
>  
>       drm_atomic_helper_commit_writebacks(dev, state);
>  }
> diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
> index 53382fe93537..39878aa485c3 100644
> --- a/include/drm/drm_atomic_helper.h
> +++ b/include/drm/drm_atomic_helper.h
> @@ -60,6 +60,11 @@ int drm_atomic_helper_check_plane_state(struct 
> drm_plane_state *plane_state,
>  int drm_atomic_helper_check_planes(struct drm_device *dev,
>                              struct drm_atomic_state *state);
>  int drm_atomic_helper_check_crtc_primary_plane(struct drm_crtc_state 
> *crtc_state);
> +void drm_encoder_bridge_disable(struct drm_device *dev,
> +                             struct drm_atomic_state *state);
> +void drm_crtc_disable(struct drm_device *dev, struct drm_atomic_state 
> *state);
> +void drm_encoder_bridge_post_disable(struct drm_device *dev,
> +                                  struct drm_atomic_state *state);
>  int drm_atomic_helper_check(struct drm_device *dev,
>                           struct drm_atomic_state *state);
>  void drm_atomic_helper_commit_tail(struct drm_atomic_state *state);
> @@ -89,8 +94,22 @@ drm_atomic_helper_update_legacy_modeset_state(struct 
> drm_device *dev,
>  void
>  drm_atomic_helper_calc_timestamping_constants(struct drm_atomic_state 
> *state);
>  
> +void drm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state 
> *state);
> +
>  void drm_atomic_helper_commit_modeset_disables(struct drm_device *dev,
>                                              struct drm_atomic_state *state);
> +
> +void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
> +                                      struct drm_atomic_state *state);
> +
> +void drm_encoder_bridge_pre_enable(struct drm_device *dev,
> +                                struct drm_atomic_state *state);
> +
> +void drm_crtc_enable(struct drm_device *dev, struct drm_atomic_state *state);
> +
> +void drm_encoder_bridge_enable(struct drm_device *dev,
> +                            struct drm_atomic_state *state);
> +
>  void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
>                                         struct drm_atomic_state *old_state);
>  
> 

Reply via email to