All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Archit Taneja <architt@codeaurora.org>
Cc: dri-devel@lists.freedesktop.org, daniel@ffwll.ch,
	linux-arm-msm@vger.kernel.org, airlied@linux.ie,
	treding@nvidia.com, p.zabel@pengutronix.de,
	benjamin.gaignard@linaro.org, jani.nikula@linux.intel.com
Subject: Re: [RFC v2 6/6] drm/i915: Remove local fbdev emulation Kconfig option
Date: Mon, 13 Jul 2015 09:10:01 +0200	[thread overview]
Message-ID: <20150713071001.GJ3736@phenom.ffwll.local> (raw)
In-Reply-To: <1436769731-4816-7-git-send-email-architt@codeaurora.org>

On Mon, Jul 13, 2015 at 12:12:11PM +0530, Archit Taneja wrote:
> DRM_I915_FBDEV config is currently used to enable/disable fbdev emulation
> for the i915 kms driver.
> 
> Replace this with the top level DRM_FBDEV_EMULATION config option. Using
> this config lets us also prevent wrapping around drm_fb_helper_* calls with
> 
> The #ifdef in drm_i915_private struct adding/removing members intel_fbdev
> and fbdev_suspend_work has been removed. This helps us use stub drm helper
> functions at not much cost.
> 
> Signed-off-by: Archit Taneja <architt@codeaurora.org>
> ---
>  drivers/gpu/drm/i915/Kconfig         | 15 ---------------
>  drivers/gpu/drm/i915/Makefile        |  4 ++--
>  drivers/gpu/drm/i915/i915_debugfs.c  |  2 +-
>  drivers/gpu/drm/i915/i915_drv.h      |  2 --
>  drivers/gpu/drm/i915/intel_display.c | 10 ++++------
>  drivers/gpu/drm/i915/intel_dp_mst.c  | 14 ++++++++------
>  drivers/gpu/drm/i915/intel_drv.h     |  3 +--
>  drivers/gpu/drm/i915/intel_fbdev.c   |  7 -------
>  8 files changed, 16 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
> index 74acca9..bd9ccfc 100644
> --- a/drivers/gpu/drm/i915/Kconfig
> +++ b/drivers/gpu/drm/i915/Kconfig
> @@ -45,21 +45,6 @@ config DRM_I915_KMS
>  
>  	  If in doubt, say "Y".
>  
> -config DRM_I915_FBDEV
> -	bool "Enable legacy fbdev support for the modesetting intel driver"
> -	depends on DRM_I915
> -	select DRM_KMS_FB_HELPER
> -	select FB_CFB_FILLRECT
> -	select FB_CFB_COPYAREA
> -	select FB_CFB_IMAGEBLIT

Hm, your new generic fbdev emulation doesn't select the FB helpers we need
here, which probably breaks compilation. I think we just need to add all
these selects to the new core fbev emulation config - most drivers want
them anyway. And even for the drivers that have their own drawing routines
(udl and qxl afaik) the only thing they do is wrap calls to the ->dirty
callback around the cfb helpers. And we probably want to move this to the
fbdev helper library eventually anyway.

