diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2008-07-22 14:50:31 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-26 11:54:42 -0400 |
commit | b654fcdc0ea3b6e5724c9873ae062bdfe7f28efe (patch) | |
tree | a7cd44165baef31933053345a18279a4f66817e0 | |
parent | 38f9d308597fe3f8d52bfa30e7ed6c742b85a1db (diff) |
V4L/DVB (8479): tveeprom/ivtv: fix usage of has_ir field
has_ir was set to and compared to -1 in several cases, even though it is
an u32. ivtv also contained a FIXME for an old kernel that could be
removed.
Thanks to Roel Kluin for creating an initial patch for this. Although
I chose a different solution here it did help in pointing out the problem.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/video/ivtv/ivtv-driver.c | 5 | ||||
-rw-r--r-- | drivers/media/video/tveeprom.c | 16 | ||||
-rw-r--r-- | include/media/tveeprom.h | 7 |
3 files changed, 16 insertions, 12 deletions
diff --git a/drivers/media/video/ivtv/ivtv-driver.c b/drivers/media/video/ivtv/ivtv-driver.c index 41fd79279bb5..aea1664948ce 100644 --- a/drivers/media/video/ivtv/ivtv-driver.c +++ b/drivers/media/video/ivtv/ivtv-driver.c | |||
@@ -465,9 +465,8 @@ static void ivtv_process_eeprom(struct ivtv *itv) | |||
465 | if (itv->options.radio == -1) | 465 | if (itv->options.radio == -1) |
466 | itv->options.radio = (tv.has_radio != 0); | 466 | itv->options.radio = (tv.has_radio != 0); |
467 | /* only enable newi2c if an IR blaster is present */ | 467 | /* only enable newi2c if an IR blaster is present */ |
468 | /* FIXME: for 2.6.20 the test against 2 should be removed */ | 468 | if (itv->options.newi2c == -1 && tv.has_ir) { |
469 | if (itv->options.newi2c == -1 && tv.has_ir != -1 && tv.has_ir != 2) { | 469 | itv->options.newi2c = (tv.has_ir & 4) ? 1 : 0; |
470 | itv->options.newi2c = (tv.has_ir & 2) ? 1 : 0; | ||
471 | if (itv->options.newi2c) { | 470 | if (itv->options.newi2c) { |
472 | IVTV_INFO("Reopen i2c bus for IR-blaster support\n"); | 471 | IVTV_INFO("Reopen i2c bus for IR-blaster support\n"); |
473 | exit_ivtv_i2c(itv); | 472 | exit_ivtv_i2c(itv); |
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c index 93954c143237..fbfac1b3bd02 100644 --- a/drivers/media/video/tveeprom.c +++ b/drivers/media/video/tveeprom.c | |||
@@ -485,7 +485,7 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee, | |||
485 | tvee->has_radio = eeprom_data[i+len-1]; | 485 | tvee->has_radio = eeprom_data[i+len-1]; |
486 | /* old style tag, don't know how to detect | 486 | /* old style tag, don't know how to detect |
487 | IR presence, mark as unknown. */ | 487 | IR presence, mark as unknown. */ |
488 | tvee->has_ir = -1; | 488 | tvee->has_ir = 0; |
489 | tvee->model = | 489 | tvee->model = |
490 | eeprom_data[i+8] + | 490 | eeprom_data[i+8] + |
491 | (eeprom_data[i+9] << 8); | 491 | (eeprom_data[i+9] << 8); |
@@ -605,7 +605,7 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee, | |||
605 | 605 | ||
606 | case 0x0f: | 606 | case 0x0f: |
607 | /* tag 'IRInfo' */ | 607 | /* tag 'IRInfo' */ |
608 | tvee->has_ir = eeprom_data[i+1]; | 608 | tvee->has_ir = 1 | (eeprom_data[i+1] << 1); |
609 | break; | 609 | break; |
610 | 610 | ||
611 | /* case 0x10: tag 'VBIInfo' */ | 611 | /* case 0x10: tag 'VBIInfo' */ |
@@ -705,14 +705,14 @@ void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee, | |||
705 | tveeprom_info("decoder processor is %s (idx %d)\n", | 705 | tveeprom_info("decoder processor is %s (idx %d)\n", |
706 | STRM(decoderIC, tvee->decoder_processor), | 706 | STRM(decoderIC, tvee->decoder_processor), |
707 | tvee->decoder_processor); | 707 | tvee->decoder_processor); |
708 | if (tvee->has_ir == -1) | 708 | if (tvee->has_ir) |
709 | tveeprom_info("has %sradio\n", | ||
710 | tvee->has_radio ? "" : "no "); | ||
711 | else | ||
712 | tveeprom_info("has %sradio, has %sIR receiver, has %sIR transmitter\n", | 709 | tveeprom_info("has %sradio, has %sIR receiver, has %sIR transmitter\n", |
713 | tvee->has_radio ? "" : "no ", | 710 | tvee->has_radio ? "" : "no ", |
714 | (tvee->has_ir & 1) ? "" : "no ", | 711 | (tvee->has_ir & 2) ? "" : "no ", |
715 | (tvee->has_ir & 2) ? "" : "no "); | 712 | (tvee->has_ir & 4) ? "" : "no "); |
713 | else | ||
714 | tveeprom_info("has %sradio\n", | ||
715 | tvee->has_radio ? "" : "no "); | ||
716 | } | 716 | } |
717 | EXPORT_SYMBOL(tveeprom_hauppauge_analog); | 717 | EXPORT_SYMBOL(tveeprom_hauppauge_analog); |
718 | 718 | ||
diff --git a/include/media/tveeprom.h b/include/media/tveeprom.h index 5660ea24996b..a8ad75a9152a 100644 --- a/include/media/tveeprom.h +++ b/include/media/tveeprom.h | |||
@@ -3,7 +3,12 @@ | |||
3 | 3 | ||
4 | struct tveeprom { | 4 | struct tveeprom { |
5 | u32 has_radio; | 5 | u32 has_radio; |
6 | u32 has_ir; /* bit 0: IR receiver present, bit 1: IR transmitter (blaster) present. -1 == unknown */ | 6 | /* If has_ir == 0, then it is unknown what the IR capabilities are, |
7 | otherwise: | ||
8 | bit 0: 1 (= IR capabilities are known) | ||
9 | bit 1: IR receiver present | ||
10 | bit 2: IR transmitter (blaster) present */ | ||
11 | u32 has_ir; | ||
7 | u32 has_MAC_address; /* 0: no MAC, 1: MAC present, 2: unknown */ | 12 | u32 has_MAC_address; /* 0: no MAC, 1: MAC present, 2: unknown */ |
8 | 13 | ||
9 | u32 tuner_type; | 14 | u32 tuner_type; |