diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-cards.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index ae6634156e76..fd7a8a5fba66 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -402,6 +402,11 @@ static struct em28xx_hash_table em28xx_hash [] = { | |||
402 | { 0x6ce05a8f, EM2820_BOARD_PROLINK_PLAYTV_USB2, TUNER_YMEC_TVF_5533MF }, | 402 | { 0x6ce05a8f, EM2820_BOARD_PROLINK_PLAYTV_USB2, TUNER_YMEC_TVF_5533MF }, |
403 | }; | 403 | }; |
404 | 404 | ||
405 | static struct em28xx_hash_table em28xx_i2c_hash[] = { | ||
406 | { 0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC }, | ||
407 | { 0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC }, | ||
408 | }; | ||
409 | |||
405 | /* Since em28xx_pre_card_setup() requires a proper dev->model, | 410 | /* Since em28xx_pre_card_setup() requires a proper dev->model, |
406 | * this won't work for boards with generic PCI IDs | 411 | * this won't work for boards with generic PCI IDs |
407 | */ | 412 | */ |
@@ -498,6 +503,30 @@ static int em28xx_hint_board(struct em28xx *dev) | |||
498 | return 0; | 503 | return 0; |
499 | } | 504 | } |
500 | } | 505 | } |
506 | |||
507 | /* user did not request i2c scanning => do it now */ | ||
508 | if (!dev->i2c_hash) | ||
509 | em28xx_do_i2c_scan(dev); | ||
510 | |||
511 | for (i = 0; i < ARRAY_SIZE(em28xx_i2c_hash); i++) { | ||
512 | if (dev->i2c_hash == em28xx_i2c_hash[i].hash) { | ||
513 | dev->model = em28xx_i2c_hash[i].model; | ||
514 | dev->tuner_type = em28xx_i2c_hash[i].tuner; | ||
515 | em28xx_errdev("Your board has no unique USB ID.\n"); | ||
516 | em28xx_errdev("A hint were successfully done, " | ||
517 | "based on i2c devicelist hash.\n"); | ||
518 | em28xx_errdev("This method is not 100%% failproof.\n"); | ||
519 | em28xx_errdev("If the board were missdetected, " | ||
520 | "please email this log to:\n"); | ||
521 | em28xx_errdev("\tV4L Mailing List " | ||
522 | " <video4linux-list@redhat.com>\n"); | ||
523 | em28xx_errdev("Board detected as %s\n", | ||
524 | em28xx_boards[dev->model].name); | ||
525 | |||
526 | return 0; | ||
527 | } | ||
528 | } | ||
529 | |||
501 | em28xx_errdev("Your board has no unique USB ID and thus need a " | 530 | em28xx_errdev("Your board has no unique USB ID and thus need a " |
502 | "hint to be detected.\n"); | 531 | "hint to be detected.\n"); |
503 | em28xx_errdev("You may try to use card=<n> insmod option to " | 532 | em28xx_errdev("You may try to use card=<n> insmod option to " |
@@ -505,6 +534,7 @@ static int em28xx_hint_board(struct em28xx *dev) | |||
505 | em28xx_errdev("Please send an email with this log to:\n"); | 534 | em28xx_errdev("Please send an email with this log to:\n"); |
506 | em28xx_errdev("\tV4L Mailing List <video4linux-list@redhat.com>\n"); | 535 | em28xx_errdev("\tV4L Mailing List <video4linux-list@redhat.com>\n"); |
507 | em28xx_errdev("Board eeprom hash is 0x%08lx\n", dev->hash); | 536 | em28xx_errdev("Board eeprom hash is 0x%08lx\n", dev->hash); |
537 | em28xx_errdev("Board i2c devicelist hash is 0x%08lx\n", dev->i2c_hash); | ||
508 | 538 | ||
509 | em28xx_errdev("Here is a list of valid choices for the card=<n>" | 539 | em28xx_errdev("Here is a list of valid choices for the card=<n>" |
510 | " insmod option:\n"); | 540 | " insmod option:\n"); |