public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Andreas Oberritter <obi@linuxtv.org>
To: Ralph Metzler <rjkm@metzlerbros.de>
Cc: linux-media@vger.kernel.org
Subject: Re: multiple delivery systems in one device
Date: Fri, 06 May 2011 12:52:57 +0200	[thread overview]
Message-ID: <4DC3D309.8040202@linuxtv.org> (raw)
In-Reply-To: <19906.31252.838100.862025@morden.metzler>

On 05/05/2011 12:21 PM, Ralph Metzler wrote:
> Hi,
> 
> since it seems devices with several delivery systems can be queried 
> with one command:
> 
> Andreas Oberritter writes:
>  > > Of course it does since it is not feasible to use the same adapter
>  > > number even on the same card when it provides multi-standard 
>  > > frontends which share dvr and demux devices. E.g., frontend0 and
>  > > frontend1 can belong to the same demod which can be DVB-C and -T 
>  > > (or other combinations, some demods can even do DVB-C/T/S2). 
>  > 
>  > There's absolutely no need to have more than one frontend device per
>  > demod. Just add two commands, one to query the possible delivery systems
>  > and one to switch the system. Why would you need more than one device
>  > node at all, if you can only use one delivery system at a time?
> 
> can somebody tell me how this is done and how it has to be supported
> in the demod driver?

Such commands don't exist yet and therefore need to be added as required.
For the Dreambox, we're currently using a proprietary interface to switch
between C and T, when the frontend is closed.

For an implementation within the bounds of the API, the device must not
be closed. Hence, I'd propose something like the following:

- In the driver, implement the set_property callback. For the property
  DTV_DELIVERY_SYSTEM, do whatever is required to change the delivery
  system if required, e.g.:
  - Add and call a function to pause the frontend thread.
  - Call fe->ops->sleep(fe) et al. (c.f. dvb_powerdown_on_sleep).
  - Set fe->ops to the new struct dvb_frontend_ops pointer.
  - Call dvb_frontend_reinitialise(fe);
    - Fix dvb_frontend_thread() to not call ops.set_voltage and
      ops.set_tone unless non-null.

- Add an S2API property DTV_DELIVERY_SYSTEMS which can be used
  to query the available delivery systems.

- Add a default 'get_property' implementation to dvb_frontend.c:
  - tvp->u.buffer.data[0] = c->delivery_system;
    tvp->u.buffer.len = 1;

- Implement ops.get_property in the driver, e.g.:
    tvp->u.buffer.data[0] = SYS_DVBC_ANNEX_AC;
    tvp->u.buffer.data[1] = SYS_DVBT;
    tvp->u.buffer.data[2] = SYS_DVBT2;
    tvp->u.buffer.len = 3;

- Increment minor API version.

Regards,
Andreas

      reply	other threads:[~2011-05-06 10:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-05 10:21 multiple delivery systems in one device Ralph Metzler
2011-05-06 10:52 ` Andreas Oberritter [this message]

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=4DC3D309.8040202@linuxtv.org \
    --to=obi@linuxtv.org \
    --cc=linux-media@vger.kernel.org \
    --cc=rjkm@metzlerbros.de \
    /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