Commit b04fb661 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (12238): em28xx: call sensor detection code for all webcam entries

With the previous approach, autodetection were working only for the two
generic entries (em275x and em2820 unknown ones). So, if someone would
try to force probing an specific device, the code would not properly run
the autodetection code.

With the new approach, the sensor autodetection will be run not only for
the two generic entries, but also do webcam specific ones.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9873740b
...@@ -234,6 +234,7 @@ struct em28xx_board em28xx_boards[] = { ...@@ -234,6 +234,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2820_BOARD_UNKNOWN] = { [EM2820_BOARD_UNKNOWN] = {
.name = "Unknown EM2750/28xx video grabber", .name = "Unknown EM2750/28xx video grabber",
.tuner_type = TUNER_ABSENT, .tuner_type = TUNER_ABSENT,
.is_webcam = 1, /* To enable sensor probe */
}, },
[EM2750_BOARD_DLCW_130] = { [EM2750_BOARD_DLCW_130] = {
/* Beijing Huaqi Information Digital Technology Co., Ltd */ /* Beijing Huaqi Information Digital Technology Co., Ltd */
...@@ -1719,10 +1720,6 @@ static int em28xx_hint_sensor(struct em28xx *dev) ...@@ -1719,10 +1720,6 @@ static int em28xx_hint_sensor(struct em28xx *dev)
__be16 version_be; __be16 version_be;
u16 version; u16 version;
if (dev->model != EM2820_BOARD_UNKNOWN &&
dev->model != EM2750_BOARD_UNKNOWN)
return 0;
dev->i2c_client.addr = 0xba >> 1; dev->i2c_client.addr = 0xba >> 1;
cmd = 0; cmd = 0;
i2c_master_send(&dev->i2c_client, &cmd, 1); i2c_master_send(&dev->i2c_client, &cmd, 1);
...@@ -1777,10 +1774,7 @@ void em28xx_pre_card_setup(struct em28xx *dev) ...@@ -1777,10 +1774,7 @@ void em28xx_pre_card_setup(struct em28xx *dev)
em28xx_info("chip ID is em2750\n"); em28xx_info("chip ID is em2750\n");
break; break;
case CHIP_ID_EM2820: case CHIP_ID_EM2820:
if (dev->board.is_webcam) em28xx_info("chip ID is em2710 or em2820\n");
em28xx_info("chip is em2710\n");
else
em28xx_info("chip ID is em2820\n");
break; break;
case CHIP_ID_EM2840: case CHIP_ID_EM2840:
em28xx_info("chip ID is em2840\n"); em28xx_info("chip ID is em2840\n");
...@@ -2415,7 +2409,13 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev, ...@@ -2415,7 +2409,13 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
return errCode; return errCode;
} }
em28xx_hint_sensor(dev); /*
* If the device can be a webcam, seek for a sensor.
* If sensor is not found, then it isn't a webcam.
*/
if (dev->board.is_webcam)
if (em28xx_hint_sensor(dev) < 0)
dev->board.is_webcam = 0;
/* Do board specific init and eeprom reading */ /* Do board specific init and eeprom reading */
em28xx_card_setup(dev); em28xx_card_setup(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment