All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Noralf Trønnes" <noralf@tronnes.org>
Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org,
	sw0312.kim@samsung.com, linux@armlinux.org.uk,
	dri-devel@lists.freedesktop.org, hdegoede@redhat.com,
	kyungmin.park@samsung.com, tomi.valkeinen@ti.com,
	bskeggs@redhat.com, rodrigo.vivi@intel.com,
	alexander.deucher@amd.com, christian.koenig@amd.com
Subject: Re: [PATCH 02/15] drm: Add drm_device->drm_fb_helper_private pointer
Date: Fri, 20 Oct 2017 19:00:35 +0300	[thread overview]
Message-ID: <20171020160035.GL10981@intel.com> (raw)
In-Reply-To: <3b5e75ee-a306-087e-ab1c-ad4ea668f1a0@tronnes.org>

On Fri, Oct 20, 2017 at 05:44:15PM +0200, Noralf Trønnes wrote:
> 
> Den 20.10.2017 15.52, skrev Ville Syrjälä:
> > On Fri, Oct 20, 2017 at 01:02:00AM +0200, Noralf Trønnes wrote:
> >> drm_fb_helper is *the* way of doing fbdev emulation so add a pointer to
> >> struct drm_device. This makes it possible to add callback helpers for
> >> .last_close and .output_poll_changed further reducing fbdev emulation
> >> footprint in drivers. The pointer is set by drm_fb_helper_init() and
> >> cleared by drm_fb_helper_fini().
> >>
> >> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> >> ---
> >>
> >> This patch was initially part of the patchset: drm/tinydrm: Use vmalloc BO
> >> Changes since previous version:
> >> - Change member name: fbdev -> drm_fb_helper_private
> >> - Expand docs
> >> - Set and clear pointer in drm_fb_helper_init/fini()
> >>
> >>   drivers/gpu/drm/drm_fb_helper.c | 13 +++++++++++--
> >>   include/drm/drm_device.h        |  9 +++++++++
> >>   2 files changed, 20 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> >> index 954cdd48de92..c07b7af8de4c 100644
> >> --- a/drivers/gpu/drm/drm_fb_helper.c
> >> +++ b/drivers/gpu/drm/drm_fb_helper.c
> >> @@ -799,8 +799,10 @@ int drm_fb_helper_init(struct drm_device *dev,
> >>   	struct drm_mode_config *config = &dev->mode_config;
> >>   	int i;
> >>   
> >> -	if (!drm_fbdev_emulation)
> >> +	if (!drm_fbdev_emulation) {
> >> +		dev->drm_fb_helper_private = fb_helper;
> >>   		return 0;
> >> +	}
> >>   
> >>   	if (!max_conn_count)
> >>   		return -EINVAL;
> >> @@ -835,6 +837,8 @@ int drm_fb_helper_init(struct drm_device *dev,
> >>   		i++;
> >>   	}
> >>   
> >> +	dev->drm_fb_helper_private = fb_helper;
> >> +
> >>   	return 0;
> >>   out_free:
> >>   	drm_fb_helper_crtc_free(fb_helper);
> >> @@ -913,7 +917,12 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper)
> >>   {
> >>   	struct fb_info *info;
> >>   
> >> -	if (!drm_fbdev_emulation || !fb_helper)
> >> +	if (!fb_helper)
> >> +		return;
> >> +
> >> +	fb_helper->dev->drm_fb_helper_private = NULL;
> >> +
> >> +	if (!drm_fbdev_emulation)
> >>   		return;
> >>   
> >>   	cancel_work_sync(&fb_helper->resume_work);
> >> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> >> index e21af87a2f3c..6b26262658ae 100644
> >> --- a/include/drm/drm_device.h
> >> +++ b/include/drm/drm_device.h
> >> @@ -17,6 +17,7 @@ struct drm_vblank_crtc;
> >>   struct drm_sg_mem;
> >>   struct drm_local_map;
> >>   struct drm_vma_offset_manager;
> >> +struct drm_fb_helper;
> >>   
> >>   struct inode;
> >>   
> >> @@ -185,6 +186,14 @@ struct drm_device {
> >>   	struct drm_vma_offset_manager *vma_offset_manager;
> >>   	/*@} */
> >>   	int switch_power_state;
> >> +
> >> +	/**
> >> +	 * @drm_fb_helper_private:
> >> +	 *
> >> +	 * Pointer to the fbdev emulation structure.
> >> +	 * Set by drm_fb_helper_init() and cleared by drm_fb_helper_fini().
> >> +	 */
> >> +	struct drm_fb_helper *drm_fb_helper_private;
> > Just 'fb_helper' maybe? Not sure what the _private here is supposed to
> > mean, and drm_ seems very much redundant.
> 
> I first called it fbdev, Daniel suggested fbdev_helper_private, then I
> took it all the way and called it drm_fb_helper_private. I believe the
> _private part is an indication that this is not part of the core, but a
> helper, like drm_plane->helper_private.

IMO those we should rename to helper_funcs since that's what they always
are. IIRC they used to be void* and then the _private made more sense to
me since you couldn't directly know what they were pointing at.

To me _private means that it's totally up to driver to specify what to
put there (eg. like we have private_flags in the mode structure).

And I believe the "helper" part in "fb_helper" should be enough of a hint
to anyone that this has something to do with a helper ;)

> 
> fb_helper is the common variable name used in drm_fb_helper (which
> really should have been called drm_fbdev_helper imo).

Yeah. On a first glance one might think drm_fb_helper has something
to do with drm_framebuffers.

> 
> These are the names that drivers use:
> 
>      struct amdgpu_fbdev *rfbdev;
>      struct drm_fb_helper    *fbdev;
>      struct ast_fbdev *fbdev;
>      struct drm_fb_helper fb.helper;
>      struct cirrus_fbdev        *gfbdev;
>      struct drm_fb_helper    fb_helper;
>      struct drm_fb_helper *fb_helper;
>      void *fbdev;
>      struct hibmc_fbdev *fbdev;
>      struct mga_fbdev *mfbdev;
>      struct drm_fb_helper *fbdev;
>      struct nouveau_fbdev *fbcon;
>      struct drm_fb_helper *fbdev;
>      struct qxl_fbdev *qfbdev;
>      struct radeon_fbdev *rfbdev;
>      struct drm_fb_helper fbdev_helper;
>      struct tegra_fbdev *fbdev;
>      struct udl_fbdev *fbdev;
>      struct virtio_gpu_fbdev *vgfbdev;
>      struct vbox_fbdev *fbdev;
> 
> Noralf.
> 
> >>   };
> >>   
> >>   #endif
> >> -- 
> >> 2.14.2
> >>
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-10-20 16:00 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-19 23:01 [PATCH 00/15] drm/fb-helper: Add .last_close and .output_poll_changed helpers Noralf Trønnes
2017-10-19 23:01 ` [PATCH 01/15] drm/fb-helper: Handle function NULL argument Noralf Trønnes
2017-10-19 23:02 ` [PATCH 02/15] drm: Add drm_device->drm_fb_helper_private pointer Noralf Trønnes
2017-10-20 13:29   ` Daniel Vetter
2017-10-20 13:52   ` Ville Syrjälä
2017-10-20 15:44     ` Noralf Trønnes
2017-10-20 16:00       ` Ville Syrjälä [this message]
2017-10-20 17:11         ` Noralf Trønnes
2017-10-30  9:25           ` Daniel Vetter
2017-10-19 23:02 ` [PATCH 03/15] drm/fb-helper: Add .last_close and .output_poll_changed helpers Noralf Trønnes
2017-10-19 23:02 ` [PATCH 04/15] drm/amdgpu: Use drm_fb_helper_lastclose() and _poll_changed() Noralf Trønnes
2017-10-19 23:02 ` [PATCH 05/15] drm/armada: " Noralf Trønnes
2017-10-23 10:10   ` Russell King - ARM Linux
2017-10-19 23:02 ` [PATCH 06/15] drm/exynos: " Noralf Trønnes
2017-10-19 23:02 ` [PATCH 07/15] drm/gma500: " Noralf Trønnes
2017-10-19 23:02 ` [PATCH 08/15] drm/i915: Use drm_fb_helper_output_poll_changed() Noralf Trønnes
2017-10-19 23:02 ` [PATCH 09/15] drm/msm: Use drm_fb_helper_lastclose() and _poll_changed() Noralf Trønnes
2017-10-19 23:02 ` [PATCH 10/15] drm/nouveau: Use drm_fb_helper_output_poll_changed() Noralf Trønnes
2017-10-19 23:02 ` [PATCH 11/15] drm/omap: Use drm_fb_helper_lastclose() and _poll_changed() Noralf Trønnes
2017-10-19 23:02 ` [PATCH 12/15] drm/radeon: " Noralf Trønnes
2017-10-19 23:02 ` [PATCH 13/15] drm/rockchip: " Noralf Trønnes
2017-10-19 23:02 ` [PATCH 14/15] drm/tegra: " Noralf Trønnes
2017-10-19 23:02 ` [PATCH 15/15] staging: vboxvideo: Use drm_fb_helper_lastclose() Noralf Trønnes
2017-10-23  6:43   ` Hans de Goede
2017-10-19 23:46 ` ✓ Fi.CI.BAT: success for drm/fb-helper: Add .last_close and .output_poll_changed helpers Patchwork
2017-10-20  1:02 ` ✓ Fi.CI.IGT: " Patchwork

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=20171020160035.GL10981@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=alexander.deucher@amd.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux@armlinux.org.uk \
    --cc=noralf@tronnes.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=sw0312.kim@samsung.com \
    --cc=tomi.valkeinen@ti.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.