Hi,
I have a Hauppauge HVR-2210 tv tuner card that is not currently
supported by V4L saa7164 driver.
The card is recognised but is reported as unsupported
CORE saa7164[0]: subsystem: 0070:8953, board: Unknown
[card=0,autodetected]
I found some support for this subsystem in what I assume to be a old
dev tree at
http://kernellabs.com/hg/~stoth/saa7164-dev/
So perhaps it was something lost in porting saa7164 module to the v4l
tree, or perhaps there was some issue, I couldn't work out the history
around this.
I have used that code (without any understanding of it) to patch the
saa7164 driver as below, and this has been successful - I have been
using the card with MythTV happily for about a month now.
So my question is how do I ask developers to consider including support
for this card in future releases ?
This is my first time reaching out to the Linux community and I am
merely a Linux enthusiast/user (not a programmer) - so apologies if I
have taken the wrong tact for such a request.
Appreciate any help.
Jason
Two patch files I use ...
# -------- v4l-dvb-saa7164.patch --------
diff -crB v4l-dvb/linux/drivers/media/video/saa7164/saa7164-cards.c
v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164-cards.c
***
v4l-dvb/linux/drivers/media/video/saa7164/saa7164-cards.c 2011-01-03
15:39:28.065355788 +1100
---
v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164-cards.c 2011-01-03
16:25:00.377588988 +1100
***************
*** 369,374 ****
--- 369,430 ----
.i2c_reg_len = REGLEN_8bit,
} },
},
+ [SAA7164_BOARD_HAUPPAUGE_HVR2200_5] = {
+ .name = "Hauppauge WinTV-HVR2200",
+ .porta = SAA7164_MPEG_DVB,
+ .portb = SAA7164_MPEG_DVB,
+ .chiprev = SAA7164_CHIP_REV3,
+ .unit = {{
+ .id = 0x23,
+ .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 = 0x21,
+ .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 = 0x22,
+ .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 = 0x24,
+ .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 = 0x25,
+ .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,
+ } },
+ },
};
const unsigned int saa7164_bcount = ARRAY_SIZE(saa7164_boards);
***************
*** 408,413 ****
--- 464,473 ----
.subvendor = 0x0070,
.subdevice = 0x8851,
.card = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
+ }, {
+ .subvendor = 0x0070,
+ .subdevice = 0x8953,
+ .card = SAA7164_BOARD_HAUPPAUGE_HVR2200_5,
},
};
const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
***************
*** 463,468 ****
--- 523,529 ----
case SAA7164_BOARD_HAUPPAUGE_HVR2200:
case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+ case SAA7164_BOARD_HAUPPAUGE_HVR2200_5:
#if 0
/* Disable the DIF */
saa7164_api_dif_write(&dev->i2c_bus[0], 0xc0, 8, &b4[0]);
***************
*** 560,565 ****
--- 621,627 ----
case SAA7164_BOARD_HAUPPAUGE_HVR2250:
case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
+ case SAA7164_BOARD_HAUPPAUGE_HVR2200_5:
hauppauge_eeprom(dev, &eeprom[0]);
break;
}
diff -crB v4l-dvb/linux/drivers/media/video/saa7164/saa7164-dvb.c
v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164-dvb.c
*** v4l-dvb/linux/drivers/media/video/saa7164/saa7164-dvb.c 2011-01-03
15:39:28.067355454 +1100
---
v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164-dvb.c 2011-01-03
16:26:53.059795030 +1100
***************
*** 522,527 ****
--- 522,528 ----
case SAA7164_BOARD_HAUPPAUGE_HVR2200:
case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
+ case SAA7164_BOARD_HAUPPAUGE_HVR2200_5:
i2c_bus = &dev->i2c_bus[port->nr + 1];
switch (port->nr) {
case 0:
diff -crB v4l-dvb/linux/drivers/media/video/saa7164/saa7164.h
v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164.h
*** v4l-dvb/linux/drivers/media/video/saa7164/saa7164.h 2011-01-03
15:39:28.069355120 +1100
--- v4l-dvb-JN/linux/drivers/media/video/saa7164/saa7164.h 2011-01-03
16:28:13.055451489 +1100
***************
*** 74,79 ****
--- 74,81 ----
#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_5 10
+
#define SAA7164_MAX_UNITS 8
#define SAA7164_TS_NUMBER_OF_LINES 312
#--------- v4l-dvb-saa7164-cardist.patch ------------
diff -crB v4l-dvb/linux/Documentation/video4linux/CARDLIST.saa7164
v4l-dvb-JN/linux/Documentation/video4linux/CARDLIST.saa7164
*** v4l-dvb/linux/Documentation/video4linux/CARDLIST.saa7164 2011-01-03
15:39:27.352474772 +1100
---
v4l-dvb-JN/linux/Documentation/video4linux/CARDLIST.saa7164 2011-01-03
15:48:54.200953545 +1100
***************
*** 7,9 ****
--- 7,10 ----
6 -> Hauppauge WinTV-HVR2200
[0070:8901]
7 -> Hauppauge WinTV-HVR2250
[0070:8891,0070:8851]
8 -> Hauppauge WinTV-HVR2250
[0070:88A1]
+ 10 -> Hauppauge WinTV-HVR2200
[0070:8953]
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html