From nobody Sun Dec 7 06:54:06 2025 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 44F4D19AD93 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-7c08fc20194so677701585a.2 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=OsadGiL8WcApLE3LUSPYJ7tYK1JJF+83NGWYWqia4OAAhUThrwh10vG5aBWW6PF6F1 KBHxDgEQ+Mu4gxpZwpPRerJvRdeGk6lkTsiVx4bcgmm2fB1/2Y8FOz9oqSPBJNI8HbWU sZ+BqLv9PJLT7BGOR6SiT28P/WnnqwTBNX5akFDHOJBKo6XhFlBf6lwTYIpcTKLvw41Z PXeMr314mX2sg0WybrwGg5b1ddKFdKf2CP5fMzz6ETqM0RBiGWASXFB8KILgWJMFFxbL +AK3qSxgtxfjK17zZ771dqtUeYDmM6I8ExKI0ZkSuiPL1JYaEz25a835KEDTtluyEluP rvJA== X-Forwarded-Encrypted: i=1; AJvYcCWLAbt7XXz8Tbp/PiJ3+KWo+voPnunuX0KLY3S/iXvtqzNkrLn8LeEjBPZ1O3se6OIK0Yl0ewL8l3c8L5E=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8iaTZK5pIyq8N/jkryBRwxLxrvdCoUZNznwECrSI+xhrdtSJ7 5fwwbTx0zY1+MNM1hduMBjCuHGBqxFQXXcPfg0uQrSphgD0AwH1QrwrWqQXNZQ== X-Gm-Gg: ASbGncssEzmfHqlIYmdHGrHMIJOTWLnQdNpREoAKfDLMFJn/EJw4a5nrBm2HvGrDqhq KdSXelOySz8BhzQObC7dMrT34jvY6RRhteYbKujKDfcRl0T4EMEU6CPB9j4Y7d+C6SRlY/R2QBp otWvZEBspLM7soi9CXSCAau1eylHwy3gSN+ZzK9w5AfnM9pyuzRWYOcF/YKSAjuYVECNzkQGlw5 Nm8rvy7JwFoKJK4/DfA9Ne5uCxR8u5ubnB1FF0/BMGlkoaTZJNhKUdA6bkwjyVrjdw2EPaF/OI9 UgQccc2ViBYQ9lvvIBMjzYE60tFL57Vqgci0UWNKtTxXBz5pPjdaF9CSeFyHd2aorKeMjL9UMf2 gO/c= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 *h= dl, struct v4l2_query_ext_ctr } EXPORT_SYMBOL(v4l2_query_ext_ctrl); =20 -/* Implement VIDIOC_QUERYCTRL */ -int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *q= c) +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 =3D { qc->id }; - int rc; + to->id =3D from->id; + to->type =3D from->type; + to->flags =3D from->flags; + strscpy(to->name, from->name, sizeof(to->name)); =20 - rc =3D v4l2_query_ext_ctrl(hdl, &qec); - if (rc) - return rc; - - qc->id =3D qec.id; - qc->type =3D qec.type; - qc->flags =3D 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 =3D qec.minimum; - qc->maximum =3D qec.maximum; - qc->step =3D qec.step; - qc->default_value =3D qec.default_value; + to->minimum =3D from->minimum; + to->maximum =3D from->maximum; + to->step =3D from->step; + to->default_value =3D from->default_value; break; default: - qc->minimum =3D 0; - qc->maximum =3D 0; - qc->step =3D 0; - qc->default_value =3D 0; + to->minimum =3D 0; + to->maximum =3D 0; + to->step =3D 0; + to->default_value =3D 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 *q= c) +{ + struct v4l2_query_ext_ctrl qec =3D { qc->id }; + int rc; + + rc =3D 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 =3D ops->vidioc_query_ext_ctrl(file, fh, &qec); if (ret) return ret; - - p->id =3D qec.id; - p->type =3D qec.type; - p->flags =3D 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 =3D qec.minimum; - p->maximum =3D qec.maximum; - p->step =3D qec.step; - p->default_value =3D qec.default_value; - break; - default: - p->minimum =3D 0; - p->maximum =3D 0; - p->step =3D 0; - p->default_value =3D 0; - break; - } - - return 0; + v4l2_query_ext_ctrl_to_v4l2_queryctrl(p, &qec); + return ret; } =20 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_han= dler *hdl, u32 id); */ int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *q= c); =20 +/** + * 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 --=20 2.48.1.601.g30ceb7b040-goog