@@ -2213,6 +2213,10 @@ int uvc_ctrl_init_device(struct uvc_device *dev)
{
struct uvc_entity *entity;
unsigned int i;
+ const struct usb_device_id xu_only[] = {
+ { USB_DEVICE(0x2833, 0x0201) },
+ { USB_DEVICE(0x2833, 0x0211) },
+ };
/* Walk the entities list and instantiate controls */
list_for_each_entry(entity, &dev->entities, list) {
@@ -2220,6 +2224,16 @@ int uvc_ctrl_init_device(struct uvc_device *dev)
unsigned int bControlSize = 0, ncontrols;
__u8 *bmControls = NULL;
+ /* Oculus Sensors only handle extension unit controls */
+ if (UVC_ENTITY_TYPE(entity) != UVC_VC_EXTENSION_UNIT) {
+ for (i = 0; i < ARRAY_SIZE(xu_only); i++) {
+ if (usb_match_one_id(dev->intf, &xu_only[i]))
+ break;
+ }
+ if (i != ARRAY_SIZE(xu_only))
+ continue;
+ }
+
if (UVC_ENTITY_TYPE(entity) == UVC_VC_EXTENSION_UNIT) {
bmControls = entity->extension.bmControls;
bControlSize = entity->extension.bControlSize;
The Oculus Rift Sensors (DK2 and CV1) allow to configure their sensor chips directly via I2C commands using extension unit controls. The processing and camera unit controls do not function at all. Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com> --- drivers/media/usb/uvc/uvc_ctrl.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)