From patchwork Fri Jul 14 20:14:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philipp Zabel X-Patchwork-Id: 9841627 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 38E0F602BD for ; Fri, 14 Jul 2017 20:14:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2A59F287C2 for ; Fri, 14 Jul 2017 20:14:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1F71E287C7; Fri, 14 Jul 2017 20:14:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BA9B4287C2 for ; Fri, 14 Jul 2017 20:14:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751121AbdGNUOm (ORCPT ); Fri, 14 Jul 2017 16:14:42 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36753 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751115AbdGNUOj (ORCPT ); Fri, 14 Jul 2017 16:14:39 -0400 Received: by mail-wm0-f67.google.com with SMTP id 15so739026wmm.3 for ; Fri, 14 Jul 2017 13:14:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4AC4pujbh2SQe2us+x0iqBYvy2faEEpcxXwZ+c7vzgc=; b=Lrw+5MPsPgXGpzhzVKi8nTpU0tdKrmT4eLBZS7KDsQt8aZYW7+htbURhUvvK8Jk750 vgFa12FrIXf0cG59jzXowVM6whyZaGol87OOT2LRBbFhMzalMr67+9/9403t4Y2//eiy C2KLLJDHlucoytA4+dm6Q0isJ6kNlTN3eh26tzfTLnaZvicj0pqavPCPbZg3enCJNNQ6 XmHusJkJJxORGoJMQLtdKInUN1JZJUm9tLuW5T6i7gsqPPDycPgoyEqi+IosMfPFeB1H 1A2LduFuzM8hGbjN7T2gVFDDF0toHuPI2fRG+pFXw6HO1UIo7intuvjFY/EjgpNSWOID 7ScQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4AC4pujbh2SQe2us+x0iqBYvy2faEEpcxXwZ+c7vzgc=; b=Xc048ig48ZO7yO2tTcvzLamAEIwGzzaD+G6w6MhDC8XWafsngK4S6os/9x61af8+k7 MEWtRB80ds0baxTabZoWhc1zieZK6QWYmBFBj1aRlH0l3rNUNFYXFlDxdsY7yJlR2ZQ1 KjV1Bu7bKy/RBUkQXk1upEJmYZQfofSdHDonKdjiZ8e5QTol/+heSFm629qpR/Qlkqb+ iL/2lJFtCLxReJA7bUQ+T3owqdnp3r8oZHriype1Ngyo0Pq5508QttDjKc8Ei61mzi3v +CEIz2s98bQebgRkxnZUVNNs1oKS9BudqDV2Ca0icjYMLzCAjUPvly8SUbEc0x9u0djK JJWA== X-Gm-Message-State: AIVw112Wg8sioZK6f6udA5g4TwJiLNVWSGYWFWEJSFYRXS96LFqhJNzg kIxOdCSnAdcBdI8z X-Received: by 10.80.142.213 with SMTP id x21mr8108587edx.3.1500063278229; Fri, 14 Jul 2017 13:14:38 -0700 (PDT) Received: from ped.lan ([31.18.254.68]) by smtp.googlemail.com with ESMTPSA id b4sm5308912eda.34.2017.07.14.13.14.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Jul 2017 13:14:37 -0700 (PDT) From: Philipp Zabel To: linux-media@vger.kernel.org Cc: Laurent Pinchart , Philipp Zabel Subject: [PATCH 3/3] [media] uvcvideo: skip non-extension unit controls on Oculus Rift Sensors Date: Fri, 14 Jul 2017 22:14:24 +0200 Message-Id: <20170714201424.23592-3-philipp.zabel@gmail.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170714201424.23592-1-philipp.zabel@gmail.com> References: <20170714201424.23592-1-philipp.zabel@gmail.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- drivers/media/usb/uvc/uvc_ctrl.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 86cb16a2e7f4..573e1f8735bf 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -2165,6 +2165,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) { @@ -2172,6 +2176,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;