[linux-dvb] [PATCH] Lifeview FlyDVB-T support

Giampiero Giancipoli gianci at email.it
Sat Jan 14 13:56:38 CET 2006


Hi, this is my first post to the list :)

The 1st patch adds support for the LifeView FlyDVB-T and its remote
control. However this card does not fully work, surely some parameters
should be tweaked.

Until I realized that tda10046 ignores the boot flag when a firmware
EEPROM exists, I tried to force a firmware upload, using the one found
in Lifeview recent driver (version 29 vs eeprom version 23), so the 2nd
patch modifies get_dvb_firmware in order to get this tda10046 firmware
(version 29) from lifeview's site. I'm not 100% sure it is for tda10046,
it should be since its size almost matches the one got from technotrend,
anyway here it is. The big advantage is that you need to get less than
300K against the 12MB bundle from Techntrend!

One thing I would ask to Hartmut. You said in a post that EEPROM
firmware upgrade is possibile... could you tell me/us how to do it?

Ciao,
Gianci

- dmesg output:
gianci:~$ dmesg 
...
Linux video capture interface: v1.00
saa7130/34: v4l2 driver version 0.2.14 loaded
ACPI: PCI Interrupt 0000:00:0e.0[A] -> GSI 17 (level, low) -> IRQ 17
saa7134[0]: found at 0000:00:0e.0, rev: 1, irq: 17, latency: 32, mmio: 0xec000000
saa7134[0]: subsystem: 5168:0301, board: LifeView FlyDVB-T [card=85,autodetected]
saa7134[0]: board init: gpio is 810004
input: saa7134 IR (LifeView FlyDVB-T) as /class/input/input3
saa7134[0]: i2c eeprom 00: 68 51 01 03 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
saa7134[0]: i2c eeprom 10: 00 ff 86 0f ff 20 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 20: 01 40 01 02 03 ff 01 03 08 ff 01 08 ff ff ff ff
saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 40: ff 1b 00 c0 ff 10 ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7134[0]: registered device video0 [v4l2]
saa7134[0]: registered device vbi0
DVB: registering new adapter (saa7134[0]).
DVB: registering frontend 2 (Philips TDA10046H DVB-T)...

- dvbtune output:

gianci:~$ dvbtune -c 2 -f 474000 -gi 32 -qam 64 -cr AUTO -bw 8 -tm 8
tda1004x: setting up plls for 48MHz sampling clock
tda1004x: found firmware revision 23 -- ok
Using DVB card "Philips TDA10046H DVB-T"
tuning DVB-T (in United Kingdom) to 474000000 Hz
polling....
Getting frontend event
FE_STATUS:
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC
Bit error rate: 131070
Signal strength: 50372
SNR: 0
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC
gianci:~$ dvbtune -c 2 -f 474000 -gi 32 -qam 64 -cr AUTO -bw 8 -tm 8
Using DVB card "Philips TDA10046H DVB-T"
tuning DVB-T (in United Kingdom) to 474000000 Hz
polling....
Getting frontend event
FE_STATUS:
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC
Bit error rate: 46
Signal strength: 50372
SNR: 65535
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC

To get a positive SNR one must try to tune several times, but
the signal is almost suddenly lost:

- scan output

