Re: [PATCH 5/5] lmedm04: add read snr, signal strength and ber call backs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Tue, 03 Feb 2015 19:31:16 +0000
Malcolm Priestley <tvboxspy@xxxxxxxxx> escreveu:

> 
> 
> On 03/02/15 19:19, Mauro Carvalho Chehab wrote:
> > Em Fri,  2 Jan 2015 13:56:31 +0000
> > Malcolm Priestley <tvboxspy@xxxxxxxxx> escreveu:
> >
> >> This allows calling the original functions providing the streaming is off.
> >
> > Malcolm,
> >
> > I'm applying this patch series, as the driver has already some support for
> > the legacy DVBv3 stats, but please port it to use DVBv5.
> Hi Mauro,
> 
> I am not sure what you mean by this?

The DVB API version 3 has some issues with stats. The main one is that
they don't provide any glue to userspace about what scale they use. 
Due to that, we've added a new API at DVB. We're gradually adding
support for that on the already existing drivers.

> Are there any examples?

Yes. You can see, for example:

$ git lg drivers/media/dvb-frontends/ |grep stats
906aaf5a195b [media] dvb:tc90522: fix stats report
1d0ceae4a19d [media] af9033: wrap DVBv3 UCB to DVBv5 UCB stats
041ad449683b [media] dib7000p: Add DVBv5 stats support
d591590e1b5b [media] drx-j: enable DVBv5 stats
6983257813dc [media] drx-j: properly handle bit counts on stats
03fdfbfd3b59 [media] drx-j: Prepare to use DVBv5 stats
704f01bbc7e4 [media] dib8000: be sure that stats are available before reading them
7a9d85d5559f [media] dib8000: Fix UCB measure with DVBv5 stats
6ef06e78c74c [media] dib8000: add DVBv5 stats
8f3741e02831 [media] drxk: Add pre/post BER and PER/UCB stats
8b8e444a2711 [media] mb86a20s: Don't reset strength with the other stats
15b1c5a068e7 [media] mb86a20s: provide CNR stats before FE_HAS_SYNC

or:

$ git lg drivers/media/dvb-frontends/ |grep DVBv5
25ef9f554713 [media] rtl2832: implement DVBv5 signal strength statistics
084330b746d9 [media] rtl2832: wrap DVBv5 BER to DVBv3
f7caf93fb8ed [media] rtl2832: wrap DVBv5 CNR to DVBv3 SNR
6b4fd01804ce [media] rtl2832: implement DVBv5 BER statistic
19d273d63552 [media] rtl2832: implement DVBv5 CNR statistic
6dcfe3cc2e33 [media] rtl2830: wrap DVBv5 CNR to DVBv3 SNR
f491391cc331 [media] rtl2830: wrap DVBv5 BER to DVBv3
d512e286512c [media] rtl2830: wrap DVBv5 signal strength to DVBv3
5bb11ca5864a [media] rtl2830: implement DVBv5 BER statistic
871f70252b6f [media] rtl2830: implement DVBv5 signal strength statistics
47b4dbfff1f3 [media] rtl2830: implement DVBv5 CNR statistic
2db4d179e16d [media] af9033: init DVBv5 statistics
e53c47445bb5 [media] af9033: wrap DVBv3 BER to DVBv5 BER
1d0ceae4a19d [media] af9033: wrap DVBv3 UCB to DVBv5 UCB stats
6bb096c92671 [media] af9033: implement DVBv5 post-Viterbi BER
204f4319289f [media] af9033: implement DVBv5 stat block counters
6b45778609db [media] af9033: wrap DVBv3 read SNR to DVBv5 CNR
3e41313aeadf [media] af9033: implement DVBv5 statistics for CNR
83f1161911c5 [media] af9033: implement DVBv5 statistics for signal strength
041ad449683b [media] dib7000p: Add DVBv5 stats support
d591590e1b5b [media] drx-j: enable DVBv5 stats
03fdfbfd3b59 [media] drx-j: Prepare to use DVBv5 stats
7a9d85d5559f [media] dib8000: Fix UCB measure with DVBv5 stats
6ef06e78c74c [media] dib8000: add DVBv5 stats



