Skip to contentSkip to conversation

Prof_Revolution_DVB-S2_8000_PCI-E & Linux Kernel 2.6.38-rc8-next-20110314

PATCH Wojciech Myrda 2 participants 3 messages Mar 20, 2011 – Mar 22, 2011 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hi all,

I have purchased Prof_Revolution_DVB-S2_8000_PCI-E which is listed on the wiki
http://linuxtv.org/wiki/index.php/Prof_Revolution_DVB-S2_8000_PCI-E as not yet suppoorted, however I found out there is some work ongoing on the driver for that card as the producer make the folowing patch
http://www.proftuners.com/sites/default/files/prof8000_0.patch available on their website http://www.prof-tuners.pl/download8000.html This patch would not apply agaist the recent Linux Kernel 2.6.38-rc8-next-20110314 so I did a few quick fixes that moved few lines (patch in the attachment). Now that it all applies like it should it fails with the following error

  CC [M]  kernel/configs.o
  CC [M]  drivers/media/video/cx23885/cx23885-cards.o
  CC [M]  drivers/media/video/cx23885/cx23885-video.o
  CC [M]  drivers/media/video/cx23885/cx23885-vbi.o
  CC [M]  drivers/media/video/cx23885/cx23885-core.o

drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function]
CC [M] drivers/media/video/cx23885/cx23885-i2c.o
CC [M] drivers/media/video/cx23885/cx23885-dvb.o
drivers/media/video/cx23885/cx23885-dvb.c:505:15: error: variable ‘prof_8000_stb6100_config’ has initializer but incomplete type drivers/media/video/cx23885/cx23885-dvb.c:506:2: error: unknown field ‘tuner_address’ specified in initializer drivers/media/video/cx23885/cx23885-dvb.c:506:2: warning: excess elements in struct initializer [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:506:2: warning: (near initialization for ‘prof_8000_stb6100_config’) [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:507:2: error: unknown field ‘refclock’ specified in initializer drivers/media/video/cx23885/cx23885-dvb.c:507:2: warning: excess elements in struct initializer [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:507:2: warning: (near initialization for ‘prof_8000_stb6100_config’) [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c: In function ‘dvb_register’:
drivers/media/video/cx23885/cx23885-dvb.c:1134:8: error:
‘stb6100_attach’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1134:8: note: each undeclared identifier is reported only once for each function it appears in drivers/media/video/cx23885/cx23885-dvb.c:1134:8: error: called object ‘__a’ is not a function drivers/media/video/cx23885/cx23885-dvb.c:1138:32: error:
‘stb6100_set_freq’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1139:32: error:
‘stb6100_get_freq’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1140:32: error:
‘stb6100_set_bandw’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1141:32: error:
‘stb6100_get_bandw’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c: At top level:
drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function] make[4]: *** [drivers/media/video/cx23885/cx23885-dvb.o] Error 1 make[3]: *** [drivers/media/video/cx23885] Error 2
make[2]: *** [drivers/media/video] Error 2
make[1]: *** [drivers/media] Error 2
make: *** [drivers] Error 2

Please help in making it work as my Kung Fu ends here

Regards,
Wojciech

linux/drivers/media/video/cx23885/cx23885-cards.c +10 -0
diff -r 1da5fed5c8b2 linux/drivers/media/video/cx23885/cx23885-cards.c
@@ -169,6 +169,10 @@
 		.name		= "TurboSight TBS 6920",
 		.portb		= CX23885_MPEG_DVB,
 	},
+	[CX23885_BOARD_PROF_8000] = {
+		.name		= "Prof Revolution DVB-S2 8000",
+		.portb		= CX23885_MPEG_DVB,
+	},
 	[CX23885_BOARD_TEVII_S470] = {
 		.name		= "TeVii S470",
 		.portb		= CX23885_MPEG_DVB,
@@ -388,6 +392,10 @@
 		.subdevice = 0x8888,
 		.card      = CX23885_BOARD_TBS_6920,
 	}, {
+		.subvendor = 0x8000,
+		.subdevice = 0x3034,
+		.card      = CX23885_BOARD_PROF_8000,
+	}, {
 		.subvendor = 0xd470,
 		.subdevice = 0x9022,
 		.card      = CX23885_BOARD_TEVII_S470,
@@ -813,6 +821,7 @@
 		mdelay(20);
 		cx_set(GP0_IO, 0x00040004);
 		break;
+	case CX23885_BOARD_PROF_8000:
 	case CX23885_BOARD_TBS_6920:
 		cx_write(MC417_CTL, 0x00000036);
 		cx_write(MC417_OEN, 0x00001000);
@@ -1043,6 +1052,7 @@
 		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
 		ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
 		break;
+	case CX23885_BOARD_PROF_8000:
 	case CX23885_BOARD_TEVII_S470:
 	case CX23885_BOARD_DVBWORLD_2005:
 		ts1->gen_ctrl_val  = 0x5; /* Parallel */
linux/drivers/media/video/cx23885/cx23885-dvb.c renamed from linux/drivers/media/video/cx23885/cx23885-dvb.c.old +55 -0

73 lines not on this page · raw message

linux/drivers/media/video/cx23885/cx23885.h renamed from linux/drivers/media/video/cx23885/cx23885.h.old +1 -0
@@ -86,6 +86,7 @@
 #define CX23885_BOARD_LEADTEK_WINFAST_PXTV1200 28
 #define CX23885_BOARD_GOTVIEW_X5_3D_HYBRID     29
 #define CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF 30
+#define CX23885_BOARD_PROF_8000                31
 
 #define GPIO_0 0x00000001
 #define GPIO_1 0x00000002
#1 lore raw

W dniu 20.03.2011 20:32, Wojciech Myrda pisze:

Quoted 62 lines

Hi all,

I have purchased Prof_Revolution_DVB-S2_8000_PCI-E which is listed on the wiki
http://linuxtv.org/wiki/index.php/Prof_Revolution_DVB-S2_8000_PCI-E as not yet suppoorted, however I found out there is some work ongoing on the driver for that card as the producer make the folowing patch
http://www.proftuners.com/sites/default/files/prof8000_0.patch available on their website http://www.prof-tuners.pl/download8000.html This patch would not apply agaist the recent Linux Kernel 2.6.38-rc8-next-20110314 so I did a few quick fixes that moved few lines (patch in the attachment). Now that it all applies like it should it fails with the following error

  CC [M]  kernel/configs.o
  CC [M]  drivers/media/video/cx23885/cx23885-cards.o
  CC [M]  drivers/media/video/cx23885/cx23885-video.o
  CC [M]  drivers/media/video/cx23885/cx23885-vbi.o
  CC [M]  drivers/media/video/cx23885/cx23885-core.o

drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function]
CC [M] drivers/media/video/cx23885/cx23885-i2c.o
CC [M] drivers/media/video/cx23885/cx23885-dvb.o
drivers/media/video/cx23885/cx23885-dvb.c:505:15: error: variable ‘prof_8000_stb6100_config’ has initializer but incomplete type drivers/media/video/cx23885/cx23885-dvb.c:506:2: error: unknown field ‘tuner_address’ specified in initializer drivers/media/video/cx23885/cx23885-dvb.c:506:2: warning: excess elements in struct initializer [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:506:2: warning: (near initialization for ‘prof_8000_stb6100_config’) [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:507:2: error: unknown field ‘refclock’ specified in initializer drivers/media/video/cx23885/cx23885-dvb.c:507:2: warning: excess elements in struct initializer [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c:507:2: warning: (near initialization for ‘prof_8000_stb6100_config’) [enabled by default] drivers/media/video/cx23885/cx23885-dvb.c: In function ‘dvb_register’:
drivers/media/video/cx23885/cx23885-dvb.c:1134:8: error:
‘stb6100_attach’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1134:8: note: each undeclared identifier is reported only once for each function it appears in drivers/media/video/cx23885/cx23885-dvb.c:1134:8: error: called object ‘__a’ is not a function drivers/media/video/cx23885/cx23885-dvb.c:1138:32: error:
‘stb6100_set_freq’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1139:32: error:
‘stb6100_get_freq’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1140:32: error:
‘stb6100_set_bandw’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c:1141:32: error:
‘stb6100_get_bandw’ undeclared (first use in this function) drivers/media/video/cx23885/cx23885-dvb.c: At top level:
drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function] make[4]: *** [drivers/media/video/cx23885/cx23885-dvb.o] Error 1 make[3]: *** [drivers/media/video/cx23885] Error 2
make[2]: *** [drivers/media/video] Error 2
make[1]: *** [drivers/media] Error 2
make: *** [drivers] Error 2

Quoted 5 lines

Please help in making it work as my Kung Fu ends here

Regards,
Wojciech

It turns ot that revised patch not only applies cleanly but compiles as well agaist Linux Kernel 2.6.38-rc8-next-20110321. Looking at dmesg everything is recognized properly as well. Do you guys think if it is possible to include it into the tree?

mediapc linux-2.6.38 # cat ../dvb/prof8000_1.patch |patch -E -p2 (Stripping trailing CRs from patch.)
patching file drivers/media/video/cx23885/cx23885-cards.c Hunk #1 succeeded at 183 (offset 14 lines).
Hunk #2 succeeded at 445 (offset 53 lines).
Hunk #3 succeeded at 932 (offset 111 lines).
Hunk #4 succeeded at 1297 (offset 245 lines). (Stripping trailing CRs from patch.)
patching file drivers/media/video/cx23885/cx23885-dvb.c Hunk #1 succeeded at 46 (offset -1 lines).
(Stripping trailing CRs from patch.)
patching file drivers/media/video/cx23885/cx23885.h mediapc linux-2.6.38 # make

  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CC [M]  drivers/media/video/cx23885/cx23885-cards.o
  CC [M]  drivers/media/video/cx23885/cx23885-video.o
  CC [M]  drivers/media/video/cx23885/cx23885-vbi.o
  CC [M]  drivers/media/video/cx23885/cx23885-core.o

drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function]
CC [M] drivers/media/video/cx23885/cx23885-i2c.o
CC [M] drivers/media/video/cx23885/cx23885-dvb.o
drivers/media/video/cx23885/altera-ci.h:71:12: warning:
‘altera_ci_tuner_reset’ defined but not used [-Wunused-function]

  CC [M]  drivers/media/video/cx23885/cx23885-417.o
  CC [M]  drivers/media/video/cx23885/cx23885-ioctl.o
  CC [M]  drivers/media/video/cx23885/cx23885-ir.o
  CC [M]  drivers/media/video/cx23885/cx23885-av.o
  CC [M]  drivers/media/video/cx23885/cx23885-input.o
  CC [M]  drivers/media/video/cx23885/cx23888-ir.o

drivers/media/video/cx23885/cx23888-ir.c: In function ‘pulse_clocks_to_clock_divider’:
drivers/media/video/cx23885/cx23888-ir.c:334:6: warning: variable ‘rem’ set but not used [-Wunused-but-set-variable]

  CC [M]  drivers/media/video/cx23885/netup-init.o
  CC [M]  drivers/media/video/cx23885/cimax2.o
  CC [M]  drivers/media/video/cx23885/netup-eeprom.o
  CC [M]  drivers/media/video/cx23885/cx23885-f300.o
  LD [M]  drivers/media/video/cx23885/cx23885.o

Kernel: arch/x86/boot/bzImage is ready (#1)
Building modules, stage 2.
MODPOST 697 modules
WARNING: modpost: Found 3 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
LD [M] drivers/media/video/cx23885/cx23885.ko

Regards,
Wojciech

#2 lore raw
In reply to Wojciech Myrda

Em 20-03-2011 16:32, Wojciech Myrda escreveu:

Quoted 4 lines

It turns ot that revised patch not only applies cleanly but compiles as well agaist Linux Kernel 2.6.38-rc8-next-20110321. Looking at dmesg everything is recognized properly as well. Do you guys think if it is possible to include it into the tree?

Please post the patch again, with a few fixes (see bellow), and add your
Signed-off-by: (please read how to submit patches section at linuxtv.org wiki for more details).

linux/drivers/media/video/cx23885/cx23885-cards.c

Quoted 3 lines

diff -r 1da5fed5c8b2 linux/drivers/media/video/cx23885/cx23885-cards.c

linux/drivers/media/video/cx23885/cx23885-cards.c +0 -0

/linux? Are you using the old -hg tree? Please don't do that. The mercurial tree is not touched for the last 8 months! Please use, instead the media_tree.git (media_build.git allows you to compile/test a driver against the media_tree.git tree).

Quoted 41 lines
linux/drivers/media/video/cx23885/cx23885-cards.c +10 -0
@@ -169,6 +169,10 @@
 		.name		= "TurboSight TBS 6920",
 		.portb		= CX23885_MPEG_DVB,
 	},
+	[CX23885_BOARD_PROF_8000] = {
+		.name		= "Prof Revolution DVB-S2 8000",
+		.portb		= CX23885_MPEG_DVB,
+	},
 	[CX23885_BOARD_TEVII_S470] = {
 		.name		= "TeVii S470",
 		.portb		= CX23885_MPEG_DVB,
@@ -388,6 +392,10 @@
 		.subdevice = 0x8888,
 		.card      = CX23885_BOARD_TBS_6920,
 	}, {
+		.subvendor = 0x8000,
+		.subdevice = 0x3034,
+		.card      = CX23885_BOARD_PROF_8000,
+	}, {
 		.subvendor = 0xd470,
 		.subdevice = 0x9022,
 		.card      = CX23885_BOARD_TEVII_S470,
@@ -813,6 +821,7 @@
 		mdelay(20);
 		cx_set(GP0_IO, 0x00040004);
 		break;
+	case CX23885_BOARD_PROF_8000:
 	case CX23885_BOARD_TBS_6920:
 		cx_write(MC417_CTL, 0x00000036);
 		cx_write(MC417_OEN, 0x00001000);
@@ -1043,6 +1052,7 @@
 		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
 		ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
 		break;
+	case CX23885_BOARD_PROF_8000:
 	case CX23885_BOARD_TEVII_S470:
 	case CX23885_BOARD_DVBWORLD_2005:
 		ts1->gen_ctrl_val  = 0x5; /* Parallel */

linux/drivers/media/video/cx23885/cx23885-dvb.c line 52

Quoted 6 lines
linux/drivers/media/video/cx23885/cx23885-dvb.c renamed from linux/drivers/media/video/cx23885/cx23885-dvb.c.old +3 -0
@@ -47,6 +47,9 @@
 #include "dibx000_common.h"
 #include "zl10353.h"
 #include "stv0900.h"
+#include "stb6100.h"
+#include "stb6100_proc.h"
+#include "stv0900.h"

If you're adding more dependencies here, you'll need to touch also drivers/media/video/cx23885/Kconfig in order to select the right frontends.

Quoted 79 lines
linux/drivers/media/video/cx23885/cx23885-dvb.c renamed from linux/drivers/media/video/cx23885/cx23885-dvb.c.old +52 -0
 #include "stv0900_reg.h"
 #include "stv6110.h"
 #include "lnbh24.h"
@@ -478,6 +478,35 @@
 	.if_khz = 5380,
 };
 
+static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
+{
+	struct cx23885_tsport *port = fe->dvb->priv;
+	struct cx23885_dev *dev = port->dev;
+
+	if (voltage == SEC_VOLTAGE_18)
+		cx_write(MC417_RWD, 0x00001e00);
+	else if (voltage == SEC_VOLTAGE_13)
+		cx_write(MC417_RWD, 0x00001a00);
+	else
+		cx_write(MC417_RWD, 0x00001800);
+	return 0;
+}
+
+static struct stv0900_config prof_8000_stv0900_config = {
+	.demod_address = 0x6a,
+	.xtal = 27000000,
+	.clkmode = 3,
+	.diseqc_mode = 2,
+	.tun1_maddress = 0,
+	.tun1_adc = 0,
+	.path1_mode = 3,
+};
+
+static struct stb6100_config prof_8000_stb6100_config = {
+	.tuner_address = 0x60,
+	.refclock = 27000000,
+};
+
 static int cx23885_dvb_set_frontend(struct dvb_frontend *fe,
 				    struct dvb_frontend_parameters *param)
 {
@@ -1094,6 +1123,29 @@
 				goto frontend_detach;
 		}
 		break;
+	case CX23885_BOARD_PROF_8000: {
+		struct dvb_tuner_ops *tuner_ops = NULL;
+
+		i2c_bus = &dev->i2c_bus[0];
+		fe0->dvb.frontend = dvb_attach(stv0900_attach,
+						&prof_8000_stv0900_config,
+						&i2c_bus->i2c_adap, 0);
+		if (fe0->dvb.frontend != NULL) {
+			if (dvb_attach(stb6100_attach, fe0->dvb.frontend,
+					&prof_8000_stb6100_config,
+					&i2c_bus->i2c_adap)) {
+				tuner_ops = &fe0->dvb.frontend->ops.tuner_ops;
+				tuner_ops->set_frequency = stb6100_set_freq;
+				tuner_ops->get_frequency = stb6100_get_freq;
+				tuner_ops->set_bandwidth = stb6100_set_bandw;
+				tuner_ops->get_bandwidth = stb6100_get_bandw;
+
+				fe0->dvb.frontend->ops.set_voltage =
+							p8000_set_voltage;
+			}
+		}
+		break;
+		}
 	default:
 		printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
 			" isn't supported yet\n",
linux/drivers/media/video/cx23885/cx23885.h renamed from linux/drivers/media/video/cx23885/cx23885.h.old +1 -0
@@ -86,6 +86,7 @@
 #define CX23885_BOARD_LEADTEK_WINFAST_PXTV1200 28
 #define CX23885_BOARD_GOTVIEW_X5_3D_HYBRID     29
 #define CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF 30
+#define CX23885_BOARD_PROF_8000                31
 
 #define GPIO_0 0x00000001
 #define GPIO_1 0x00000002