Em 01-09-2010 09:35, Josef Pavlik escreveu:
> Fixed problem with DiSEqC communication. The message was wrongly modulated, 
> so the DiSEqC switch was not work.
> 
> This patch fixes DiSEqC messages, simple tone burst and tone on/off. 
> I verified it with osciloscope against the DiSEqC documentation.
> 
> Interface: PCI DVB-S TV tuner TeVii S420
> Kernel: 2.6.32-24-generic (UBUNTU 10.4)
> 
> Signed-off-by: Josef Pavlik <jo...@pavlik.it>

Patch doesn't apply against the latest version, at my -git tree. 
Not sure if the bugs you're pointing were already fixed.

Cheers,
Mauro.
> 
> 
> 
> 
> diff --git a/drivers/media/dvb/frontends/stv0288.c 
> b/drivers/media/dvb/frontends/stv0288.c
> index 2930a5d..6a32535 100644
> --- a/drivers/media/dvb/frontends/stv0288.c
> +++ b/drivers/media/dvb/frontends/stv0288.c
> @@ -6,6 +6,8 @@
>         Copyright (C) 2008 Igor M. Liplianin <liplia...@me.by>
>                 Removed stb6000 specific tuner code and revised some
>                 procedures.
> +       2010-09-01 Josef Pavlik <jo...@pavlik.it>
> +               Fixed diseqc_msg, diseqc_burst and set_tone problems
> 
>         This program is free software; you can redistribute it and/or modify
>         it under the terms of the GNU General Public License as published by
> @@ -156,14 +158,13 @@ static int stv0288_send_diseqc_msg(struct dvb_frontend 
> *fe,
> 
>         stv0288_writeregI(state, 0x09, 0);
>         msleep(30);
> -       stv0288_writeregI(state, 0x05, 0x16);
> +       stv0288_writeregI(state, 0x05, 0x12); /* modulated mode, single shot 
> */
> 
>         for (i = 0; i < m->msg_len; i++) {
>                 if (stv0288_writeregI(state, 0x06, m->msg[i]))
>                         return -EREMOTEIO;
> -               msleep(12);
>         }
> -
> +       msleep(m->msg_len*12);
>         return 0;
>  }
> 
> @@ -174,13 +175,14 @@ static int stv0288_send_diseqc_burst(struct 
> dvb_frontend *fe,
> 
>         dprintk("%s\n", __func__);
> 
> -       if (stv0288_writeregI(state, 0x05, 0x16))/* burst mode */
> +       if (stv0288_writeregI(state, 0x05, 0x03)) /* "simple tone burst" 
> mode, single shot */
>                 return -EREMOTEIO;
> 
>         if (stv0288_writeregI(state, 0x06, burst == SEC_MINI_A ? 0x00 : 0xff))
>                 return -EREMOTEIO;
> 
> -       if (stv0288_writeregI(state, 0x06, 0x12))
> +       msleep(15);
> +       if (stv0288_writeregI(state, 0x05, 0x12))
>                 return -EREMOTEIO;
> 
>         return 0;
> @@ -192,18 +194,19 @@ static int stv0288_set_tone(struct dvb_frontend *fe, 
> fe_sec_tone_mode_t tone)
> 
>         switch (tone) {
>         case SEC_TONE_ON:
> -               if (stv0288_writeregI(state, 0x05, 0x10))/* burst mode */
> +               if (stv0288_writeregI(state, 0x05, 0x10))/* burst mode, 
> continuous carrier */
>                         return -EREMOTEIO;
> -               return stv0288_writeregI(state, 0x06, 0xff);
> +               break;
> 
>         case SEC_TONE_OFF:
> -               if (stv0288_writeregI(state, 0x05, 0x13))/* burst mode */
> +               if (stv0288_writeregI(state, 0x05, 0x12))/* burst mode off*/
>                         return -EREMOTEIO;
> -               return stv0288_writeregI(state, 0x06, 0x00);
> +               break;
> 
>         default:
>                 return -EINVAL;
>         }
> +       return 0;
>  }
> 
>  static u8 stv0288_inittab[] = {
> --
> 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

--
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