> -	default y
> -	help
> -	  Choose this option if you have a need for the legacy fbdev
> -	  support. Note that this support also provide the linux console
> -	  support on top of the intel modesetting driver.
> -
> -	  If in doubt, say "Y".
> -
>  config DRM_I915_PRELIMINARY_HW_SUPPORT
>  	bool "Enable preliminary support for prerelease Intel hardware by default"
>  	depends on DRM_I915
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index b7ddf48..355e43f 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -56,8 +56,8 @@ i915-y += intel_audio.o \
>  	  intel_psr.o \
>  	  intel_sideband.o \
>  	  intel_sprite.o
> -i915-$(CONFIG_ACPI)		+= intel_acpi.o intel_opregion.o
> -i915-$(CONFIG_DRM_I915_FBDEV)	+= intel_fbdev.o
> +i915-$(CONFIG_ACPI)			+= intel_acpi.o intel_opregion.o
> +i915-$(CONFIG_DRM_FBDEV_EMULATION)	+= intel_fbdev.o
>  
>  # modesetting output/encoder code
>  i915-y += dvo_ch7017.o \
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 82bbe3f..bcce317 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1849,7 +1849,7 @@ static int i915_gem_framebuffer_info(struct seq_file *m, void *data)
>  	struct intel_fbdev *ifbdev = NULL;
>  	struct intel_framebuffer *fb;
>  
> -#ifdef CONFIG_DRM_I915_FBDEV
> +#ifdef CONFIG_DRM_FBDEV_EMULATION
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  
>  	ifbdev = dev_priv->fbdev;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 542fac6..ab5881c 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1798,11 +1798,9 @@ struct drm_i915_private {
>  
>  	struct drm_i915_gem_object *vlv_pctx;
>  
> -#ifdef CONFIG_DRM_I915_FBDEV

Hm for i915 I'd prefer to just replace one Kconfig symbol with the new one
and leave all the #ifdefs around. We try hard to remove all the fbdev
related code completely and that won't be the case when reintroducing some
of the runtime checks like you do. We could do something like

#ifdef CONFIG_DRM_FBDEV_EMULATION
#define HAS_FBDEV(dev_priv) 0
#else
#define HAS_FBDEV(dev_priv) ((dev_priv)->fbdev)
#endif

though. But really doing that is not your job ;-)

Cheers, Daniel

