linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Antti Palosaari <crope@iki.fi>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [RFC PATCH] [media] dvb: frontend API: Add a flag to indicate that get_frontend() can be called
Date: Tue, 01 Jan 2013 18:43:12 +0200	[thread overview]
Message-ID: <50E31220.5060405@iki.fi> (raw)
In-Reply-To: <1356738146-9352-1-git-send-email-mchehab@redhat.com>

On 12/29/2012 01:42 AM, Mauro Carvalho Chehab wrote:
> get_frontend() can't be called too early, as the device may not have it
> yet. Yet, get_frontend() on OFDM standards can happen before FE_HAS_LOCK,
> as the TMCC carriers (ISDB-T) or the TPS carriers (DVB-T) require a very
> low signal to noise relation to be detected. The other carriers use
> different modulations, so they require a higher SNR.

I would like to questionable need of whole flag. Is there really need to 
separate FE_HAS_PARAMETERS from FE_HAS_LOCK as we are not still making 
the professional DTV analyzing equipment?

And on the other-hand, I don't see any change for DVB-core which syncs 
cache when FE_HAS_PARAMETERS is set. What I remember current behavior of 
DVB-core is to call get_frontend() after FE_HAS_LOCK is set and as that 
patch does not change it => there is likely implementation bug too.

regards
Antti


>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> ---
>   Documentation/DocBook/media/dvb/frontend.xml | 13 ++++++++++++-
>   drivers/media/dvb-frontends/mb86a20s.c       | 17 ++++++++++-------
>   include/uapi/linux/dvb/frontend.h            |  4 ++++
>   3 files changed, 26 insertions(+), 8 deletions(-)
>
> v3: rebase it to apply with current tip and add an implementation example.
>
> Obsoletes: http://patchwork.linuxtv.org/patch/13783/
>
> diff --git a/Documentation/DocBook/media/dvb/frontend.xml b/Documentation/DocBook/media/dvb/frontend.xml
> index 426c252..5feff4e 100644
> --- a/Documentation/DocBook/media/dvb/frontend.xml
> +++ b/Documentation/DocBook/media/dvb/frontend.xml
> @@ -216,6 +216,7 @@ typedef enum fe_status {
>   	FE_HAS_LOCK		= 0x10,
>   	FE_TIMEDOUT		= 0x20,
>   	FE_REINIT		= 0x40,
> +	FE_HAS_PARAMETERS	= 0x80,
>   } fe_status_t;
>   </programlisting>
>   <para>to indicate the current state and/or state changes of the frontend hardware:
> @@ -244,7 +245,17 @@ typedef enum fe_status {
>   <entry align="char">FE_REINIT</entry>
>   <entry align="char">The frontend was reinitialized, application is
>   recommended to reset DiSEqC, tone and parameters</entry>
> -</row>
> +</row><row>
> +<entry align="char">FE_HAS_PARAMETERS</entry>
> +<entry align="char"><link linkend="FE_GET_SET_PROPERTY">
> +<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> or
> +<link linkend="FE_GET_FRONTEND"><constant>FE_GET_FRONTEND</constant></link> can now be
> +called to provide the detected network parameters.
> +This should be risen for example when the DVB-T TPS/ISDB-T TMCC is locked.
> +This status can be risen before FE_HAS_SYNC, as the SNR required for
> +parameters detection is lower than the requirement for the other
> +carriers on the OFDM delivery systems.
> +</entry></row>
>   </tbody></tgroup></informaltable>
>
>   </section>
> diff --git a/drivers/media/dvb-frontends/mb86a20s.c b/drivers/media/dvb-frontends/mb86a20s.c
> index fade566..35153b6 100644
> --- a/drivers/media/dvb-frontends/mb86a20s.c
> +++ b/drivers/media/dvb-frontends/mb86a20s.c
> @@ -333,19 +333,22 @@ static int mb86a20s_read_status(struct dvb_frontend *fe, fe_status_t *status)
>   		fe->ops.i2c_gate_ctrl(fe, 1);
>
>   	if (val >= 2)
> -		*status |= FE_HAS_SIGNAL;
> +		*status |= FE_HAS_SIGNAL;	/* Tuner locked */
>
>   	if (val >= 4)
> -		*status |= FE_HAS_CARRIER;
> +		*status |= FE_HAS_CARRIER;	/* Mode reliably detected */
>
> -	if (val >= 5)
> -		*status |= FE_HAS_VITERBI;
> +	if (val >= 6)
> +		*status |= FE_HAS_VITERBI;	/* PLL locked and broadband detected */
>
>   	if (val >= 7)
> -		*status |= FE_HAS_SYNC;
> +		*status |= FE_HAS_SYNC;		/* Frame sync */
>
> -	if (val >= 8)				/* Maybe 9? */
> -		*status |= FE_HAS_LOCK;
> +	if (val >= 8)
> +		*status |= FE_HAS_PARAMETERS;	/* TMCC locked */
> +
> +	if (val >= 9)
> +		*status |= FE_HAS_LOCK;		/* TS output started */
>
>   	dprintk("val = %d, status = 0x%02x\n", val, *status);
>
> diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
> index c12d452..e4daeee 100644
> --- a/include/uapi/linux/dvb/frontend.h
> +++ b/include/uapi/linux/dvb/frontend.h
> @@ -132,6 +132,9 @@ typedef enum fe_sec_mini_cmd {
>    * @FE_TIMEDOUT:	no lock within the last ~2 seconds
>    * @FE_REINIT:		frontend was reinitialized, application is recommended
>    *			to reset DiSEqC, tone and parameters
> + * @FE_HAS_PARAMETERS:	get_frontend() can now be called to provide the
> + *			detected network parameters. This should be risen
> + *			for example when the DVB-T TPS/ISDB-T TMCC is locked.
>    */
>
>   typedef enum fe_status {
> @@ -142,6 +145,7 @@ typedef enum fe_status {
>   	FE_HAS_LOCK		= 0x10,
>   	FE_TIMEDOUT		= 0x20,
>   	FE_REINIT		= 0x40,
> +	FE_HAS_PARAMETERS	= 0x80,
>   } fe_status_t;
>
>   typedef enum fe_spectral_inversion {
>


-- 
http://palosaari.fi/

      reply	other threads:[~2013-01-01 16:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-28 23:42 [RFC PATCH] [media] dvb: frontend API: Add a flag to indicate that get_frontend() can be called Mauro Carvalho Chehab
2013-01-01 16:43 ` Antti Palosaari [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=50E31220.5060405@iki.fi \
    --to=crope@iki.fi \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.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).