Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

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

 



Tommy Jonsson wrote:
> --- a/linux/drivers/media/dvb/firewire/firedtv-avc.c	Fri Sep 03
> 00:28:05 2010 -0300
> +++ b/linux/drivers/media/dvb/firewire/firedtv-avc.c	Sun Sep 12
> 06:52:02 2010 +0200
[...]
> @@ -368,10 +369,30 @@
>  		c->operand[12] = 0;
> 
>  	if (fdtv->type == FIREDTV_DVB_S2) {
> -		c->operand[13] = 0x1;
> -		c->operand[14] = 0xff;
> -		c->operand[15] = 0xff;
> -
> + 		if (fe->dtv_property_cache.delivery_system == SYS_DVBS2) {
> +			switch (fe->dtv_property_cache.modulation) {
> +			case QAM_16:		c->operand[13] = 0x1; break;
> +			case QPSK:		c->operand[13] = 0x2; break;
> +			case PSK_8:		c->operand[13] = 0x3; break;
> +			default:		c->operand[13] = 0x2; break;
> +			}
> + 			switch (fe->dtv_property_cache.rolloff) {
> +			case ROLLOFF_AUTO:	c->operand[14] = 0x2; break;
> +			case ROLLOFF_35:	c->operand[14] = 0x2; break;
> +			case ROLLOFF_20:	c->operand[14] = 0x0; break;
> +			case ROLLOFF_25:	c->operand[14] = 0x1; break;
> +			/* case ROLLOFF_NONE:	c->operand[14] = 0xff; break; */
> +			}
> +			switch (fe->dtv_property_cache.pilot) {
> +			case PILOT_AUTO:	c->operand[15] = 0x0; break;
> +			case PILOT_OFF:		c->operand[15] = 0x0; break;
> +			case PILOT_ON:		c->operand[15] = 0x1; break;
> +			}
> +		} else {
> +			c->operand[13] = 0x1;  /* auto modulation */
> +			c->operand[14] = 0xff; /* disable rolloff */
> +			c->operand[15] = 0xff; /* disable pilot */
> +		}
>  		return 16;

Is it correct that there is no default: case for operand[14] and [15]?

>  	} else {
>  		return 13;
> @@ -548,7 +569,7 @@
>  	return 17 + add_pid_filter(fdtv, &c->operand[17]);
>  }
> 
> -int avc_tuner_dsd(struct firedtv *fdtv,
> +int avc_tuner_dsd(struct dvb_frontend *fe, struct firedtv *fdtv,
>  		  struct dvb_frontend_parameters *params)
>  {
>  	struct avc_command_frame *c = (void *)fdtv->avc_data;

The frontend can be accessed via fdtv->fe also.  (I can change this together
with the whitespace things if you agree.)

> @@ -561,7 +582,7 @@
> 
>  	switch (fdtv->type) {
>  	case FIREDTV_DVB_S:
> -	case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fdtv, params); break;
> +	case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fe, fdtv, params); break;
>  	case FIREDTV_DVB_C: pos = avc_tuner_dsd_dvb_c(fdtv, params); break;
>  	case FIREDTV_DVB_T: pos = avc_tuner_dsd_dvb_t(fdtv, params); break;
>  	default:
> diff -r 6e0befab696a linux/drivers/media/dvb/firewire/firedtv-fe.c
> --- a/linux/drivers/media/dvb/firewire/firedtv-fe.c	Fri Sep 03
> 00:28:05 2010 -0300
> +++ b/linux/drivers/media/dvb/firewire/firedtv-fe.c	Sun Sep 12
> 06:52:02 2010 +0200
[...]
> @@ -155,6 +156,17 @@
>  	return -EOPNOTSUPP;
>  }
> 
> +static int fdtv_get_property(struct dvb_frontend *fe,
> +                             struct dtv_property *tvp)
> +{
> +	return 0;
> +}
> +static int fdtv_set_property(struct dvb_frontend *fe,
> +                             struct dtv_property *tvp)
> +{
> +	return 0;
> +}
> +
>  void fdtv_frontend_init(struct firedtv *fdtv)
>  {
>  	struct dvb_frontend_ops *ops = &fdtv->fe.ops;
> @@ -166,6 +178,9 @@
>  	ops->set_frontend		= fdtv_set_frontend;
>  	ops->get_frontend		= fdtv_get_frontend;
> 
> +	ops->get_property		= fdtv_get_property;
> +	ops->set_property		= fdtv_set_property;
> +
>  	ops->read_status		= fdtv_read_status;
>  	ops->read_ber			= fdtv_read_ber;
>  	ops->read_signal_strength	= fdtv_read_signal_strength;
[...]

(Hmm, note to self:  Can't DVB core provide empty default methods?)
-- 
Stefan Richter
-=====-==-=- =--= -====
http://arcgraph.de/sr/
--
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