gianci:~$ scan -a 2 -c
using '/dev/dvb/adapter2/frontend0' and '/dev/dvb/adapter2/demux0'
0x0000 0x0001: pmt_pid 0x0100 MBone -- LA7 (running)
0x0000 0x0002: pmt_pid 0x0200 MBone -- MTV ITALIA (running)
0x0000 0x0003: pmt_pid 0x010a MBone -- MUSIC BOX ITALIA (running)
0x0000 0x0004: pmt_pid 0x08d0 MBone -- LA7 SPORT (running)
0x0000 0x0006: pmt_pid 0x0121 MBone -- LA7 Cartapiu' A (running)
0x0000 0x0007: pmt_pid 0x0124 MBone -- LA7 Cartapiu' B (running)
0x0000 0x0008: pmt_pid 0x0127 MBone -- LA7 Cartapiu' C (running)
0x0000 0x0009: pmt_pid 0x012a MBone -- LA7 Cartapiu' D (running)
0x0000 0x000a: pmt_pid 0x012d MBone -- LA7 Cartapiu' E (running)
0x0000 0x000b: pmt_pid 0x0130 MBone -- LA7 Cartapiu' attivazione (running, scrambled)
0x0000 0x000c: pmt_pid 0x011b MBone -- TELEMARKET (running)
0x0000 0x000f: pmt_pid 0x011e MBone -- LA7 Cartapiu' F (running)
0x0000 0x0015: pmt_pid 0x0020 MBone -- PRIMOCANALE (running)
dumping lists (13 services)
LA7 Cartapiu' B          (0x0007) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7 Cartapiu' C          (0x0008) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7 Cartapiu' D          (0x0009) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7 Cartapiu' E          (0x000a) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7 Cartapiu' A          (0x0006) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7 Cartapiu' attivazion (0x000b) 01: PCR 0x1fff V 0x0131
LA7 Cartapiu' F          (0x000f) 01: PCR == V   V 0x0145 A 0x0146 (ita)
LA7                      (0x0001) 01: PCR == V   V 0x0101 A 0x0102 TT 0x0104
MTV ITALIA               (0x0002) 01: PCR == V   V 0x0201 A 0x0202 (ita) TT 0x0203
MUSIC BOX ITALIA         (0x0003) 01: PCR == V   V 0x010b A 0x010c
TELEMARKET               (0x000c) 01: PCR == V   V 0x011c A 0x011d
LA7 SPORT                (0x0004) 01: PCR == V   V 0x08d1 A 0x08d2 TT 0x08d4
PRIMOCANALE              (0x0015) 01: PCR == V   V 0x0115 A 0x0116
Done.
gianci:~$ scan -a 2 -c
using '/dev/dvb/adapter2/frontend0' and '/dev/dvb/adapter2/demux0'
WARNING: filter timeout pid 0x0011
WARNING: filter timeout pid 0x0000
dumping lists (0 services)

- lspci -vv output:

0000:00:0e.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01)
	Subsystem: Animation Technologies Inc.: Unknown device 0301
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (21000ns min, 8000ns max)
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at ec000000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [40] Power Management version 1
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-



-------------- next part --------------
Index: saa7134-cards.c
===================================================================
RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c,v
retrieving revision 1.122
diff -u -b -B -w -p -u -r1.122 saa7134-cards.c
--- saa7134-cards.c	10 Jan 2006 19:57:26 -0000	1.122
+++ saa7134-cards.c	14 Jan 2006 12:47:19 -0000
@@ -2624,6 +2624,27 @@ struct saa7134_board saa7134_boards[] = 
 			.gpio = 0x000000,	/* GPIO21=Low for FM radio antenna */
 		},
 	},
+	[SAA7134_BOARD_FLYDVBT] = {
+		/* LifeView FlyDVB-T */
+		/* Giampiero Giancipoli <gianci at libero.it> */
+		.name           = "LifeView FlyDVB-T",
+		.audio_clock    = 0x00200000,
+		.tuner_type     = TUNER_ABSENT,
+		.radio_type     = UNSET,
+		.tuner_addr	= ADDR_UNSET,
+		.radio_addr	= ADDR_UNSET,
+		.mpeg           = SAA7134_MPEG_DVB,
+		.inputs         = {{
+			.name = name_comp1,	/* Composite input */
+			.vmux = 3,
+			.amux = LINE1,
+		},{
+			.name = name_svideo,	/* S-Video signal on S-Video input */
+			.vmux = 8,
+			.amux = LINE1,
+		}},
+	},
+
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -2943,6 +2964,12 @@ struct pci_device_id saa7134_pci_tbl[] =
 		.driver_data  = SAA7134_BOARD_FLYDVBTDUO,
 	},{
 		.vendor       = PCI_VENDOR_ID_PHILIPS,
+		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
+		.subvendor    = 0x5168,
+		.subdevice    = 0x0301, 
+		.driver_data  = SAA7134_BOARD_FLYDVBT,	
+	},{
+		.vendor       = PCI_VENDOR_ID_PHILIPS,
 		.device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
 		.subvendor    = 0x1461, /* Avermedia Technologies Inc */
 		.subdevice    = 0xf31f,
@@ -3199,6 +3226,7 @@ int saa7134_board_init1(struct saa7134_d
 		break;
 	case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
 	case SAA7134_BOARD_FLYTVPLATINUM_FM:
+	case SAA7134_BOARD_FLYDVBT:	
 	case SAA7134_BOARD_CINERGY400:
 	case SAA7134_BOARD_CINERGY600:
 	case SAA7134_BOARD_CINERGY600_MK3:
Index: saa7134-dvb.c
===================================================================
RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c,v
retrieving revision 1.37
diff -u -b -B -w -p -u -r1.37 saa7134-dvb.c
--- saa7134-dvb.c	1 Jan 2006 17:17:39 -0000	1.37
+++ saa7134-dvb.c	14 Jan 2006 12:47:23 -0000
@@ -859,6 +859,11 @@ static int dvb_init(struct saa7134_dev *
 		dev->dvb.frontend = tda10046_attach(&philips_tu1216_60_config,
 						    &dev->i2c_adap);
 		break;
+
+	case SAA7134_BOARD_FLYDVBT:
+		dev->dvb.frontend = tda10046_attach(&tda827x_flydvbt_config,
+						    &dev->i2c_adap);
+		break;
 	case SAA7134_BOARD_FLYDVBTDUO:
 		dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
 						    &dev->i2c_adap);
Index: saa7134-input.c
===================================================================
RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-input.c,v
retrieving revision 1.49
diff -u -b -B -w -p -u -r1.49 saa7134-input.c
--- saa7134-input.c	9 Jan 2006 18:39:50 -0000	1.49
+++ saa7134-input.c	14 Jan 2006 12:47:26 -0000
@@ -74,7 +74,6 @@ static IR_KEYTAB_TYPE flyvideo_codes[IR_
 	[   16 ] = KEY_ENTER,      // Enter
 };
 
-#if 0
 static IR_KEYTAB_TYPE flydvb_codes[IR_KEYTAB_SIZE] = {
 	[  1 ] = KEY_ZOOM,		// Full Screen
 	[  0 ] = KEY_POWER,		// Power
@@ -113,7 +112,6 @@ static IR_KEYTAB_TYPE flydvb_codes[IR_KE
 	[ 17 ] = KEY_STOP,		// Stop
 	[ 14 ] = KEY_NEXT,		// End >>|
 };
-#endif
 
 static IR_KEYTAB_TYPE cinergy_codes[IR_KEYTAB_SIZE] = {
 	[    0 ] = KEY_KP0,
@@ -683,6 +681,11 @@ int saa7134_input_init1(struct saa7134_d
 		mask_keycode = 0xEC00000;
 		mask_keydown = 0x0040000;
 		break;
+	case SAA7134_BOARD_FLYDVBT:
+		ir_codes     = flydvb_codes;
+		mask_keycode = 0x0001F00;
+		mask_keydown = 0x0040000;
+		break;
 	case SAA7134_BOARD_CINERGY400:
 	case SAA7134_BOARD_CINERGY600:
 	case SAA7134_BOARD_CINERGY600_MK3:
Index: saa7134.h
===================================================================
RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h,v
retrieving revision 1.88
diff -u -b -B -w -p -u -r1.88 saa7134.h
--- saa7134.h	4 Jan 2006 13:30:55 -0000	1.88
+++ saa7134.h	14 Jan 2006 12:47:29 -0000
@@ -218,6 +218,7 @@ struct saa7134_format {
 #define SAA7134_BOARD_MSI_TVATANYWHERE_PLUS  82
 #define SAA7134_BOARD_CINERGY250PCI 83
 #define SAA7134_BOARD_FLYDVB_TRIO 84
+#define	SAA7134_BOARD_FLYDVBT 85
 
 #define SAA7134_MAXBOARDS 8
 #define SAA7134_INPUT_MAX 8
-------------- next part --------------
--- /home/gianci/cvs/v4l-dvb/linux/Documentation/dvb/get_dvb_firmware	2006-01-09 22:44:19.000000000 +0100
+++ get_dvb_firmware	2006-01-14 13:31:38.000000000 +0100
@@ -109,9 +109,9 @@
 }
 
 sub tda10046 {
-    my $sourcefile = "tt_budget_217g.zip";
-    my $url = "http://www.technotrend.de/new/217g/$sourcefile";
-    my $hash = "6a7e1e2f2644b162ff0502367553c72d";
+    my $sourcefile = "Drv_2.11.02.zip";
+    my $url = "http://www.lifeview.com.tw/drivers/pci_card/FlyDVB-T/$sourcefile";
+    my $hash = "1ea24dee4eea8fe971686981f34fd2e0";
     my $outfile = "dvb-fe-tda10046.fw";
     my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
 
@@ -119,7 +119,7 @@
 
     wgetfile($sourcefile, $url);
     unzip($sourcefile, $tmpdir);
-    extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp");
+    extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp");
     verify("$tmpdir/fwtmp", $hash);
     copy("$tmpdir/fwtmp", $outfile);
 


More information about the linux-dvb mailing list