public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Andreas Oberritter <obi@linuxtv.org>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Manu Abraham <abraham.manu@gmail.com>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Steven Toth <stoth@kernellabs.com>
Subject: Re: PATCH: Query DVB frontend capabilities
Date: Fri, 11 Nov 2011 16:06:07 +0100	[thread overview]
Message-ID: <4EBD39DF.8060909@linuxtv.org> (raw)
In-Reply-To: <4EBD347C.40801@redhat.com>

On 11.11.2011 15:43, Mauro Carvalho Chehab wrote:
> Em 11-11-2011 12:30, Andreas Oberritter escreveu:
>> On 11.11.2011 07:26, Manu Abraham wrote:
>>> diff -r b6eb04718aa9 linux/drivers/media/dvb/dvb-core/dvb_frontend.c
>>> --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	Wed Nov 09 19:52:36 2011 +0530
>>> +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	Fri Nov 11 06:05:40 2011 +0530
>>> @@ -973,6 +973,8 @@
>>>  	_DTV_CMD(DTV_GUARD_INTERVAL, 0, 0),
>>>  	_DTV_CMD(DTV_TRANSMISSION_MODE, 0, 0),
>>>  	_DTV_CMD(DTV_HIERARCHY, 0, 0),
>>> +
>>> +	_DTV_CMD(DTV_DELIVERY_CAPS, 0, 0),
>>>  };
>>>  
>>>  static void dtv_property_dump(struct dtv_property *tvp)
>>> @@ -1226,7 +1228,11 @@
>>>  		c = &cdetected;
>>>  	}
>>>  
>>> +	dprintk("%s\n", __func__);
>>> +
>>>  	switch(tvp->cmd) {
>>> +	case DTV_DELIVERY_CAPS:
>>
>> It would be nice to have a default implementation inserted at this point, e.g. something like:
>>
>> static void dtv_set_default_delivery_caps(const struct dvb_frontend *fe, struct dtv_property *p)
>> {
>> 	const struct dvb_frontend_info *info = &fe->ops.info;
>> 	u32 ncaps = 0;
>>
>> 	switch (info->type) {
>> 	case FE_QPSK:
>> 		p->u.buffer.data[ncaps++] = SYS_DVBS;
>> 		if (info->caps & FE_CAN_2G_MODULATION)
>> 			p->u.buffer.data[ncaps++] = SYS_DVBS2;
>> 		if (info->caps & FE_CAN_TURBO_FEC)
>> 			p->u.buffer.data[ncaps++] = SYS_TURBO;
>> 		break;
>> 	case FE_QAM:
>> 		p->u.buffer.data[ncaps++] = SYS_DVBC_ANNEX_AC;
>> 		break;
>> 	case FE_OFDM:
>> 		p->u.buffer.data[ncaps++] = SYS_DVBT;
>> 		if (info->caps & FE_CAN_2G_MODULATION)
>> 			p->u.buffer.data[ncaps++] = SYS_DVBT2;
>> 		break;
>> 	case FE_ATSC:
>> 		if (info->caps & (FE_CAN_8VSB | FE_CAN_16VSB))
>> 			p->u.buffer.data[ncaps++] = SYS_ATSC;
>> 		if (info->caps & (FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256))
>> 			p->u.buffer.data[ncaps++] = SYS_DVBC_ANNEX_B;
>> 	}
>>
>> 	p->u.buffer.len = ncaps;
>> }
>>
>> I think this would be sufficient for a lot of drivers and would thus save a lot of work.
>>
>>> +		break;
>>>  	case DTV_FREQUENCY:
>>>  		tvp->u.data = c->frequency;
>>>  		break;
>>> @@ -1350,7 +1356,7 @@
>>>  		if (r < 0)
>>>  			return r;
>>>  	}
>>> -
>>> +done:
>>
>> This label is unused now and should be removed.
>>
>>>  	dtv_property_dump(tvp);
>>>  
>>>  	return 0;
>>> diff -r b6eb04718aa9 linux/drivers/media/dvb/frontends/stb0899_drv.c
>>> --- a/linux/drivers/media/dvb/frontends/stb0899_drv.c	Wed Nov 09 19:52:36 2011 +0530
>>> +++ b/linux/drivers/media/dvb/frontends/stb0899_drv.c	Fri Nov 11 06:05:40 2011 +0530
>>> @@ -1605,6 +1605,22 @@
>>>  	return DVBFE_ALGO_CUSTOM;
>>>  }
>>>  
>>> +static int stb0899_get_property(struct dvb_frontend *fe, struct dtv_property *p)
>>> +{
>>> +	switch (p->cmd) {
>>> +	case DTV_DELIVERY_CAPS:
>>> +		p->u.buffer.data[0] = SYS_DSS;
>>> +		p->u.buffer.data[1] = SYS_DVBS;
>>> +		p->u.buffer.data[2] = SYS_DVBS2;
>>> +		p->u.buffer.len = 3;
>>> +		break;
>>> +	default:
>>> +		return -EINVAL;
>>
>> You should ignore all unhandled properties. Otherwise all properties handled
>> by the core will have result set to -EINVAL.
> 
> IMHO, the better is to set all parameters via stb0899_get_property(). We should
> work on deprecate the old way, as, by having all frontends implementing the
> get/set property ops, we can remove part of the legacy code inside the DVB core.

I'm not sure what "legacy code" you're referring to. If you're referring
to the big switch in dtv_property_process_get(), which presets output
values based on previously set tuning parameters, then no, please don't
deprecate it. It doesn't improve driver code if you move this switch
down into every driver.

Of course, a driver can and should override any property it knows about
in its get_property callback, if - and only if - the property value
possibly differs from the value set by the default implementation in
dvb_frontend.

However, all of this is out of scope of Manu's patch. Please just remove
the erroneous return statement.

>>
>>> +	}
>>> +	return 0;
>>> +}
>>> +
>>> +
>>>  static struct dvb_frontend_ops stb0899_ops = {
>>>  
>>>  	.info = {
>>> @@ -1647,6 +1663,8 @@
>>>  	.diseqc_send_master_cmd		= stb0899_send_diseqc_msg,
>>>  	.diseqc_recv_slave_reply	= stb0899_recv_slave_reply,
>>>  	.diseqc_send_burst		= stb0899_send_diseqc_burst,
>>> +
>>> +	.get_property			= stb0899_get_property,
>>>  };
>>>  
>>>  struct dvb_frontend *stb0899_attach(struct stb0899_config *config, struct i2c_adapter *i2c)
>>> diff -r b6eb04718aa9 linux/include/linux/dvb/frontend.h
>>> --- a/linux/include/linux/dvb/frontend.h	Wed Nov 09 19:52:36 2011 +0530
>>> +++ b/linux/include/linux/dvb/frontend.h	Fri Nov 11 06:05:40 2011 +0530
>>> @@ -316,7 +316,9 @@
>>>  
>>>  #define DTV_DVBT2_PLP_ID	43
>>>  
>>> -#define DTV_MAX_COMMAND				DTV_DVBT2_PLP_ID
>>> +#define DTV_DELIVERY_CAPS	44
>>> +
>>> +#define DTV_MAX_COMMAND				DTV_DELIVERY_CAPS
>>>  
>>>  typedef enum fe_pilot {
>>>  	PILOT_ON,
>>>
>>
> 


  reply	other threads:[~2011-11-11 15:06 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-10 14:18 PATCH: Query DVB frontend capabilities Manu Abraham
2011-11-10 14:44 ` Andreas Oberritter
2011-11-10 15:30   ` Manu Abraham
2011-11-10 21:20     ` Mauro Carvalho Chehab
2011-11-11  6:26       ` Manu Abraham
2011-11-11 10:12         ` Mauro Carvalho Chehab
2011-11-11 22:07           ` Manu Abraham
2011-11-11 22:38             ` Mauro Carvalho Chehab
2011-11-12  3:36               ` Andreas Oberritter
2011-11-13 11:39                 ` Mauro Carvalho Chehab
2011-11-11 14:30         ` Andreas Oberritter
2011-11-11 14:43           ` Mauro Carvalho Chehab
2011-11-11 15:06             ` Andreas Oberritter [this message]
2011-11-11 17:14               ` Mauro Carvalho Chehab
2011-11-11 20:09                 ` Andreas Oberritter
2011-11-11 22:02                   ` Mauro Carvalho Chehab
2011-11-12  4:02                     ` Andreas Oberritter
2011-11-11 22:12           ` Manu Abraham
2011-11-11  9:55       ` FE_CAN-bits (was: Re: PATCH: Query DVB frontend capabilities) Patrick Boettcher
2011-11-11 10:21         ` FE_CAN-bits Mauro Carvalho Chehab
2011-11-11 11:36         ` FE_CAN-bits Antti Palosaari
2011-11-11 12:44           ` FE_CAN-bits Mauro Carvalho Chehab
2011-11-11 17:43       ` PATCH: Query DVB frontend capabilities BOUWSMA Barry
2011-11-11 18:37         ` Mauro Carvalho Chehab
2011-11-11 22:34           ` Manu Abraham
2011-11-13 13:32             ` Mauro Carvalho Chehab
2011-11-13 15:27               ` Manu Abraham
2011-11-14 11:47                 ` Mauro Carvalho Chehab
2011-11-14 15:02                   ` Manu Abraham
2011-11-14 16:39                     ` Mauro Carvalho Chehab
2011-11-14 17:09                       ` Manu Abraham
2011-11-14 18:08                         ` Mauro Carvalho Chehab
2011-11-14 18:30                           ` Manu Abraham
2011-11-14 18:42                             ` Mauro Carvalho Chehab
2011-11-14 18:59                               ` Manu Abraham
2011-11-14 20:31                                 ` Mauro Carvalho Chehab

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=4EBD39DF.8060909@linuxtv.org \
    --to=obi@linuxtv.org \
    --cc=abraham.manu@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=stoth@kernellabs.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