|
@@ -412,6 +412,21 @@ static struct em28xx_reg_seq pctv_520e[] = {
|
|
{ -1, -1, -1, -1},
|
|
{ -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
|
|
* Button definitions
|
|
*/
|
|
*/
|
|
@@ -426,6 +441,41 @@ static struct em28xx_button std_snapshot_button[] = {
|
|
{-1, 0, 0, 0, 0},
|
|
{-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
|
|
* Board definitions
|
|
*/
|
|
*/
|
|
@@ -2057,6 +2107,24 @@ struct em28xx_board em28xx_boards[] = {
|
|
.tuner_gpio = default_tuner_gpio,
|
|
.tuner_gpio = default_tuner_gpio,
|
|
.def_i2c_bus = 1,
|
|
.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);
|
|
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 },
|
|
.driver_info = EM2884_BOARD_PCTV_520E },
|
|
{ USB_DEVICE(0x1b80, 0xe1cc),
|
|
{ USB_DEVICE(0x1b80, 0xe1cc),
|
|
.driver_info = EM2874_BOARD_DELOCK_61959 },
|
|
.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);
|
|
MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|