[Freedreno] [PATCH v3 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup
Sam Ravnborg
sam at ravnborg.org
Fri Jan 27 17:35:18 UTC 2023
On Fri, Jan 27, 2023 at 03:21:30PM +0100, Thomas Zimmermann wrote:
> Hi
>
> Am 25.01.23 um 22:03 schrieb Sam Ravnborg:
> > Hi Thomas,
> >
> > On Wed, Jan 25, 2023 at 09:04:09PM +0100, Thomas Zimmermann wrote:
> > > Initialize the fb-helper structure immediately after its allocation
> > > in drm_fbdev_generic_setup(). That will make it easier to fill it with
> > > driver-specific values, such as the preferred BPP.
> > >
> > > Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> > > Reviewed-by: Javier Martinez Canillas <javierm at redhat.com>
> > > ---
> > > drivers/gpu/drm/drm_fbdev_generic.c | 13 +++++++++----
> > > 1 file changed, 9 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c
> > > index 135d58b8007b..63f66325a8a5 100644
> > > --- a/drivers/gpu/drm/drm_fbdev_generic.c
> > > +++ b/drivers/gpu/drm/drm_fbdev_generic.c
> > > @@ -385,8 +385,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
> > > if (dev->fb_helper)
> > > return drm_fb_helper_hotplug_event(dev->fb_helper);
> > > - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs);
> > > -
> > > ret = drm_fb_helper_init(dev, fb_helper);
> > > if (ret)
> > > goto err;
> >
> > From the documentation:
> > The drm_fb_helper_prepare()
> > helper must be called first to initialize the minimum required to make
> > hotplug detection work.
> > ...
> > To finish up the fbdev helper initialization, the
> > drm_fb_helper_init() function is called.
> >
> > So this change do not follow the documentation as drm_fb_helper_init()
> > is now called before drm_fb_helper_prepare()
>
> No, we now call drm_fb_helper_prepare() from within
> drm_fbdev_generic_setup(), right after allocating the fb_helper.
> drm_fb_helper_init() will only be called after the client received a
> hot-plug event.
>
> >
> > I did not follow all the code - but my gut feeling is that the
> > documentation is right.
>
> The docs are of low quality. The _prepare() helper is the actual init
> function and _init() only sets the fb_helper in the device instance.
OK, thanks for the follow-up.
Sam
More information about the Freedreno
mailing list