All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: "Noralf Trønnes" <noralf@tronnes.org>,
	thomas.petazzoni@free-electrons.com, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 1/7] drm: Add DRM support for tiny LCD displays
Date: Tue, 7 Feb 2017 12:48:18 +0100	[thread overview]
Message-ID: <20170207114818.GH29507@ulmo.ba.sec> (raw)
In-Reply-To: <20170207065852.2gxdtye74jg4ydws@phenom.ffwll.local>


[-- Attachment #1.1: Type: text/plain, Size: 4745 bytes --]

On Tue, Feb 07, 2017 at 07:58:52AM +0100, Daniel Vetter wrote:
> On Mon, Feb 06, 2017 at 08:23:36PM +0100, Noralf Trønnes wrote:
> > 
> > Den 06.02.2017 10.17, skrev Thierry Reding:
> > > On Tue, Jan 31, 2017 at 05:03:13PM +0100, Noralf Trønnes wrote:
> > > > tinydrm provides helpers for very simple displays that can use
> > > > CMA backed framebuffers and need flushing on changes.
> > > > 
> > > > Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> > > > Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > > ---
> > > > 
> > > > Changes since version 2:
> > > > - Remove fbdev after drm unregister, not before.
> > > > 
> > > > Changes since version 1:
> > > > - Add tinydrm.rst
> > > > - Set tdev->fbdev_cma=NULL on unregister (lastclose is called after that).
> > > > - Remove some DRM_DEBUG*()
> > > > 
> > > >   Documentation/gpu/index.rst                 |   1 +
> > > >   Documentation/gpu/tinydrm.rst               |  21 ++
> > > >   drivers/gpu/drm/Kconfig                     |   2 +
> > > >   drivers/gpu/drm/Makefile                    |   1 +
> > > >   drivers/gpu/drm/tinydrm/Kconfig             |   8 +
> > > >   drivers/gpu/drm/tinydrm/Makefile            |   1 +
> > > >   drivers/gpu/drm/tinydrm/core/Makefile       |   3 +
> > > >   drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 377 ++++++++++++++++++++++++++++
> > > >   drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c | 234 +++++++++++++++++
> > > >   include/drm/tinydrm/tinydrm.h               | 115 +++++++++
> > > >   10 files changed, 763 insertions(+)
> > > >   create mode 100644 Documentation/gpu/tinydrm.rst
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/Kconfig
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/Makefile
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/Makefile
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c
> > > >   create mode 100644 include/drm/tinydrm/tinydrm.h
> > > I realize this is totally subjective, but this feels somewhat too much
> > > of a separation. Given the helper nature of TinyDRM, I think it would be
> > > more appropriate to move the helpers themselves into drm_tiny.[ch] and
> > > then maybe add a subdirectory drivers/gpu/drm/tiny that contains all the
> > > drivers that use the helpers.
> > > 
> > > The separation above further shows in subsequent patches where helpers
> > > are added to tinydrm that aren't specific to TinyDRM. So this make the
> > > new helpers appear as more of a subsystem in DRM rather than a helper
> > > library. It also makes things somewhat inconsistent with existing
> > > infrastructure.
> > 
> > What I have done with tinydrm is to do as little as possible in the
> > core helper. The minimum required to pull together
> > drm_simple_display_pipe, cma helper + fbdev and framebuffer flushing.
> > 
> > Then I have added a set of functions that ease the writing of drivers
> > for RGB565 displays with optional backlight and regulator.
> > 
> > Added to that is a controller library that handles register access (will
> > use regmap for non-mipi) and framebuffer flushing (set the windowing
> > registers and write the buffer to the pixel register).
> > 
> > And at last there's the display driver that initializes the controller
> > to match a particular panel.
> > 
> > Maybe I should narrow tinydrm to _just_ support "RGB565 displays with
> > optional backlight and regulator". It looks like I split it up to much,
> > unless someone sees a need for the core of tinydrm elsewhere.
> > 
> > I think it's hard to avoid the subsystem smell here. These displays are
> > really simple, fbdev is more than enough to cover their needs.
> > But fbdev is closed.
> > 
> > I'm glad you pick on this, as getting the architecture right will save
> > me maintenance down the line. I did paint me into a corner with
> > staging/fbtft and I'm not keen on repeating that (to my defence it was
> > my first C code since university and I had 2 displays that had some
> > similarities which ended up as fbtft).
> 
> tbh I'm not sure either whether the tinydrm midlayer is good or not. But
> then it is what it says on the tin, i.e. tiny, so not much work to
> demidlayer if we notice a clear need for that change. I wouldn't worry
> about this for now, but good to keep in mind. In the end, good design is
> design that can be changed, because you'll only get it right until the
> next unforseen thing happens :-)

