[linux-dvb] m920x device: Genius TVGo DVB-T02Q

Pere Blay pereblay at gmail.com
Wed Nov 28 08:15:00 CET 2007


Hi,

I've been away for a bit long.... But i'm very happy to see this nice
surprise when i'm back... a good firmware!! wonderful! i never thought
the parser could need some tuning, that was a very good work!

I'm willing to test the firmware, i'll post results as soon as i try it.

Regards,
Pere Blay

(PD.: I've seen now that i got 'undelivered' the message i sent long
ago with some 'snoopy' usblogs posted, surely it was because the
message was too 'big')

2007/11/26, Román <roman.pena.perez at gmail.com>:
>  Hi again,
>
>  As I didn't get any replies yet, I'll try to keep this subject alive.
> Here are the two patches you need to apply to m920x.c and
> dvb-usb-ids.h to get the TVGo DVB-T02Q a step further (anyway, no
> tuning so far: I've finally tested it using a strong enough signal,
> with no success). As I said before, they are completely based on Pere
> Blay's work. If someone is interested in this particular model,
> PLEASE, LET ME KNOW.
> (And remember, in my last post you can get a valid firmware for the device).
>
>
>
> diff -r 6b1892ed1e74 linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
> --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h     Fri Oct 26
> 02:26:53 2007 +0200
> +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h     Mon Nov 26
> 18:40:46 2007 +0100
> @@ -75,6 +75,7 @@
>  #define USB_PID_DPOSH_M9206_COLD                       0x9206
>  #define USB_PID_DPOSH_M9206_WARM                       0xa090
>  #define USB_PID_UNIWILL_STK7700P                       0x6003
> +#define USB_PID_GENIUS_DVBT_TVGO_T02Q                  0x702b
>  #define USB_PID_GRANDTEC_DVBT_USB_COLD                 0x0fa0
>  #define USB_PID_GRANDTEC_DVBT_USB_WARM                 0x0fa1
>  #define USB_PID_KWORLD_VSTREAM_COLD                    0x17de
>
>
>
> diff -r 6b1892ed1e74 linux/drivers/media/dvb/dvb-usb/m920x.c
> --- a/linux/drivers/media/dvb/dvb-usb/m920x.c   Fri Oct 26 02:26:53 2007 +0200
> +++ b/linux/drivers/media/dvb/dvb-usb/m920x.c   Mon Nov 26 18:36:42 2007 +0100
> @@ -16,6 +16,8 @@
>  #include "qt1010.h"
>  #include "tda1004x.h"
>  #include "tda827x.h"
> +#include "zl10353.h"
> +#include "mt2060.h"
>
>  /* debug */
>  static int dvb_usb_m920x_debug;
> @@ -469,11 +471,23 @@ static struct tda1004x_config m920x_tda1
>         .request_firmware = NULL, /* uses firmware EEPROM */
>  };
>
> +static struct zl10353_config tvgot02q_zl10353_config = {
> +       .demod_address = 0x0f,
> +       //.adc_clock = 22528,
> +       .no_tuner = 1,
> +       .parallel_ts = 1,
> +};
> +
>  /* tuner configurations */
>  static struct qt1010_config m920x_qt1010_config = {
>         .i2c_address = 0x62
>  };
>
> + static struct mt2060_config tvgot02q_mt2060_config = {
> +       //.clock_out = 1,
> +       .i2c_address = 0x60,
> +};
> +
>  /* Callbacks for DVB USB */
>  static int m920x_mt352_frontend_attach(struct dvb_usb_adapter *adap)
>  {
> @@ -510,6 +524,16 @@ static int m920x_tda10046_0b_frontend_at
>
>         return 0;
>  }
> +
> +static int tvgot02q_frontend_attach(struct dvb_usb_adapter *adap)
> +{
> +       deb("tvgot02q_frontend_attach!\n");
> +
> +       if ((adap->fe = dvb_attach(zl10353_attach, &tvgot02q_zl10353_config,
> +                                 &adap->dev->i2c_adap)) == NULL)
> +              return -EIO;
> +       return 0;
> +}
>
>  static int m920x_qt1010_tuner_attach(struct dvb_usb_adapter *adap)
>  {
> @@ -539,6 +563,12 @@ static int m920x_tda8275_61_tuner_attach
>                 return -ENODEV;
>
>         return 0;
> +}
> +
> +static int mt2060_tuner_attach(struct dvb_usb_adapter *adap)
> +{
> +       return dvb_attach(mt2060_attach,adap->fe, &adap->dev->i2c_adap,
> +                        &tvgot02q_mt2060_config,0) == NULL ? -ENODEV : 0;
>  }
>
>  /* device-specific initialization */
> @@ -554,6 +584,12 @@ static struct m920x_inits tvwalkertwin_r
>         { 0xff28,         0x00 },
>         { 0xff23,         0x00 },
>         { 0xff21,         0x30 },
> +       { } /* terminating entry */
> +};
> +
> +static struct m920x_inits tvgot02q_rc_init [] = {
> +       { M9206_RC_INIT2, 0xa8 },
> +       { M9206_RC_INIT1, 0x51 },
>         { } /* terminating entry */
>  };
>
> @@ -597,11 +633,15 @@ static struct dvb_usb_rc_key tvwalkertwi
>         { 0x0, 0x1e, KEY_VOLUMEUP },
>  };
>
> +static struct dvb_usb_rc_key tvgot02q_rc_keys [] = {
> +};
> +
>  /* DVB USB Driver stuff */
>  static struct dvb_usb_device_properties megasky_properties;
>  static struct dvb_usb_device_properties digivox_mini_ii_properties;
>  static struct dvb_usb_device_properties tvwalkertwin_properties;
>  static struct dvb_usb_device_properties dposh_properties;
> +static struct dvb_usb_device_properties tvgot02q_properties;
>
>  static int m920x_probe(struct usb_interface *intf,
>                        const struct usb_device_id *id)
> @@ -642,6 +682,12 @@ static int m920x_probe(struct usb_interf
>                         /* Remote controller not supported yet. */
>                         goto found;
>                 }
> +
> +                if ((ret = dvb_usb_device_init(intf, &tvgot02q_properties,
> +                                               THIS_MODULE, &d)) == 0) {
> +                        rc_init_seq = tvgot02q_rc_init;
> +                        goto found;
> +                }
>
>                 return ret;
>         } else {
> @@ -673,6 +719,7 @@ static struct usb_device_id m920x_table
>                              USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) },
>                 { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_COLD) },
>                 { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_WARM) },
> +               { USB_DEVICE(USB_VID_KYE, USB_PID_GENIUS_DVBT_TVGO_T02Q) },
>                 { }             /* Terminating entry */
>  };
>  MODULE_DEVICE_TABLE (usb, m920x_table);
> @@ -886,6 +933,57 @@ static struct dvb_usb_device_properties
>          }
>  };
>
> +static struct dvb_usb_device_properties tvgot02q_properties = {
> +        .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> +
> +        .usb_ctrl = DEVICE_SPECIFIC,
> +        .firmware = "dvb-usb-t02q-02.fw",
> +        .download_firmware = m920x_firmware_download,
> +
> +       .rc_interval      = 100,
> +       .rc_key_map       = tvgot02q_rc_keys,
> +       .rc_key_map_size  = ARRAY_SIZE(tvgot02q_rc_keys),
> +       .rc_query         = m920x_rc_query,
> +
> +        .size_of_priv   = sizeof(struct m920x_state),
> +
> +        .identify_state   = m920x_identify_state,
> +        .num_adapters = 1,
> +        .adapter = {{
> +                .caps =  DVB_USB_ADAP_HAS_PID_FILTER |
> +                        DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
> +
> +               .pid_filter_count = 8,
> +               .pid_filter       = m920x_pid_filter,
> +               .pid_filter_ctrl  = m920x_pid_filter_ctrl,
> +
> +               .frontend_attach  = tvgot02q_frontend_attach,
> +               .tuner_attach     = mt2060_tuner_attach,
> +
> +               .stream = {
> +                       .type = USB_BULK,
> +                       .count = 8,
> +                       .endpoint = 0x81,
> +                       .u = {
> +                               .bulk = {
> +                                       .buffersize = 512,
> +                               }
> +                       }
> +               },
> +        }},
> +        .i2c_algo       = &m920x_i2c_algo,
> +
> +        .num_device_descs = 1,
> +        .devices = {
> +               { "Genius TVGo DVB-T02Q",
> +                    { &m920x_table[6], NULL },
> +                    { NULL },
> +               },
> +        }
> +};
> +
> +
> +
>  static struct usb_driver m920x_driver = {
>  #if LINUX_VERSION_CODE <=  KERNEL_VERSION(2,6,15)
>         .owner          = THIS_MODULE,
>
>
>
>
> --
>
>            Román
>
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>



More information about the linux-dvb mailing list