diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2007-12-12 04:21:58 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-25 16:04:04 -0500 |
commit | 5412c8204f8c4f733acef511979fe1a738b74767 (patch) | |
tree | 5b8ab998340c896b59e99f31c1d31989a04d1c8d /drivers/media/video/tveeprom.c | |
parent | 3ac510e6097368695ddff20918ab5822823b548e (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.c | 31 |
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) { |