diff mbox series

[09/11] drm/tinydrm: Remove tinydrm_device

Message ID 20190120114318.49199-10-noralf@tronnes.org (mailing list archive)
State New, archived
Headers show
Series drm/tinydrm: Remove tinydrm_device | expand

Commit Message

Noralf Trønnes Jan. 20, 2019, 11:43 a.m. UTC
No more users left so it can go alongside its helpers.
Update the tinydrm docs description and remove todo entry.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
 Documentation/gpu/tinydrm.rst                 |  26 +--
 Documentation/gpu/todo.rst                    |   4 -
 drivers/gpu/drm/tinydrm/core/Makefile         |   2 +-
 drivers/gpu/drm/tinydrm/core/tinydrm-core.c   | 169 ------------------
 .../gpu/drm/tinydrm/core/tinydrm-helpers.c    |   2 +
 include/drm/tinydrm/tinydrm.h                 |  42 -----
 6 files changed, 10 insertions(+), 235 deletions(-)
 delete mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c
 delete mode 100644 include/drm/tinydrm/tinydrm.h

Comments

Sam Ravnborg Jan. 21, 2019, 8:13 a.m. UTC | #1
On Sun, Jan 20, 2019 at 12:43:16PM +0100, Noralf Trønnes wrote:
> No more users left so it can go alongside its helpers.
> Update the tinydrm docs description and remove todo entry.
> 
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Daniel Vetter Jan. 21, 2019, 9:29 a.m. UTC | #2
On Sun, Jan 20, 2019 at 12:43:16PM +0100, Noralf Trønnes wrote:
> No more users left so it can go alongside its helpers.
> Update the tinydrm docs description and remove todo entry.
> 
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> ---
>  Documentation/gpu/tinydrm.rst                 |  26 +--
>  Documentation/gpu/todo.rst                    |   4 -
>  drivers/gpu/drm/tinydrm/core/Makefile         |   2 +-
>  drivers/gpu/drm/tinydrm/core/tinydrm-core.c   | 169 ------------------
>  .../gpu/drm/tinydrm/core/tinydrm-helpers.c    |   2 +
>  include/drm/tinydrm/tinydrm.h                 |  42 -----
>  6 files changed, 10 insertions(+), 235 deletions(-)
>  delete mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>  delete mode 100644 include/drm/tinydrm/tinydrm.h

Looks great. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> diff --git a/Documentation/gpu/tinydrm.rst b/Documentation/gpu/tinydrm.rst
> index 1ca726474af4..19969b989efb 100644
> --- a/Documentation/gpu/tinydrm.rst
> +++ b/Documentation/gpu/tinydrm.rst
> @@ -1,24 +1,12 @@
> -==========================
> -drm/tinydrm Driver library
> -==========================
> +============================
> +drm/tinydrm Tiny DRM drivers
> +============================
>  
> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> -   :doc: overview
> +tinydrm is a collection of DRM drivers that are so small they can fit in a
> +single source file.

Since it's now just a collection of tiny drivers I think we should also
rename the directory. Maybe in a follow-up patch, once this has all
settled. I think just /tiny/ or /tinydrivers/ or so would be better.
>  
> -Core functionality
> -==================
> -
> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> -   :doc: core
> -
> -.. kernel-doc:: include/drm/tinydrm/tinydrm.h
> -   :internal:
> -
> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> -   :export:

Yay!

> -
> -Additional helpers
> -==================
> +Helpers
> +=======
>  
>  .. kernel-doc:: include/drm/tinydrm/tinydrm-helpers.h
>     :internal:

Out of curiosity, what's left? From a quick look I think we could move the
memcp/swab helpers into a drm_framebuffer_helper.c file (maybe move the fb
argument first, since that's the main thing for ocd).

And the spi stuff is kinda just spi helpers I guess? Could we move those
into the spi subsystem, or was that idea already nacked?

> diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
> index 38360ede1221..3495aec7a8d4 100644
> --- a/Documentation/gpu/todo.rst
> +++ b/Documentation/gpu/todo.rst
> @@ -435,10 +435,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.
>  
> -- Quick aside: The unregister devm stuff is kinda getting the lifetimes of
> -  a drm_device wrong. Doesn't matter, since everyone else gets it wrong
> -  too :-)

Hey I even wrote this already :-)

> -
>  Contact: Noralf Trønnes, Daniel Vetter
>  
>  AMD DC Display Driver
> diff --git a/drivers/gpu/drm/tinydrm/core/Makefile b/drivers/gpu/drm/tinydrm/core/Makefile
> index bf2df7326df7..f88ea7ad302f 100644
> --- a/drivers/gpu/drm/tinydrm/core/Makefile
> +++ b/drivers/gpu/drm/tinydrm/core/Makefile
> @@ -1,3 +1,3 @@
> -tinydrm-y := tinydrm-core.o tinydrm-helpers.o
> +tinydrm-y := tinydrm-helpers.o
>  
>  obj-$(CONFIG_DRM_TINYDRM) += tinydrm.o
> diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> deleted file mode 100644
> index e4a77feaacd6..000000000000
> --- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> +++ /dev/null
> @@ -1,169 +0,0 @@
> -/*
> - * Copyright (C) 2016 Noralf Trønnes
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> - */
> -
> -#include <drm/drm_atomic.h>
> -#include <drm/drm_atomic_helper.h>
> -#include <drm/drm_crtc_helper.h>
> -#include <drm/drm_drv.h>
> -#include <drm/drm_fb_helper.h>
> -#include <drm/drm_gem_framebuffer_helper.h>
> -#include <drm/drm_print.h>
> -#include <drm/tinydrm/tinydrm.h>
> -#include <linux/device.h>
> -#include <linux/dma-buf.h>
> -#include <linux/module.h>
> -
> -/**
> - * DOC: overview
> - *
> - * This library provides driver helpers for very simple display hardware.
> - *
> - * It is based on &drm_simple_display_pipe coupled with a &drm_connector which
> - * has only one fixed &drm_display_mode. The framebuffers are backed by the
> - * cma helper and have support for framebuffer flushing (dirty).
> - * fbdev support is also included.
> - *
> - */
> -
> -/**
> - * DOC: core
> - *
> - * The driver allocates &tinydrm_device, initializes it using
> - * devm_tinydrm_init(), sets up the pipeline using tinydrm_display_pipe_init()
> - * and registers the DRM device using devm_tinydrm_register().
> - */
> -
> -static const struct drm_mode_config_funcs tinydrm_mode_config_funcs = {
> -	.fb_create = drm_gem_fb_create_with_dirty,
> -	.atomic_check = drm_atomic_helper_check,
> -	.atomic_commit = drm_atomic_helper_commit,
> -};
> -
> -static int tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
> -			struct drm_driver *driver)
> -{
> -	struct drm_device *drm;
> -
> -	/*
> -	 * We don't embed drm_device, because that prevent us from using
> -	 * devm_kzalloc() to allocate tinydrm_device in the driver since
> -	 * drm_dev_put() frees the structure. The devm_ functions provide
> -	 * for easy error handling.
> -	 */
> -	drm = drm_dev_alloc(driver, parent);
> -	if (IS_ERR(drm))
> -		return PTR_ERR(drm);
> -
> -	tdev->drm = drm;
> -	drm->dev_private = tdev;
> -	drm_mode_config_init(drm);
> -	drm->mode_config.funcs = &tinydrm_mode_config_funcs;
> -	drm->mode_config.allow_fb_modifiers = true;
> -
> -	return 0;
> -}
> -
> -static void tinydrm_fini(struct tinydrm_device *tdev)
> -{
> -	drm_mode_config_cleanup(tdev->drm);
> -	tdev->drm->dev_private = NULL;
> -	drm_dev_put(tdev->drm);
> -}
> -
> -static void devm_tinydrm_release(void *data)
> -{
> -	tinydrm_fini(data);
> -}
> -
> -/**
> - * devm_tinydrm_init - Initialize tinydrm device
> - * @parent: Parent device object
> - * @tdev: tinydrm device
> - * @driver: DRM driver
> - *
> - * This function initializes @tdev, the underlying DRM device and it's
> - * mode_config. Resources will be automatically freed on driver detach (devres)
> - * using drm_mode_config_cleanup() and drm_dev_put().
> - *
> - * Returns:
> - * Zero on success, negative error code on failure.
> - */
> -int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
> -		      struct drm_driver *driver)
> -{
> -	int ret;
> -
> -	ret = tinydrm_init(parent, tdev, driver);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action(parent, devm_tinydrm_release, tdev);
> -	if (ret)
> -		tinydrm_fini(tdev);
> -
> -	return ret;
> -}
> -EXPORT_SYMBOL(devm_tinydrm_init);
> -
> -static int tinydrm_register(struct tinydrm_device *tdev)
> -{
> -	struct drm_device *drm = tdev->drm;
> -	int ret;
> -
> -	ret = drm_dev_register(tdev->drm, 0);
> -	if (ret)
> -		return ret;
> -
> -	ret = drm_fbdev_generic_setup(drm, 0);
> -	if (ret)
> -		DRM_ERROR("Failed to initialize fbdev: %d\n", ret);
> -
> -	return 0;
> -}
> -
> -static void tinydrm_unregister(struct tinydrm_device *tdev)
> -{
> -	drm_atomic_helper_shutdown(tdev->drm);
> -	drm_dev_unregister(tdev->drm);
> -}
> -
> -static void devm_tinydrm_register_release(void *data)
> -{
> -	tinydrm_unregister(data);
> -}
> -
> -/**
> - * devm_tinydrm_register - Register tinydrm device
> - * @tdev: tinydrm device
> - *
> - * This function registers the underlying DRM device and fbdev.
> - * These resources will be automatically unregistered on driver detach (devres)
> - * and the display pipeline will be disabled.
> - *
> - * Returns:
> - * Zero on success, negative error code on failure.
> - */
> -int devm_tinydrm_register(struct tinydrm_device *tdev)
> -{
> -	struct device *dev = tdev->drm->dev;
> -	int ret;
> -
> -	ret = tinydrm_register(tdev);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action(dev, devm_tinydrm_register_release, tdev);
> -	if (ret)
> -		tinydrm_unregister(tdev);
> -
> -	return ret;
> -}
> -EXPORT_SYMBOL(devm_tinydrm_register);
> -
> -MODULE_LICENSE("GPL");
> diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
> index 2737b6fdadc8..d7b38dfb6438 100644
> --- a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
> +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
> @@ -365,3 +365,5 @@ int tinydrm_spi_transfer(struct spi_device *spi, u32 speed_hz,
>  EXPORT_SYMBOL(tinydrm_spi_transfer);
>  
>  #endif /* CONFIG_SPI */
> +
> +MODULE_LICENSE("GPL");
> diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h
> deleted file mode 100644
> index ee9b17759391..000000000000
> --- a/include/drm/tinydrm/tinydrm.h
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -/*
> - * Copyright (C) 2016 Noralf Trønnes
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> - */
> -
> -#ifndef __LINUX_TINYDRM_H
> -#define __LINUX_TINYDRM_H
> -
> -#include <drm/drm_simple_kms_helper.h>
> -
> -struct drm_driver;
> -
> -/**
> - * struct tinydrm_device - tinydrm device
> - */
> -struct tinydrm_device {
> -	/**
> -	 * @drm: DRM device
> -	 */
> -	struct drm_device *drm;
> -
> -	/**
> -	 * @pipe: Display pipe structure
> -	 */
> -	struct drm_simple_display_pipe pipe;
> -};
> -
> -static inline struct tinydrm_device *
> -pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
> -{
> -	return container_of(pipe, struct tinydrm_device, pipe);
> -}
> -
> -int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
> -		      struct drm_driver *driver);
> -int devm_tinydrm_register(struct tinydrm_device *tdev);
> -
> -#endif /* __LINUX_TINYDRM_H */
> -- 
> 2.20.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Noralf Trønnes Jan. 21, 2019, 1:30 p.m. UTC | #3
Den 21.01.2019 10.29, skrev Daniel Vetter:
> On Sun, Jan 20, 2019 at 12:43:16PM +0100, Noralf Trønnes wrote:
>> No more users left so it can go alongside its helpers.
>> Update the tinydrm docs description and remove todo entry.
>>
>> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>> ---
>>  Documentation/gpu/tinydrm.rst                 |  26 +--
>>  Documentation/gpu/todo.rst                    |   4 -
>>  drivers/gpu/drm/tinydrm/core/Makefile         |   2 +-
>>  drivers/gpu/drm/tinydrm/core/tinydrm-core.c   | 169 ------------------
>>  .../gpu/drm/tinydrm/core/tinydrm-helpers.c    |   2 +
>>  include/drm/tinydrm/tinydrm.h                 |  42 -----
>>  6 files changed, 10 insertions(+), 235 deletions(-)
>>  delete mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>>  delete mode 100644 include/drm/tinydrm/tinydrm.h
> 
> Looks great. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

