Commit 54e92549 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] em28xx: add support for DVB monitor led

Some devices have a LED to indicate when DVB capture started.
Add support for it.
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 02bc1f55
......@@ -619,6 +619,7 @@ EXPORT_SYMBOL_GPL(em28xx_find_led);
int em28xx_capture_start(struct em28xx *dev, int start)
{
int rc;
const struct em28xx_led *led = NULL;
if (dev->chip_id == CHIP_ID_EM2874 ||
dev->chip_id == CHIP_ID_EM2884 ||
......@@ -643,6 +644,8 @@ int em28xx_capture_start(struct em28xx *dev, int start)
/* Enable video capture */
rc = em28xx_write_reg(dev, 0x48, 0x00);
if (rc < 0)
return rc;
if (dev->mode == EM28XX_ANALOG_MODE)
rc = em28xx_write_reg(dev,
......@@ -650,6 +653,8 @@ int em28xx_capture_start(struct em28xx *dev, int start)
else
rc = em28xx_write_reg(dev,
EM28XX_R12_VINENABLE, 0x37);
if (rc < 0)
return rc;
msleep(6);
} else {
......@@ -658,19 +663,16 @@ int em28xx_capture_start(struct em28xx *dev, int start)
}
}
if (rc < 0)
return rc;
/* Switch (explicitly controlled) analog capturing LED on/off */
if (dev->mode == EM28XX_ANALOG_MODE) {
const struct em28xx_led *led;
if (dev->mode == EM28XX_ANALOG_MODE)
led = em28xx_find_led(dev, EM28XX_LED_ANALOG_CAPTURING);
if (led)
em28xx_write_reg_bits(dev, led->gpio_reg,
(!start ^ led->inverted) ?
~led->gpio_mask : led->gpio_mask,
led->gpio_mask);
}
else
led = em28xx_find_led(dev, EM28XX_LED_DIGITAL_CAPTURING);
if (led)
em28xx_write_reg_bits(dev, led->gpio_reg,
(!start ^ led->inverted) ?
~led->gpio_mask : led->gpio_mask,
led->gpio_mask);
return rc;
}
......
......@@ -401,6 +401,7 @@ enum em28xx_adecoder {
enum em28xx_led_role {
EM28XX_LED_ANALOG_CAPTURING = 0,
EM28XX_LED_DIGITAL_CAPTURING,
EM28XX_LED_ILLUMINATION,
EM28XX_NUM_LED_ROLES, /* must be the last */
};
......
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