It is unlikely you can use other device's firmware.
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...
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
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
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb