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@xxxxxxxxxxx> > --- > 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@xxxxxxxx> > > 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel