Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp577523pxb; Tue, 15 Feb 2022 22:39:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJyO3wRmj6WILfHoxMxEaztu26W+UeOZwKiq0ffa5tFpQ+zgoW5yTZ2q7vW1d9TacYYaPYH8 X-Received: by 2002:a17:902:bd86:b0:14d:8437:5113 with SMTP id q6-20020a170902bd8600b0014d84375113mr1117139pls.43.1644993597289; Tue, 15 Feb 2022 22:39:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644993597; cv=none; d=google.com; s=arc-20160816; b=tW/h/Jht+s6JzWwkAgd7q8OkWi87YNvdEpfVC08P6/k2tOKKfHIf3sgXWfmI5nBuAY RVHr7jxlGiOp6u2W5EYtF4dx4d16VYsR5rmJNPzsB2bez2zpgzuOzdN4zVmMnVkSSjtr LX4tBL+GaKSuWoy1lNUOIOicILt/FI+loPRcJfnFQYimcbmnwm+5D9nPhPZ43YP6UKRA oB2VKaWFMirxBMxlHMIwNzjk4jrn522aO1aXDOr3gRmVfQRsV1d3HMGg1GdLMryF9FJT 8hBYybpV9VIch7DK3Dokrq5c4UafMBJfwkEZHanK4Jav1UAdmxUileMLGaQ77rjsmyeF EMjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=17RfdOkFpQ0vqX6j3AbugB+kAjRG2bVcKwe0qdXZHnE=; b=fuLJze/qVbYq//m9gCQ3RxVqWWdzV/3Fz9WHkoiHYi+KAn/6pyx7ZtbVxrkUuY87+v 39H+QVw25Vu491G3IlfpapQMFIIZR+geQm4ZfCmJqbPJ0sC1/OXDNP5E6IPphILmboDo Wa13OMMK91ZNeJw3WmLzEbkxvVb20F9BGOPhRiOBa+uhOJZzLjhk9wV+9l9whM1/cMrs EYJ9hHBnNbIhJ4664snRIXcT9UrWLgH0ONCx5Q59+IxK+jmxd43u+JJuAOon0QgMbRex Qr7QAvEsS3YSouDwn5xam5r1jJPEovXve0sSNr/WIx8+aOkNCPrvwmnunGReJBEdUgcG pKaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=R0NFIY6P; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id f14si5721453plg.232.2022.02.15.22.39.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 22:39:57 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=R0NFIY6P; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 818631DE927; Tue, 15 Feb 2022 22:30:23 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241562AbiBOSmo (ORCPT + 99 others); Tue, 15 Feb 2022 13:42:44 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:44264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241557AbiBOSmn (ORCPT ); Tue, 15 Feb 2022 13:42:43 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B72B27FE5 for ; Tue, 15 Feb 2022 10:42:32 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id u1so19899565wrg.11 for ; Tue, 15 Feb 2022 10:42:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=17RfdOkFpQ0vqX6j3AbugB+kAjRG2bVcKwe0qdXZHnE=; b=R0NFIY6PLX5Bq2GY7wQqcv1fzjR+HqhwNljCYJLfBmHLsZkNkH5UgW4x9kBi5gvXUt Ss54ZIWiLGHlt9/QOiMPO7CGbXpioYIHjH9eSBDHqfbQhlFrWYzcqlbalgvqRQtDEPen UqB+yc+2Kr94kHm3BsC8qfB8cjPpwgXUmshMQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=17RfdOkFpQ0vqX6j3AbugB+kAjRG2bVcKwe0qdXZHnE=; b=CIeOKTVvit/nMjmOwZpvQ45mfFZCea3m8Ff0RVhTVlV9C6uZANBC2HqJxVqpyIKdGh w3NCkO+o2B69R5XFtlPBlX+fSZie/oUdETAaWUGoyGXEaoNYoZAduFwTG2wq4lWnI2Kt IYwLlPDaj74ClThJ83xQR4Gflvy/uQldncXu4xf6Ns0G8/iKAdQ0wpXuzNS6SHKiHBs8 9+gVSUzs74wlDPi7Mtg1BRYqZby2ZQlHdfP3VIS7Fp+aH1sZ4meIGkHBDilRJamrzOTr jlAxacyJGZrl6BtSra7Bxz3y6l79iLStZU8Avks8UycLLMs+hSvjXKKwe6JtXpEkXApx Wm0g== X-Gm-Message-State: AOAM532cZznRqwCJFV7nPVgpFJFocgMfCiC3GRwsY8wwknwNUXLLZSLF 4pPHMjVDDOir6cQy5jnNZCwQxA== X-Received: by 2002:adf:ffce:: with SMTP id x14mr253920wrs.552.1644950551214; Tue, 15 Feb 2022 10:42:31 -0800 (PST) Received: from beni.c.googlers.com.com (216.131.76.34.bc.googleusercontent.com. [34.76.131.216]) by smtp.gmail.com with ESMTPSA id a1sm14094017wri.36.2022.02.15.10.42.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 10:42:30 -0800 (PST) From: Ricardo Ribalda To: Laurent Pinchart , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Verkuil Cc: Ricardo Ribalda Subject: [PATCH v2] media: uvcvideo: Fix handling on Bitmask controls Date: Tue, 15 Feb 2022 18:42:28 +0000 Message-Id: <20220215184228.2531386-1-ribalda@chromium.org> X-Mailer: git-send-email 2.35.1.265.g69c8d7142f-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Minimum and step values for V4L2_CTRL_TYPE_BITMASK controls should be 0. There is no need to query the camera firmware about this and maybe get invalid results. Also value should be clamped to the min/max value advertised by the hardware. Fixes v4l2-compliane: Control ioctls (Input 0): fail: v4l2-test-controls.cpp(97): minimum must be 0 for a bitmask control test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: FAIL Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_ctrl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index b4f6edf968bc0..d8b9ab5b7fb85 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1156,7 +1156,8 @@ static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, break; } - if (ctrl->info.flags & UVC_CTRL_FLAG_GET_MIN) + if (ctrl->info.flags & UVC_CTRL_FLAG_GET_MIN && + mapping->v4l2_type != V4L2_CTRL_TYPE_BITMASK) v4l2_ctrl->minimum = mapping->get(mapping, UVC_GET_MIN, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MIN)); @@ -1164,7 +1165,8 @@ static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, v4l2_ctrl->maximum = mapping->get(mapping, UVC_GET_MAX, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MAX)); - if (ctrl->info.flags & UVC_CTRL_FLAG_GET_RES) + if (ctrl->info.flags & UVC_CTRL_FLAG_GET_RES && + mapping->v4l2_type != V4L2_CTRL_TYPE_BITMASK) v4l2_ctrl->step = mapping->get(mapping, UVC_GET_RES, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES)); @@ -1721,6 +1723,7 @@ int uvc_ctrl_set(struct uvc_fh *handle, /* Clamp out of range values. */ switch (mapping->v4l2_type) { case V4L2_CTRL_TYPE_INTEGER: + case V4L2_CTRL_TYPE_BITMASK: if (!ctrl->cached) { ret = uvc_ctrl_populate_cache(chain, ctrl); if (ret < 0) -- 2.35.1.265.g69c8d7142f-goog