Commit 4f054fcf authored by Noralf Trønnes's avatar Noralf Trønnes

drm/tve200: Use drm_fb_cma_fbdev_init/fini()

Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.

Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20171115142001.45358-17-noralf@tronnes.org
parent 50b45f21
...@@ -103,7 +103,6 @@ struct tve200_drm_dev_private { ...@@ -103,7 +103,6 @@ struct tve200_drm_dev_private {
struct drm_panel *panel; struct drm_panel *panel;
struct drm_bridge *bridge; struct drm_bridge *bridge;
struct drm_simple_display_pipe pipe; struct drm_simple_display_pipe pipe;
struct drm_fbdev_cma *fbdev;
void *regs; void *regs;
struct clk *pclk; struct clk *pclk;
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_gem_cma_helper.h> #include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h> #include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fb_cma_helper.h> #include <drm/drm_fb_cma_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include <drm/drm_of.h> #include <drm/drm_of.h>
...@@ -130,8 +131,7 @@ static int tve200_modeset_init(struct drm_device *dev) ...@@ -130,8 +131,7 @@ static int tve200_modeset_init(struct drm_device *dev)
* Passing in 16 here will make the RGB656 mode the default * Passing in 16 here will make the RGB656 mode the default
* Passing in 32 will use XRGB8888 mode * Passing in 32 will use XRGB8888 mode
*/ */
priv->fbdev = drm_fbdev_cma_init(dev, 16, drm_fb_cma_fbdev_init(dev, 16, 0);
dev->mode_config.num_connector);
drm_kms_helper_poll_init(dev); drm_kms_helper_poll_init(dev);
goto finish; goto finish;
...@@ -146,17 +146,10 @@ static int tve200_modeset_init(struct drm_device *dev) ...@@ -146,17 +146,10 @@ static int tve200_modeset_init(struct drm_device *dev)
DEFINE_DRM_GEM_CMA_FOPS(drm_fops); DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
static void tve200_lastclose(struct drm_device *dev)
{
struct tve200_drm_dev_private *priv = dev->dev_private;
drm_fbdev_cma_restore_mode(priv->fbdev);
}
static struct drm_driver tve200_drm_driver = { static struct drm_driver tve200_drm_driver = {
.driver_features = .driver_features =
DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC, DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
.lastclose = tve200_lastclose, .lastclose = drm_fb_helper_lastclose,
.ioctls = NULL, .ioctls = NULL,
.fops = &drm_fops, .fops = &drm_fops,
.name = "tve200", .name = "tve200",
...@@ -270,8 +263,7 @@ static int tve200_remove(struct platform_device *pdev) ...@@ -270,8 +263,7 @@ static int tve200_remove(struct platform_device *pdev)
struct tve200_drm_dev_private *priv = drm->dev_private; struct tve200_drm_dev_private *priv = drm->dev_private;
drm_dev_unregister(drm); drm_dev_unregister(drm);
if (priv->fbdev) drm_fb_cma_fbdev_fini(drm);
drm_fbdev_cma_fini(priv->fbdev);
if (priv->panel) if (priv->panel)
drm_panel_bridge_remove(priv->bridge); drm_panel_bridge_remove(priv->bridge);
drm_mode_config_cleanup(drm); drm_mode_config_cleanup(drm);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment