aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/tveeprom.c
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-12-12 04:21:58 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-25 16:04:04 -0500
commit5412c8204f8c4f733acef511979fe1a738b74767 (patch)
tree5b8ab998340c896b59e99f31c1d31989a04d1c8d /drivers/media/video/tveeprom.c
parent3ac510e6097368695ddff20918ab5822823b548e (diff)
V4L/DVB (6859): tveeprom: add support for Hauppauge models 74xxx
Thanks to Steve Toth from Hauppauge with providing me with the information needed to add support for these models. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/tveeprom.c')
-rw-r--r--drivers/media/video/tveeprom.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c
index 403fbd0afa3f..4d294e2becb9 100644
--- a/drivers/media/video/tveeprom.c
+++ b/drivers/media/video/tveeprom.c
@@ -405,9 +405,9 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
405 ** # of inputs/outputs ??? 405 ** # of inputs/outputs ???
406 */ 406 */
407 407
408 int i, j, len, done, beenhere, tag,start; 408 int i, j, len, done, beenhere, tag, start;
409 409
410 int tuner1 = 0, t_format1 = 0, audioic=-1; 410 int tuner1 = 0, t_format1 = 0, audioic = -1;
411 char *t_name1 = NULL; 411 char *t_name1 = NULL;
412 const char *t_fmt_name1[8] = { " none", "", "", "", "", "", "", "" }; 412 const char *t_fmt_name1[8] = { " none", "", "", "", "", "", "", "" };
413 413
@@ -418,17 +418,24 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
418 memset(tvee, 0, sizeof(*tvee)); 418 memset(tvee, 0, sizeof(*tvee));
419 done = len = beenhere = 0; 419 done = len = beenhere = 0;
420 420
421 /* Hack for processing eeprom for em28xx and cx 2388x*/ 421 /* Different eeprom start offsets for em28xx, cx2388x and cx23418 */
422 if ((eeprom_data[0] == 0x1a) && (eeprom_data[1] == 0xeb) && 422 if (eeprom_data[0] == 0x1a &&
423 (eeprom_data[2] == 0x67) && (eeprom_data[3] == 0x95)) 423 eeprom_data[1] == 0xeb &&
424 start=0xa0; /* Generic em28xx offset */ 424 eeprom_data[2] == 0x67 &&
425 else if (((eeprom_data[0] & 0xe1) == 0x01) && 425 eeprom_data[3] == 0x95)
426 (eeprom_data[1] == 0x00) && 426 start = 0xa0; /* Generic em28xx offset */
427 (eeprom_data[2] == 0x00) && 427 else if ((eeprom_data[0] & 0xe1) == 0x01 &&
428 (eeprom_data[8] == 0x84)) 428 eeprom_data[1] == 0x00 &&
429 start=8; /* Generic cx2388x offset */ 429 eeprom_data[2] == 0x00 &&
430 eeprom_data[8] == 0x84)
431 start = 8; /* Generic cx2388x offset */
432 else if (eeprom_data[1] == 0x70 &&
433 eeprom_data[2] == 0x00 &&
434 eeprom_data[4] == 0x74 &&
435 eeprom_data[8] == 0x84)
436 start = 8; /* Generic cx23418 offset (models 74xxx) */
430 else 437 else
431 start=0; 438 start = 0;
432 439
433 for (i = start; !done && i < 256; i += len) { 440 for (i = start; !done && i < 256; i += len) {
434 if (eeprom_data[i] == 0x84) { 441 if (eeprom_data[i] == 0x84) {