diff options
| -rw-r--r-- | Documentation/gpu/todo.rst | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 37 | ||||
| -rw-r--r-- | drivers/gpu/drm/tinydrm/ili9225.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/tinydrm/mi0283qt.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/tinydrm/st7586.c | 3 | ||||
| -rw-r--r-- | include/drm/tinydrm/tinydrm.h | 3 | 
6 files changed, 11 insertions, 43 deletions
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index af614746d9c5..f421a54527d2 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -395,11 +395,6 @@ those drivers as simple as possible, so lots of room for refactoring:    one of the ideas for having a shared dsi/dbi helper, abstracting away the    transport details more. -- tinydrm_lastclose could be drm_fb_helper_lastclose. Only thing we need -  for that is to store the drm_fb_helper pointer somewhere in -  drm_device->mode_config. And then we could roll that out to all the -  drivers. -  - tinydrm_gem_cma_prime_import_sg_table should probably go into the cma    helpers, as a _vmapped variant (since not every driver needs the vmap).    And tinydrm_gem_cma_free_object could the be merged into diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c index bd7b82824a34..4c6616278c48 100644 --- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c @@ -10,6 +10,7 @@  #include <drm/drm_atomic.h>  #include <drm/drm_atomic_helper.h>  #include <drm/drm_crtc_helper.h> +#include <drm/drm_fb_helper.h>  #include <drm/drm_gem_framebuffer_helper.h>  #include <drm/tinydrm/tinydrm.h>  #include <linux/device.h> @@ -36,23 +37,6 @@   */  /** - * tinydrm_lastclose - DRM lastclose helper - * @drm: DRM device - * - * This function ensures that fbdev is restored when drm_lastclose() is called - * on the last drm_release(). Drivers can use this as their - * &drm_driver->lastclose callback. - */ -void tinydrm_lastclose(struct drm_device *drm) -{ -	struct tinydrm_device *tdev = drm->dev_private; - -	DRM_DEBUG_KMS("\n"); -	drm_fbdev_cma_restore_mode(tdev->fbdev_cma); -} -EXPORT_SYMBOL(tinydrm_lastclose); - -/**   * tinydrm_gem_cma_prime_import_sg_table - Produce a CMA GEM object from   *     another driver's scatter/gather table of pinned pages   * @drm: DRM device to import into @@ -214,35 +198,24 @@ EXPORT_SYMBOL(devm_tinydrm_init);  static int tinydrm_register(struct tinydrm_device *tdev)  {  	struct drm_device *drm = tdev->drm; -	int bpp = drm->mode_config.preferred_depth; -	struct drm_fbdev_cma *fbdev;  	int ret;  	ret = drm_dev_register(tdev->drm, 0);  	if (ret)  		return ret; -	fbdev = drm_fbdev_cma_init_with_funcs(drm, bpp ? bpp : 32, -					      drm->mode_config.num_connector, -					      tdev->fb_funcs); -	if (IS_ERR(fbdev)) -		DRM_ERROR("Failed to initialize fbdev: %ld\n", PTR_ERR(fbdev)); -	else -		tdev->fbdev_cma = fbdev; +	ret = drm_fb_cma_fbdev_init_with_funcs(drm, 0, 0, tdev->fb_funcs); +	if (ret) +		DRM_ERROR("Failed to initialize fbdev: %d\n", ret);  	return 0;  }  static void tinydrm_unregister(struct tinydrm_device *tdev)  { -	struct drm_fbdev_cma *fbdev_cma = tdev->fbdev_cma; -  	drm_atomic_helper_shutdown(tdev->drm); -	/* don't restore fbdev in lastclose, keep pipeline disabled */ -	tdev->fbdev_cma = NULL; +	drm_fb_cma_fbdev_fini(tdev->drm);  	drm_dev_unregister(tdev->drm); -	if (fbdev_cma) -		drm_fbdev_cma_fini(fbdev_cma);  }  static void devm_tinydrm_register_release(void *data) diff --git a/drivers/gpu/drm/tinydrm/ili9225.c b/drivers/gpu/drm/tinydrm/ili9225.c index 3b766a26aa61..e8f1b3af3852 100644 --- a/drivers/gpu/drm/tinydrm/ili9225.c +++ b/drivers/gpu/drm/tinydrm/ili9225.c @@ -20,6 +20,7 @@  #include <linux/spi/spi.h>  #include <video/mipi_display.h> +#include <drm/drm_fb_helper.h>  #include <drm/drm_gem_framebuffer_helper.h>  #include <drm/tinydrm/mipi-dbi.h>  #include <drm/tinydrm/tinydrm-helpers.h> @@ -381,7 +382,7 @@ static struct drm_driver ili9225_driver = {  				  DRIVER_ATOMIC,  	.fops			= &ili9225_fops,  	TINYDRM_GEM_DRIVER_OPS, -	.lastclose		= tinydrm_lastclose, +	.lastclose		= drm_fb_helper_lastclose,  	.name			= "ili9225",  	.desc			= "Ilitek ILI9225",  	.date			= "20171106", diff --git a/drivers/gpu/drm/tinydrm/mi0283qt.c b/drivers/gpu/drm/tinydrm/mi0283qt.c index 70ae4f76f455..674d407640be 100644 --- a/drivers/gpu/drm/tinydrm/mi0283qt.c +++ b/drivers/gpu/drm/tinydrm/mi0283qt.c @@ -9,6 +9,7 @@   * (at your option) any later version.   */ +#include <drm/drm_fb_helper.h>  #include <drm/drm_modeset_helper.h>  #include <drm/tinydrm/ili9341.h>  #include <drm/tinydrm/mipi-dbi.h> @@ -140,7 +141,7 @@ static struct drm_driver mi0283qt_driver = {  				  DRIVER_ATOMIC,  	.fops			= &mi0283qt_fops,  	TINYDRM_GEM_DRIVER_OPS, -	.lastclose		= tinydrm_lastclose, +	.lastclose		= drm_fb_helper_lastclose,  	.debugfs_init		= mipi_dbi_debugfs_init,  	.name			= "mi0283qt",  	.desc			= "Multi-Inno MI0283QT", diff --git a/drivers/gpu/drm/tinydrm/st7586.c b/drivers/gpu/drm/tinydrm/st7586.c index 0a2c60da5c0e..5aebfceb740e 100644 --- a/drivers/gpu/drm/tinydrm/st7586.c +++ b/drivers/gpu/drm/tinydrm/st7586.c @@ -17,6 +17,7 @@  #include <linux/spi/spi.h>  #include <video/mipi_display.h> +#include <drm/drm_fb_helper.h>  #include <drm/drm_gem_framebuffer_helper.h>  #include <drm/tinydrm/mipi-dbi.h>  #include <drm/tinydrm/tinydrm-helpers.h> @@ -320,7 +321,7 @@ static struct drm_driver st7586_driver = {  				  DRIVER_ATOMIC,  	.fops			= &st7586_fops,  	TINYDRM_GEM_DRIVER_OPS, -	.lastclose		= tinydrm_lastclose, +	.lastclose		= drm_fb_helper_lastclose,  	.debugfs_init		= mipi_dbi_debugfs_init,  	.name			= "st7586",  	.desc			= "Sitronix ST7586", diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h index 03cd9d72308c..07a9a11fe19d 100644 --- a/include/drm/tinydrm/tinydrm.h +++ b/include/drm/tinydrm/tinydrm.h @@ -19,14 +19,12 @@   * @drm: DRM device   * @pipe: Display pipe structure   * @dirty_lock: Serializes framebuffer flushing - * @fbdev_cma: CMA fbdev structure   * @fb_funcs: Framebuffer functions used when creating framebuffers   */  struct tinydrm_device {  	struct drm_device *drm;  	struct drm_simple_display_pipe pipe;  	struct mutex dirty_lock; -	struct drm_fbdev_cma *fbdev_cma;  	const struct drm_framebuffer_funcs *fb_funcs;  }; @@ -80,7 +78,6 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)  	.type = DRM_MODE_TYPE_DRIVER, \  	.clock = 1 /* pass validation */ -void tinydrm_lastclose(struct drm_device *drm);  void tinydrm_gem_cma_free_object(struct drm_gem_object *gem_obj);  struct drm_gem_object *  tinydrm_gem_cma_prime_import_sg_table(struct drm_device *drm,  | 
