|
@@ -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) {
|