Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 76375
b: refs/heads/master
c: d2ba055
h: refs/heads/master
i:
  76373: f586dcd
  76371: 983200e
  76367: c39a0a1
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Jan 25, 2008
1 parent 58da042 commit d2ca7d9
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fad7b958e753e18ff443786360f7846da50a3085
refs/heads/master: d2ba055d3b7ca7694af38a735f00850363ee9417
29 changes: 24 additions & 5 deletions trunk/drivers/media/video/em28xx/em28xx-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,11 +397,13 @@ struct usb_device_id em28xx_id_table [] = {
};
MODULE_DEVICE_TABLE (usb, em28xx_id_table);

static struct em28xx_hash_table em28xx_hash [] = {
/* EEPROM hash table for devices with generic USB IDs */
static struct em28xx_hash_table em28xx_eeprom_hash [] = {
/* P/N: SA 60002070465 Tuner: TVF7533-MF */
{ 0x6ce05a8f, EM2820_BOARD_PROLINK_PLAYTV_USB2, TUNER_YMEC_TVF_5533MF },
};

/* I2C devicelist hash table for devices with generic USB IDs */
static struct em28xx_hash_table em28xx_i2c_hash[] = {
{ 0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC },
{ 0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC },
Expand Down Expand Up @@ -484,10 +486,18 @@ static int em28xx_hint_board(struct em28xx *dev)
{
int i;

for (i = 0; i < ARRAY_SIZE(em28xx_hash); i++) {
if (dev->hash == em28xx_hash[i].hash) {
dev->model = em28xx_hash[i].model;
dev->tuner_type = em28xx_hash[i].tuner;
/* HINT method: EEPROM
*
* This method works only for boards with eeprom.
* Uses a hash of all eeprom bytes. The hash should be
* unique for a vendor/tuner pair.
* There are a high chance that tuners for different
* video standards produce different hashes.
*/
for (i = 0; i < ARRAY_SIZE(em28xx_eeprom_hash); i++) {
if (dev->hash == em28xx_eeprom_hash[i].hash) {
dev->model = em28xx_eeprom_hash[i].model;
dev->tuner_type = em28xx_eeprom_hash[i].tuner;

em28xx_errdev("Your board has no unique USB ID.\n");
em28xx_errdev("A hint were successfully done, "
Expand All @@ -504,6 +514,15 @@ static int em28xx_hint_board(struct em28xx *dev)
}
}

/* HINT method: I2C attached devices
*
* This method works for all boards.
* Uses a hash of i2c scanned devices.
* Devices with the same i2c attached chips will
* be considered equal.
* This method is less precise than the eeprom one.
*/

/* user did not request i2c scanning => do it now */
if (!dev->i2c_hash)
em28xx_do_i2c_scan(dev);
Expand Down

0 comments on commit d2ca7d9

Please sign in to comment.