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