Agreed, there's nothing in this that couldn't easily be tweaked later
on. It's clearly drm-misc material, too, so even cross-tree dependencies
wouldn't be an issue.

Thierry

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: "Noralf Trønnes" <noralf@tronnes.org>,
	thomas.petazzoni@free-electrons.com, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 1/7] drm: Add DRM support for tiny LCD displays
Date: Tue, 7 Feb 2017 12:48:18 +0100	[thread overview]
Message-ID: <20170207114818.GH29507@ulmo.ba.sec> (raw)
In-Reply-To: <20170207065852.2gxdtye74jg4ydws@phenom.ffwll.local>

[-- Attachment #1: Type: text/plain, Size: 4745 bytes --]

On Tue, Feb 07, 2017 at 07:58:52AM +0100, Daniel Vetter wrote:
> On Mon, Feb 06, 2017 at 08:23:36PM +0100, Noralf Trønnes wrote:
> > 
> > Den 06.02.2017 10.17, skrev Thierry Reding:
> > > On Tue, Jan 31, 2017 at 05:03:13PM +0100, Noralf Trønnes wrote:
> > > > tinydrm provides helpers for very simple displays that can use
> > > > CMA backed framebuffers and need flushing on changes.
> > > > 
> > > > Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> > > > Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > > ---
> > > > 
> > > > Changes since version 2:
> > > > - Remove fbdev after drm unregister, not before.
> > > > 
> > > > Changes since version 1:
> > > > - Add tinydrm.rst
> > > > - Set tdev->fbdev_cma=NULL on unregister (lastclose is called after that).
> > > > - Remove some DRM_DEBUG*()
> > > > 
> > > >   Documentation/gpu/index.rst                 |   1 +
> > > >   Documentation/gpu/tinydrm.rst               |  21 ++
> > > >   drivers/gpu/drm/Kconfig                     |   2 +
> > > >   drivers/gpu/drm/Makefile                    |   1 +
> > > >   drivers/gpu/drm/tinydrm/Kconfig             |   8 +
> > > >   drivers/gpu/drm/tinydrm/Makefile            |   1 +
> > > >   drivers/gpu/drm/tinydrm/core/Makefile       |   3 +
> > > >   drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 377 ++++++++++++++++++++++++++++
> > > >   drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c | 234 +++++++++++++++++
> > > >   include/drm/tinydrm/tinydrm.h               | 115 +++++++++
> > > >   10 files changed, 763 insertions(+)
> > > >   create mode 100644 Documentation/gpu/tinydrm.rst
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/Kconfig
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/Makefile
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/Makefile
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> > > >   create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c
> > > >   create mode 100644 include/drm/tinydrm/tinydrm.h
> > > I realize this is totally subjective, but this feels somewhat too much
> > > of a separation. Given the helper nature of TinyDRM, I think it would be
> > > more appropriate to move the helpers themselves into drm_tiny.[ch] and
> > > then maybe add a subdirectory drivers/gpu/drm/tiny that contains all the
> > > drivers that use the helpers.
> > > 
> > > The separation above further shows in subsequent patches where helpers
> > > are added to tinydrm that aren't specific to TinyDRM. So this make the
> > > new helpers appear as more of a subsystem in DRM rather than a helper
> > > library. It also makes things somewhat inconsistent with existing
> > > infrastructure.
> > 
> > What I have done with tinydrm is to do as little as possible in the
> > core helper. The minimum required to pull together
> > drm_simple_display_pipe, cma helper + fbdev and framebuffer flushing.
> > 
> > Then I have added a set of functions that ease the writing of drivers
> > for RGB565 displays with optional backlight and regulator.
> > 
> > Added to that is a controller library that handles register access (will
> > use regmap for non-mipi) and framebuffer flushing (set the windowing
> > registers and write the buffer to the pixel register).
> > 
> > And at last there's the display driver that initializes the controller
> > to match a particular panel.
> > 
> > Maybe I should narrow tinydrm to _just_ support "RGB565 displays with
> > optional backlight and regulator". It looks like I split it up to much,
> > unless someone sees a need for the core of tinydrm elsewhere.
> > 
> > I think it's hard to avoid the subsystem smell here. These displays are
> > really simple, fbdev is more than enough to cover their needs.
> > But fbdev is closed.
> > 
> > I'm glad you pick on this, as getting the architecture right will save
> > me maintenance down the line. I did paint me into a corner with
> > staging/fbtft and I'm not keen on repeating that (to my defence it was
> > my first C code since university and I had 2 displays that had some
> > similarities which ended up as fbtft).
> 
> tbh I'm not sure either whether the tinydrm midlayer is good or not. But
> then it is what it says on the tin, i.e. tiny, so not much work to
> demidlayer if we notice a clear need for that change. I wouldn't worry
> about this for now, but good to keep in mind. In the end, good design is
> design that can be changed, because you'll only get it right until the
> next unforseen thing happens :-)