>  	/* list of fbdev register on this device */
>  	struct intel_fbdev *fbdev;
>  	struct work_struct fbdev_suspend_work;
> -#endif
>  
>  	struct drm_property *broadcast_rgb_property;
>  	struct drm_property *force_audio_property;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 1b61f98..0acd801 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -9886,7 +9886,6 @@ static struct drm_framebuffer *
>  mode_fits_in_fbdev(struct drm_device *dev,
>  		   struct drm_display_mode *mode)
>  {
> -#ifdef CONFIG_DRM_I915_FBDEV
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct drm_i915_gem_object *obj;
>  	struct drm_framebuffer *fb;
> @@ -9909,9 +9908,6 @@ mode_fits_in_fbdev(struct drm_device *dev,
>  		return NULL;
>  
>  	return fb;
> -#else
> -	return NULL;
> -#endif
>  }
>  
>  static int intel_modeset_setup_plane_state(struct drm_atomic_state *state,
> @@ -14296,11 +14292,13 @@ intel_user_framebuffer_create(struct drm_device *dev,
>  	return intel_framebuffer_create(dev, mode_cmd, obj);
>  }
>  
> -#ifndef CONFIG_DRM_I915_FBDEV
>  static inline void intel_fbdev_output_poll_changed(struct drm_device *dev)
>  {
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +
> +	if (dev_priv->fbdev)
> +		drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
>  }
> -#endif
>  
>  static const struct drm_mode_config_funcs intel_mode_funcs = {
>  	.fb_create = intel_user_framebuffer_create,
> diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
> index 6e4cc53..66eaf6f 100644
> --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> @@ -395,18 +395,20 @@ static bool intel_dp_mst_get_hw_state(struct intel_connector *connector)
>  
>  static void intel_connector_add_to_fbdev(struct intel_connector *connector)
>  {
> -#ifdef CONFIG_DRM_I915_FBDEV
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> -	drm_fb_helper_add_one_connector(&dev_priv->fbdev->helper, &connector->base);
> -#endif
> +
> +	if (dev_priv->fbdev)
> +		drm_fb_helper_add_one_connector(&dev_priv->fbdev->helper,
> +			&connector->base);
>  }
>  
>  static void intel_connector_remove_from_fbdev(struct intel_connector *connector)
>  {
> -#ifdef CONFIG_DRM_I915_FBDEV
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> -	drm_fb_helper_remove_one_connector(&dev_priv->fbdev->helper, &connector->base);
> -#endif
> +
> +	if (dev_priv->fbdev)
> +		drm_fb_helper_remove_one_connector(&dev_priv->fbdev->helper,
> +			&connector->base);
>  }
>  
>  static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, const char *pathprop)
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 1059283..371b201 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1207,12 +1207,11 @@ void intel_dvo_init(struct drm_device *dev);
>  
>  
>  /* legacy fbdev emulation in intel_fbdev.c */
> -#ifdef CONFIG_DRM_I915_FBDEV
> +#ifdef CONFIG_DRM_FBDEV_EMULATION
>  extern int intel_fbdev_init(struct drm_device *dev);
>  extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie);
>  extern void intel_fbdev_fini(struct drm_device *dev);
>  extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
> -extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
>  extern void intel_fbdev_restore_mode(struct drm_device *dev);
>  #else
>  static inline int intel_fbdev_init(struct drm_device *dev)
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index 4aa21f7..445c35f 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -798,13 +798,6 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
>  	console_unlock();
>  }
>  
> -void intel_fbdev_output_poll_changed(struct drm_device *dev)
> -{
> -	struct drm_i915_private *dev_priv = dev->dev_private;
> -	if (dev_priv->fbdev)
> -		drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
> -}
> -
>  void intel_fbdev_restore_mode(struct drm_device *dev)
>  {
>  	int ret;
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> hosted by The Linux Foundation
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

      reply	other threads:[~2015-07-13  7:07 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-10  9:41 [RFC 0/6] drm: Add DRM_FBDEV_EMULATION Kconfig option Archit Taneja
2015-03-10  9:41 ` [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Archit Taneja
2015-03-10  9:41   ` Archit Taneja
2015-03-10  9:46   ` Daniel Vetter
2015-03-10  9:46     ` Daniel Vetter
2015-03-10  9:54     ` Archit Taneja
2015-03-10  9:47   ` Daniel Vetter
2015-03-10  9:47     ` Daniel Vetter
2015-03-10  9:52     ` Archit Taneja
2015-03-10  9:52       ` Archit Taneja
2015-03-10 10:05       ` Daniel Vetter
2015-03-10 10:05         ` Daniel Vetter
2015-03-10 10:22         ` Archit Taneja
2015-03-10 10:22           ` Archit Taneja
2015-03-10 12:17           ` Daniel Vetter
2015-03-10 12:17             ` Daniel Vetter
2015-03-11  8:21             ` Archit Taneja
2015-03-11  8:21               ` Archit Taneja
2015-03-11 15:17               ` Daniel Vetter
2015-03-11 15:17                 ` Daniel Vetter
2015-03-13  6:25                 ` Archit Taneja
2015-03-13  6:37                   ` Archit Taneja
2015-03-13  6:25                   ` Archit Taneja
2015-03-13  9:06                   ` Daniel Vetter
2015-03-13  9:06                     ` Daniel Vetter
2015-03-13  9:06                     ` Daniel Vetter
2015-03-13  9:46                     ` Jani Nikula
2015-03-13  9:46                       ` Jani Nikula
2015-03-13  9:46                       ` Jani Nikula
2015-03-13 11:00                     ` Archit Taneja
2015-03-13 11:12                       ` Archit Taneja
2015-03-13 11:00                       ` Archit Taneja
2015-03-25  8:17                     ` Archit Taneja
2015-03-25  8:29                       ` Archit Taneja
2015-03-25  8:17                       ` Archit Taneja
2015-03-25  9:21                       ` Daniel Vetter
2015-03-25  9:21                         ` Daniel Vetter
2015-06-30  7:10                         ` Daniel Vetter
2015-06-30  7:10                           ` Daniel Vetter
2015-06-30  7:10                           ` Daniel Vetter
2015-06-30  7:56                           ` Archit Taneja
2015-06-30  7:56                             ` Archit Taneja
2015-06-30  8:31                             ` Benjamin Gaignard
2015-06-30  8:31                               ` Benjamin Gaignard
2015-06-30  8:31                               ` Benjamin Gaignard
2015-06-30  9:04                               ` Daniel Vetter
2015-06-30  9:04                                 ` Daniel Vetter
2015-06-30  9:04                                 ` Daniel Vetter
2015-07-03 12:32                                 ` Thierry Reding
2015-07-03 12:32                                   ` Thierry Reding
2015-07-03 12:32                                   ` Thierry Reding
2015-07-03 13:33                                   ` Rob Clark
2015-07-03 13:33                                     ` Rob Clark
2015-07-03 13:33                                     ` Rob Clark
2015-06-30  9:06                               ` Archit Taneja
2015-06-30  9:18                                 ` Archit Taneja
2015-06-30  9:06                                 ` Archit Taneja
2015-03-10 15:33           ` Jani Nikula
2015-03-11  4:57             ` Archit Taneja
2015-03-10  9:41 ` [RFC 2/6] drm/msm: Remove local fbdev emulation Kconfig option Archit Taneja
2015-03-10  9:41   ` Archit Taneja
2015-03-10  9:41 ` [RFC 3/6] drm/i915: " Archit Taneja
2015-03-10  9:41   ` Archit Taneja
2015-03-10 10:01   ` Daniel Vetter
2015-03-10 10:10     ` Archit Taneja
2015-03-10 10:10       ` Archit Taneja
2015-03-10  9:41 ` [RFC 4/6] drm/tegra: " Archit Taneja
2015-03-10  9:41 ` [RFC 5/6] drm/imx: " Archit Taneja
2015-03-10 10:54   ` Philipp Zabel
2015-03-11  4:53     ` Archit Taneja
2015-03-10  9:41 ` [RFC 6/6] drm/sti: " Archit Taneja
2015-03-10  9:41   ` Archit Taneja
2015-03-11 14:12   ` Benjamin Gaignard
2015-07-13  6:42 ` [RFC v2 0/6] drm: fb emulation: Step 2: Create a fbdev emulation config option Archit Taneja
2015-07-13  7:15   ` Daniel Vetter
2015-08-05  6:58   ` [PATCH v3] drm: Add top level Kconfig option for DRM fbdev emulation Archit Taneja
2015-10-27  8:10   ` [PATCH v3 0/3] drm: fb emulation: Remove remaining driver level fb emulation configs Archit Taneja
2015-10-27  8:10     ` [PATCH v3 1/3] drm/imx: Remove local fbdev emulation Kconfig option Archit Taneja
2015-10-27  8:10     ` [PATCH v3 2/3] drm/sti: " Archit Taneja
2015-10-29 13:33       ` Vincent ABRIOU
2015-10-30 10:25         ` Daniel Vetter
2015-10-30 12:30           ` Vincent ABRIOU
2015-10-30 12:37             ` Archit Taneja
2015-10-27  8:10     ` [PATCH v3 3/3] drm/tegra: " Archit Taneja
2015-10-30 10:27     ` [PATCH v3 0/3] drm: fb emulation: Remove remaining driver level fb emulation configs Daniel Vetter
2015-11-04  5:01       ` Archit Taneja
2015-07-13  6:42 ` [RFC v2 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Archit Taneja
2015-07-13  6:59   ` Daniel Vetter
2015-07-13  6:42 ` [RFC v2 2/6] drm/msm: Remove local fbdev emulation Kconfig option Archit Taneja
2015-07-13  6:42 ` [RFC v2 3/6] drm/tegra: " Archit Taneja
2015-07-13  6:42 ` [RFC v2 4/6] drm/imx: " Archit Taneja
2015-07-13  6:42 ` [RFC v2 5/6] drm/sti: " Archit Taneja
2015-07-13  6:42 ` [RFC v2 6/6] drm/i915: " Archit Taneja
2015-07-13  7:10   ` Daniel Vetter [this message]

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=20150713071001.GJ3736@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=airlied@linux.ie \
    --cc=architt@codeaurora.org \
    --cc=benjamin.gaignard@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=treding@nvidia.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.