V4L/DVB (6859): tveeprom: add support for Hauppauge models 74xxx
authorHans Verkuil <hverkuil@xs4all.nl>
Wed, 12 Dec 2007 09:21:58 +0000 (06:21 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:04:04 +0000 (19:04 -0200)
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>
drivers/media/video/tveeprom.c

index 403fbd0..4d294e2 100644 (file)
@@ -405,9 +405,9 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
        ** # of inputs/outputs ???
        */
 
-       int i, j, len, done, beenhere, tag,start;
+       int i, j, len, done, beenhere, tag, start;
 
-       int tuner1 = 0, t_format1 = 0, audioic=-1;
+       int tuner1 = 0, t_format1 = 0, audioic = -1;
        char *t_name1 = NULL;
        const char *t_fmt_name1[8] = { " none", "", "", "", "", "", "", "" };
 
@@ -418,17 +418,24 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
        memset(tvee, 0, sizeof(*tvee));
        done = len = beenhere = 0;
 
-       /* Hack for processing eeprom for em28xx and cx 2388x*/
-       if ((eeprom_data[0] == 0x1a) && (eeprom_data[1] == 0xeb) &&
-                       (eeprom_data[2] == 0x67) && (eeprom_data[3] == 0x95))
-               start=0xa0; /* Generic em28xx offset */
-       else if (((eeprom_data[0] & 0xe1) == 0x01) &&
-                                       (eeprom_data[1] == 0x00) &&
-                                       (eeprom_data[2] == 0x00) &&
-                                       (eeprom_data[8] == 0x84))
-               start=8; /* Generic cx2388x offset */
+       /* Different eeprom start offsets for em28xx, cx2388x and cx23418 */
+       if (eeprom_data[0] == 0x1a &&
+           eeprom_data[1] == 0xeb &&
+           eeprom_data[2] == 0x67 &&
+           eeprom_data[3] == 0x95)
+               start = 0xa0; /* Generic em28xx offset */
+       else if ((eeprom_data[0] & 0xe1) == 0x01 &&
+                eeprom_data[1] == 0x00 &&
+                eeprom_data[2] == 0x00 &&
+                eeprom_data[8] == 0x84)
+               start = 8; /* Generic cx2388x offset */
+       else if (eeprom_data[1] == 0x70 &&
+                eeprom_data[2] == 0x00 &&
+                eeprom_data[4] == 0x74 &&
+                eeprom_data[8] == 0x84)
+               start = 8; /* Generic cx23418 offset (models 74xxx) */
        else
-               start=0;
+               start = 0;
 
        for (i = start; !done && i < 256; i += len) {
                if (eeprom_data[i] == 0x84) {