Agreed, there's nothing in this that couldn't easily be tweaked later
on. It's clearly drm-misc material, too, so even cross-tree dependencies
wouldn't be an issue.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2017-02-07 11:48 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-31 16:03 [PATCH v3 0/7] drm: Add support for tiny LCD displays Noralf Trønnes
2017-01-31 16:03 ` Noralf Trønnes
2017-01-31 16:03 ` [PATCH v3 1/7] drm: Add DRM " Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
2017-01-31 16:23   ` Daniel Vetter
     [not found]     ` <20170131162341.ejr2b3bq7tghafzj-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-01-31 18:01       ` Noralf Trønnes
2017-01-31 18:01         ` Noralf Trønnes
2017-01-31 20:10         ` Daniel Vetter
2017-01-31 20:10           ` Daniel Vetter
2017-02-06  9:17   ` Thierry Reding
2017-02-06  9:17     ` Thierry Reding
2017-02-06 19:23     ` Noralf Trønnes
2017-02-06 19:23       ` Noralf Trønnes
2017-02-07  6:58       ` Daniel Vetter
2017-02-07  6:58         ` Daniel Vetter
2017-02-07 11:48         ` Thierry Reding [this message]
2017-02-07 11:48           ` Thierry Reding
2017-02-06 10:12   ` Jani Nikula
2017-02-06 10:12     ` Jani Nikula
2017-01-31 16:03 ` [PATCH v3 2/7] drm/tinydrm: Add helper functions Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
2017-02-06  8:56   ` Thierry Reding
2017-02-06  8:56     ` Thierry Reding
2017-02-06  9:09     ` Daniel Vetter
2017-02-06  9:09       ` Daniel Vetter
     [not found]       ` <20170206090918.6rqr6l7pd62znl5j-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-02-06  9:35         ` Thierry Reding
2017-02-06  9:35           ` Thierry Reding
2017-02-06 10:07           ` Daniel Vetter
     [not found]             ` <CAKMK7uHgW15EPpPSU2se7r89JCGD_oTvn9ZJptYaNJAWMKb9Fg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-06 11:08               ` Thierry Reding
2017-02-06 11:08                 ` Thierry Reding
2017-02-06 15:53                 ` Daniel Vetter
2017-02-06 15:53                   ` Daniel Vetter
2017-02-06 22:11                   ` Noralf Trønnes
2017-02-06 22:11                     ` Noralf Trønnes
2017-02-07 11:38                     ` Thierry Reding
2017-02-07 11:38                       ` Thierry Reding
     [not found]                   ` <20170206155303.2fwihmlh6ln4eskt-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-02-06 22:28                     ` Dave Airlie
