From: Archit Taneja <architt@codeaurora.org>
To: daniel.vetter@ffwll.ch, robdclark@gmail.com, airlied@linux.ie,
treding@nvidia.com, p.zabel@pengutronix.de,
benjamin.gaignard@linaro.org
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org,
Archit Taneja <architt@codeaurora.org>
Subject: [RFC 4/6] drm/tegra: Remove local fbdev emulation Kconfig option
Date: Tue, 10 Mar 2015 15:11:31 +0530 [thread overview]
Message-ID: <1425980493-27533-5-git-send-email-architt@codeaurora.org> (raw)
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 #ifdefs
in certain places.
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 7dd328d..97ebde9 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,
};
@@ -248,11 +254,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 8cb2dfe..3a92413 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 397fb34..2eacea2 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 = sys_fillrect,
@@ -371,24 +371,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);
@@ -401,7 +388,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);
@@ -410,7 +397,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;
@@ -425,7 +412,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
next prev parent reply other threads:[~2015-03-10 9:41 UTC|newest]
Thread overview: 47+ 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:46 ` Daniel Vetter
2015-03-10 9:54 ` Archit Taneja
2015-03-10 9:47 ` Daniel Vetter
2015-03-10 9:52 ` Archit Taneja
2015-03-10 10:05 ` Daniel Vetter
2015-03-10 10:22 ` Archit Taneja
2015-03-10 12:17 ` Daniel Vetter
2015-03-11 8:21 ` Archit Taneja
2015-03-11 15:17 ` Daniel Vetter
2015-03-13 6:25 ` Archit Taneja
2015-03-13 9:06 ` Daniel Vetter
2015-03-13 9:46 ` Jani Nikula
2015-03-13 11:00 ` Archit Taneja
2015-03-25 8:17 ` Archit Taneja
2015-03-25 9:21 ` Daniel Vetter
2015-06-30 7:10 ` Daniel Vetter
2015-06-30 7:56 ` Archit Taneja
2015-06-30 8:31 ` Benjamin Gaignard
2015-06-30 9:04 ` Daniel Vetter
2015-07-03 12:32 ` Thierry Reding
2015-07-03 13:33 ` Rob Clark
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 ` [RFC 3/6] drm/i915: " Archit Taneja
2015-03-10 10:01 ` Daniel Vetter
2015-03-10 10:10 ` Archit Taneja
2015-03-10 9:41 ` Archit Taneja [this message]
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-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-07-13 6:42 ` [RFC v2 1/6] " 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
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=1425980493-27533-5-git-send-email-architt@codeaurora.org \
--to=architt@codeaurora.org \
--cc=airlied@linux.ie \
--cc=benjamin.gaignard@linaro.org \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=robdclark@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).