The Kinect produces both a video stream and a depth stream. Call gspca_dev_probe() twice to create a video device node for each. Remove the depth_mode parameter which had to be set at probe time in order to select either the video or depth stream. Signed-off-by: Ulrik de Muelenaere <ulrikdem@xxxxxxxxx> --- drivers/media/usb/gspca/kinect.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/media/usb/gspca/kinect.c b/drivers/media/usb/gspca/kinect.c index 3cb30a3..4bc5b7d 100644 --- a/drivers/media/usb/gspca/kinect.c +++ b/drivers/media/usb/gspca/kinect.c @@ -36,8 +36,6 @@ MODULE_AUTHOR("Antonio Ospite <ospite@xxxxxxxxxxxxxxxxx>"); MODULE_DESCRIPTION("GSPCA/Kinect Sensor Device USB Camera Driver"); MODULE_LICENSE("GPL"); -static bool depth_mode; - struct pkt_hdr { uint8_t magic[2]; uint8_t pad; @@ -424,7 +422,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *__data, int len) /* sub-driver description */ static const struct sd_desc sd_desc_video = { - .name = MODULE_NAME, + .name = MODULE_NAME "_video", .config = sd_config_video, .init = sd_init, .start = sd_start_video, @@ -436,7 +434,7 @@ static const struct sd_desc sd_desc_video = { */ }; static const struct sd_desc sd_desc_depth = { - .name = MODULE_NAME, + .name = MODULE_NAME "_depth", .config = sd_config_depth, .init = sd_init, .start = sd_start_depth, @@ -460,12 +458,19 @@ MODULE_DEVICE_TABLE(usb, device_table); /* -- device connect -- */ static int sd_probe(struct usb_interface *intf, const struct usb_device_id *id) { - if (depth_mode) - return gspca_dev_probe(intf, id, &sd_desc_depth, - sizeof(struct sd), THIS_MODULE); - else - return gspca_dev_probe(intf, id, &sd_desc_video, - sizeof(struct sd), THIS_MODULE); + int res; + + res = gspca_dev_probe(intf, id, &sd_desc_video, sizeof(struct sd), + THIS_MODULE); + if (res < 0) + return res; + + res = gspca_dev_probe(intf, id, &sd_desc_depth, sizeof(struct sd), + THIS_MODULE); + if (res < 0) + gspca_disconnect(intf); + + return res; } static struct usb_driver sd_driver = { @@ -481,6 +486,3 @@ static struct usb_driver sd_driver = { }; module_usb_driver(sd_driver); - -module_param(depth_mode, bool, 0644); -MODULE_PARM_DESC(depth_mode, "0=video 1=depth"); -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html