Steve,
I have reworked the tuner callback now against your branch at:
http://linuxtv.org/hg/~stoth/v4l-dvb
The new Patch (to add support for this card) is attached inline below for testing (this is a hint Mark & Jon), I have not provided a signed-off note on purpose as I want to solve the issue mentioned in the next paragraph first.
Regarding the cx25840 module; the card doesn't seem to initialise properly (no DVB output and DMA errors in log) unless I have this requested. Once the card is up and running I can unload all drivers, recompile without the cx25840 and load and it will work again until I power off the computer and back on again (This has been tedious trying to work out which setting I had missed). Is there some initialisation work being performed in the cx25840 module that I can incorporate into my patch to remove this dependency? Or should I leave it as is?
Anyway nearly bedtime here.
Regards,
Stephen.
--------Patch------
diff -Naur v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885 v4l-dvb2/linux/Documentation/video4linux/CARDLIST.cx23885
--- v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885 2008-08-05 16:48:13.000000000 +1000
+++ v4l-dvb2/linux/Documentation/video4linux/CARDLIST.cx23885 2008-08-05 20:07:16.000000000 +1000
@@ -10,3 +10,4 @@
9 -> Hauppauge WinTV-HVR1400 [0070:8010]
10 -> DViCO FusionHDTV7 Dual Express [18ac:d618]
11 -> DViCO FusionHDTV DVB-T Dual Express [18ac:db78]
+ 12 -> Leadtek Winfast PxDVR3200 H [107d:6681]
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-cards.c
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-cards.c 2008-08-05 21:29:59.000000000 +1000
@@ -155,6 +155,10 @@
.portb = CX23885_MPEG_DVB,
.portc = CX23885_MPEG_DVB,
},
+ [CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H] = {
+ .name = "Leadtek Winfast PxDVR3200 H",
+ .portc = CX23885_MPEG_DVB,
+ },
};
const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
@@ -230,7 +234,11 @@
.subvendor = 0x18ac,
.subdevice = 0xdb78,
.card = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
- },
+ },{
+ .subvendor = 0x107d,
+ .subdevice = 0x6681,
+ .card = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,
+ },
};
const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -353,6 +361,10 @@
if (command == 0)
bitmask = 0x04;
break;
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ /* Tuner Reset Command */
+ bitmask = 0x00070404;
+ break;
case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
if (command == 0) {
@@ -492,6 +504,15 @@
mdelay(20);
cx_set(GP0_IO, 0x000f000f);
break;
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ /* GPIO-2 xc3028 tuner reset */
+ /* Put the parts into reset and back */
+ cx_set(GP0_IO, 0x00040000);
+ mdelay(20);
+ cx_clear(GP0_IO, 0x00000004);
+ mdelay(20);
+ cx_set(GP0_IO, 0x00040004);
+ break;
}
}
@@ -579,6 +600,7 @@
case CX23885_BOARD_HAUPPAUGE_HVR1200:
case CX23885_BOARD_HAUPPAUGE_HVR1700:
case CX23885_BOARD_HAUPPAUGE_HVR1400:
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
default:
ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -592,6 +614,7 @@
case CX23885_BOARD_HAUPPAUGE_HVR1800:
case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
case CX23885_BOARD_HAUPPAUGE_HVR1700:
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
request_module("cx25840");
break;
}
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-dvb.c
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-dvb.c 2008-08-05 21:29:00.000000000 +1000
@@ -37,6 +37,7 @@
#include "tda8290.h"
#include "tda18271.h"
#include "lgdt330x.h"
+#include "zl10353.h"
#include "xc5000.h"
#include "tda10048.h"
#include "tuner-xc2028.h"
@@ -502,6 +503,32 @@
}
break;
}
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ i2c_bus = &dev->i2c_bus[0];
+
+ port->dvb.frontend = dvb_attach(zl10353_attach,
+ &dvico_fusionhdtv_xc3028,
+ &i2c_bus->i2c_adap);
+ if (port->dvb.frontend != NULL) {
+ struct dvb_frontend *fe;
+ struct xc2028_config cfg = {
+ .i2c_adap = &dev->i2c_bus[1].i2c_adap,
+ .i2c_addr = 0x61,
+ .video_dev = port,
+ .callback = cx23885_tuner_callback,
+ };
+ static struct xc2028_ctrl ctl = {
+ .fname = "xc3028-v27.fw",
+ .max_len = 64,
+ .demod = XC3028_FE_ZARLINK456,
+ };
+
+ fe = dvb_attach(xc2028_attach, port->dvb.frontend,
+ &cfg);
+ if (fe != NULL && fe->ops.tuner_ops.set_config != NULL)
+ fe->ops.tuner_ops.set_config(fe, &ctl);
+ }
+ break;
default:
printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
dev->name);
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h v4l-dvb2/linux/drivers/media/video/cx23885/cx23885.h
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885.h 2008-08-05 20:10:57.000000000 +1000
@@ -66,6 +66,7 @@
#define CX23885_BOARD_HAUPPAUGE_HVR1400 9
#define CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP 10
#define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11
+#define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12
/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
#define CX23885_NORMS (\
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/Kconfig v4l-dvb2/linux/drivers/media/video/cx23885/Kconfig
--- v4l-dvb/linux/drivers/media/video/cx23885/Kconfig 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/Kconfig 2008-08-05 20:06:06.000000000 +1000
@@ -15,6 +15,7 @@
select DVB_S5H1409 if !DVB_FE_CUSTOMISE
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
+ select DVB_ZL10353 if !DVB_FE_CUSTOMISE
select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE
-------End Patch-------
I have reworked the tuner callback now against your branch at:
http://linuxtv.org/hg/~stoth/v4l-dvb
The new Patch (to add support for this card) is attached inline below for testing (this is a hint Mark & Jon), I have not provided a signed-off note on purpose as I want to solve the issue mentioned in the next paragraph first.
Regarding the cx25840 module; the card doesn't seem to initialise properly (no DVB output and DMA errors in log) unless I have this requested. Once the card is up and running I can unload all drivers, recompile without the cx25840 and load and it will work again until I power off the computer and back on again (This has been tedious trying to work out which setting I had missed). Is there some initialisation work being performed in the cx25840 module that I can incorporate into my patch to remove this dependency? Or should I leave it as is?
Anyway nearly bedtime here.
Regards,
Stephen.
--------Patch------
diff -Naur v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885 v4l-dvb2/linux/Documentation/video4linux/CARDLIST.cx23885
--- v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885 2008-08-05 16:48:13.000000000 +1000
+++ v4l-dvb2/linux/Documentation/video4linux/CARDLIST.cx23885 2008-08-05 20:07:16.000000000 +1000
@@ -10,3 +10,4 @@
9 -> Hauppauge WinTV-HVR1400 [0070:8010]
10 -> DViCO FusionHDTV7 Dual Express [18ac:d618]
11 -> DViCO FusionHDTV DVB-T Dual Express [18ac:db78]
+ 12 -> Leadtek Winfast PxDVR3200 H [107d:6681]
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-cards.c
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-cards.c 2008-08-05 21:29:59.000000000 +1000
@@ -155,6 +155,10 @@
.portb = CX23885_MPEG_DVB,
.portc = CX23885_MPEG_DVB,
},
+ [CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H] = {
+ .name = "Leadtek Winfast PxDVR3200 H",
+ .portc = CX23885_MPEG_DVB,
+ },
};
const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
@@ -230,7 +234,11 @@
.subvendor = 0x18ac,
.subdevice = 0xdb78,
.card = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
- },
+ },{
+ .subvendor = 0x107d,
+ .subdevice = 0x6681,
+ .card = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,
+ },
};
const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -353,6 +361,10 @@
if (command == 0)
bitmask = 0x04;
break;
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ /* Tuner Reset Command */
+ bitmask = 0x00070404;
+ break;
case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
if (command == 0) {
@@ -492,6 +504,15 @@
mdelay(20);
cx_set(GP0_IO, 0x000f000f);
break;
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ /* GPIO-2 xc3028 tuner reset */
+ /* Put the parts into reset and back */
+ cx_set(GP0_IO, 0x00040000);
+ mdelay(20);
+ cx_clear(GP0_IO, 0x00000004);
+ mdelay(20);
+ cx_set(GP0_IO, 0x00040004);
+ break;
}
}
@@ -579,6 +600,7 @@
case CX23885_BOARD_HAUPPAUGE_HVR1200:
case CX23885_BOARD_HAUPPAUGE_HVR1700:
case CX23885_BOARD_HAUPPAUGE_HVR1400:
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
default:
ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -592,6 +614,7 @@
case CX23885_BOARD_HAUPPAUGE_HVR1800:
case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
case CX23885_BOARD_HAUPPAUGE_HVR1700:
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
request_module("cx25840");
break;
}
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-dvb.c
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885-dvb.c 2008-08-05 21:29:00.000000000 +1000
@@ -37,6 +37,7 @@
#include "tda8290.h"
#include "tda18271.h"
#include "lgdt330x.h"
+#include "zl10353.h"
#include "xc5000.h"
#include "tda10048.h"
#include "tuner-xc2028.h"
@@ -502,6 +503,32 @@
}
break;
}
+ case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+ i2c_bus = &dev->i2c_bus[0];
+
+ port->dvb.frontend = dvb_attach(zl10353_attach,
+ &dvico_fusionhdtv_xc3028,
+ &i2c_bus->i2c_adap);
+ if (port->dvb.frontend != NULL) {
+ struct dvb_frontend *fe;
+ struct xc2028_config cfg = {
+ .i2c_adap = &dev->i2c_bus[1].i2c_adap,
+ .i2c_addr = 0x61,
+ .video_dev = port,
+ .callback = cx23885_tuner_callback,
+ };
+ static struct xc2028_ctrl ctl = {
+ .fname = "xc3028-v27.fw",
+ .max_len = 64,
+ .demod = XC3028_FE_ZARLINK456,
+ };
+
+ fe = dvb_attach(xc2028_attach, port->dvb.frontend,
+ &cfg);
+ if (fe != NULL && fe->ops.tuner_ops.set_config != NULL)
+ fe->ops.tuner_ops.set_config(fe, &ctl);
+ }
+ break;
default:
printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
dev->name);
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h v4l-dvb2/linux/drivers/media/video/cx23885/cx23885.h
--- v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/cx23885.h 2008-08-05 20:10:57.000000000 +1000
@@ -66,6 +66,7 @@
#define CX23885_BOARD_HAUPPAUGE_HVR1400 9
#define CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP 10
#define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11
+#define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12
/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
#define CX23885_NORMS (\
diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/Kconfig v4l-dvb2/linux/drivers/media/video/cx23885/Kconfig
--- v4l-dvb/linux/drivers/media/video/cx23885/Kconfig 2008-08-05 16:48:14.000000000 +1000
+++ v4l-dvb2/linux/drivers/media/video/cx23885/Kconfig 2008-08-05 20:06:06.000000000 +1000
@@ -15,6 +15,7 @@
select DVB_S5H1409 if !DVB_FE_CUSTOMISE
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
+ select DVB_ZL10353 if !DVB_FE_CUSTOMISE
select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE
-------End Patch-------
----- Original Message -----
From: "Steven Toth"
To: stev391@xxxxxxxxx
Subject: Re: [PATCH-TESTERS-REQUIRED] Leadtek Winfast PxDVR 3200 H - DVB Only support
Date: Mon, 04 Aug 2008 10:35:20 -0400
> case CX23885_BOARD_HAUPPAUGE_HVR1800:
> case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
> case CX23885_BOARD_HAUPPAUGE_HVR1700:
> + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
> request_module("cx25840");
> break;
> }
Steve, thanks for look at this.
I took a quick look at your patch. Obviously the callback stuff
you're planning to re-work will be based Antons patch, which I plan
to push tonight after more testing.... So I'm ignoring this.
Minor nitpick... Don't request module cx25840 above unless you plan
to use it. If you are planning to add analog support, make this a
second patch after the digital stuff gets merged.
Other than that, it will be great to have another product supported
in the tree.
Regards,
- Steve
--
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb