Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp521192iog; Fri, 17 Jun 2022 08:02:55 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sOY3W0bAjaZLazfOajuy7kIQp+ycOvdXqlEdqezCGztGKAcxHMW+z3OmYuWZ7jEibs0tmE X-Received: by 2002:a17:906:84b:b0:70c:d506:7817 with SMTP id f11-20020a170906084b00b0070cd5067817mr9855398ejd.206.1655478169757; Fri, 17 Jun 2022 08:02:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655478169; cv=none; d=google.com; s=arc-20160816; b=TEe1vsYvFIN6P2sN0XLEpdhGYzt5LY7Wz6toDkizZ5NEGjJ4OWwcQGZFrR/2M3ULCz GaBBS3aLvWJ0pdJM//678zZnEbKY7xIMXWYetwZR9ElPtSMQrOEBoEeQsGwDpi6JFS68 b28MqcELr0zZj8d4Z8i7vOqq2QgmTzoi4lEBH+0mS9A8P2CiSiR2BS/ysdPKwGQbRAaa GOIJ64HGIxIv+FY6mafRMeB7ZVVCmn8SlP0ZZElij6l0CBuYNfFxM1g60CQZP0sH4K4H /M4SsOAyawQFQSATabfMjjdwKTPPt6tRFu0cJ/QKodComfSQCLDd2HQgWsY6fVxlhjEF bD0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=gAw87+Wn0mxXEXqy9bB5mi0KcJQMAx8kLi1VBh7kjKg=; b=ZiAnZbMjEDrBzSOtatwlVnbYzL6bw/hd0UQFcDBsA/K94FFYd/8tF4jFdBWrn0DIGd L5OwmyeAceIIDtyrKJ02dWcleHqJIRYoj67rMW7XTjIeQxWba+vkeL10fwHqaH9RvyWs 7CivTNYGztoxGfi+Ox8WbZH/KnggaFCIayDvycYmPrvM0rjLw+av+CODwIuiJXfQPfQ1 cXug4gUe4diWi9ZSqzbUj7lSBFq+r+LE7QdQNP9w8LaT2qy7hlsT9tBK4BV1v6u+Xeat XIjT2Ur+yAQVrSOtXXYWXGoYN6Rrv/ChqOqhAu6R97Hz7E4WZqVm0eJp+uWQE8F1A6Q8 4RuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="HjQm/JQi"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hv21-20020a17090760d500b006fef5188c39si5660586ejc.307.2022.06.17.08.02.23; Fri, 17 Jun 2022 08:02:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="HjQm/JQi"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382629AbiFQOL1 (ORCPT + 99 others); Fri, 17 Jun 2022 10:11:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382409AbiFQOL0 (ORCPT ); Fri, 17 Jun 2022 10:11:26 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA244515B9; Fri, 17 Jun 2022 07:11:24 -0700 (PDT) Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 16B382A5; Fri, 17 Jun 2022 16:11:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1655475083; bh=06wNaaZFsl53SirpLxXbzEpQ5W4HepTdkRb9rqN3W9Y=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HjQm/JQiubexDhimHNySRY/yoHVQ1NsBsMom/eOdWU1ixYx3D2FjUbQD/yZRA0Cmo su6KD/RFiUTViMGCU3mJwfPctyi6+teC9zmzT7kgosVF8eq6JN9YlIyL0fLpWwZMHY EG1bSXHw/MAt5rCa82G7unWSCGJKcsQazUZO0ukM= Date: Fri, 17 Jun 2022 17:11:11 +0300 From: Laurent Pinchart To: Ricardo Ribalda Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, tfiga@chromium.org, senozhatsky@chromium.org, yunkec@google.com Subject: Re: [PATCH v7 3/8] media: uvcvideo: Support minimum for V4L2_CTRL_TYPE_MENU Message-ID: References: <20220617103645.71560-1-ribalda@chromium.org> <20220617103645.71560-4-ribalda@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham 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 Hi Ricardo, On Fri, Jun 17, 2022 at 03:55:52PM +0200, Ricardo Ribalda wrote: > On Fri, 17 Jun 2022 at 15:50, Laurent Pinchart wrote: > > On Fri, Jun 17, 2022 at 12:36:40PM +0200, Ricardo Ribalda wrote: > > > Currently all mappings of type V4L2_CTRL_TYPE_MENU, have a minimum of 0, > > > but there are some controls (limited powerline), that start with a value > > > different than 0. > > > > > > Signed-off-by: Ricardo Ribalda > > > --- > > > drivers/media/usb/uvc/uvc_ctrl.c | 5 +++-- > > > drivers/media/usb/uvc/uvcvideo.h | 1 + > > > 2 files changed, 4 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c > > > index 092decfdaa62..3b20b23abd1e 100644 > > > --- a/drivers/media/usb/uvc/uvc_ctrl.c > > > +++ b/drivers/media/usb/uvc/uvc_ctrl.c > > > @@ -1144,7 +1144,7 @@ static int __uvc_query_v4l2_ctrl(struct uvc_video_chain *chain, > > > > > > switch (mapping->v4l2_type) { > > > case V4L2_CTRL_TYPE_MENU: > > > - v4l2_ctrl->minimum = 0; > > > + v4l2_ctrl->minimum = mapping->menu_min; > > > v4l2_ctrl->maximum = mapping->menu_count - 1; > > > v4l2_ctrl->step = 1; > > > > > > @@ -1264,7 +1264,8 @@ int uvc_query_v4l2_menu(struct uvc_video_chain *chain, > > > goto done; > > > } > > > > > > - if (query_menu->index >= mapping->menu_count) { > > > + if (query_menu->index < mapping->menu_min || > > > + query_menu->index >= mapping->menu_count) { > > > ret = -EINVAL; > > > goto done; > > > } > > > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h > > > index fff5c5c99a3d..6ceb7f7b964d 100644 > > > --- a/drivers/media/usb/uvc/uvcvideo.h > > > +++ b/drivers/media/usb/uvc/uvcvideo.h > > > @@ -254,6 +254,7 @@ struct uvc_control_mapping { > > > u32 data_type; > > > > > > const struct uvc_menu_info *menu_info; > > > + u32 menu_min; > > > u32 menu_count; > > > > That's a bit of a stop-gap measure, could we turn it into a bitmask > > instead ? > > Unfortunately that is uAPI :( > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/v4l2-controls.h#n101 > > We have to keep the control type and its values. Sure, I didn't mean changing that, but replacing menu_min and menu_count in uvc_control_mapping with a menu_mask that stores a bitmask of all supported values. This will allow skipping the first value in the power line frequency control case, but will also support skipping other menu entries for other controls in the future. > > > > > > u32 master_id; -- Regards, Laurent Pinchart