linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
To: "Terje Bergström" <tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Mark Zhang <markz-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: Binding together tegradrm & nvhost
Date: Mon, 20 Aug 2012 15:18:01 +0200	[thread overview]
Message-ID: <20120820131800.GA13785@avionic-0098.mockup.avionic-design.de> (raw)
In-Reply-To: <50323513.3090606-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

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

On Mon, Aug 20, 2012 at 04:01:07PM +0300, Terje Bergström wrote:
> Hi,
> 
> I've been trying to figure out the best way to bind together tegradrm
> and nvhost. I assume that nvhost and tegradrm will live as separate
> drivers, with tegradrm taking care of display controller, and nvhost
> taking care of host1x and other client devices.
> 
> I've identified a bumps that we need to agree on. I've included here the
> problem and my proposal:
> 
> 1) Device & driver registration
> tegradrm registers as platform_driver, and exports ioctl's. Here we
> already have to agree on which device the platform_driver maps to.
> Currently it maps to host1x, but we'll need to move control of host1x to
> nvhost driver. We'll need to pass drm_platform_init() some
> platform_device - I propose that we create a virtual device for this.
> 
> 2) Device tree parsing
> At bootup, we need to parse only host1x node and create a device for
> that. host1x probe will need to dig into host1x to create the children.
> This is something that we'll need to implement first in the internal
> kernel. tegra-dc would get probed only after this sequence. If this is
> ok, I'll take care of this part, and adjustments to tegradrm when this
> becomes topical.

I have a new patch series that takes care of these two steps. Mark sent
some patches for Tegra30 and HDMI on top of the older series that I need
to merge with what I have. Maybe I'll decide to send the series out
without the patches merged, depending on how much time I'll get or how
much effort it requires. I had hoped the next series would have working
HDMI support, which is why I waited.

Basically what I have is a very rudimentary driver for host1x, which
waits for some of the subdevices to be registered and then creates a
dummy device against which the Tegra DRM driver can bind. It's not quite
what you proposed above, but very similar.

For now I've also put the host1x driver in the same directory as the
Tegra DRM because there are no other users. We may want to change that
at some point.

> We include in device tree the register addresses. Some information that
> would be needed is still clocks, clock gating behavior, power domain
> ids, mapping of client devices to channels, and mapping of sync points
> per channnel
> 
> 3) The handling of ioctl's from user space
> The ioctl's represent the needed synchronization and channel
> functionality. I'll write the necessary glue. There would be two
> categories of ioctl's:
> 
> 3a) Simple operations such as synchronization:
> 
> Wait, signal, read, etc. are exported from nvhost as public APIs, and
> tegradrm simply calls them. No big hurdle there. I already have concept
> code to do this.
> 
> 3b) Channel operations:
> 
> tegradrm needs to have a concept of logical channel. Channel open
> creates a logical channel (/context) by calling nvhost. nvhost needs to
> know which hw is going to be used by the channel to be able to control
> power, and to map to physical channel, so that comes as a parameter in
> ioctl.
> 
> Each channel operation needs to pass the channel id, and tegradrm passes
> the calls to nvhost. Most important operation is submit, which sends a
> command buffer to nvhost's queue.

Some thought will probably have to go into these. The easiest would
probably be to have a driver that needs to do synchronization or other
channel operations. It may make the requirements on the exact ioctls
clearer.

> 4) Buffer management
> We already know that this is a missing part. Hopefully we can get this
> filled soon.

This should be cheap if we use GEM along with DMA-BUF. However without
other drivers that the buffers can be shared with this won't do us any
good. So maybe something like a video capturing driver for Tegra should
be added first so we can actually test buffer sharing.

> 
> Terje
> 

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

  parent reply	other threads:[~2012-08-20 13:18 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-20 13:01 Binding together tegradrm & nvhost Terje Bergström
     [not found] ` <50323513.3090606-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-08-20 13:18   ` Thierry Reding [this message]
     [not found]     ` <20120820131800.GA13785-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-08-20 13:33       ` Terje Bergström
2012-08-21  3:50       ` Dennis Gilmore
2012-08-21  5:39       ` Mark Zhang
2012-08-21  5:42         ` Thierry Reding
     [not found]           ` <20120821054256.GA5325-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-08-21  6:16             ` Mark Zhang
2012-08-21  6:21               ` Thierry Reding
2012-08-21 14:57               ` Thierry Reding
     [not found]                 ` <20120821145709.GA701-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-08-22  2:29                   ` Mark Zhang
2012-08-22  8:42                   ` Terje Bergström
     [not found]                     ` <50349B58.4000809-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-08-22 10:33                       ` Thierry Reding
     [not found]                         ` <20120822103309.GB31448-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-08-22 11:42                           ` Terje Bergström
2012-08-21  4:57   ` Mark Zhang
2012-08-21  5:40     ` Terje Bergström
     [not found]       ` <50331F32.4040903-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-08-21  6:12         ` Mark Zhang
2012-08-21  6:35           ` Terje Bergström
     [not found]             ` <50332C22.7090009-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-08-21  7:12               ` Mark Zhang
2012-08-21 21:57               ` Stephen Warren
     [not found]                 ` <50340445.6010908-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-08-22  5:54                   ` Thierry Reding
2012-08-21 21:53   ` Stephen Warren
     [not found]     ` <50340343.1050206-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-08-22  6:49       ` 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=20120820131800.GA13785@avionic-0098.mockup.avionic-design.de \
    --to=thierry.reding-rm9k5ik7kjkj5m59nbduvrnah6klmebb@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=markz-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.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 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).