All of lore.kernel.org
 help / color / mirror / Atom feed
From: Archit Taneja <architt@codeaurora.org>
To: dri-devel@lists.freedesktop.org, daniel@ffwll.ch
Cc: 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,
	Archit Taneja <architt@codeaurora.org>
Subject: [RFC v2 3/6] drm/tegra: Remove local fbdev emulation Kconfig option
Date: Mon, 13 Jul 2015 12:12:08 +0530	[thread overview]
Message-ID: <1436769731-4816-4-git-send-email-architt@codeaurora.org> (raw)
In-Reply-To: <1436769731-4816-1-git-send-email-architt@codeaurora.org>
In-Reply-To: <1425980493-27533-1-git-send-email-architt@codeaurora.org>

DRM_TEGRA_FBDEV config is currently used to enable/disable fbdev emulation
for the tegra 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 tegra_drm struct that adds/removes the terga_fbdev member
has been removed completely. This helps in calling stub drm fb helper
functions at not much cost.

We could clean up fb.c a bit further to reduce the number of #ifdefs, but
that's left for later.

Signed-off-by: Archit Taneja <architt@codeaurora.org>
---
 drivers/gpu/drm/tegra/Kconfig | 12 ------------
 drivers/gpu/drm/tegra/drm.c   | 15 ++++++++++-----
 drivers/gpu/drm/tegra/drm.h   |  8 --------
 drivers/gpu/drm/tegra/fb.c    | 25 ++++++-------------------
 4 files changed, 16 insertions(+), 44 deletions(-)

diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig
index 74d9d62..63ebb15 100644
--- a/drivers/gpu/drm/tegra/Kconfig
+++ b/drivers/gpu/drm/tegra/Kconfig
@@ -16,18 +16,6 @@ config DRM_TEGRA
 
 if DRM_TEGRA
 
-config DRM_TEGRA_FBDEV
-	bool "Enable legacy fbdev support"
-	select DRM_KMS_FB_HELPER
-	select FB_SYS_FILLRECT
-	select FB_SYS_COPYAREA
-	select FB_SYS_IMAGEBLIT
-	default y
-	help
-	  Choose this option if you have a need for the legacy fbdev support.
-	  Note that this support also provides the Linux console on top of
-	  the Tegra modesetting driver.
-
 config DRM_TEGRA_DEBUG
 	bool "NVIDIA Tegra DRM debug support"
 	help
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 427f50c..e884e54 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -104,11 +104,17 @@ static int tegra_atomic_commit(struct drm_device *drm,
 	return 0;
 }
 
+static inline void tegra_fb_output_poll_changed(struct drm_device *drm)
+{
+	struct tegra_drm *tegra = drm->dev_private;
+
+	if (tegra->fbdev)
+		drm_fb_helper_hotplug_event(&tegra->fbdev->base);
+}
+
 static const struct drm_mode_config_funcs tegra_drm_mode_funcs = {
 	.fb_create = tegra_fb_create,
-#ifdef CONFIG_DRM_TEGRA_FBDEV
 	.output_poll_changed = tegra_fb_output_poll_changed,
-#endif
 	.atomic_check = drm_atomic_helper_check,
 	.atomic_commit = tegra_atomic_commit,
 };
@@ -259,11 +265,10 @@ static void tegra_drm_context_free(struct tegra_drm_context *context)
 
 static void tegra_drm_lastclose(struct drm_device *drm)
 {
-#ifdef CONFIG_DRM_TEGRA_FBDEV
 	struct tegra_drm *tegra = drm->dev_private;
 
-	tegra_fbdev_restore_mode(tegra->fbdev);
-#endif
+	if (tegra->fbdev)
+		drm_fb_helper_restore_fbdev_mode_unlocked(&tegra->fbdev->base);
 }
 
 static struct host1x_bo *
diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index 659b2fc..25ee5ea 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -29,12 +29,10 @@ struct tegra_fb {
 	unsigned int num_planes;
 };
 
