>See http://www.linuxtv.org/wiki/index.php/M920x_firmware on how to
>retrieve new firmware.
thanks! i'll have to borrow a bit of time from some friend's WXP box, i have
no windows at home (everything running linux) and then it will take a
while... the firmware used in the test was a dummy one,... if there was no
firmware or if an empty file was used, then i got a message telling me that
the firmware wasn't present,...
on the other hand, whatever firmware i put in there (from whatever device) it
is just loaded but nothing else happens...
no windows at home (everything running linux) and then it will take a
while... the firmware used in the test was a dummy one,... if there was no
firmware or if an empty file was used, then i got a message telling me that
the firmware wasn't present,...
on the other hand, whatever firmware i put in there (from whatever device) it
is just loaded but nothing else happens...
>Please include output from "lsusb -v" after firmware has been loaded.
>Once you have gotten m920x driver to load properly, you need to get
>some dumps so that we can identify which tuner you have. They are also
>important when adding support for mt2060 tuner to m920x. It might work
>out of the box if you have qt1010.
>
>Please post you changes as diffs. You can get one with command
>"hg diff" or with "diff -uNr original_dir modified_dir" .
thanks for the hint, i guess the modification makes the device recognized and
tries to guess which are the frontends
find attached the output of "hg diff" (my first silly mistake: i did not keep
a clean copy of the code to compare with the modified one)
... more on firmware soon!!
Cheers,
Pere Blay
tries to guess which are the frontends
find attached the output of "hg diff" (my first silly mistake: i did not keep
a clean copy of the code to compare with the modified one)
... more on firmware soon!!
Cheers,
Pere Blay
diff -r b7bcb8bd0d79 linux/drivers/media/dvb/dvb-usb/m920x.c --- a/linux/drivers/media/dvb/dvb-usb/m920x.c Wed May 09 00:33:52 2007 +0300 +++ b/linux/drivers/media/dvb/dvb-usb/m920x.c Mon Jun 11 09:06:15 2007 +0200 @@ -10,10 +10,11 @@ */ #include "m920x.h" - #include "mt352.h" #include "mt352_priv.h" +#include "zl10353.h" #include "qt1010.h" +#include "mt2060.h" #include "tda1004x.h" #include "tda827x.h" @@ -445,6 +446,22 @@ static struct mt352_config m920x_mt352_c .demod_init = m920x_mt352_demod_init, }; +static struct zl10353_config tvgo_t02q_zl10353_config = { + .demod_address = 0x1e, + .no_tuner = 1, + .parallel_ts = 1, +}; + +static struct mt2060_config tvgo_t02q_mt2060_config = { + .i2c_address = 0x60, +}; + +static int mt2060_tuner_attach(struct dvb_usb_adapter *adap) +{ + return dvb_attach(mt2060_attach,adap->fe, &adap->dev->i2c_adap, + &tvgo_t02q_mt2060_config,0) == NULL ? -ENODEV : 0; +} + static struct tda1004x_config m920x_tda10046_08_config = { .demod_address = 0x08, .invert = 0, @@ -497,6 +514,16 @@ static int m920x_tda10046_08_frontend_at return -EIO; return 0; +} + +static int tvgo_t02q_frontend_attach(struct dvb_usb_adapter *adap) +{ + deb("tvgo_t02q_frontend_attach!\n"); + + if ((adap->fe = dvb_attach(zl10353_attach, &tvgo_t02q_zl10353_config, + &adap->dev->i2c_adap)) != NULL) + return 0; + return -EIO; } static int m920x_tda10046_0b_frontend_attach(struct dvb_usb_adapter *adap) @@ -602,6 +629,7 @@ static struct dvb_usb_device_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 tvgo_t02q_properties; static int m920x_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -614,23 +642,18 @@ static int m920x_probe(struct usb_interf deb("Probing for m920x device at interface %d\n", bInterfaceNumber); if (bInterfaceNumber == 0) { - /* Single-tuner device, or first interface on - * multi-tuner device - */ - - if ((ret = dvb_usb_device_init(intf, &megasky_properties, - THIS_MODULE, &d)) == 0) { + + if ((ret = dvb_usb_device_init(intf, &megasky_properties, THIS_MODULE, &d)) == 0 || + (ret = dvb_usb_device_init(intf, &tvgo_t02q_properties, THIS_MODULE, &d)) == 0) { rc_init_seq = megasky_rc_init; goto found; } if ((ret = dvb_usb_device_init(intf, &digivox_mini_ii_properties, THIS_MODULE, &d)) == 0) { - /* No remote control, so no rc_init_seq */ goto found; } - /* This configures both tuners on the TV Walker Twin */ if ((ret = dvb_usb_device_init(intf, &tvwalkertwin_properties, THIS_MODULE, &d)) == 0) { rc_init_seq = tvwalkertwin_rc_init; @@ -639,18 +662,11 @@ static int m920x_probe(struct usb_interf if ((ret = dvb_usb_device_init(intf, &dposh_properties, THIS_MODULE, &d)) == 0) { - /* Remote controller not supported yet. */ goto found; } return ret; } else { - /* Another interface on a multi-tuner device */ - - /* The LifeView TV Walker Twin gets here, but struct - * tvwalkertwin_properties already configured both - * tuners, so there is nothing for us to do here - */ } found: @@ -663,14 +679,13 @@ static int m920x_probe(struct usb_interf return ret; } + static struct usb_device_id m920x_table [] = { { USB_DEVICE(USB_VID_MSI, USB_PID_MSI_MEGASKY580) }, - { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, - USB_PID_MSI_DIGI_VOX_MINI_II) }, - { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, - USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD) }, - { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, - USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) }, + { USB_DEVICE(USB_VID_KYE, USB_PID_GENIUS_TVGO_DVB_T02Q) }, + { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, USB_PID_MSI_DIGI_VOX_MINI_II) }, + { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD) }, + { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, 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) }, { } /* Terminating entry */ @@ -726,6 +741,50 @@ static struct dvb_usb_device_properties } }; + +static struct dvb_usb_device_properties tvgo_t02q_properties = { + .caps = DVB_USB_IS_AN_I2C_ADAPTER | DVB_USB_ADAP_HAS_PID_FILTER | + DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, + + .usb_ctrl = DEVICE_SPECIFIC, + .firmware = "dvb-usb-t02q-02.fw", + .download_firmware = m920x_firmware_download, + + .size_of_priv = sizeof(struct m920x_state), + + .identify_state = m920x_identify_state, + .num_adapters = 1, + .adapter = {{ + .pid_filter_count = 8, + .pid_filter = m920x_pid_filter, + .pid_filter_ctrl = m920x_pid_filter_ctrl, + + .frontend_attach = tvgo_t02q_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[1], NULL }, + { NULL }, + }, + } +}; + + static struct dvb_usb_device_properties digivox_mini_ii_properties = { .caps = DVB_USB_IS_AN_I2C_ADAPTER, @@ -764,7 +823,7 @@ static struct dvb_usb_device_properties .num_device_descs = 1, .devices = { { "MSI DIGI VOX mini II DVB-T USB2.0", - { &m920x_table[1], NULL }, + { &m920x_table[2], NULL }, { NULL }, }, } @@ -841,8 +900,8 @@ static struct dvb_usb_device_properties .num_device_descs = 1, .devices = { { .name = "LifeView TV Walker Twin DVB-T USB2.0", - .cold_ids = { &m920x_table[2], NULL }, - .warm_ids = { &m920x_table[3], NULL }, + .cold_ids = { &m920x_table[3], NULL }, + .warm_ids = { &m920x_table[4], NULL }, }, } }; @@ -880,8 +939,8 @@ static struct dvb_usb_device_properties .num_device_descs = 1, .devices = { { .name = "Dposh DVB-T USB2.0", - .cold_ids = { &m920x_table[4], NULL }, - .warm_ids = { &m920x_table[5], NULL }, + .cold_ids = { &m920x_table[5], NULL }, + .warm_ids = { &m920x_table[6], NULL }, }, } };
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb