Skip to contentSkip to conversation

Hauppauge HVR-2200 analog

DISCUSSION Julian Scheel 3 participants 10 messages Dec 14, 2010 – Feb 25, 2011 2 messages not in the archive Media (V4L/DVB)

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw

Am 07.12.2010 14:01, schrieb Andy Walls:

Quoted 5 lines · Julian Scheel
Quoted 4 lines

Hi,

is there any progress on adding analog support to the HVR-2200? It seems support for the used chipsets in general is already in the kernel?

Quoted 7 lines

It appears to be in the media_tree.git repository on the staging/for_v2.6.37-rc1 branch:

http://git.linuxtv.org/media_tree.git?a=tree;f=drivers/media/video/saa7164;h=0acaa4ada45ae6881bfbb19447ae9db43f06ef9b;hb=staging/for_v2.6.37-rc1

saa7164-cards.c appears to have analog entries added for HVR-2200's and saa7164-encoder.c has a number of V4L ioctl()'s for MPEG streams.

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

#3 lore raw

Am 14.12.2010 18:23, schrieb Julian Scheel:

Quoted 4 lines

Am 07.12.2010 14:01, schrieb Andy Walls:

Quoted 3 lines

It appears to be in the media_tree.git repository on the staging/for_v2.6.37-rc1 branch:

Quoted 8 lines
Quoted 5 lines

http://git.linuxtv.org/media_tree.git?a=tree;f=drivers/media/video/saa7164;h=0acaa4ada45ae6881bfbb19447ae9db43f06ef9b;hb=staging/for_v2.6.37-rc1

saa7164-cards.c appears to have analog entries added for HVR-2200's and saa7164-encoder.c has a number of V4L ioctl()'s for MPEG streams.

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

Actually after manually adding this changeset into linux-26.37-rc5 tree the card is detected and dmesg says:

[    3.653289] saa7164 driver loaded
[    3.653340] saa7164 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    3.654909] CORE saa7164[0]: subsystem: 0070:8940, board: Hauppauge WinTV-HVR2200 [card=9,autodetected]
[    3.654914] saa7164[0]/0: found at 0000:02:00.0, rev: 129, irq: 16, latency: 0, mmio: 0xfb000000
[    3.654919] saa7164 0000:02:00.0: setting latency timer to 64
[    3.813647] saa7164_downloadfirmware() no first image
[    3.814781] saa7164_downloadfirmware() Waiting for firmware upload (NXP7164-2010-03-10.1.fw)
[    3.839841] saa7164_downloadfirmware() firmware read 4019072 bytes.
[    3.839843] saa7164_downloadfirmware() firmware loaded.
[    3.839844] Firmware file header part 1:
[    3.839846]  .FirmwareSize = 0x0
[    3.839847]  .BSLSize = 0x0
[    3.839848]  .Reserved = 0x3d538
[    3.839849]  .Version = 0x3
[    3.839850] saa7164_downloadfirmware() SecBootLoader.FileSize = 4019072
[    3.839856] saa7164_downloadfirmware() FirmwareSize = 0x1fd6
[    3.839857] saa7164_downloadfirmware() BSLSize = 0x0
[    3.839858] saa7164_downloadfirmware() Reserved = 0x0
[    3.839860] saa7164_downloadfirmware() Version = 0x1661c00
[   10.693325] saa7164_downloadimage() Image downloaded, booting...
[   10.797316] saa7164_downloadimage() Image booted successfully.
[   10.797332] starting firmware download(2)
[   13.425188] saa7164_downloadimage() Image downloaded, booting...
[   15.089109] saa7164_downloadimage() Image booted successfully.
[   15.089128] firmware download complete.
[   15.129700] tveeprom 1-0000: Hauppauge model 89619, rev D3F2, serial# 7259796
[   15.129703] tveeprom 1-0000: MAC address is 00:0d:fe:6e:c6:94
[   15.129704] tveeprom 1-0000: tuner model is NXP 18271C2_716x (idx 152, type 4)
[   15.129707] tveeprom 1-0000: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[   15.129709] tveeprom 1-0000: audio processor is SAA7164 (idx 43)
[   15.129710] tveeprom 1-0000: decoder processor is SAA7164 (idx 40)
[   15.129711] tveeprom 1-0000: has radio
[   15.129712] saa7164[0]: Hauppauge eeprom: model=89619
[   15.189491] tda18271 2-0060: creating new instance
[   15.194156] TDA18271HD/C2 detected @ 2-0060
[   15.446842] DVB: registering new adapter (saa7164)
[   15.446845] DVB: registering adapter 0 frontend 0 (NXP TDA10048HN DVB-T)...
[   15.477568] tda18271 3-0060: creating new instance
[   15.482514] TDA18271HD/C2 detected @ 3-0060
[   15.733973] tda18271: performing RF tracking filter calibration
[   18.082962] tda18271: RF tracking filter calibration complete
[   18.083552] DVB: registering new adapter (saa7164)
[   18.083554] DVB: registering adapter 1 frontend 0 (NXP TDA10048HN DVB-T)...

dvb-devices are registered, but no video-devices. Any thoughts?

#4 lore raw
In reply to Julian Scheel
Quoted 3 lines · Julian Scheel

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

On my todo list.

I validate each board before I add its profile to the core tree. If certain boards are missing then its because that board is considered experimental or is pending testing and merge.

PAL encoder support is broken in the current tree and it currently getting my love and attention. Point me at the specific boards you think are missing and I'll also add these to my todo list, they'll likely get merged at the same time.

- Steve

Signature · 2 lines
Steven Toth - Kernel Labs
http://www.kernellabs.com
#5 lore raw

Am 14.12.2010 um 20:51 schrieb Steven Toth:

Quoted 6 lines · Julian Scheel
Quoted 3 lines

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

On my todo list.

Ok, fine.

Quoted 7 lines

I validate each board before I add its profile to the core tree. If certain boards are missing then its because that board is considered experimental or is pending testing and merge.

PAL encoder support is broken in the current tree and it currently getting my love and attention. Point me at the specific boards you think are missing and I'll also add these to my todo list, they'll likely get merged at the same time.

Actually this is the board I am testing with:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/rev/cf2d7530d676

Should it work with your testing tree or is the encoder part broken there as well?

Julian

#6 lore raw

Am 15.12.2010 08:04, schrieb Julian Scheel:

Quoted 13 lines

Am 14.12.2010 um 20:51 schrieb Steven Toth:

Quoted 5 lines · Julian Scheel
Quoted 3 lines

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

On my todo list.

Ok, fine.

Quoted 4 lines

I validate each board before I add its profile to the core tree. If certain boards are missing then its because that board is considered experimental or is pending testing and merge.

Quoted 7 lines
Quoted 3 lines

PAL encoder support is broken in the current tree and it currently getting my love and attention. Point me at the specific boards you think are missing and I'll also add these to my todo list, they'll likely get merged at the same time.

Actually this is the board I am testing with:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/rev/cf2d7530d676

Should it work with your testing tree or is the encoder part broken there as well?

I was able to get the encoder working now. The diff I referenced did not contain the encoder port settings. I added them manually and now get /dev/video0,1 and /dev/vbi0,1. A simple cat /dev/video0 > test.mpg reveals that the encoder seems to be running - it shows a nice mpeg-encoded bluescreen. Anyway running scantv did not show any results although I have a proper input signal connected. I guess there is something broken still? Any ideas?
Also it seems so far only NTSC is supported. dmesg shows that the firmware is capable of PAL - just the question is what needs to be changed in the drivers to switch between the modes?

Attached is the diff I currently use.

-Julian

drivers/media/video/saa7164//saa7164-cards.c +66 -0
diff -ru -x '*.o*' -x '*.ko*' -x '*.cmd' -x '*.orig' linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-cards.c linux-2.6.37-rc8/drivers/media/video/saa7164//saa7164-cards.c
@@ -203,6 +203,66 @@
 			.i2c_reg_len	= REGLEN_8bit,
 		} },
 	},
+	[SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
+		.name		= "Hauppauge WinTV-HVR2200",
+		.porta		= SAA7164_MPEG_DVB,
+		.portb		= SAA7164_MPEG_DVB,
+                .portc          = SAA7164_MPEG_ENCODER,
+                .portd          = SAA7164_MPEG_ENCODER,
+                .porte          = SAA7164_MPEG_VBI,
+                .portf          = SAA7164_MPEG_VBI,
+		.chiprev	= SAA7164_CHIP_REV3,
+		.unit		= {{
+			.id		= 0x1d,
+			.type		= SAA7164_UNIT_EEPROM,
+			.name		= "4K EEPROM",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_0,
+			.i2c_bus_addr	= 0xa0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x04,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0xc0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x05,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x84 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1b,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0xc0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1c,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x84 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1e,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x10 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1f,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x12 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		} },
+	},
 	[SAA7164_BOARD_HAUPPAUGE_HVR2250] = {
 		.name		= "Hauppauge WinTV-HVR2250",
 		.porta		= SAA7164_MPEG_DVB,
@@ -426,6 +486,10 @@
 		.subvendor = 0x0070,
 		.subdevice = 0x8851,
 		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
+	}, {
+		.subvendor = 0x0070,
+		.subdevice = 0x8940,
+		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2200_4,
 	},
 };
 const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
@@ -469,6 +533,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
@@ -549,6 +614,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:

Nur in linux-2.6.37-rc8/drivers/media/video/saa7164/: saa7164-cards.c.rej.

drivers/media/video/saa7164//saa7164-dvb.c +1 -0
diff -ru -x '*.o*' -x '*.ko*' -x '*.cmd' -x '*.orig' linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37-rc8/drivers/media/video/saa7164//saa7164-dvb.c
@@ -475,6 +475,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 		i2c_bus = &dev->i2c_bus[port->nr + 1];
 		switch (port->nr) {
 		case 0:
drivers/media/video/saa7164//saa7164-encoder.c +4 -1
diff -ru -x '*.o*' -x '*.ko*' -x '*.cmd' -x '*.orig' linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37-rc8/drivers/media/video/saa7164//saa7164-encoder.c
@@ -32,7 +32,10 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
drivers/media/video/saa7164//saa7164.h +1 -0
diff -ru -x '*.o*' -x '*.ko*' -x '*.cmd' -x '*.orig' linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37-rc8/drivers/media/video/saa7164//saa7164.h
@@ -83,6 +83,7 @@
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3	6
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2	7
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3	8
+#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4	9
 
 #define SAA7164_MAX_UNITS		8
 #define SAA7164_TS_NUMBER_OF_LINES	312

Nur in linux-2.6.37-rc8/drivers/media/video/saa7164/: saa7164.mod.c.

#7 lore raw
Quoted 3 lines

Attached is the diff I currently use.

Some more process. Attached is a new patch, which allows me to capture video and audio from a PAL tuner. Imho the video has wrong colours though (using PAL-B). Maybe someone would want to test that patch and give some feedback?

Regards,
Julian

Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.

drivers/media/video/saa7164//saa7164-api.c +1 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-api.c linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c
@@ -548,7 +548,7 @@
 		tvaudio.std = TU_STANDARD_NTSC_M;
 		tvaudio.country = 1;
 	} else {
-		tvaudio.std = TU_STANDARD_PAL_I;
+		tvaudio.std = 0x04; //TU_STANDARD_PAL_I;
 		tvaudio.country = 44;
 	}
 
drivers/media/video/saa7164//saa7164-cards.c +66 -0

90 lines not on this page · raw message

drivers/media/video/saa7164//saa7164-dvb.c +1 -0
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c
@@ -475,6 +475,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 		i2c_bus = &dev->i2c_bus[port->nr + 1];
 		switch (port->nr) {
 		case 0:
drivers/media/video/saa7164//saa7164-encoder.c +19 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c
@@ -32,7 +32,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+	}, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+	}, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+	}, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+	}, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+	}, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
drivers/media/video/saa7164//saa7164.h +2 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37/drivers/media/video/saa7164//saa7164.h
@@ -83,6 +83,7 @@
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3	6
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2	7
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3	8
+#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4	9
 
 #define SAA7164_MAX_UNITS		8
 #define SAA7164_TS_NUMBER_OF_LINES	312
@@ -113,7 +114,7 @@
 #define DBGLVL_THR 4096
 #define DBGLVL_CPU 8192
 
-#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443)
+#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443 | V4L2_STD_PAL_I | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_PAL_B | V4L2_STD_PAL_DK)
 
 enum port_t {
 	SAA7164_MPEG_UNDEFINED = 0,
drivers/media/video/saa7164//saa7164-vbi.c +19 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37-rc8.a/drivers/media/video/saa7164//saa7164-vbi.c linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c
@@ -28,7 +28,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+        }, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+        }, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+        }, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+        }, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+        }, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
#8 lore raw

Am 06.01.2011 23:31, schrieb Julian Scheel:

Quoted 4 lines
Quoted 3 lines

Attached is the diff I currently use.

Some more process. Attached is a new patch, which allows me to capture video and audio from a PAL tuner. Imho the video has wrong colours though (using PAL-B). Maybe someone would want to test that patch and give some feedback?

Ok some hours of debugging later, I figured out that only encoder 1 was not working properly. This was due to a wrong addressing when sending the dif setup commands. The attached new patch fixes this.

Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.

drivers/media/video/saa7164//saa7164-api.c +2 -2
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c
@@ -548,7 +548,7 @@
 		tvaudio.std = TU_STANDARD_NTSC_M;
 		tvaudio.country = 1;
 	} else {
-		tvaudio.std = TU_STANDARD_PAL_I;
+		tvaudio.std = 0x04; //TU_STANDARD_PAL_I;
 		tvaudio.country = 44;
 	}
 
@@ -608,7 +608,7 @@
 	dprintk(DBGLVL_API, "%s(nr=%d type=%d val=%x)\n", __func__,
 		port->nr, port->type, val);
 
-	if (port->nr == 0)
+	if (port->nr < 3) //== 0)
 		mas = 0xd0;
 	else
 		mas = 0xe0;
drivers/media/video/saa7164//saa7164-cards.c +66 -0

90 lines not on this page · raw message

drivers/media/video/saa7164//saa7164-dvb.c +1 -0
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c
@@ -475,6 +475,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 		i2c_bus = &dev->i2c_bus[port->nr + 1];
 		switch (port->nr) {
 		case 0:
drivers/media/video/saa7164//saa7164-encoder.c +21 -3
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c
@@ -32,7 +32,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+	}, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+	}, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+	}, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+	}, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+	}, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
@@ -1359,7 +1377,7 @@
 	.ioctl_ops     = &mpeg_ioctl_ops,
 	.minor         = -1,
 	.tvnorms       = SAA7164_NORMS,
-	.current_norm  = V4L2_STD_NTSC_M,
+	.current_norm  = V4L2_STD_PAL_B,
 };
 
 static struct video_device *saa7164_encoder_alloc(
@@ -1407,7 +1425,7 @@
 
 	/* Establish encoder defaults here */
 	/* Set default TV standard */
-	port->encodernorm = saa7164_tvnorms[0];
+	port->encodernorm = saa7164_tvnorms[6];
 	port->width = 720;
 	port->mux_input = 1; /* Composite */
 	port->video_format = EU_VIDEO_FORMAT_MPEG_2;
drivers/media/video/saa7164//saa7164-fw.c +3 -0
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-fw.c linux-2.6.37/drivers/media/video/saa7164//saa7164-fw.c
@@ -29,6 +29,9 @@
 
 #define SAA7164_REV3_FIRMWARE		"NXP7164-2010-03-10.1.fw"
 #define SAA7164_REV3_FIRMWARE_SIZE	4019072
+//#define SAA7164_REV3_FIRMWARE		"v4l-saa7164-1.0.3-3.fw"
+//#define SAA7164_REV3_FIRMWARE_SIZE	4038864
+
 
 struct fw_header {
 	u32	firmwaresize;
drivers/media/video/saa7164//saa7164.h +2 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37/drivers/media/video/saa7164//saa7164.h
@@ -83,6 +83,7 @@
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3	6
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2	7
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3	8
+#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4	9
 
 #define SAA7164_MAX_UNITS		8
 #define SAA7164_TS_NUMBER_OF_LINES	312
@@ -113,7 +114,7 @@
 #define DBGLVL_THR 4096
 #define DBGLVL_CPU 8192
 
-#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443)
+#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443 | V4L2_STD_PAL_I | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_PAL_B | V4L2_STD_PAL_DK)
 
 enum port_t {
 	SAA7164_MPEG_UNDEFINED = 0,
drivers/media/video/saa7164//saa7164-vbi.c +19 -1
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-vbi.c linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c
@@ -28,7 +28,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+        }, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+        }, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+        }, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+        }, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+        }, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
#9 lore raw

Em 08-01-2011 13:40, Julian Scheel escreveu:

Quoted 7 lines

Am 06.01.2011 23:31, schrieb Julian Scheel:

Quoted 4 lines
Quoted 3 lines

Attached is the diff I currently use.

Some more process. Attached is a new patch, which allows me to capture video and audio from a PAL tuner. Imho the video has wrong colours though (using PAL-B). Maybe someone would want to test that patch and give some feedback?

Ok some hours of debugging later, I figured out that only encoder 1 was not working properly. This was due to a wrong addressing when sending the dif setup commands. The attached new patch fixes this.

Is this patch already working properly?

If so, please:
1) Check its codingstyle with ./scripts/checkpatch.pl (there are some issues there, like commenting with //)
2) Remove the dead code;
3) Provide a patch description and your Signed-off-by:

Quoted 9 lines

saa7164-card-pal.diff

Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c

drivers/media/video/saa7164//saa7164-api.c line 551

Quoted 5 lines
drivers/media/video/saa7164//saa7164-api.c +1 -1
@@ -548,7 +548,7 @@
 		tvaudio.std = TU_STANDARD_NTSC_M;
 		tvaudio.country = 1;
 	} else {
-		tvaudio.std = TU_STANDARD_PAL_I;
+		tvaudio.std = 0x04; //TU_STANDARD_PAL_I;

Probably, you need to add a define for 0x04 and use its symbol here.

Quoted 172 lines
drivers/media/video/saa7164//saa7164-api.c +1 -1
 		tvaudio.country = 44;
 	}
 
@@ -608,7 +608,7 @@
 	dprintk(DBGLVL_API, "%s(nr=%d type=%d val=%x)\n", __func__,
 		port->nr, port->type, val);
 
-	if (port->nr == 0)
+	if (port->nr < 3) //== 0)
 		mas = 0xd0;
 	else
 		mas = 0xe0;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c

drivers/media/video/saa7164//saa7164-cards.c +66 -0
@@ -203,6 +203,66 @@
 			.i2c_reg_len	= REGLEN_8bit,
 		} },
 	},
+	[SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
+		.name		= "Hauppauge WinTV-HVR2200",
+		.porta		= SAA7164_MPEG_DVB,
+		.portb		= SAA7164_MPEG_DVB,
+                .portc          = SAA7164_MPEG_ENCODER,
+                .portd          = SAA7164_MPEG_ENCODER,
+                .porte          = SAA7164_MPEG_VBI,
+                .portf          = SAA7164_MPEG_VBI,
+		.chiprev	= SAA7164_CHIP_REV3,
+		.unit		= {{
+			.id		= 0x1d,
+			.type		= SAA7164_UNIT_EEPROM,
+			.name		= "4K EEPROM",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_0,
+			.i2c_bus_addr	= 0xa0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x04,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0xc0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x05,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x84 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1b,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0xc0 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1c,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x84 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1e,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x10 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1f,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x12 >> 1,
+			.i2c_reg_len	= REGLEN_8bit,
+		} },
+	},
 	[SAA7164_BOARD_HAUPPAUGE_HVR2250] = {
 		.name		= "Hauppauge WinTV-HVR2250",
 		.porta		= SAA7164_MPEG_DVB,
@@ -426,6 +486,10 @@
 		.subvendor = 0x0070,
 		.subdevice = 0x8851,
 		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
+	}, {
+		.subvendor = 0x0070,
+		.subdevice = 0x8940,
+		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2200_4,
 	},
 };
 const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
@@ -469,6 +533,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
@@ -549,6 +614,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c

drivers/media/video/saa7164//saa7164-dvb.c +1 -0
@@ -475,6 +475,7 @@
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
 	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
 		i2c_bus = &dev->i2c_bus[port->nr + 1];
 		switch (port->nr) {
 		case 0:

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c

drivers/media/video/saa7164//saa7164-encoder.c +21 -3
@@ -32,7 +32,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+	}, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+	}, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+	}, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+	}, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+	}, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
@@ -1359,7 +1377,7 @@
 	.ioctl_ops     = &mpeg_ioctl_ops,
 	.minor         = -1,
 	.tvnorms       = SAA7164_NORMS,
-	.current_norm  = V4L2_STD_NTSC_M,
+	.current_norm  = V4L2_STD_PAL_B,
 };
 
 static struct video_device *saa7164_encoder_alloc(
@@ -1407,7 +1425,7 @@
 
 	/* Establish encoder defaults here */
 	/* Set default TV standard */
-	port->encodernorm = saa7164_tvnorms[0];
+	port->encodernorm = saa7164_tvnorms[6];
 	port->width = 720;
 	port->mux_input = 1; /* Composite */
 	port->video_format = EU_VIDEO_FORMAT_MPEG_2;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-fw.c linux-2.6.37/drivers/media/video/saa7164//saa7164-fw.c

drivers/media/video/saa7164//saa7164-fw.c line 34

Quoted 6 lines
drivers/media/video/saa7164//saa7164-fw.c +3 -0
@@ -29,6 +29,9 @@
 
 #define SAA7164_REV3_FIRMWARE		"NXP7164-2010-03-10.1.fw"
 #define SAA7164_REV3_FIRMWARE_SIZE	4019072
+//#define SAA7164_REV3_FIRMWARE		"v4l-saa7164-1.0.3-3.fw"
+//#define SAA7164_REV3_FIRMWARE_SIZE	4038864
+

Hmm... the above seems weird for me.

Quoted 15 lines
drivers/media/video/saa7164//saa7164-fw.c +0 -0
 struct fw_header {
 	u32	firmwaresize;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37/drivers/media/video/saa7164//saa7164.h

drivers/media/video/saa7164//saa7164.h +1 -0
@@ -83,6 +83,7 @@
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3	6
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2	7
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3	8
+#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4	9
 
 #define SAA7164_MAX_UNITS		8
 #define SAA7164_TS_NUMBER_OF_LINES	312

drivers/media/video/saa7164//saa7164.h line 117

Quoted 5 lines
drivers/media/video/saa7164//saa7164.h +1 -1
@@ -113,7 +114,7 @@
 #define DBGLVL_THR 4096
 #define DBGLVL_CPU 8192
 
-#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443)
+#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443 | V4L2_STD_PAL_I | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_PAL_B | V4L2_STD_PAL_DK)

You may eventually simplify the above with things like V4L_STD_MN (that covers NTSC/PAL_M/PAL_N and some variants). See videodev2.h for the macros that group video standards.

Quoted 33 lines
drivers/media/video/saa7164//saa7164.h +0 -0
 enum port_t {
 	SAA7164_MPEG_UNDEFINED = 0,

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-vbi.c linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c

drivers/media/video/saa7164//saa7164-vbi.c +19 -1
@@ -28,7 +28,25 @@
 	}, {
 		.name      = "NTSC-JP",
 		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+        }, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+        }, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+        }, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+        }, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+        }, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
 };
 
 static const u32 saa7164_v4l2_ctrls[] = {
#10 lore raw

Am 01.02.2011 14:22, schrieb Mauro Carvalho Chehab:

Quoted 7 lines

Em 08-01-2011 13:40, Julian Scheel escreveu:

Quoted 6 lines

Am 06.01.2011 23:31, schrieb Julian Scheel:

Quoted 3 lines
Quoted 2 lines

Attached is the diff I currently use.

Some more process. Attached is a new patch, which allows me to capture video and audio from a PAL tuner. Imho the video has wrong colours though (using PAL-B). Maybe someone would want to test that patch and give some feedback?

Ok some hours of debugging later, I figured out that only encoder 1 was not working properly. This was due to a wrong addressing when sending the dif setup commands. The attached new patch fixes this.

Quoted 8 lines

Is this patch already working properly?

If so, please:
1) Check its codingstyle with ./scripts/checkpatch.pl (there are some issues there, like commenting with //)
2) Remove the dead code;
3) Provide a patch description and your Signed-off-by:

For my purpose it works well, but actually I guess some more modifications would be needed for other PAL regions. Actually Steven wanted to take a look at this patch and merge it. What do you think, Steven?

Quoted 15 lines

drivers/media/video/saa7164//saa7164-api.c line 551

Quoted 13 lines

saa7164-card-pal.diff

Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.
diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c

drivers/media/video/saa7164//saa7164-api.c +1 -1
@@ -548,7 +548,7 @@
  		tvaudio.std = TU_STANDARD_NTSC_M;
  		tvaudio.country = 1;
  	} else {
-		tvaudio.std = TU_STANDARD_PAL_I;
+		tvaudio.std = 0x04; //TU_STANDARD_PAL_I;

Probably, you need to add a define for 0x04 and use its symbol here.

As I have no specification for the card/firmware it's a bit hard to insert a define here, as I can not say for sure for which standards it would properly work. Again this is something Steven would have to take a look at, I think.

Quoted 173 lines
Quoted 173 lines
drivers/media/video/saa7164//saa7164-api.c +1 -1
  		tvaudio.country = 44;
  	}
 
@@ -608,7 +608,7 @@
  	dprintk(DBGLVL_API, "%s(nr=%d type=%d val=%x)\n", __func__,
  		port->nr, port->type, val);
 
-	if (port->nr == 0)
+	if (port->nr<  3) //== 0)
  		mas = 0xd0;
  	else
  		mas = 0xe0;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c

drivers/media/video/saa7164//saa7164-cards.c +66 -0
@@ -203,6 +203,66 @@
  			.i2c_reg_len	= REGLEN_8bit,
  		} },
  	},
+	[SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
+		.name		= "Hauppauge WinTV-HVR2200",
+		.porta		= SAA7164_MPEG_DVB,
+		.portb		= SAA7164_MPEG_DVB,
+                .portc          = SAA7164_MPEG_ENCODER,
+                .portd          = SAA7164_MPEG_ENCODER,
+                .porte          = SAA7164_MPEG_VBI,
+                .portf          = SAA7164_MPEG_VBI,
+		.chiprev	= SAA7164_CHIP_REV3,
+		.unit		= {{
+			.id		= 0x1d,
+			.type		= SAA7164_UNIT_EEPROM,
+			.name		= "4K EEPROM",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_0,
+			.i2c_bus_addr	= 0xa0>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x04,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0xc0>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x05,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x84>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1b,
+			.type		= SAA7164_UNIT_TUNER,
+			.name		= "TDA18271-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0xc0>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1c,
+			.type		= SAA7164_UNIT_ANALOG_DEMODULATOR,
+			.name		= "TDA8290-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x84>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1e,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-1",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_1,
+			.i2c_bus_addr	= 0x10>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		}, {
+			.id		= 0x1f,
+			.type		= SAA7164_UNIT_DIGITAL_DEMODULATOR,
+			.name		= "TDA10048-2",
+			.i2c_bus_nr	= SAA7164_I2C_BUS_2,
+			.i2c_bus_addr	= 0x12>>  1,
+			.i2c_reg_len	= REGLEN_8bit,
+		} },
+	},
  	[SAA7164_BOARD_HAUPPAUGE_HVR2250] = {
  		.name		= "Hauppauge WinTV-HVR2250",
  		.porta		= SAA7164_MPEG_DVB,
@@ -426,6 +486,10 @@
  		.subvendor = 0x0070,
  		.subdevice = 0x8851,
  		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
+	}, {
+		.subvendor = 0x0070,
+		.subdevice = 0x8940,
+		.card      = SAA7164_BOARD_HAUPPAUGE_HVR2200_4,
  	},
  };
  const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
@@ -469,6 +533,7 @@
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
@@ -549,6 +614,7 @@
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-dvb.c linux-2.6.37/drivers/media/video/saa7164//saa7164-dvb.c

