On Thu, May 07, 2026 at 05:11:15PM +0200, Albert Esteve wrote:
> On Thu, May 7, 2026 at 4:57 PM Maxime Ripard <[email protected]> wrote:
> >
> > Hi,
> >
> > On Thu, May 07, 2026 at 01:53:08PM +0200, Albert Esteve wrote:
> > > Now that all panel drivers use devm_drm_panel_alloc(),
> > > there are no external callers of drm_panel_init().
> > > Make it static to prevent new users from bypassing the
> > > refcounted allocation path.
> > >
> > > Remove stale references to drm_panel_init() in kdocs.
> > >
> > > Signed-off-by: Albert Esteve <[email protected]>
> > > ---
> > >  drivers/gpu/drm/display/drm_dp_helper.c | 2 +-
> > >  drivers/gpu/drm/drm_panel.c             | 8 ++++----
> > >  include/drm/drm_panel.h                 | 4 ----
> > >  3 files changed, 5 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/display/drm_dp_helper.c 
> > > b/drivers/gpu/drm/display/drm_dp_helper.c
> > > index a697cc227e289..380ebf0fad2be 100644
> > > --- a/drivers/gpu/drm/display/drm_dp_helper.c
> > > +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> > > @@ -4626,7 +4626,7 @@ static const struct backlight_ops dp_aux_bl_ops = {
> > >   * Backlight will then be handled transparently without requiring
> > >   * any intervention from the driver.
> > >   *
> > > - * drm_panel_dp_aux_backlight() must be called after the call to 
> > > drm_panel_init().
> > > + * drm_panel_dp_aux_backlight() must be called after 
> > > devm_drm_panel_alloc().
> > >   *
> > >   * Return: 0 on success or a negative error code on failure.
> > >   */
> > > diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
> > > index d1e6598ea3bc0..e3e1c5ceb8ff8 100644
> > > --- a/drivers/gpu/drm/drm_panel.c
> > > +++ b/drivers/gpu/drm/drm_panel.c
> > > @@ -56,8 +56,9 @@ static LIST_HEAD(panel_list);
> > >   * Initialize the panel structure for subsequent registration with
> > >   * drm_panel_add().
> > >   */
> > > -void drm_panel_init(struct drm_panel *panel, struct device *dev,
> > > -                 const struct drm_panel_funcs *funcs, int connector_type)
> > > +static void drm_panel_init(struct drm_panel *panel, struct device *dev,
> > > +                        const struct drm_panel_funcs *funcs,
> > > +                        int connector_type)
> > >  {
> > >       if (connector_type == DRM_MODE_CONNECTOR_Unknown)
> > >               DRM_WARN("%s: %s: a valid connector type is required!\n", 
> > > __func__, dev_name(dev));
> > > @@ -69,7 +70,6 @@ void drm_panel_init(struct drm_panel *panel, struct 
> > > device *dev,
> > >       panel->funcs = funcs;
> > >       panel->connector_type = connector_type;
> > >  }
> > > -EXPORT_SYMBOL(drm_panel_init);
> > >
> > >  /**
> > >   * drm_panel_add - add a panel to the global registry
> > > @@ -708,7 +708,7 @@ EXPORT_SYMBOL(devm_drm_panel_add_follower);
> > >   * A typical implementation for a panel driver supporting device tree
> > >   * will call this function at probe time. Backlight will then be handled
> > >   * transparently without requiring any intervention from the driver.
> > > - * drm_panel_of_backlight() must be called after the call to 
> > > drm_panel_init().
> > > + * drm_panel_of_backlight() must be called after devm_drm_panel_alloc().
> >
> > I think we can drop that sentence entirely. Now that we can only get a
> > panel structure through devm_drm_panel_alloc, and that it also
> > initializes it, we can't call drm_panel_of_backlight before having an
> > initialized drm_panel.
> 
> Makes sense, I will remove the sentence and send a v2. It probably
> follows the same reasoning, but just to ensure you did not miss it:
> does that apply to drm_panel_dp_aux_backlight() above too?

Yep, thanks!
Maxime

Attachment: signature.asc
Description: PGP signature

Reply via email to