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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to