public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Keith Packard <keithp@keithp.com>
Cc: 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: Thu, 15 Sep 2011 20:21:15 +0300	[thread overview]
Message-ID: <1316107275.23214.99.camel@deskari> (raw)
In-Reply-To: <yun8vpp7qk7.fsf@aiko.keithp.com>

On Thu, 2011-09-15 at 10:50 -0500, Keith Packard wrote:
> On Thu, 15 Sep 2011 18:29:54 +0300, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> 
> > 1) It's part of DRM, so it doesn't help fb or v4l2 drivers. Except if
> > the plan is to make DRM the core Linux display framework, upon which
> > everything else is built, and fb and v4l2 are changed to use DRM.
> 
> I'd like to think we could make DRM the underlying display framework;
> it already exposes an fb interface, and with overlays, a bit more of the
> v4l2 stuff is done as well. Certainly eliminating three copies of mode
> setting infrastructure would be nice...

Ok, sounds good to me. We (as in OMAP display people) are already
planning to take DRM into use, so no problem there.

> > But even if it was done like that, I see that it's combining two
> > separate things: 1) the lower level HW control, and 2) the upper level
> > buffer management, policies and userspace interfaces.
> 
> Those are split between the DRM layer and the underlying device driver,
> which provides both kernel (via fb) and user space interfaces.

I'm not so familiar with DRM, but with device driver you mean a driver
for the the hardware which handles display output (gfx cards or whatever
it is on that platform)?

If so, it sounds good. That quite well matches what omapdss driver does
currently for us. But we still have semi-complex omapdrm between omapdss
and the standard drm layer.

Rob, would you say omapdrm is more of a DRM wrapper for omapdss than a
real separate entity? If so, then we could possibly in the future (when
nobody else uses omapdss) change omapdss to support DRM natively. (or
make omapdrm support omap HW natively, which ever way =).

> > 2) It's missing the panel driver part. This is rather important on
> > embedded systems, as the panels often are not "dummy" panels, but they
> > need things like custom initialization, sending commands to adjust
> > backlight, etc.
> 
> We integrate the panel (and other video output) drivers into the device
> drivers. With desktop chips, they're not easily separable. None of the
> desktop output drivers are simple; things like DisplayPort require link
> training, and everyone needs EDID. We share some of that code in the DRM
> layer today, and it would be nice to share even more.

I don't think we speak of similar panel drivers. I think there are two
different drivers here:

1) output drivers, handles the output from the SoC / gfx card. For
example DVI, DisplayPort, MIPI DPI/DBI/DSI.

2) panel drivers, handles panel specific things. Each panel may support
custom commands and features, for which we need a dedicated driver. And
this driver is not platform specific, but should work with any platform
which has the output used with the panel.

As an example, DSI command mode displays can be quite complex:

DSI bus is a half-duplex serial bus, and while it's designed for
displays you could use it easily for any communication between the SoC
and the peripheral.

The panel could have a feature like content adaptive backlight control,
and this would be configured via the DSI bus, sending a particular
command to the panel (possibly by first reading something from the
panel). The panel driver would accomplish this more or less the same way
one uses, say, i2c, so it would use the platform's DSI support to send
and receive packets.

Or a more complex scenario (but still a realistic scenario, been there,
done that) is sending the image to the panel in multiple parts, and
between each part sending configuration commands to the panel. (and
still getting it done in time so we avoid tearing).

And to complicate things more, there are DSI bus features like LP mode
(low power, basically low speed mode) and HS mode (high speed), virtual
channel IDs, and whatnot, which each panel may need to be used in
particular manner. Some panels may require initial configuration done in
LP, or configuration commands sent to a certain virtual channel ID.

The point is that we cannot have standard "MIPI DSI command mode panel
driver" which would work for all DSI cmd mode panels, but we need (in
the worst case) separate driver for each panel.

The same goes to lesser extent for other panels also. Some are
configured via i2c or spi.

 Tomi



  parent reply	other threads:[~2011-09-15 17:21 UTC|newest]

Thread overview: 59+ 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
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
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-10-01 17:30           ` Enrico Weigelt
2011-09-15 17:21       ` Tomi Valkeinen [this message]
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
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-10-01 17:34         ` Enrico Weigelt
2011-09-15 15:03 ` Kyungmin Park
2011-09-21 13:26 ` Heiko Stübner
2011-10-01 16:52 ` Enrico Weigelt

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=1316107275.23214.99.camel@deskari \
    --to=tomi.valkeinen@ti.com \
    --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