From patchwork Sun Feb 23 18:58:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867822 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DA8218FC9F for ; Sun, 23 Feb 2025 18:59:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337166; cv=none; b=YVsftuJfgcn96yQTMNAO3zyZN4+CPQFFf8j07q9V5yaYfHVPxve5IOXy7nRcHDcbyuuRN4zy0791c9riuOGJFfzYrDnLQmxPwtU90ly71+X304bAh8E9aLbl5qYnRI4dFViY8w7nx4ymDXtngVxG4GG10ZCeMQ3DgY7e5In6RNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337166; c=relaxed/simple; bh=o5WkpnQ73V+VMo8bdoFaUftuXdW+rujG4ME3lX7eEqw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=czqlV7DBnE4eRiyNl2Z4ek+cEt4le3wwhmNb+jrCBAZFpBaTMWtHIKkpr/RRJbGMaDZ6OPx6uUvkNDEYmfNHYNvxcZ5m2sG3wZEIXDHmt2Chc9wTdyXylDxm4CUNV7MzqMSp3K0dSpYNKHEpVdrcQc4Yo5tjBG/wPYK/NZzrlpc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=ZVJUnLiY; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ZVJUnLiY" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-7c0c5682c41so248274785a.2 for ; Sun, 23 Feb 2025 10:59:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337163; x=1740941963; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bgEaj88gwe50jW8BgyaHtEFtSSSTKBTD6iombmDXrgk=; b=ZVJUnLiY1GSIP75VooeahuZnuYwRhsVZWXF1VAxDhKZaRwq4FlkUjpy7Uecd6UDGme rGNBLSM65Rtzzqi6a6BqTJToyJ9QJXTJlg/wvgCos6T/dEmEwQ/6SFMFYuxQIUSmqe9q E9yACB8p2ZyVeOIGAnOv54niodLHiOldbp9to= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337163; x=1740941963; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bgEaj88gwe50jW8BgyaHtEFtSSSTKBTD6iombmDXrgk=; b=rUwSXgQedoEGj0xqWUJC3aJ7rDOze4RcbDsRqMA2OR0Kpx9WgQ4n00BSbXwZiqHYwB 7xWTkGByCUXXSvhMEpetmRFPi5ZcnU2URle0kCWUNDc8TDVTuBbyXPCOvOrhRAq5/rYy VTjVTiCJY+7jd2NoEsdRH8PtFs3VW2Ad2S7+3Qcv0MqEa7OEpkwb8TQQKs4wKmT+RNAF xufenEQuFbmh6kWysppYXmJ4aNY2FzBjxfW929Pem+S9DNoZOskoXM799lHNLCxAMJ9F oC7vrxHEeWjxzuhVhCOk0pXEyIAXlulN3Du+8EHadK2NyPqfCkmg1hhq6qamPCZgGC8G 5aRg== X-Gm-Message-State: AOJu0Yy9nCSl0bP/duRZ56qH5bKlUBsJZRIaSNiuZZIYyv3kLFb/FiBP 7UMwB2Z44s/s2m58euFitUTUuyMMKkd+HVgbezo3rgC/1oc+RONhq4yx7bmRag== X-Gm-Gg: ASbGncsuWfHQ1b/suZLtiVMb6zIvRWX95d2QJXK4cg1H5o490OocqXiKrbmCwf/6G44 hnmCknSic/3b3a5jDiTEAXkdIDqb8OnZSiBqyRsXL93Dvsy9lvV8uOnkmagMO8w42fbGLaI+dts HAl3802EUnEqv0e6hpzi0tQTFWotSU+tA55vkeeLgKri/6jNxcXgrZRMjzh9XdeMjHk2sZsgnzo 3BjYVH2P4ilABY8kaIqQtxdFc7z9c5MS/VvhTfD4vTTSIRn93KNCYywlv7nlIzP8YMF1oJpHFRZ PbsVlf6jdg3pnUJsCvhD7N465+uN9dkqyIEKwl5cfP/hz4EUlsc7+6yVWzyq9PrVn/quHoeyssr Ncxg= X-Google-Smtp-Source: AGHT+IHGjRoitg4iizBR56/YqzL9lfxWldkcIk6dKi7DdbK876lHC2pCcmEyx2EPjcz9GSOVicGTRQ== X-Received: by 2002:a05:620a:1910:b0:7c0:b4f4:1633 with SMTP id af79cd13be357-7c0cf8c6679mr1064156285a.15.1740337163452; Sun, 23 Feb 2025 10:59:23 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:22 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:04 +0000 Subject: [PATCH v3 01/12] media: ioctl: Simulate v4l2_queryctrl with v4l2_query_ext_ctrl Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-1-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 v4l2_queryctrl is a subset of v4l2_query_ext_ctrl. If the driver does not implement v4l2_queryctrl we can implement it with v4l2_query_ext_ctrl. Suggested-by: Hans de Goede Signed-off-by: Ricardo Ribalda --- drivers/media/v4l2-core/v4l2-dev.c | 3 ++- drivers/media/v4l2-core/v4l2-ioctl.c | 37 +++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index 5bcaeeba4d09..252308a67fa8 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -572,7 +572,8 @@ static void determine_valid_ioctls(struct video_device *vdev) and that can't be tested here. If the bit for these control ioctls is set, then the ioctl is valid. But if it is 0, then it can still be valid if the filehandle passed the control handler. */ - if (vdev->ctrl_handler || ops->vidioc_queryctrl) + if (vdev->ctrl_handler || ops->vidioc_queryctrl || + ops->vidioc_query_ext_ctrl) __set_bit(_IOC_NR(VIDIOC_QUERYCTRL), valid_ioctls); if (vdev->ctrl_handler || ops->vidioc_query_ext_ctrl) __set_bit(_IOC_NR(VIDIOC_QUERY_EXT_CTRL), valid_ioctls); diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 0304daa8471d..deed2b44ee18 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -2284,9 +2284,11 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops, struct file *file, void *fh, void *arg) { struct video_device *vfd = video_devdata(file); + struct v4l2_query_ext_ctrl qec = {}; struct v4l2_queryctrl *p = arg; struct v4l2_fh *vfh = test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL; + int ret; if (vfh && vfh->ctrl_handler) return v4l2_queryctrl(vfh->ctrl_handler, p); @@ -2294,7 +2296,40 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops, return v4l2_queryctrl(vfd->ctrl_handler, p); if (ops->vidioc_queryctrl) return ops->vidioc_queryctrl(file, fh, p); - return -ENOTTY; + if (!ops->vidioc_query_ext_ctrl) + return -ENOTTY; + + /* Simulate query_ext_ctr using query_ctrl. */ + qec.id = p->id; + ret = ops->vidioc_query_ext_ctrl(file, fh, &qec); + if (ret) + return ret; + + p->id = qec.id; + p->type = qec.type; + p->flags = qec.flags; + strscpy(p->name, qec.name, sizeof(p->name)); + switch (p->type) { + case V4L2_CTRL_TYPE_INTEGER: + case V4L2_CTRL_TYPE_BOOLEAN: + case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER_MENU: + case V4L2_CTRL_TYPE_STRING: + case V4L2_CTRL_TYPE_BITMASK: + p->minimum = qec.minimum; + p->maximum = qec.maximum; + p->step = qec.step; + p->default_value = qec.default_value; + break; + default: + p->minimum = 0; + p->maximum = 0; + p->step = 0; + p->default_value = 0; + break; + } + + return 0; } static int v4l_query_ext_ctrl(const struct v4l2_ioctl_ops *ops, From patchwork Sun Feb 23 18:58:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867821 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D972220C005 for ; Sun, 23 Feb 2025 18:59:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337169; cv=none; b=Xv/Grn6HawSOkmvAq7MN8LSNg6UtfvpVGQjTQQ9LZevl8Kie8thep4uv3iP74mkd3Yjzye5U2iWYWP2SQayKaciPO2rz+fFVFRbeXxPsH16MO1nGym6u4Fpb+ytlmUkD4+ACEdgNvEMFz6D19Etf4clnvcHlyb66lTDWyGcmY4A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337169; c=relaxed/simple; bh=myXjIaGjfoOSk4gWvfNUCnPKOkUfNfQoYFyPFWxU7TM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vd1CipRaah7Kqo3K6hgIBz5w0y/L9xd4H6jHfm3uzytg1gjmvUaVvTb5RESx7YV9Q4ZRf2dvdC6WPW2DikcIQ3Ai+OjtCSjuxMXRNGc7z7+AayLgyNEsuZmtUAk0hdzlgSaFBt3bsFRNJMd1Pa63VDaUMaiyFEOxkTWOagWB5G0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Y7LuKBfw; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Y7LuKBfw" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-7c2303a56d6so22253285a.3 for ; Sun, 23 Feb 2025 10:59:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337167; x=1740941967; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cnN0g4zN2JxT7rEykWa86K6e7OYYbd0erUw+cYCyMXw=; b=Y7LuKBfwBVse43QirI5wG+6px8nUAsOJqsT8yGvRBpoHvnxwzqtEutU61I8ka55yEB iyj+6olqdnwl3hUti4Zrc+pHYs8gQEljgeXIGMdl5zs0q3FCwXwjRld7mxaZMT3ElAhX 6dPV9CInYQvi4zuyiPvm5/xjaqy/UlrZ58fAc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337167; x=1740941967; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cnN0g4zN2JxT7rEykWa86K6e7OYYbd0erUw+cYCyMXw=; b=ksVtM82OsWycCez21xiDdkro5r4hmFc334xLyIzyBrLAwOug9RgYTXUU7pMTc8FaIf 0L2KTXOjLWE1S2a2ej6ehekgWYoe4kSDm/hw3yqRMtpKK62+teE9vZHGKUU65n7pOzXG kgjW6kZev8a81Z8f3OPCz04bRSzYg1kj3q/qbb56lFSLH1GqUhlc4C8oPVWSYVQmOtP1 EgwW41YGOFcQzoQLltjSuOIFw6pWXjFU7o/IUcADO6hQLRNHacMcBIzUVqCd+vQZFjCv PZFu4+zldMdzxHtsPjuSRyCG5mWnXhp/eI1vOW8rpk6R4/MHTTyt9L+LfON1HCVfFe1t 6wfQ== X-Gm-Message-State: AOJu0YyxNi15LZ0ewvK4+CHmkpmerICcLiGy3RJn+VSXkm1LBSAuBI0h xIvOazWcXXAOK/v0QWYybVQM15eDLNaPUN0tyTWZzlDZbJDUeFi/KpUpo7jW0A== X-Gm-Gg: ASbGncvjek2rxgku0tE3TqvFfUiJCXZdvVK+AwzxD0zVjokmAouPp+AeiM3LI0zMdw5 OXkZLXkcRJHSx2YCMWNQd91R/ims9kF12E5kdGuRioDXC3MFcLx99Jy+aSL3MbF5CpRCYyY/N8i ZaRnGlbDsOw8pCVnT/ixXgVXyw41RFkz38arunb5KAWoomOg9KOtMRj18Cw6MslNdOhLfpVTPI6 GP+Ya+OclTCJnT6cjzCGxgfEcHepN/NtMY3l3VcrRj+EXxpV7pvO5s3f+B2JLY/Mzqraoi7B99A KuWm9amGPxKVhaQSaaaaqDhzQMBJe4jwNMqngwQtZ7UpFauJIt0NdtdPEU/Skrdg64zaXkNiXPM ZrYw= X-Google-Smtp-Source: AGHT+IG6XQAhoRI9GvPepX/CjaG7nv07d/LfoiHN+LEQpa+mFjWVBGB/SkS22EGTKBolEf1SeYC0Ng== X-Received: by 2002:a05:620a:1a1c:b0:7c0:c214:f2d with SMTP id af79cd13be357-7c0cf8ea897mr1355134285a.31.1740337166661; Sun, 23 Feb 2025 10:59:26 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:25 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:06 +0000 Subject: [PATCH v3 03/12] media: pvrusb2: Remove g/s_ctrl callbacks Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-3-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 The ioctl helpers can emulate g/s_ctrl with g/s_ext_ctrl. Simplify the code. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c index 7c8be6a0cf7c..ad38e1240541 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c @@ -574,31 +574,6 @@ static int pvr2_querymenu(struct file *file, void *priv, struct v4l2_querymenu * return ret; } -static int pvr2_g_ctrl(struct file *file, void *priv, struct v4l2_control *vc) -{ - struct pvr2_v4l2_fh *fh = file->private_data; - struct pvr2_hdw *hdw = fh->channel.mc_head->hdw; - int val = 0; - int ret; - - ret = pvr2_ctrl_get_value(pvr2_hdw_get_ctrl_v4l(hdw, vc->id), - &val); - vc->value = val; - return ret; -} - -static int pvr2_s_ctrl(struct file *file, void *priv, struct v4l2_control *vc) -{ - struct pvr2_v4l2_fh *fh = file->private_data; - struct pvr2_hdw *hdw = fh->channel.mc_head->hdw; - int ret; - - ret = pvr2_ctrl_set_value(pvr2_hdw_get_ctrl_v4l(hdw, vc->id), - vc->value); - pvr2_hdw_commit_ctl(hdw); - return ret; -} - static int pvr2_g_ext_ctrls(struct file *file, void *priv, struct v4l2_ext_controls *ctls) { @@ -817,8 +792,6 @@ static const struct v4l2_ioctl_ops pvr2_ioctl_ops = { .vidioc_streamoff = pvr2_streamoff, .vidioc_query_ext_ctrl = pvr2_query_ext_ctrl, .vidioc_querymenu = pvr2_querymenu, - .vidioc_g_ctrl = pvr2_g_ctrl, - .vidioc_s_ctrl = pvr2_s_ctrl, .vidioc_g_ext_ctrls = pvr2_g_ext_ctrls, .vidioc_s_ext_ctrls = pvr2_s_ext_ctrls, .vidioc_try_ext_ctrls = pvr2_try_ext_ctrls, From patchwork Sun Feb 23 18:58:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867820 Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C55520D4EE for ; Sun, 23 Feb 2025 18:59:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337174; cv=none; b=nlL0tomNm5Z2mUljQL1Y5wPS6jIk4yIA/hJsXLNdIZoA3R037Hwtuy9L9o7yuGq1lOQMyx+KOfesqXw4cyloU0xMVUOjvjmBpWvLONsqhYXtqE7/9RL9TcGt58yH/aiP3OoacexmChleuKcW7l+Y5jDKsb73oeQb/8F3KSn6+Sc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337174; c=relaxed/simple; bh=+FQk73Re7Vj5uP8e4zt7dSl+Ft1aZSIU+rolZ0DzE5I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GWpsABtCpLB/N56Uzz2OaW1rvXjt4G/3M7tU7mHcMPuH8Al1140jtZkE4GLGeM1n2vq6SrnMzRbEXn+NULZjqc/K7ATyEEftqwqUWCYU6wccaoms5GlxAzv4ksn4x/2GpyngO3EbgfOVZBK+ogKmq78aKvBC/f+CXxc0hVaGFX8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=bkMaNGH+; arc=none smtp.client-ip=209.85.222.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="bkMaNGH+" Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-7c08b14baa9so352218485a.3 for ; Sun, 23 Feb 2025 10:59:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337171; x=1740941971; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=8IZ/POm13BMEX8p04+c3Nhi5+imiB9PsNNFLrPKcpkU=; b=bkMaNGH+TWmaiA27q/9/D2BTliMN6XtOlLEzbZXC9WEqOgg18K4dJFtDQCTnbLe4vV nDYI0VzYpEpk/3QSiyFRUfM2nsjqmYnkLFp0nZIvf/pWsPjrfY35XdCOocqfwfc5g4Kc hJe9HJvYWoVL9ac48R4hQaqDtn/glaouj/akY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337171; x=1740941971; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8IZ/POm13BMEX8p04+c3Nhi5+imiB9PsNNFLrPKcpkU=; b=p88+ecoh2jYR+i5/RRMS2UcdBD4nlPJjcYRcDRho1bN33gndDpL7vFJmPP3Fkur/NZ 4j8LAoXKgysZ6Ern0oAjfriD7F1l7/B3wd3X570ciJGE6bacpgNIAt2o1JZrX6V/R1Q6 9Jbga3MSAuR9WTppaPPVwttTybnHhDxYmbInHtpewk2KhBcjUyyIsUtpc2SrQ6uV/6hm FzzzSwoM+qlRaZrnn45yKnlal/aJ2rIRe8yvBO7Mxbno49bIBkDNd/QzrlbebRGo3o0o lT2T2czm8XqOvzqrHxDBzxJXs5PuOR/yhBnJDwJ0voi/DJuBZ7NRnbhMPFYu5XixrVNE q7PA== X-Gm-Message-State: AOJu0YwXLR7loQjWN2Y+/ywG8zqNhIiDA0TAv03ySCgKbwAM3ZWrnj8o 4dFvEmVvj0TNmXykyefzb8F96Ybm7aqDgrYvyejObQ3C++BJXBDITX9248iPfw== X-Gm-Gg: ASbGncsZMdimuka4u2qwi46aT+BF3tKiIcinWVtWL88VH2r5zF0eRzLs6tOBQEneY7n 2I2YB19agelIWZCHAOS3OOEr58rlgnxptCWRTF84PTuDFBPLQgJ/DCGJH/5ISMzmhR1+0nuo3gc XpPqFuj98GgDJOVkV+nJHa6GX2CToyz6b5LuFnwhz0jUVj+tDyPnwEl4oMc34fA9uOoT585T9ou QXmztn8ucTwQz1D6XmsIppFM0drMWPgjWWwZFKeXC5taO9MqMsivEa3jw8VVpaiR2lJ4pB7YIcp hXV1o2RMjoTUUcGKFi7lSa9Sdv0ozIaUltWqzx0Xvq9xybPjB68HvIskKB/nOKlsUvaS8b3lOH3 Uatc= X-Google-Smtp-Source: AGHT+IFfEI9iYEbJVGs23xVGmjulSbd3/xfIZiF/IMBZDKee+F4TF5guUHDs7mH9mdkDy3gDc+h3Sw== X-Received: by 2002:a05:620a:4688:b0:7c0:c15c:1177 with SMTP id af79cd13be357-7c0cef10115mr1616776085a.30.1740337171454; Sun, 23 Feb 2025 10:59:31 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:30 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:08 +0000 Subject: [PATCH v3 05/12] media: atomisp: Replace queryctrl with query_ext_ctrl Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-5-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 The ioctl framework provides an emulator of queryctrl using query_ext_ctrl. Replace our implementation of queryctrl to support both. Now that we are at it: - Add comment about missing functionality. - Remove superfluous clear of reserved[0]. - Remove ret var. Signed-off-by: Ricardo Ribalda --- drivers/staging/media/atomisp/pci/atomisp_ioctl.c | 33 ++++++++++++----------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c index 1a960a01854f..6b84bd8e6cf3 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c +++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c @@ -34,7 +34,7 @@ static const char *CARD = "ATOM ISP"; /* max size 31 */ * FIXME: ISP should not know beforehand all CIDs supported by sensor. * Instead, it needs to propagate to sensor unknown CIDs. */ -static struct v4l2_queryctrl ci_v4l2_controls[] = { +static struct v4l2_query_ext_ctrl ci_v4l2_controls[] = { { .id = V4L2_CID_AUTO_WHITE_BALANCE, .type = V4L2_CTRL_TYPE_BOOLEAN, @@ -1140,31 +1140,34 @@ static int atomisp_s_ctrl(struct file *file, void *fh, /* * To query the attributes of a control. - * applications set the id field of a struct v4l2_queryctrl and call the + * applications set the id field of a struct v4l2_query_ext_ctrl and call the * this ioctl with a pointer to this structure. The driver fills * the rest of the structure. */ -static int atomisp_queryctl(struct file *file, void *fh, - struct v4l2_queryctrl *qc) +static int atomisp_query_ext_ctrl(struct file *file, void *fh, + struct v4l2_query_ext_ctrl *qc) { - int i, ret = -EINVAL; + int i; + /* TODO: implement V4L2_CTRL_FLAG_NEXT_CTRL */ if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL) - return ret; + return -EINVAL; for (i = 0; i < ctrls_num; i++) { if (ci_v4l2_controls[i].id == qc->id) { - memcpy(qc, &ci_v4l2_controls[i], - sizeof(struct v4l2_queryctrl)); - qc->reserved[0] = 0; - ret = 0; - break; + *qc = ci_v4l2_controls[i]; + qc->elems = 1; + qc->elem_size = 4; + return 0; } } - if (ret != 0) - qc->flags = V4L2_CTRL_FLAG_DISABLED; - return ret; + /* + * This is probably not needed, but this flag has been set for + * many kernel versions. Leave it to avoid breaking any apps. + */ + qc->flags = V4L2_CTRL_FLAG_DISABLED; + return -EINVAL; } static int atomisp_camera_g_ext_ctrls(struct file *file, void *fh, @@ -1561,7 +1564,7 @@ const struct v4l2_ioctl_ops atomisp_ioctl_ops = { .vidioc_enum_input = atomisp_enum_input, .vidioc_g_input = atomisp_g_input, .vidioc_s_input = atomisp_s_input, - .vidioc_queryctrl = atomisp_queryctl, + .vidioc_query_ext_ctrl = atomisp_query_ext_ctrl, .vidioc_s_ctrl = atomisp_s_ctrl, .vidioc_g_ctrl = atomisp_g_ctrl, .vidioc_s_ext_ctrls = atomisp_s_ext_ctrls, From patchwork Sun Feb 23 18:58:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867819 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EB1820E018 for ; Sun, 23 Feb 2025 18:59:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337179; cv=none; b=X9xI/hJvDS/0zdTHSgMUlM8zbOjqUFZSG/sWXdJz7qqyby6CD6LggQ0Mm2+sVza0IGdG7ZyzrgGHYMvuhfFkeN3utXfO8DHXjJG5EfjkS4cfeN9paeFu80MEw96LaXRBlSKB+6JFE4f0Vz1InQSPsLnu3f7mAmfUIzN3jhyz15E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337179; c=relaxed/simple; bh=6eScQ+yILkmrR5/v9Ls6gwtXx6JH8fWeq4Wm72IvMxc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ug0T1lPcOYpGjDu+HjV6f0tA85iKTZPbG2USxgGAsEykUvNUcBj7Y7/zD+lpEAS8SIGNA1WT/cposqFagoMeNAVY/Kym9oAMgsr3G5ihJxqZr71Il+G975CDg59Z1QIjqgcThcvd3duyQMV0rFbVtlicUoQ7uaOlrnB2507geeg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=eS7BxmcT; arc=none smtp.client-ip=209.85.222.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="eS7BxmcT" Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-7c0892e4b19so460535085a.3 for ; Sun, 23 Feb 2025 10:59:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337176; x=1740941976; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XqSkdPwdXz1L9xwrOG1KS2QGCidHxC0xW5jcZHcDLmY=; b=eS7BxmcT7MFxFMy8QvB0dLbA0M9nZZCgk6zYXvcIuqS4SFmqv8J5WdQMnJiX2FuJoQ sP4UewsEdToJcHo0mpLMZ0/VlObfb5sxbvECEoBczm0vM7aWFp7xyJvkkQq2YSHLZnV2 3T+7/spu4St5ZStxQTaD6Gwp9cmVRkFUtP+hU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337176; x=1740941976; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XqSkdPwdXz1L9xwrOG1KS2QGCidHxC0xW5jcZHcDLmY=; b=QZCNpA5qE+nvwkPpOvsIn6nA5zhSkN2n9uGwJ2Dr1YprqSJQnLmVwmYeHLvhkiRX3a uoR/UpXH1W1vqnmvR7cvG3BBApJHImUZvnPxt6+1ophFLd9WjWKCsJq+3pewT8DuOWYq NAlDlPYKlISOc40Wvq3uBVsNTVX6CiX98xwECGUUFBHNsR0wWRvSt1hW9FdIEHf+4jIm smg+dUSLa4BAwjl/Dde9I/sAUx72TWEWMOXT5WsxGlf+J/ukOXyQyp68rO+T+sD4UlIV e9gXeXzGbxdM5xCaLIqbmg3TQf0VPjMVr9YTb9B9DRUYnKNE2gDLiqBWL7hXwwEayzUf yyNQ== X-Gm-Message-State: AOJu0YxbGeoJJFoCLqyWCFFiwV8wpotWb6u4ktuZcQzyABKhx+UnLojU ByHt8FCkbHl3GSfpbb8PFI2U/tJZnFbhkPU+FqtndzdZk14HW9LVtIv9upLTnQ== X-Gm-Gg: ASbGnctedrgtzXckP1mFdGPKUsJGXp1MuBMss/g0HnYNKOfmMmvxLG95AXK1pemQgop OVTx/SGRaJs8NRzO82XAKRkWZeEqsOVfK6DtsXYA74QsGywNxAzwXTEa5qtCYniqtjxGRhwPWVh zDSOwASd0RuzwbP7lwPzptWWwKfJLMbKVCUgM175mh/cgiLa+Gl0h6M27n53NRb4rWbQSXM28es bP4ca916qgbQ+92fBwus3oLZHQLlHDWYEWsxkbG4mQkWc6MWKPElE8sTOhpHblCJibGf3vF/vvn iRG3TwAt+SHO+7LTx0g68Ttnk9/S5Yns/es+hbtwvYS5f1VdHVEhe2VhEnPImpebjLEcCdL2lCe h58Q= X-Google-Smtp-Source: AGHT+IFnnjBZgIrWZHVi+Chtu9HWxFVqKZWb2RhLpbJR73isjU+nhyv6klkh0PJNTJcvUMHxLxjZcQ== X-Received: by 2002:a05:620a:2b97:b0:7c0:874f:c87 with SMTP id af79cd13be357-7c0cef6475dmr1731625685a.35.1740337176294; Sun, 23 Feb 2025 10:59:36 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:34 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:10 +0000 Subject: [PATCH v3 07/12] media: v4l2: Remove vidioc_queryctrl callback Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-7-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 All the drivers either use the control framework or provide a vidioc_query_ext_ctrl. We can remove this callback to reduce the temptation of new drivers to implement it. Signed-off-by: Ricardo Ribalda --- drivers/media/v4l2-core/v4l2-dev.c | 3 +-- drivers/media/v4l2-core/v4l2-ioctl.c | 2 -- include/media/v4l2-ioctl.h | 4 ---- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index 252308a67fa8..5267a0686400 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -572,8 +572,7 @@ static void determine_valid_ioctls(struct video_device *vdev) and that can't be tested here. If the bit for these control ioctls is set, then the ioctl is valid. But if it is 0, then it can still be valid if the filehandle passed the control handler. */ - if (vdev->ctrl_handler || ops->vidioc_queryctrl || - ops->vidioc_query_ext_ctrl) + if (vdev->ctrl_handler || ops->vidioc_query_ext_ctrl) __set_bit(_IOC_NR(VIDIOC_QUERYCTRL), valid_ioctls); if (vdev->ctrl_handler || ops->vidioc_query_ext_ctrl) __set_bit(_IOC_NR(VIDIOC_QUERY_EXT_CTRL), valid_ioctls); diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index deed2b44ee18..48ddeb01e70a 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -2294,8 +2294,6 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops, return v4l2_queryctrl(vfh->ctrl_handler, p); if (vfd->ctrl_handler) return v4l2_queryctrl(vfd->ctrl_handler, p); - if (ops->vidioc_queryctrl) - return ops->vidioc_queryctrl(file, fh, p); if (!ops->vidioc_query_ext_ctrl) return -ENOTTY; diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index bdbb7e542321..013996c33a9e 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h @@ -193,8 +193,6 @@ struct v4l2_fh; * :ref:`VIDIOC_G_OUTPUT ` ioctl * @vidioc_s_output: pointer to the function that implements * :ref:`VIDIOC_S_OUTPUT ` ioctl - * @vidioc_queryctrl: pointer to the function that implements - * :ref:`VIDIOC_QUERYCTRL ` ioctl * @vidioc_query_ext_ctrl: pointer to the function that implements * :ref:`VIDIOC_QUERY_EXT_CTRL ` ioctl * @vidioc_g_ctrl: pointer to the function that implements @@ -461,8 +459,6 @@ struct v4l2_ioctl_ops { int (*vidioc_s_output)(struct file *file, void *fh, unsigned int i); /* Control handling */ - int (*vidioc_queryctrl)(struct file *file, void *fh, - struct v4l2_queryctrl *a); int (*vidioc_query_ext_ctrl)(struct file *file, void *fh, struct v4l2_query_ext_ctrl *a); int (*vidioc_g_ctrl)(struct file *file, void *fh, From patchwork Sun Feb 23 18:58:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867818 Received: from mail-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AB4EA20E310 for ; Sun, 23 Feb 2025 18:59:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337182; cv=none; b=phERSzAn2LP4zMJ/Dtk62yALd+VMVdRYU5ujJ3OsnMmqYDPEbg22NBPZ5a3xzPk6ROW3P8D6EG04PPHkQ4O/bBbnI4IYWqINSfUtagHPeMiFlhIooptzZ3IUdXpX1dirGUcV9f0OX1PVKTXNobrS5YDyNgfVem8bDPkrgE86ou8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337182; c=relaxed/simple; bh=WmADWSvj6uAUkvJFbyL8wOMewg1Hx0JsVjiP96waOB8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T5AUmYqapv61y4CPBhBXTrs75ZSZCr+hyWBgk63sF5mNiqo8M3sPLrwddyDGGuvF2Xd6IjLxLn0iIC7cpBEYHeXIURaRM7jK2o4edozyDKUZQD5qHnz1l9ieHKuqpJfBYdiEjt+MyztlRlr7pUxqZN0Np45r2A59qcEUi5IMViU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=dgLzfCTp; arc=none smtp.client-ip=209.85.219.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="dgLzfCTp" Received: by mail-qv1-f46.google.com with SMTP id 6a1803df08f44-6e86b92d3b0so2678726d6.2 for ; Sun, 23 Feb 2025 10:59:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337179; x=1740941979; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LmMOjl+qwMNw0jD9DMRg4cojYEKleYPWUi1Y0A1e5HY=; b=dgLzfCTp/tGPFgPBuj1CO3pFLDfvWufi/QuUvGB6WXD2w+85I3hrs7zpVnmec87Fys TChxW1X1zO6qF0494NhlKMRG1DxsyHEKfeZAcahIr81p41i9BR+jbwh2kzEUD3A5a97j iGySdlCCdgpjTWTmSWSCiH6XVvz5i4f+5QMr0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337179; x=1740941979; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LmMOjl+qwMNw0jD9DMRg4cojYEKleYPWUi1Y0A1e5HY=; b=kUMZ9zZr87+ETet7nZxINaRv6J5x+Req0X7eya9GYNOhdFmU8dFhDhTV8F8kWiCE7E C5S5+z6vLGoMvHynNkElrie4oFHxvNNYsy/EdcYc8+Htw9JAdQV02GMjxOhGZQ9YgO1k xs6gxNOasefcz7LAJfHUye7mOwMzFh1gYN3JZr51cA2BHsj98CFJ/sVkDuqvgzt2FU9d vULdUMWM2n+IVRKinFIr0jJ620Qxw29JCZIWWRY7OYv2DAm1YUSy8ZY9W5KMVVABhLME 5KaETqsxzX7Ownxj1/xz2f3o1ScvP4Yb9ftp3TAbvzdIlmwU0pqYf0t38ZsZwNT8hyQR HV1g== X-Gm-Message-State: AOJu0YxBD6Mhy5bLKduNmwZFBzv7raVMGBuczZ7kuqNbgkgUW+PNajVi CpPuqo0Sj8Iqs9DYnl4TfI513dZ6uO23Vn751CJqMu3a2nQuvfon0kYumk6FGA== X-Gm-Gg: ASbGnctCVjp8WI1lgXbwJlS3YrNVo6HkCkoCR5WmAi9bQP7QgzJdKXiW49sRIQOv0qF ekV6m+c6tmNSohnZMfie8YmpcfTCws2PB+6GDX5SP2RN9w/suj04XSSSizTMEj7ONgx+Kjeygl1 k5XqbWFxHwtAlS6v8coMWk9Y8C1dVQFg6Q0cbP0NX7kUSpefLV0tx5iGgldPwzC1plltWImIqID hIQenkPg77RTkqQBZBF+xJZW6uroxlFDXl/G+yyqhxREWvitFBfUqN+N9z+Mp9CoFw4VHDQrpRL 1oOzc2lRftr6r7/hM0kSEIzYuNA81mQrz8d9/7ZDx9NrZ2Wfn2XjJcZebjOzfFShCtBG08qCL3x +AqE= X-Google-Smtp-Source: AGHT+IG0N8p+jyjmOv+jFoMONGfZHngVMJ2/L46r6qBftBaVoQxFvMRvuW+hkaPMPsXXZun2oIuYDA== X-Received: by 2002:a05:6214:d4e:b0:6e4:2e00:ddc1 with SMTP id 6a1803df08f44-6e6ae9ffd75mr145374826d6.40.1740337179698; Sun, 23 Feb 2025 10:59:39 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:38 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:12 +0000 Subject: [PATCH v3 09/12] media: cx231xx: Remove vidioc_s_ctrl callback Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-9-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 The driver has been converted to the control framework in the past: commit 88b6ffedd901 ("[media] cx231xx-417: convert to the control framework"). This function is never called, the core will only use the control framework instead. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/cx231xx/cx231xx-417.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/media/usb/cx231xx/cx231xx-417.c b/drivers/media/usb/cx231xx/cx231xx-417.c index a4a9781328c5..5a4b0f96cca2 100644 --- a/drivers/media/usb/cx231xx/cx231xx-417.c +++ b/drivers/media/usb/cx231xx/cx231xx-417.c @@ -1538,20 +1538,6 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id) return 0; } -static int vidioc_s_ctrl(struct file *file, void *priv, - struct v4l2_control *ctl) -{ - struct cx231xx *dev = video_drvdata(file); - struct v4l2_subdev *sd; - - dprintk(3, "enter vidioc_s_ctrl()\n"); - /* Update the A/V core */ - v4l2_device_for_each_subdev(sd, &dev->v4l2_dev) - v4l2_s_ctrl(NULL, sd->ctrl_handler, ctl); - dprintk(3, "exit vidioc_s_ctrl()\n"); - return 0; -} - static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *f) { @@ -1627,7 +1613,6 @@ static const struct v4l2_ioctl_ops mpeg_ioctl_ops = { .vidioc_enum_input = cx231xx_enum_input, .vidioc_g_input = cx231xx_g_input, .vidioc_s_input = cx231xx_s_input, - .vidioc_s_ctrl = vidioc_s_ctrl, .vidioc_g_pixelaspect = vidioc_g_pixelaspect, .vidioc_g_selection = vidioc_g_selection, .vidioc_querycap = cx231xx_querycap, From patchwork Sun Feb 23 18:58:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda X-Patchwork-Id: 867817 Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 377C120F094 for ; Sun, 23 Feb 2025 18:59:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337186; cv=none; b=aw3/WxCmj/2TIXoekgRfs+rWlBKfos36oduj63ebc/za10TncIk9U6Q3ELc2AMB/QPSadM0j7m6816LuLxnMh6ORvVjDYk3g8qTjIAdVDh8MJNk6JVki573+8KJnZidZX2YedNPql66JMrBM86rbS8HOgpvn586yHQc6tHGJoUs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740337186; c=relaxed/simple; bh=bGURjosegTH+P+Gw5HjXH9uRa5Uc4pPh6VYCjWY0HAo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KuAxo/fThJ8jJ0O7tCMoS0UGPbGLL4xq2VyopxdJZSjyGF8hm0GFEbL+9kBudNTgGNvrmEvyI12DvmG0vccbqC9pVXpVZpVFlybXO/AIrcIo9fH51Hh5bT9rVNpZN4NPR5/5TcQo3/7r6PCHjnJUmBbiLGuuTUp49//aAeL8HWk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=AoF3Ah7B; arc=none smtp.client-ip=209.85.222.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="AoF3Ah7B" Received: by mail-qk1-f178.google.com with SMTP id af79cd13be357-7c09a30e14dso656314585a.0 for ; Sun, 23 Feb 2025 10:59:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740337183; x=1740941983; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KXG9+uuGWmSBcxIUkNXdZws6nfJZHCT+9+MDo1/1sYc=; b=AoF3Ah7Bd0avw5HDqt/QWWl5DVcCbjnrANUvtWsmleOc11P2RE2/hmqujGDL97LzeA WOJoZpIZeX04ArP9AiSPt+PzImZdJfl7fhX5Ubn+AylnmaiofnUvPsybXl1JYr6lX86H 4nM5t9ox2Zvp7eZCNTqZtnPooYrqdVV7Qg8+Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740337183; x=1740941983; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KXG9+uuGWmSBcxIUkNXdZws6nfJZHCT+9+MDo1/1sYc=; b=rY0u8Kx88vfde0oDcvRMSioCCYgerIY3CELxHLCT8H1cZBSB8qjhQCu4j1LtmgOYwt UCwqgWnc5kK/8qHqRCyxvnYTk61oyvMn6Xya9SQunGBVgDvWWkojbi5bvkV6UwfZ1fSF 6LutZWQObqdaTg4jNFWrvhOdHoPz5jiKPISMSM9KZy3fO8avp2HDYBpyKHwxxk4slYWu kempPwX5IgfdGhmQUvkecmsEUksZiLJymvy1fRh583BSkwuqZsrEwLjs8ELaY60phJQR 4OGEbY0LFTcI9fiiQKyoGTRBTVORjdmUBlBXet5aMOqLLicQvKmr/O+2ORYbfSe3dd+z 4fzQ== X-Gm-Message-State: AOJu0YycVVXiQlCxicBF7KgKVtO1ZPxfIwMllxftHwJGsTfsV4hEwhU5 BHVhdDdrDTJt0Cfhk0KSxlzVweYUDmqyT2xNC1K4kVfwWdRG1rsVe4/lGeHacQ== X-Gm-Gg: ASbGncv569hqqQB61O0z8Ro4UMc1jOkzndgXCwr1Ya9psSC01u9jLJ2nBfjBTKdItuO v8C8YU4QD+eDxhqioTdt1tQuoTfOo2hOr+zqCFOkBjZLajMwANgkv/d2WkUnqDhG2+Tp5us19ci d3wZitpqLZHcLAyaLpvVS+LrFYlnt8/M1e7bK2I3GRXTW8lCpK6pGn8zPje0QmtBuh0zWknr/bx tJiu8trLgzQNACjk5bPEvx1fwn7FwAPhaIIl3tXW6KZSB1PAo9Q80YtbORp41HHj2d/ww12yqBV 1lOmrNhazEQBmbfFVMN7soCoe0bQpjYRE2ds/qm3xo4H7KDgOoF26SZQ4Dof0G4IhG7+qp/XmrL g01g= X-Google-Smtp-Source: AGHT+IGjHh9bP3Z1R0+XLoulszUD7WhUuuTZdPXT1kOhHNmPI8BbzEJMwqu44jAaJET9UyJKRwaG6w== X-Received: by 2002:a05:620a:450c:b0:7c0:b5bc:a122 with SMTP id af79cd13be357-7c0cef55f43mr1666469185a.35.1740337183095; Sun, 23 Feb 2025 10:59:43 -0800 (PST) Received: from denia.c.googlers.com (15.237.245.35.bc.googleusercontent.com. [35.245.237.15]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c09bf81253sm894052885a.47.2025.02.23.10.59.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 10:59:42 -0800 (PST) From: Ricardo Ribalda Date: Sun, 23 Feb 2025 18:58:14 +0000 Subject: [PATCH v3 11/12] media: v4l2-core: Introduce v4l2_query_ext_ctrl_to_v4l2_queryctrl Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250223-queryctrl-v3-11-4292911cab6b@chromium.org> References: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> In-Reply-To: <20250223-queryctrl-v3-0-4292911cab6b@chromium.org> To: Mauro Carvalho Chehab , Mike Isely , Laurent Pinchart , Hans de Goede , Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, Ricardo Ribalda X-Mailer: b4 0.13.0 We use this logic in a couple of places. Refactor into a function. No functional change expected from this patch. Signed-off-by: Ricardo Ribalda --- drivers/media/v4l2-core/v4l2-ctrls-api.c | 51 +++++++++++++++++++------------- drivers/media/v4l2-core/v4l2-ioctl.c | 28 ++---------------- include/media/v4l2-ctrls.h | 12 ++++++++ 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c index 95a2202879d8..9dd2bc5893dd 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-api.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c @@ -1123,39 +1123,48 @@ int v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctr } EXPORT_SYMBOL(v4l2_query_ext_ctrl); -/* Implement VIDIOC_QUERYCTRL */ -int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc) +void v4l2_query_ext_ctrl_to_v4l2_queryctrl(struct v4l2_queryctrl *to, + const struct v4l2_query_ext_ctrl *from) { - struct v4l2_query_ext_ctrl qec = { qc->id }; - int rc; + to->id = from->id; + to->type = from->type; + to->flags = from->flags; + strscpy(to->name, from->name, sizeof(to->name)); - rc = v4l2_query_ext_ctrl(hdl, &qec); - if (rc) - return rc; - - qc->id = qec.id; - qc->type = qec.type; - qc->flags = qec.flags; - strscpy(qc->name, qec.name, sizeof(qc->name)); - switch (qc->type) { + switch (from->type) { case V4L2_CTRL_TYPE_INTEGER: case V4L2_CTRL_TYPE_BOOLEAN: case V4L2_CTRL_TYPE_MENU: case V4L2_CTRL_TYPE_INTEGER_MENU: case V4L2_CTRL_TYPE_STRING: case V4L2_CTRL_TYPE_BITMASK: - qc->minimum = qec.minimum; - qc->maximum = qec.maximum; - qc->step = qec.step; - qc->default_value = qec.default_value; + to->minimum = from->minimum; + to->maximum = from->maximum; + to->step = from->step; + to->default_value = from->default_value; break; default: - qc->minimum = 0; - qc->maximum = 0; - qc->step = 0; - qc->default_value = 0; + to->minimum = 0; + to->maximum = 0; + to->step = 0; + to->default_value = 0; break; } +} +EXPORT_SYMBOL(v4l2_query_ext_ctrl_to_v4l2_queryctrl); + +/* Implement VIDIOC_QUERYCTRL */ +int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc) +{ + struct v4l2_query_ext_ctrl qec = { qc->id }; + int rc; + + rc = v4l2_query_ext_ctrl(hdl, &qec); + if (rc) + return rc; + + v4l2_query_ext_ctrl_to_v4l2_queryctrl(qc, &qec); + return 0; } EXPORT_SYMBOL(v4l2_queryctrl); diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index fea53b419351..4e15ef4840b0 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -2302,32 +2302,8 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops, ret = ops->vidioc_query_ext_ctrl(file, fh, &qec); if (ret) return ret; - - p->id = qec.id; - p->type = qec.type; - p->flags = qec.flags; - strscpy(p->name, qec.name, sizeof(p->name)); - switch (p->type) { - case V4L2_CTRL_TYPE_INTEGER: - case V4L2_CTRL_TYPE_BOOLEAN: - case V4L2_CTRL_TYPE_MENU: - case V4L2_CTRL_TYPE_INTEGER_MENU: - case V4L2_CTRL_TYPE_STRING: - case V4L2_CTRL_TYPE_BITMASK: - p->minimum = qec.minimum; - p->maximum = qec.maximum; - p->step = qec.step; - p->default_value = qec.default_value; - break; - default: - p->minimum = 0; - p->maximum = 0; - p->step = 0; - p->default_value = 0; - break; - } - - return 0; + v4l2_query_ext_ctrl_to_v4l2_queryctrl(p, &qec); + return ret; } static int v4l_query_ext_ctrl(const struct v4l2_ioctl_ops *ops, diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index 59679a42b3e7..83b84cb5cf06 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -1404,6 +1404,18 @@ v4l2_ctrl_request_hdl_ctrl_find(struct v4l2_ctrl_handler *hdl, u32 id); */ int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc); +/** + * v4l2_query_ext_ctrl_to_v4l2_queryctrl - Convert a qec to qe. + * + * @to: The v4l2_queryctrl to write to. + * @from: The v4l2_query_ext_ctrl to read from. + * + * This function is a helper to convert a v4l2_query_ext_ctrl into a + * v4l2_queryctrl. + */ +void v4l2_query_ext_ctrl_to_v4l2_queryctrl(struct v4l2_queryctrl *to, + const struct v4l2_query_ext_ctrl *from); + /** * v4l2_query_ext_ctrl - Helper function to implement * :ref:`VIDIOC_QUERY_EXT_CTRL ` ioctl