I'm glad that I've finally come to the point where I'm able to get rid
of the midlayer smell that you have talked about :-)

>>
>> diff --git a/Documentation/gpu/tinydrm.rst b/Documentation/gpu/tinydrm.rst
>> index 1ca726474af4..19969b989efb 100644
>> --- a/Documentation/gpu/tinydrm.rst
>> +++ b/Documentation/gpu/tinydrm.rst
>> @@ -1,24 +1,12 @@
>> -==========================
>> -drm/tinydrm Driver library
>> -==========================
>> +============================
>> +drm/tinydrm Tiny DRM drivers
>> +============================
>>  
>> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>> -   :doc: overview
>> +tinydrm is a collection of DRM drivers that are so small they can fit in a
>> +single source file.
> 
> Since it's now just a collection of tiny drivers I think we should also
> rename the directory. Maybe in a follow-up patch, once this has all
> settled. I think just /tiny/ or /tinydrivers/ or so would be better.
>>  
>> -Core functionality
>> -==================
>> -
>> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>> -   :doc: core
>> -
>> -.. kernel-doc:: include/drm/tinydrm/tinydrm.h
>> -   :internal:
>> -
>> -.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>> -   :export:
> 
> Yay!
> 
>> -
>> -Additional helpers
>> -==================
>> +Helpers
>> +=======
>>  
>>  .. kernel-doc:: include/drm/tinydrm/tinydrm-helpers.h
>>     :internal:
> 
> Out of curiosity, what's left? From a quick look I think we could move the
> memcp/swab helpers into a drm_framebuffer_helper.c file (maybe move the fb
> argument first, since that's the main thing for ocd).

Yep.

> 
> And the spi stuff is kinda just spi helpers I guess? Could we move those
> into the spi subsystem, or was that idea already nacked?

Meghana started on this, but didn't finish. I don't think there was any
blockers, so it's just to pick it up where she left it.

There's also the mipi_dbi helper which should be moved along side
drm_mipi_dsi.

My plan is to do this when I'm done with the modesetting part of drm_client.

Noralf.

> 
>> diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
>> index 38360ede1221..3495aec7a8d4 100644
>> --- a/Documentation/gpu/todo.rst
>> +++ b/Documentation/gpu/todo.rst
>> @@ -435,10 +435,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.
>>  
>> -- Quick aside: The unregister devm stuff is kinda getting the lifetimes of
>> -  a drm_device wrong. Doesn't matter, since everyone else gets it wrong
>> -  too :-)
> 
> Hey I even wrote this already :-)
> 
>> -
>>  Contact: Noralf Trønnes, Daniel Vetter
>>  
>>  AMD DC Display Driver
>> diff --git a/drivers/gpu/drm/tinydrm/core/Makefile b/drivers/gpu/drm/tinydrm/core/Makefile
>> index bf2df7326df7..f88ea7ad302f 100644
>> --- a/drivers/gpu/drm/tinydrm/core/Makefile
>> +++ b/drivers/gpu/drm/tinydrm/core/Makefile
>> @@ -1,3 +1,3 @@
>> -tinydrm-y := tinydrm-core.o tinydrm-helpers.o
>> +tinydrm-y := tinydrm-helpers.o
>>  
>>  obj-$(CONFIG_DRM_TINYDRM) += tinydrm.o
>> diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>> deleted file mode 100644
>> index e4a77feaacd6..000000000000
>> --- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
>> +++ /dev/null
>> @@ -1,169 +0,0 @@
>> -/*
>> - * Copyright (C) 2016 Noralf Trønnes
>> - *
>> - * This program is free software; you can redistribute it and/or modify
>> - * it under the terms of the GNU General Public License as published by
>> - * the Free Software Foundation; either version 2 of the License, or
>> - * (at your option) any later version.
>> - */
>> -
>> -#include <drm/drm_atomic.h>
>> -#include <drm/drm_atomic_helper.h>
>> -#include <drm/drm_crtc_helper.h>
>> -#include <drm/drm_drv.h>
>> -#include <drm/drm_fb_helper.h>
>> -#include <drm/drm_gem_framebuffer_helper.h>
>> -#include <drm/drm_print.h>
>> -#include <drm/tinydrm/tinydrm.h>
>> -#include <linux/device.h>
>> -#include <linux/dma-buf.h>
>> -#include <linux/module.h>
>> -
>> -/**
>> - * DOC: overview
>> - *
>> - * This library provides driver helpers for very simple display hardware.
>> - *
>> - * It is based on &drm_simple_display_pipe coupled with a &drm_connector which
>> - * has only one fixed &drm_display_mode. The framebuffers are backed by the
>> - * cma helper and have support for framebuffer flushing (dirty).
>> - * fbdev support is also included.
>> - *
>> - */
>> -
>> -/**
>> - * DOC: core
>> - *
>> - * The driver allocates &tinydrm_device, initializes it using
>> - * devm_tinydrm_init(), sets up the pipeline using tinydrm_display_pipe_init()
>> - * and registers the DRM device using devm_tinydrm_register().
>> - */
>> -
>> -static const struct drm_mode_config_funcs tinydrm_mode_config_funcs = {
>> -	.fb_create = drm_gem_fb_create_with_dirty,
>> -	.atomic_check = drm_atomic_helper_check,
>> -	.atomic_commit = drm_atomic_helper_commit,
>> -};
>> -
>> -static int tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
>> -			struct drm_driver *driver)
>> -{
>> -	struct drm_device *drm;
>> -
>> -	/*
>> -	 * We don't embed drm_device, because that prevent us from using
>> -	 * devm_kzalloc() to allocate tinydrm_device in the driver since
>> -	 * drm_dev_put() frees the structure. The devm_ functions provide
>> -	 * for easy error handling.
>> -	 */
>> -	drm = drm_dev_alloc(driver, parent);
>> -	if (IS_ERR(drm))
>> -		return PTR_ERR(drm);
>> -
>> -	tdev->drm = drm;
>> -	drm->dev_private = tdev;
>> -	drm_mode_config_init(drm);
>> -	drm->mode_config.funcs = &tinydrm_mode_config_funcs;
>> -	drm->mode_config.allow_fb_modifiers = true;
>> -
>> -	return 0;
>> -}
>> -
>> -static void tinydrm_fini(struct tinydrm_device *tdev)
>> -{
>> -	drm_mode_config_cleanup(tdev->drm);
>> -	tdev->drm->dev_private = NULL;
>> -	drm_dev_put(tdev->drm);
>> -}
>> -
>> -static void devm_tinydrm_release(void *data)
>> -{
>> -	tinydrm_fini(data);
>> -}
>> -
>> -/**
>> - * devm_tinydrm_init - Initialize tinydrm device
>> - * @parent: Parent device object
>> - * @tdev: tinydrm device
>> - * @driver: DRM driver
>> - *
>> - * This function initializes @tdev, the underlying DRM device and it's
>> - * mode_config. Resources will be automatically freed on driver detach (devres)
>> - * using drm_mode_config_cleanup() and drm_dev_put().
>> - *
>> - * Returns:
>> - * Zero on success, negative error code on failure.
>> - */
>> -int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
>> -		      struct drm_driver *driver)
>> -{
>> -	int ret;
>> -
>> -	ret = tinydrm_init(parent, tdev, driver);
>> -	if (ret)
>> -		return ret;
>> -
>> -	ret = devm_add_action(parent, devm_tinydrm_release, tdev);
>> -	if (ret)
>> -		tinydrm_fini(tdev);
>> -
>> -	return ret;
>> -}
>> -EXPORT_SYMBOL(devm_tinydrm_init);
>> -
>> -static int tinydrm_register(struct tinydrm_device *tdev)
>> -{
>> -	struct drm_device *drm = tdev->drm;
>> -	int ret;
>> -
>> -	ret = drm_dev_register(tdev->drm, 0);
>> -	if (ret)
>> -		return ret;
>> -
>> -	ret = drm_fbdev_generic_setup(drm, 0);
>> -	if (ret)
>> -		DRM_ERROR("Failed to initialize fbdev: %d\n", ret);
>> -
>> -	return 0;
>> -}
>> -
>> -static void tinydrm_unregister(struct tinydrm_device *tdev)
>> -{
>> -	drm_atomic_helper_shutdown(tdev->drm);
>> -	drm_dev_unregister(tdev->drm);
>> -}
>> -
>> -static void devm_tinydrm_register_release(void *data)
>> -{
>> -	tinydrm_unregister(data);
>> -}
>> -
>> -/**
>> - * devm_tinydrm_register - Register tinydrm device
>> - * @tdev: tinydrm device
>> - *
>> - * This function registers the underlying DRM device and fbdev.
>> - * These resources will be automatically unregistered on driver detach (devres)
>> - * and the display pipeline will be disabled.
>> - *
>> - * Returns:
>> - * Zero on success, negative error code on failure.
>> - */
>> -int devm_tinydrm_register(struct tinydrm_device *tdev)
>> -{
>> -	struct device *dev = tdev->drm->dev;
>> -	int ret;
>> -
>> -	ret = tinydrm_register(tdev);
>> -	if (ret)
>> -		return ret;
>> -
>> -	ret = devm_add_action(dev, devm_tinydrm_register_release, tdev);
>> -	if (ret)
>> -		tinydrm_unregister(tdev);
>> -
>> -	return ret;
>> -}
>> -EXPORT_SYMBOL(devm_tinydrm_register);
>> -
>> -MODULE_LICENSE("GPL");
>> diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
>> index 2737b6fdadc8..d7b38dfb6438 100644
>> --- a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
>> +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
>> @@ -365,3 +365,5 @@ int tinydrm_spi_transfer(struct spi_device *spi, u32 speed_hz,
>>  EXPORT_SYMBOL(tinydrm_spi_transfer);
>>  
>>  #endif /* CONFIG_SPI */
>> +
>> +MODULE_LICENSE("GPL");
>> diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h
>> deleted file mode 100644
>> index ee9b17759391..000000000000
>> --- a/include/drm/tinydrm/tinydrm.h
>> +++ /dev/null
>> @@ -1,42 +0,0 @@
>> -/*
>> - * Copyright (C) 2016 Noralf Trønnes
>> - *
>> - * This program is free software; you can redistribute it and/or modify
>> - * it under the terms of the GNU General Public License as published by
>> - * the Free Software Foundation; either version 2 of the License, or
>> - * (at your option) any later version.
>> - */
>> -
>> -#ifndef __LINUX_TINYDRM_H
>> -#define __LINUX_TINYDRM_H
>> -
>> -#include <drm/drm_simple_kms_helper.h>
>> -
>> -struct drm_driver;
>> -
>> -/**
>> - * struct tinydrm_device - tinydrm device
>> - */
>> -struct tinydrm_device {
>> -	/**
>> -	 * @drm: DRM device
>> -	 */
>> -	struct drm_device *drm;
>> -
>> -	/**
>> -	 * @pipe: Display pipe structure
>> -	 */
>> -	struct drm_simple_display_pipe pipe;
>> -};
>> -
>> -static inline struct tinydrm_device *
>> -pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
>> -{
>> -	return container_of(pipe, struct tinydrm_device, pipe);
>> -}
>> -
>> -int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
>> -		      struct drm_driver *driver);
>> -int devm_tinydrm_register(struct tinydrm_device *tdev);
>> -
>> -#endif /* __LINUX_TINYDRM_H */
>> -- 
>> 2.20.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox series

Patch

diff --git a/Documentation/gpu/tinydrm.rst b/Documentation/gpu/tinydrm.rst
index 1ca726474af4..19969b989efb 100644
--- a/Documentation/gpu/tinydrm.rst
+++ b/Documentation/gpu/tinydrm.rst
@@ -1,24 +1,12 @@ 
-==========================
-drm/tinydrm Driver library
-==========================
+============================
+drm/tinydrm Tiny DRM drivers
+============================
 
-.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
-   :doc: overview
+tinydrm is a collection of DRM drivers that are so small they can fit in a
+single source file.
 
-Core functionality
-==================
-
-.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
-   :doc: core
-
-.. kernel-doc:: include/drm/tinydrm/tinydrm.h
-   :internal:
-
-.. kernel-doc:: drivers/gpu/drm/tinydrm/core/tinydrm-core.c
-   :export:
-
-Additional helpers
-==================
+Helpers
+=======
 
 .. kernel-doc:: include/drm/tinydrm/tinydrm-helpers.h
    :internal:
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index 38360ede1221..3495aec7a8d4 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -435,10 +435,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.
 
-- Quick aside: The unregister devm stuff is kinda getting the lifetimes of
-  a drm_device wrong. Doesn't matter, since everyone else gets it wrong
-  too :-)
-
 Contact: Noralf Trønnes, Daniel Vetter
 
 AMD DC Display Driver
diff --git a/drivers/gpu/drm/tinydrm/core/Makefile b/drivers/gpu/drm/tinydrm/core/Makefile
index bf2df7326df7..f88ea7ad302f 100644
--- a/drivers/gpu/drm/tinydrm/core/Makefile
+++ b/drivers/gpu/drm/tinydrm/core/Makefile
@@ -1,3 +1,3 @@ 
-tinydrm-y := tinydrm-core.o tinydrm-helpers.o
+tinydrm-y := tinydrm-helpers.o
 
 obj-$(CONFIG_DRM_TINYDRM) += tinydrm.o
diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
deleted file mode 100644
index e4a77feaacd6..000000000000
--- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
+++ /dev/null
@@ -1,169 +0,0 @@ 
-/*
- * Copyright (C) 2016 Noralf Trønnes
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#include <drm/drm_atomic.h>
-#include <drm/drm_atomic_helper.h>
-#include <drm/drm_crtc_helper.h>
-#include <drm/drm_drv.h>
-#include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_framebuffer_helper.h>
-#include <drm/drm_print.h>
-#include <drm/tinydrm/tinydrm.h>
-#include <linux/device.h>
-#include <linux/dma-buf.h>
-#include <linux/module.h>
-
-/**
- * DOC: overview
- *
- * This library provides driver helpers for very simple display hardware.
- *
- * It is based on &drm_simple_display_pipe coupled with a &drm_connector which
- * has only one fixed &drm_display_mode. The framebuffers are backed by the
- * cma helper and have support for framebuffer flushing (dirty).
- * fbdev support is also included.
- *
- */
-
-/**
- * DOC: core
- *
- * The driver allocates &tinydrm_device, initializes it using
- * devm_tinydrm_init(), sets up the pipeline using tinydrm_display_pipe_init()
- * and registers the DRM device using devm_tinydrm_register().
- */
-
-static const struct drm_mode_config_funcs tinydrm_mode_config_funcs = {
-	.fb_create = drm_gem_fb_create_with_dirty,
-	.atomic_check = drm_atomic_helper_check,
-	.atomic_commit = drm_atomic_helper_commit,
-};
-
-static int tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
-			struct drm_driver *driver)
-{
-	struct drm_device *drm;
-
-	/*
-	 * We don't embed drm_device, because that prevent us from using
-	 * devm_kzalloc() to allocate tinydrm_device in the driver since
-	 * drm_dev_put() frees the structure. The devm_ functions provide
-	 * for easy error handling.
-	 */
-	drm = drm_dev_alloc(driver, parent);
-	if (IS_ERR(drm))
-		return PTR_ERR(drm);
-
-	tdev->drm = drm;
-	drm->dev_private = tdev;
-	drm_mode_config_init(drm);
-	drm->mode_config.funcs = &tinydrm_mode_config_funcs;
-	drm->mode_config.allow_fb_modifiers = true;
-
-	return 0;
-}
-
-static void tinydrm_fini(struct tinydrm_device *tdev)
-{
-	drm_mode_config_cleanup(tdev->drm);
-	tdev->drm->dev_private = NULL;
-	drm_dev_put(tdev->drm);
-}
-
-static void devm_tinydrm_release(void *data)
-{
-	tinydrm_fini(data);
-}
-
-/**
- * devm_tinydrm_init - Initialize tinydrm device
- * @parent: Parent device object
- * @tdev: tinydrm device
- * @driver: DRM driver
- *
- * This function initializes @tdev, the underlying DRM device and it's
- * mode_config. Resources will be automatically freed on driver detach (devres)
- * using drm_mode_config_cleanup() and drm_dev_put().
- *
- * Returns:
- * Zero on success, negative error code on failure.
- */
-int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
-		      struct drm_driver *driver)
-{
-	int ret;
-
-	ret = tinydrm_init(parent, tdev, driver);
-	if (ret)
-		return ret;
-
-	ret = devm_add_action(parent, devm_tinydrm_release, tdev);
-	if (ret)
-		tinydrm_fini(tdev);
-
-	return ret;
-}
-EXPORT_SYMBOL(devm_tinydrm_init);
-
-static int tinydrm_register(struct tinydrm_device *tdev)
-{
-	struct drm_device *drm = tdev->drm;
-	int ret;
-
-	ret = drm_dev_register(tdev->drm, 0);
-	if (ret)
-		return ret;
-
-	ret = drm_fbdev_generic_setup(drm, 0);
-	if (ret)
-		DRM_ERROR("Failed to initialize fbdev: %d\n", ret);
-
-	return 0;
-}
-
-static void tinydrm_unregister(struct tinydrm_device *tdev)
-{
-	drm_atomic_helper_shutdown(tdev->drm);
-	drm_dev_unregister(tdev->drm);
-}
-
-static void devm_tinydrm_register_release(void *data)
-{
-	tinydrm_unregister(data);
-}
-
-/**
- * devm_tinydrm_register - Register tinydrm device
- * @tdev: tinydrm device
- *
- * This function registers the underlying DRM device and fbdev.
- * These resources will be automatically unregistered on driver detach (devres)
- * and the display pipeline will be disabled.
- *
- * Returns:
- * Zero on success, negative error code on failure.
- */
-int devm_tinydrm_register(struct tinydrm_device *tdev)
-{
-	struct device *dev = tdev->drm->dev;
-	int ret;
-
-	ret = tinydrm_register(tdev);
-	if (ret)
-		return ret;
-
-	ret = devm_add_action(dev, devm_tinydrm_register_release, tdev);
-	if (ret)
-		tinydrm_unregister(tdev);
-
-	return ret;
-}
-EXPORT_SYMBOL(devm_tinydrm_register);
-
-MODULE_LICENSE("GPL");
diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
index 2737b6fdadc8..d7b38dfb6438 100644
--- a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
+++ b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c
@@ -365,3 +365,5 @@  int tinydrm_spi_transfer(struct spi_device *spi, u32 speed_hz,
 EXPORT_SYMBOL(tinydrm_spi_transfer);
 
 #endif /* CONFIG_SPI */
+
+MODULE_LICENSE("GPL");
diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h
deleted file mode 100644
index ee9b17759391..000000000000
--- a/include/drm/tinydrm/tinydrm.h
+++ /dev/null
@@ -1,42 +0,0 @@ 
-/*
- * Copyright (C) 2016 Noralf Trønnes
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __LINUX_TINYDRM_H
-#define __LINUX_TINYDRM_H
-
-#include <drm/drm_simple_kms_helper.h>
-
-struct drm_driver;
-
-/**
- * struct tinydrm_device - tinydrm device
- */
-struct tinydrm_device {
-	/**
-	 * @drm: DRM device
-	 */
-	struct drm_device *drm;
-
-	/**
-	 * @pipe: Display pipe structure
-	 */
-	struct drm_simple_display_pipe pipe;
-};
-
-static inline struct tinydrm_device *
-pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
-{
-	return container_of(pipe, struct tinydrm_device, pipe);
-}
-
-int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
-		      struct drm_driver *driver);
-int devm_tinydrm_register(struct tinydrm_device *tdev);
-
-#endif /* __LINUX_TINYDRM_H */