-#ifdef CONFIG_DRM_TEGRA_FBDEV
 struct tegra_fbdev {
 	struct drm_fb_helper base;
 	struct tegra_fb *fb;
 };
-#endif
 
 struct tegra_drm {
 	struct drm_device *drm;
@@ -45,9 +43,7 @@ struct tegra_drm {
 	struct mutex clients_lock;
 	struct list_head clients;
 
-#ifdef CONFIG_DRM_TEGRA_FBDEV
 	struct tegra_fbdev *fbdev;
-#endif
 
 	unsigned int pitch_align;
 
@@ -263,10 +259,6 @@ int tegra_drm_fb_prepare(struct drm_device *drm);
 void tegra_drm_fb_free(struct drm_device *drm);
 int tegra_drm_fb_init(struct drm_device *drm);
 void tegra_drm_fb_exit(struct drm_device *drm);
-#ifdef CONFIG_DRM_TEGRA_FBDEV
-void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev);
-void tegra_fb_output_poll_changed(struct drm_device *drm);
-#endif
 
 extern struct platform_driver tegra_dc_driver;
 extern struct platform_driver tegra_dsi_driver;
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
index a2d66f9..1fd595c 100644
--- a/drivers/gpu/drm/tegra/fb.c
+++ b/drivers/gpu/drm/tegra/fb.c
@@ -18,7 +18,7 @@ static inline struct tegra_fb *to_tegra_fb(struct drm_framebuffer *fb)
 	return container_of(fb, struct tegra_fb, base);
 }
 
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper)
 {
 	return container_of(helper, struct tegra_fbdev, base);
@@ -181,7 +181,7 @@ unreference:
 	return ERR_PTR(err);
 }
 
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 static struct fb_ops tegra_fb_ops = {
 	.owner = THIS_MODULE,
 	.fb_fillrect = drm_fb_helper_sys_fillrect,
@@ -355,24 +355,11 @@ static void tegra_fbdev_exit(struct tegra_fbdev *fbdev)
 	tegra_fbdev_free(fbdev);
 }
 
-void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev)
-{
-	if (fbdev)
-		drm_fb_helper_restore_fbdev_mode_unlocked(&fbdev->base);
-}
-
-void tegra_fb_output_poll_changed(struct drm_device *drm)
-{
-	struct tegra_drm *tegra = drm->dev_private;
-
-	if (tegra->fbdev)
-		drm_fb_helper_hotplug_event(&tegra->fbdev->base);
-}
 #endif
 
 int tegra_drm_fb_prepare(struct drm_device *drm)
 {
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 	struct tegra_drm *tegra = drm->dev_private;
 
 	tegra->fbdev = tegra_fbdev_create(drm);
@@ -385,7 +372,7 @@ int tegra_drm_fb_prepare(struct drm_device *drm)
 
 void tegra_drm_fb_free(struct drm_device *drm)
 {
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 	struct tegra_drm *tegra = drm->dev_private;
 
 	tegra_fbdev_free(tegra->fbdev);
@@ -394,7 +381,7 @@ void tegra_drm_fb_free(struct drm_device *drm)
 
 int tegra_drm_fb_init(struct drm_device *drm)
 {
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 	struct tegra_drm *tegra = drm->dev_private;
 	int err;
 
@@ -409,7 +396,7 @@ int tegra_drm_fb_init(struct drm_device *drm)
 
 void tegra_drm_fb_exit(struct drm_device *drm)
 {
-#ifdef CONFIG_DRM_TEGRA_FBDEV
+#ifdef CONFIG_DRM_FBDEV_EMULATION
 	struct tegra_drm *tegra = drm->dev_private;
 
 	tegra_fbdev_exit(tegra->fbdev);
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

  parent reply	other threads:[~2015-07-13  6:42 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 ` Archit Taneja [this message]
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

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=1436769731-4816-4-git-send-email-architt@codeaurora.org \
    --to=architt@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=benjamin.gaignard@linaro.org \
    --cc=daniel@ffwll.ch \
    --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.