2017-02-06 22:28                       ` Dave Airlie
2017-02-07  7:00                       ` Daniel Vetter
2017-02-07  7:00                         ` Daniel Vetter
     [not found]                       ` <CAPM=9tywXAt8v4VwjHA7OhsW6Xg=w8gDeY5s+fHjhdmuUUG7gg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-07 11:11                         ` Thierry Reding
2017-02-07 11:11                           ` Thierry Reding
2017-02-07 11:21                           ` Daniel Vetter
2017-02-07 11:21                             ` Daniel Vetter
2017-02-07 11:44                             ` Thierry Reding
2017-02-07 11:44                               ` Thierry Reding
2017-02-07 13:23                               ` Daniel Vetter
2017-02-07 13:23                                 ` Daniel Vetter
     [not found]                 ` <20170206110847.GH27607-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2017-02-06 22:55                   ` Rob Herring
2017-02-06 22:55                     ` Rob Herring
2017-02-07  7:08                     ` Daniel Vetter
2017-02-07  7:08                       ` Daniel Vetter
2017-02-06 10:10   ` Jani Nikula
2017-01-31 16:03 ` [PATCH v3 3/7] drm/tinydrm: Add MIPI DBI support Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
2017-02-06  8:48   ` Thierry Reding
2017-02-06  8:48     ` Thierry Reding
     [not found]     ` <20170206084848.GC27607-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2017-02-06 11:30       ` Jani Nikula
2017-02-06 11:30         ` Jani Nikula
2017-02-06 11:53         ` Thierry Reding
2017-02-06 11:53           ` Thierry Reding
2017-02-06 12:34           ` Andrzej Hajda
2017-02-06 12:34             ` Andrzej Hajda
2017-02-06 15:45             ` Noralf Trønnes
2017-02-06 15:45               ` Noralf Trønnes
     [not found]   ` <20170131160319.9695-4-noralf-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2017-02-06 11:25     ` Jani Nikula
2017-02-06 11:25       ` Jani Nikula
     [not found] ` <20170131160319.9695-1-noralf-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2017-01-31 16:03   ` [PATCH v3 4/7] of: Add vendor prefix for Multi-Inno Noralf Trønnes
2017-01-31 16:03     ` Noralf Trønnes
2017-01-31 16:03 ` [PATCH v3 5/7] dt-bindings: display: Add common rotation property Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
2017-02-01 17:41   ` Rob Herring
2017-02-01 17:41     ` Rob Herring
2017-02-03 12:16     ` Noralf Trønnes
2017-02-03 12:16       ` Noralf Trønnes
     [not found]       ` <30cce12b-b6c6-c651-409e-5574b5f7576e-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2017-02-06  7:10         ` Thierry Reding
2017-02-06  7:10           ` Thierry Reding
2017-01-31 16:03 ` [PATCH v3 6/7] dt-bindings: Add Multi-Inno MI0283QT binding Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
2017-02-01 17:42   ` Rob Herring
2017-02-01 17:42     ` Rob Herring
2017-01-31 16:03 ` [PATCH v3 7/7] drm/tinydrm: Add support for Multi-Inno MI0283QT display Noralf Trønnes
2017-01-31 16:03   ` Noralf Trønnes
     [not found]   ` <20170131160319.9695-8-noralf-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2017-02-06  8:25     ` Thierry Reding
2017-02-06  8:25       ` Thierry Reding
2017-02-07 12:00 ` [PATCH v3 0/7] drm: Add support for tiny LCD displays Thierry Reding
2017-02-07 12:00   ` Thierry Reding

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=20170207114818.GH29507@ulmo.ba.sec \
    --to=thierry.reding@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=noralf@tronnes.org \
    --cc=thomas.petazzoni@free-electrons.com \
    /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.