> 
> 
> Regards
> 
> 
> Malcolm
> 
> 
> >
> > Thanks,
> > Mauro
> >
> >>
> >> Signed-off-by: Malcolm Priestley <tvboxspy@xxxxxxxxx>
> >> ---
> >>   drivers/media/usb/dvb-usb-v2/lmedm04.c | 24 ++++++++++++++++++++++++
> >>   1 file changed, 24 insertions(+)
> >>
> >> diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
> >> index a9c7fd0..5de6f7c 100644
> >> --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
> >> +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
> >> @@ -145,6 +145,10 @@ struct lme2510_state {
> >>   	void *usb_buffer;
> >>   	/* Frontend original calls */
> >>   	int (*fe_read_status)(struct dvb_frontend *, fe_status_t *);
> >> +	int (*fe_read_signal_strength)(struct dvb_frontend *, u16 *);
> >> +	int (*fe_read_snr)(struct dvb_frontend *, u16 *);
> >> +	int (*fe_read_ber)(struct dvb_frontend *, u32 *);
> >> +	int (*fe_read_ucblocks)(struct dvb_frontend *, u32 *);
> >>   	int (*fe_set_voltage)(struct dvb_frontend *, fe_sec_voltage_t);
> >>   	u8 dvb_usb_lme2510_firmware;
> >>   };
> >> @@ -877,6 +881,9 @@ static int dm04_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
> >>   {
> >>   	struct lme2510_state *st = fe_to_priv(fe);
> >>
> >> +	if (st->fe_read_signal_strength && !st->stream_on)
> >> +		return st->fe_read_signal_strength(fe, strength);
> >> +
> >>   	switch (st->tuner_config) {
> >>   	case TUNER_LG:
> >>   		*strength = 0xff - st->signal_level;
> >> @@ -898,6 +905,9 @@ static int dm04_read_snr(struct dvb_frontend *fe, u16 *snr)
> >>   {
> >>   	struct lme2510_state *st = fe_to_priv(fe);
> >>
> >> +	if (st->fe_read_snr && !st->stream_on)
> >> +		return st->fe_read_snr(fe, snr);
> >> +
> >>   	switch (st->tuner_config) {
> >>   	case TUNER_LG:
> >>   		*snr = 0xff - st->signal_sn;
> >> @@ -917,6 +927,11 @@ static int dm04_read_snr(struct dvb_frontend *fe, u16 *snr)
> >>
> >>   static int dm04_read_ber(struct dvb_frontend *fe, u32 *ber)
> >>   {
> >> +	struct lme2510_state *st = fe_to_priv(fe);
> >> +
> >> +	if (st->fe_read_ber && !st->stream_on)
> >> +		return st->fe_read_ber(fe, ber);
> >> +
> >>   	*ber = 0;
> >>
> >>   	return 0;
> >> @@ -924,6 +939,11 @@ static int dm04_read_ber(struct dvb_frontend *fe, u32 *ber)
> >>
> >>   static int dm04_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
> >>   {
> >> +	struct lme2510_state *st = fe_to_priv(fe);
> >> +
> >> +	if (st->fe_read_ucblocks && !st->stream_on)
> >> +		return st->fe_read_ucblocks(fe, ucblocks);
> >> +
> >>   	*ucblocks = 0;
> >>
> >>   	return 0;
> >> @@ -1036,6 +1056,10 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap)
> >>   	}
> >>
> >>   	st->fe_read_status = adap->fe[0]->ops.read_status;
> >> +	st->fe_read_signal_strength = adap->fe[0]->ops.read_signal_strength;
> >> +	st->fe_read_snr = adap->fe[0]->ops.read_snr;
> >> +	st->fe_read_ber = adap->fe[0]->ops.read_ber;
> >> +	st->fe_read_ucblocks = adap->fe[0]->ops.read_ucblocks;
> >>
> >>   	adap->fe[0]->ops.read_status = dm04_read_status;
> >>   	adap->fe[0]->ops.read_signal_strength = dm04_read_signal_strength;
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux