1
0
Fork 0

[media] em28xx: add support for the SpeedLink Vicious And Devine Laplace webcams

The SpeedLink Vicious And Devine Laplace webcam is using an EM2765 bridge and
an OV2640 sensor. It has a built-in microphone (USB standard device class)
and provides 3 buttons (snapshot, illumination, mute) and 2 LEDs (capturing/mute
and illumination/flash). It is also equipped with an eeprom.
The device is available in two colors: white (1ae7:9003) and black (1ae7:9004).
For further details see http://linuxtv.org/wiki/index.php/VAD_Laplace.
Please note the following limitations that need to be addressed later:
- resolution limited to 640x480 (sensor supports 1600x1200)
- picture quality needs to be improved
- AV-mute button doesn't work yet

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
hifive-unleashed-5.1
Frank Schaefer 2013-12-01 18:06:57 -03:00 committed by Mauro Carvalho Chehab
parent 6063d07785
commit 0c37e736cb
2 changed files with 73 additions and 0 deletions

View File

@ -412,6 +412,21 @@ static struct em28xx_reg_seq pctv_520e[] = {
{ -1, -1, -1, -1},
};
/* 1ae7:9003/9004 SpeedLink Vicious And Devine Laplace webcam
* reg 0x80/0x84:
* GPIO_0: capturing LED, 0=on, 1=off
* GPIO_2: AV mute button, 0=pressed, 1=unpressed
* GPIO 3: illumination button, 0=pressed, 1=unpressed
* GPIO_6: illumination/flash LED, 0=on, 1=off
* reg 0x81/0x85:
* GPIO_7: snapshot button, 0=pressed, 1=unpressed
*/
static struct em28xx_reg_seq speedlink_vad_laplace_reg_seq[] = {
{EM2820_R08_GPIO_CTRL, 0xf7, 0xff, 10},
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xb2, 10},
{ -1, -1, -1, -1},
};
/*
* Button definitions
*/
@ -426,6 +441,41 @@ static struct em28xx_button std_snapshot_button[] = {
{-1, 0, 0, 0, 0},
};
static struct em28xx_button speedlink_vad_laplace_buttons[] = {
{
.role = EM28XX_BUTTON_SNAPSHOT,
.reg_r = EM2874_R85_GPIO_P1_STATE,
.mask = 0x80,
.inverted = 1,
},
{
.role = EM28XX_BUTTON_ILLUMINATION,
.reg_r = EM2874_R84_GPIO_P0_STATE,
.mask = 0x08,
.inverted = 1,
},
{-1, 0, 0, 0, 0},
};
/*
* LED definitions
*/
static struct em28xx_led speedlink_vad_laplace_leds[] = {
{
.role = EM28XX_LED_ANALOG_CAPTURING,
.gpio_reg = EM2874_R80_GPIO_P0_CTRL,
.gpio_mask = 0x01,
.inverted = 1,
},
{
.role = EM28XX_LED_ILLUMINATION,
.gpio_reg = EM2874_R80_GPIO_P0_CTRL,
.gpio_mask = 0x40,
.inverted = 1,
},
{-1, 0, 0, 0},
};
/*
* Board definitions
*/
@ -2057,6 +2107,24 @@ struct em28xx_board em28xx_boards[] = {
.tuner_gpio = default_tuner_gpio,
.def_i2c_bus = 1,
},
/* 1ae7:9003/9004 SpeedLink Vicious And Devine Laplace webcam
* Empia EM2765 + OmniVision OV2640 */
[EM2765_BOARD_SPEEDLINK_VAD_LAPLACE] = {
.name = "SpeedLink Vicious And Devine Laplace webcam",
.xclk = EM28XX_XCLK_FREQUENCY_24MHZ,
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
EM28XX_I2C_FREQ_100_KHZ,
.def_i2c_bus = 1,
.tuner_type = TUNER_ABSENT,
.is_webcam = 1,
.input = { {
.type = EM28XX_VMUX_COMPOSITE1,
.amux = EM28XX_AMUX_VIDEO,
.gpio = speedlink_vad_laplace_reg_seq,
} },
.buttons = speedlink_vad_laplace_buttons,
.leds = speedlink_vad_laplace_leds,
},
};
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
@ -2222,6 +2290,10 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM2884_BOARD_PCTV_520E },
{ USB_DEVICE(0x1b80, 0xe1cc),
.driver_info = EM2874_BOARD_DELOCK_61959 },
{ USB_DEVICE(0x1ae7, 0x9003),
.driver_info = EM2765_BOARD_SPEEDLINK_VAD_LAPLACE },
{ USB_DEVICE(0x1ae7, 0x9004),
.driver_info = EM2765_BOARD_SPEEDLINK_VAD_LAPLACE },
{ },
};
MODULE_DEVICE_TABLE(usb, em28xx_id_table);

View File

@ -132,6 +132,7 @@
#define EM2884_BOARD_C3TECH_DIGITAL_DUO 88
#define EM2874_BOARD_DELOCK_61959 89
#define EM2874_BOARD_KWORLD_UB435Q_V2 90
#define EM2765_BOARD_SPEEDLINK_VAD_LAPLACE 91
/* Limits minimum and default number of buffers */
#define EM28XX_MIN_BUF 4