linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Keith Packard <keithp@keithp.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linaro-dev@lists.linaro.org,
	"Clark, Rob" <rob@ti.com>, Archit Taneja <archit@ti.com>
Subject: Re: Proposal for a low-level Linux display framework
Date: Mon, 19 Sep 2011 07:29:21 +0000	[thread overview]
Message-ID: <1316417361.1978.48.camel@deskari> (raw)
In-Reply-To: <yunfwjtauqg.fsf@aiko.keithp.com>

On Sun, 2011-09-18 at 23:53 -0700, Keith Packard wrote:
> On Mon, 19 Sep 2011 09:33:34 +0300, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> 
> > I think it's a bit more complex than that. True, there are MIPI
> > standards, for the video there are DPI, DBI, DSI, and for the commands
> > there is DCS. And, as you mentioned, many panels need custom
> > initialization, or support only parts of the DCS, or have other
> > quirks.
> 
> So DSI is more like i2c than the DisplayPort aux channel or DDC. That

Well, not quite. DSI is like DisplayPort and DisplayPort aux combined;
there's only one bus, DSI, which is used to transfer video data and
commands.

For DSI video mode, the transfer is somewhat like traditional displays,
and video data is send according to a pixel clock as a constant stream.
However, before the video stream is enabled the bus can be used in
bi-directional communication. And even when the video stream is enabled,
there can be other communication in the blanking periods.

For DSI command mode the transfer is a bit like high speed i2c; messages
are sent when needed (when the userspace gives the command to update),
without any strict timings. In practice this means that the peripheral
needs to have a framebuffer memory of its own, which it uses to refresh
the actual panel (or send the pixels forward to another peripheral).

As the use patterns of these two types of displays are quite different,
we have the terms auto-update and manual-update displays for them.

> seems fine; you can create a DSI infrastructure like the i2c
> infrastructure and then just have your display drivers use it to talk to
> the panel. We might eventually end up with some shared DRM code to deal
> with common DSI functions for display devices, like the EDID code
> today, but that doesn't need to happen before you can write your first
> DSI-using display driver.

One difference with i2c and DSI is that i2c is independent of the video
path, so it's easy to keep that separate from DRM. But for DSI the data
is produced by the video hardware using the overlays, encoders etc. I
don't quite see how we could have an i2c-like separate DSI API, which
wasn't part of DRM.

And even in simpler case MIPI DPI, which is a traditional parallel RGB
interface, a panel may need custom configuration via, say, i2c or spi.
We can, of course, create a i2c device driver for the panel, but how is
that then connected to DRM? The i2c driver may need to know things like
when the display is enabled/disabled, about backlight changes, or any
other display related event.

Is there a way for the i2c driver to get these events, and add new
properties to the DRM (say, if the panel has a feature configured via
i2c, but we'd like it to be visible to the userspace via the DRM
driver)?

 Tomi



  reply	other threads:[~2011-09-19  7:29 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-15 12:07 Proposal for a low-level Linux display framework Tomi Valkeinen
2011-09-15 14:59 ` Keith Packard
2011-09-15 15:29   ` Tomi Valkeinen
2011-09-15 15:50     ` Keith Packard
2011-09-15 17:05       ` Alan Cox
2011-09-17 21:36         ` Laurent Pinchart
2011-09-15 17:12       ` Florian Tobias Schandinat
2011-09-15 17:18         ` Alan Cox
2011-09-15 17:47           ` Florian Tobias Schandinat
2011-09-15 19:05             ` Alan Cox
2011-09-15 19:46               ` Florian Tobias Schandinat
2011-09-15 21:31                 ` Alan Cox
2011-09-15 17:52         ` Alex Deucher
2011-09-15 17:56           ` Geert Uytterhoeven
2011-09-15 18:04             ` Alex Deucher
2011-09-15 18:39           ` Florian Tobias Schandinat
2011-09-15 18:58             ` Alan Cox
2011-09-15 19:18               ` Florian Tobias Schandinat
     [not found]                 ` <4E724F93.1050203-Mmb7MZpHnFY@public.gmane.org>
2011-09-15 19:28                   ` Alan Cox
2011-09-15 19:45                 ` Alex Deucher
2011-09-17 14:44               ` Felipe Contreras
2011-09-17 15:16                 ` Rob Clark
2011-09-17 16:11                   ` Florian Tobias Schandinat
2011-09-17 16:47                     ` Dave Airlie
2011-09-17 18:15                       ` Florian Tobias Schandinat
2011-09-17 18:23                         ` Dave Airlie
2011-09-17 19:06                           ` Florian Tobias Schandinat
2011-09-17 19:25                             ` Corbin Simpson
2011-09-17 21:25                             ` Alex Deucher
2011-09-17 20:25                           ` Alan Cox
2011-10-31 20:24                             ` Jesse Barnes
2011-09-17 16:50                     ` Rob Clark
2011-09-16  4:53             ` Keith Packard
2011-09-17 23:12             ` Laurent Pinchart
2011-09-18 16:14               ` Rob Clark
2011-09-18 21:55                 ` Laurent Pinchart
     [not found]               ` <201109180112.15896.laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2011-09-18 22:23                 ` Alan Cox
2011-09-19  0:09                   ` Rob Clark
2011-09-20 23:32                     ` Laurent Pinchart
2011-09-15 18:12         ` Keith Packard
2011-09-15 17:21       ` Tomi Valkeinen
2011-09-15 18:32         ` Rob Clark
2011-09-16  0:55         ` Keith Packard
2011-09-16  6:38           ` Tomi Valkeinen
2011-09-16 14:17           ` Daniel Vetter
2011-09-16 16:53           ` Alan Cox
2011-09-19  6:33             ` Tomi Valkeinen
2011-09-19  6:53               ` Keith Packard
2011-09-19  7:29                 ` Tomi Valkeinen [this message]
2011-09-20  8:29                   ` Patrik Jakobsson
2011-09-20 15:55                     ` Keith Packard
2011-09-20 21:20                       ` Patrik Jakobsson
2011-09-21  6:01                         ` Tomi Valkeinen
2011-09-21 18:07                           ` Patrik Jakobsson
2011-09-15 15:03 ` Kyungmin Park
2011-09-21 13:26 ` Heiko Stübner

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=1316417361.1978.48.camel@deskari \
    --to=tomi.valkeinen@ti.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=archit@ti.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=keithp@keithp.com \
    --cc=linaro-dev@lists.linaro.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rob@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).