drivers/media/video/saa7164//saa7164-dvb.c +1 -0
@@ -475,6 +475,7 @@
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
  	case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+	case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
  		i2c_bus =&dev->i2c_bus[port->nr + 1];
  		switch (port->nr) {
  		case 0:

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-encoder.c linux-2.6.37/drivers/media/video/saa7164//saa7164-encoder.c

drivers/media/video/saa7164//saa7164-encoder.c +21 -3
@@ -32,7 +32,25 @@
  	}, {
  		.name      = "NTSC-JP",
  		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+	}, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+	}, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+	}, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+	}, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+	}, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
  };
 
  static const u32 saa7164_v4l2_ctrls[] = {
@@ -1359,7 +1377,7 @@
  	.ioctl_ops     =&mpeg_ioctl_ops,
  	.minor         = -1,
  	.tvnorms       = SAA7164_NORMS,
-	.current_norm  = V4L2_STD_NTSC_M,
+	.current_norm  = V4L2_STD_PAL_B,
  };
 
  static struct video_device *saa7164_encoder_alloc(
@@ -1407,7 +1425,7 @@
 
  	/* Establish encoder defaults here */
  	/* Set default TV standard */
-	port->encodernorm = saa7164_tvnorms[0];
+	port->encodernorm = saa7164_tvnorms[6];
  	port->width = 720;
  	port->mux_input = 1; /* Composite */
  	port->video_format = EU_VIDEO_FORMAT_MPEG_2;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-fw.c linux-2.6.37/drivers/media/video/saa7164//saa7164-fw.c

drivers/media/video/saa7164//saa7164-fw.c +0 -0
@@ -29,6 +29,9 @@
 
Quoted 6 lines

drivers/media/video/saa7164//saa7164-fw.c line 34

Quoted 5 lines
drivers/media/video/saa7164//saa7164-fw.c +3 -0
  #define SAA7164_REV3_FIRMWARE		"NXP7164-2010-03-10.1.fw"
  #define SAA7164_REV3_FIRMWARE_SIZE	4019072
+//#define SAA7164_REV3_FIRMWARE		"v4l-saa7164-1.0.3-3.fw"
+//#define SAA7164_REV3_FIRMWARE_SIZE	4038864
+

Hmm... the above seems weird for me.

Yep, missed that when cleaning up the code, can be removed.

Quoted 18 lines
Quoted 18 lines
drivers/media/video/saa7164//saa7164-fw.c +0 -0
  struct fw_header {
  	u32	firmwaresize;

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164.h linux-2.6.37/drivers/media/video/saa7164//saa7164.h

drivers/media/video/saa7164//saa7164.h +1 -0
@@ -83,6 +83,7 @@
  #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3	6
  #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2	7
  #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3	8
+#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4	9
 
  #define SAA7164_MAX_UNITS		8
  #define SAA7164_TS_NUMBER_OF_LINES	312
@@ -113,7 +114,7 @@
  #define DBGLVL_THR 4096
  #define DBGLVL_CPU 8192
 
Quoted 5 lines

drivers/media/video/saa7164//saa7164.h line 117

Quoted 2 lines
drivers/media/video/saa7164//saa7164.h +1 -1
-#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443)
+#define SAA7164_NORMS (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443 | V4L2_STD_PAL_I | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_PAL_B | V4L2_STD_PAL_DK)

You may eventually simplify the above with things like V4L_STD_MN (that covers NTSC/PAL_M/PAL_N and some variants). See videodev2.h for the macros that group video standards.

Ok, makes sense. I just followed the existing code scheme.

Quoted 32 lines
Quoted 32 lines
drivers/media/video/saa7164//saa7164.h +0 -0
  enum port_t {
  	SAA7164_MPEG_UNDEFINED = 0,

diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru linux-2.6.37.a/drivers/media/video/saa7164//saa7164-vbi.c linux-2.6.37/drivers/media/video/saa7164//saa7164-vbi.c

drivers/media/video/saa7164//saa7164-vbi.c +19 -1
@@ -28,7 +28,25 @@
  	}, {
  		.name      = "NTSC-JP",
  		.id        = V4L2_STD_NTSC_M_JP,
-	}
+	}, {
+                .name      = "PAL-I",
+                .id        = V4L2_STD_PAL_I,
+        }, {
+                .name      = "PAL-M",
+                .id        = V4L2_STD_PAL_M,
+        }, {
+                .name      = "PAL-N",
+                .id        = V4L2_STD_PAL_N,
+        }, {
+                .name      = "PAL-Nc",
+                .id        = V4L2_STD_PAL_Nc,
+        }, {
+                .name      = "PAL-B",
+                .id        = V4L2_STD_PAL_B,
+        }, {
+                .name      = "PAL-DK",
+                .id        = V4L2_STD_PAL_DK,
+        }
  };
 
Quoted 2 lines

drivers/media/video/saa7164//saa7164-vbi.c line 52

Quoted 1 line
drivers/media/video/saa7164//saa7164-vbi.c +0 -0
  static const u32 saa7164_v4l2_ctrls[] = {

-Julian

#11 lore raw
In reply to Steven Toth

Hi Steve,

Am 14.12.2010 20:51, schrieb Steven Toth:

Quoted 7 lines · Julian Scheel
Quoted 3 lines

Is there any reason, why the additional card-information found here:
http://www.kernellabs.com/hg/~stoth/saa7164-dev/
is not yet in the kernel tree?

PAL encoder support is broken in the current tree and it currently getting my love and attention. Point me at the specific boards you think are missing and I'll also add these to my todo list, they'll likely get merged at the same time

Any progress on this? If you need any assistance please let me know.

Regards,
Julian