From: Daniel Vetter <daniel@ffwll.ch>
To: "Noralf Trønnes" <noralf@tronnes.org>
Cc: david@lechnology.com, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 09/11] drm/tinydrm: Remove tinydrm_device
Date: Mon, 21 Jan 2019 10:29:02 +0100 [thread overview]
Message-ID: <20190121092902.GN3271@phenom.ffwll.local> (raw)
In-Reply-To: <20190120114318.49199-10-noralf@tronnes.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
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-01-21 9:29 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-20 11:43 [PATCH 00/11] drm/tinydrm: Remove tinydrm_device Noralf Trønnes
2019-01-20 11:43 ` [PATCH 01/11] drm: Add devm_drm_dev_init/register Noralf Trønnes
2019-01-21 6:11 ` Sam Ravnborg
2019-01-21 13:09 ` Noralf Trønnes
2019-01-21 9:10 ` Daniel Vetter
2019-01-21 9:55 ` Daniel Vetter
2019-01-21 12:21 ` Noralf Trønnes
2019-01-22 9:32 ` Daniel Vetter
2019-01-22 19:07 ` Noralf Trønnes
2019-01-22 19:30 ` Daniel Vetter
2019-01-23 10:54 ` Noralf Trønnes
2019-01-24 10:43 ` devm actions and hw clenaup (was Re: [PATCH 01/11] drm: Add devm_drm_dev_init/register) Daniel Vetter
2019-01-24 17:46 ` Greg KH
2019-01-24 17:57 ` Daniel Vetter
2019-01-29 14:34 ` Noralf Trønnes
2019-01-29 15:16 ` Greg KH
2019-01-29 16:50 ` Daniel Vetter
2019-01-29 17:26 ` Noralf Trønnes
2019-01-29 17:36 ` Greg KH
2019-01-29 18:10 ` Daniel Vetter
2019-01-29 19:27 ` Greg KH
2019-01-29 23:14 ` Daniel Vetter
2019-01-30 7:14 ` Greg KH
2019-01-22 9:35 ` [PATCH 01/11] drm: Add devm_drm_dev_init/register Daniel Vetter
2019-01-20 11:43 ` [PATCH 02/11] drm/modes: Add DRM_SIMPLE_MODE() Noralf Trønnes
2019-01-20 16:37 ` Ilia Mirkin
2019-01-20 17:27 ` Noralf Trønnes
2019-01-20 11:43 ` [PATCH 03/11] drm/simple-kms-helper: Add drm_simple_connector_create() Noralf Trønnes
2019-01-20 22:14 ` Sam Ravnborg
2019-01-21 9:22 ` Daniel Vetter
2019-01-24 14:38 ` Noralf Trønnes
2019-01-24 14:53 ` Hans de Goede
2019-01-25 12:05 ` Noralf Trønnes
2019-01-20 11:43 ` [PATCH 04/11] drm/tinydrm: Remove tinydrm_display_pipe_init() Noralf Trønnes
2019-01-21 6:30 ` Sam Ravnborg
2019-01-21 9:15 ` Daniel Vetter
2019-01-28 14:46 ` Noralf Trønnes
2019-01-20 11:43 ` [PATCH 05/11] drm/tinydrm/mipi-dbi: Add drm_to_mipi_dbi() Noralf Trønnes
2019-01-21 6:34 ` Sam Ravnborg
2019-01-20 11:43 ` [PATCH 06/11] drm/tinydrm: Remove tinydrm_shutdown() Noralf Trønnes
2019-01-21 7:12 ` Sam Ravnborg
2019-01-20 11:43 ` [PATCH 07/11] drm/tinydrm/repaper: Use devm_drm_dev_*() Noralf Trønnes
2019-01-20 22:22 ` Sam Ravnborg
2019-01-20 22:25 ` Sam Ravnborg
2019-01-21 13:15 ` Noralf Trønnes
2019-01-20 11:43 ` [PATCH 08/11] drm/tinydrm: " Noralf Trønnes
2019-01-20 11:43 ` [PATCH 09/11] drm/tinydrm: Remove tinydrm_device Noralf Trønnes
2019-01-21 8:13 ` Sam Ravnborg
2019-01-21 9:29 ` Daniel Vetter [this message]
2019-01-21 13:30 ` Noralf Trønnes
2019-01-20 11:43 ` [PATCH 10/11] drm/tinydrm: Use drm_dev_enter/exit() Noralf Trønnes
2019-01-20 11:43 ` [PATCH 11/11] drm/fb-helper: generic: Don't take module ref for fbcon Noralf Trønnes
2019-01-21 9:05 ` Daniel Vetter
2019-01-28 14:40 ` Noralf Trønnes
2019-01-29 8:45 ` Daniel Vetter
2019-01-21 8:34 ` [PATCH 00/11] drm/tinydrm: Remove tinydrm_device Sam Ravnborg
2019-01-21 13:20 ` Noralf Trønnes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190121092902.GN3271@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=david@lechnology.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=noralf@tronnes.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.