V4L/DVB (4495): Fix "no data from ZL10353 based USB tuner" problem
authorChris Pascoe <c.pascoe@itee.uq.edu.au>
Thu, 10 Aug 2006 06:17:16 +0000 (03:17 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 26 Sep 2006 15:30:32 +0000 (12:30 -0300)
Force parallel transport stream output on the ZL10353 attached to a
bluebird device.
Addresses the problem where a frontend lock was observed, but no MPEG
transport data was received.

Signed-off-by: Chris Pascoe <c.pascoe@itee.uq.edu.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/dvb-usb/cxusb.c
drivers/media/dvb/frontends/zl10353.c
drivers/media/dvb/frontends/zl10353.h

index ac72e7ed9fcc4a300a977f36b2f17bc591323c54..c710c0176e0737e9174d3529b88e3e5db69d3dc8 100644 (file)
@@ -349,6 +349,7 @@ static struct mt352_config cxusb_dee1601_config = {
 
 static struct zl10353_config cxusb_zl10353_dee1601_config = {
        .demod_address = 0x0f,
+       .parallel_ts = 1,
 };
 
 static struct mt352_config cxusb_mt352_config = {
index 953fb55d87b62245bd19bd052954dca62a17e576..84abbaf362fb485db507e73ab3dbb93b03447022 100644 (file)
@@ -243,9 +243,12 @@ static int zl10353_init(struct dvb_frontend *fe)
 
        if (debug_regs)
                zl10353_dump_regs(fe);
+       if (state->config.parallel_ts)
+               zl10353_reset_attach[2] &= ~0x20;
 
        /* Do a "hard" reset if not already done */
-       if (zl10353_read_register(state, 0x50) != 0x03) {
+       if (zl10353_read_register(state, 0x50) != zl10353_reset_attach[1] ||
+           zl10353_read_register(state, 0x51) != zl10353_reset_attach[2]) {
                rc = zl10353_write(fe, zl10353_reset_attach,
                                   sizeof(zl10353_reset_attach));
                if (debug_regs)
index 6aec655d88141ffff43f54b4c925c5d06118eeea..79a947215c4d4d6a0d447dcbc39b85ba9caf6eee 100644 (file)
@@ -31,6 +31,9 @@ struct zl10353_config
 
        /* set if no pll is connected to the secondary i2c bus */
        int no_tuner;
+
+       /* set if parallel ts output is required */
+       int parallel_ts;
 };
 
 #if defined(CONFIG_DVB_ZL10353) || defined(CONFIG_DVB_ZL10353_MODULE)