From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 42CE32797A3 for ; Thu, 5 Jun 2025 17:53:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145987; cv=none; b=ArP2Cx6HwOTxnt4aQ2IIUZA3qavB5xtCbAyy/gF1clCeBRE4RQLC350gHWVlofRZykThHESwMaTUMt8+tLFbvjyPnyZxfxvQlVZQtqBNNTCLLIZacq7zkaa5yZ2O0y/PMUIaDXmtr54HGsnYGWMZBlT/E5E9IAflFJJLpXvz1/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145987; c=relaxed/simple; bh=tewb45+dzAe3tLBQsQaB+O4zKZphuKqtE9IM4Y6OX9M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ukBX1//XAVUy3Y6fgUdHtAyJ2HCYtgAd/mgpvXhvCiAvzU9ijfYr92E1A/jJ3NIfK0sujwcpnPCO45u8dtIrOPtXPLD5O4BpcYZsNg4g0ehhKLTLCJ0xiBBkc9KZqTMDjoCGq7rbYv74dn8cXiPdYaswBiR7Vrp4SuWUf6JTxu4= 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=ZVkCRHEm; arc=none smtp.client-ip=209.85.167.50 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="ZVkCRHEm" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-551ed563740so1575902e87.2 for ; Thu, 05 Jun 2025 10:53:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145983; x=1749750783; 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=K2bzjHeaOe4XJQH7wCz0q9lsz5fFHI+NR6J/UEFEZdQ=; b=ZVkCRHEmBSMwAVs2r4H6mCqw7kB5h/HMviCkeWJwBrW4ZC8SnUK2Ug2FJB9zOV/PRa 3yprm3m92Yf3jKNQHX2hv+vxVW36LQN/Qx2gkIo6Xf8evy9FIF6EVPgBXSp+IZObtOSz OWYhDVEBzWScLF1rid461YU5MTRNttPiSBucI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145983; x=1749750783; 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=K2bzjHeaOe4XJQH7wCz0q9lsz5fFHI+NR6J/UEFEZdQ=; b=rnlq8t21T7qP1CsBc95lfOFhsSAWd9xRdOMfSDbqq+ZFFb1ickDNKxHbEgTpVehD9i VhJi1S8BYu8E/5cbLv4rr1vVi8GCrW6C6GX68X8RWvaRv0TSF0/L6hUKvPvG8DOQJAFW 0W7i9p0Lq3ThCkRhNrUYjmQcuTer0yrhC22DrT6Ki/VDpVuOmkQJrK0Bfdtah9/6nZZi 8w4mGUB0zY1p2Sxg2cy31RTDqTNJL5vd8n+Vhbcvrf0282oYLHyLPp3lihYhrUoC7u4T BKX+r6lGDcjgEtCbcYRwqlMnsKRfI5+59mKqOZnY2Ghi+ByPL19MbCeB+9JXVl1ZjEkC 5iVg== X-Forwarded-Encrypted: i=1; AJvYcCVFjzL9jm3bPE/uDCuVgKguyUuoSqIxwrCClxVciPOqYZRUP9UiEqLOlPredR8L/7tYTNGBsdwVmdg3ArA=@vger.kernel.org X-Gm-Message-State: AOJu0YwkykGa6lsuIo8CZ9v0eYBS5ql6b/NPoDU/dTE3o4Bmgbuhl5EH TvMarRjRJilRZWooS/nhS2S4RoJT1pN3rLcYbyDpyA3GLDhD7ixS68X5e4XIo06ltSiVnw/KZq2 DoM8= X-Gm-Gg: ASbGncsbYddLVmRzyhIxVwVrT4KwPd1gHsFPPd8vqvncPddBBzfsyoQCjh9HUWARpiR cnLjAdtGRQPUmxdczQe1dG7onxW6SWImdnDJWU9dPE9laTXWDCW2+0luTfc/wwnBeP65qlGLwu7 CvguEOSEB5c/9qM3yBzgsZJuATqK9GhqvqfvUR0YOcUflJ1yXhhjsFfX9o75ojYsDdlhpKO4HQQ 3V+9nXFut/HmW9Fc1IPjW95cMkm9enYfEOTno2XiH12mL6A4BQ+2ElHFxT/NI/4kWu9d6Nokjk/ kEvv+K90dWRNPBx9ZIsk7K+NRyfM455jJsv0P2Xktbx5mOPwzbTbQmoFuAHg7PbU65ZRiW2ZPFx BIJwl2EXXXqkgXaj21NVuWIJB4Q== X-Google-Smtp-Source: AGHT+IGl548xQa/vsHY27xBCLqMA/WtFSSEsFfeQt2Dzb0VNl43ck1yHu+ccC0nfMKcjxfgnvusB5Q== X-Received: by 2002:a05:6512:1248:b0:553:2cc1:2bb4 with SMTP id 2adb3069b0e04-55366bd49dcmr18752e87.12.1749145983043; Thu, 05 Jun 2025 10:53:03 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:02 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:54 +0000 Subject: [PATCH v2 01/12] media: uvcvideo: Always set default_value 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: <20250605-uvc-orientation-v2-1-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 If the control does not support GET_DEF, the field default_value will be left uninitialized during queryctrl. Fixes: c0efd232929c ("V4L/DVB (8145a): USB Video Class driver") Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede Reviewed-by: Laurent Pinchart --- drivers/media/usb/uvc/uvc_ctrl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 44b6513c526421943bb9841fb53dc5f8e9f93f02..47e8ccc39234d1769384b55539a= 21df07f3d57c7 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1497,6 +1497,8 @@ static int __uvc_queryctrl_boundaries(struct uvc_vide= o_chain *chain, if (ctrl->info.flags & UVC_CTRL_FLAG_GET_DEF) { v4l2_ctrl->default_value =3D uvc_mapping_get_s32(mapping, UVC_GET_DEF, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_DEF)); + } else { + v4l2_ctrl->default_value =3D 0; } =20 switch (mapping->v4l2_type) { --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 313C22798F3 for ; Thu, 5 Jun 2025 17:53:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145989; cv=none; b=KF+uUv3gtDlj4iuIc/VWHJwg16GNpGblAwfsAXjYcI6g9mPYgVIjyUCC43qKsUzmBSGbvm0j6UAqZlA+nGOi862AFB/OqdhCyHzkVMsUqEdATbZ9vvIXjDa2WK6IPrBrC29fOx4YoC28eIntWeNEwLx7OXiI3GozxTTsp4UdA9c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145989; c=relaxed/simple; bh=eN2NqpRnpXYpl4E3GCmZNzKt19bmwjyh05by15ZauKc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tuW23hUSkEoFDNzsK4zS6POUNtJIi1+IGycuVv+gSmWTgQSVsQhRJw1HO3NbQbxjKwb8PwwuZhFVJZ2f+8uRIDbYT1h//M06y5bR+k2WZZ0a1AJi8GC42CSk4nhvTMMP68ERlms734xdvoIgiiOMhaUHwfsI2jo+22Zr/l7IUrI= 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=Q9SfuKhf; arc=none smtp.client-ip=209.85.167.52 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="Q9SfuKhf" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-55350d0eedeso1399614e87.2 for ; Thu, 05 Jun 2025 10:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145984; x=1749750784; 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=1/BKOipaa0AeDKKmUIkRbQ0YnQTBaMveRhFI1BloNvM=; b=Q9SfuKhflYnlcPWMjOga76HYIaNOo02cO//qVkzvyO8fknsjawD9AYiFXh36Ow56+6 8E3FJ9Nx/kMata0brO30hXR9hlcObkNkTqc58bnjj/nimFv6eoTBUUTmH8x4CUV3u16A Tj1keHwAJLI2q9QkggPCcwKa9mf+lxhP88p1w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145984; x=1749750784; 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=1/BKOipaa0AeDKKmUIkRbQ0YnQTBaMveRhFI1BloNvM=; b=JbsLHJLqThBB8MrkKerI8meg3Ug7PhORO9RtIEKfPBz2Gqd2W0oCT6zK2r5+L6tjZn OeWlgcfHyj6y8aCUFArTMmaUOJxodeYUWD9DRfuKrV7Z7Jqx+/3ObHjn3WFGx5X8o34B MX6syin1xkmplD1qkVHnlMyHHrAyIlVAT/s26/tPpifnMMCWzH9V+00Pa5agfaxC+kPc VUUUztZao+oEDXNjVAfKdWO7Ru3MgP5MYyGGGPF7fehDPEpXI2bDWdOOJUTTtYRExxqb G2YsqaPd6FmsxJJ22wYYDd2UzicOe01mlVYxgTd5nAJEVJvgHjjvntKx3czW8ru6p1KO FHDw== X-Forwarded-Encrypted: i=1; AJvYcCV0T7Gd4xqRuhHUbpDLEVWRQV40zX6DpKi2OSXg+eIdLB8XIPaILOGeL++AvAVLZYK00b5jcPN8zg1jVEA=@vger.kernel.org X-Gm-Message-State: AOJu0YyfRiZymvtRzoaovrhHa1gsLDxgCncVnr32W2tAT0v4dVCtHLm1 JZO3+/2JmItfFYBX6SJoQXCbKahH/ZcV0RVqof61SoID12zjXBAj+nsZbCUa+9mKnVXMloNNmar 90Cs= X-Gm-Gg: ASbGncufJDSprw99KmUT5gAf8zlN017aMb/e5QKiyTBOVCiard8+wy2Rdz5fmeIJoXF c/AQlaEKGdtnK2j4xFSzbwEkonw/HR6TS8SFvD/ZS1Qup4pPH30XYhf0B6/tFdTJayHJP8/OYUZ ZD53+FBTKSHekglVoGQI2iJ8L99pgOXILnbHUFOYZPacBt61uQBgE3sp45CN4fvVjX8Axxrtd4n XvUE9+w72n4Zj3tkeK1qYO+1NjB2UC8moMrxTYE5OAb1EI//L+b9b7/KWZf7AjPRXXHGLH5PciU Z45kktKO+SRnfWhG5g3h9iPbl/8ds4zVUiZgYvpvLBuSGNBZRV13IT9/m9I4FNLWBduHEOfLs++ 1HAlESh7pBgnSWLyapZsc01guJw== X-Google-Smtp-Source: AGHT+IFdxuqyfHnNl8OVH+/gLEAeEElSe/53dZeUw33MEGW+QrVTJwknGhZW8Toc3Ow5cY8PaKjVgQ== X-Received: by 2002:a05:6512:1289:b0:553:3892:5eaa with SMTP id 2adb3069b0e04-55366c38b6amr15211e87.55.1749145983869; Thu, 05 Jun 2025 10:53:03 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:03 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:55 +0000 Subject: [PATCH v2 02/12] media: v4l: fwnode: Support ACPI's _PLD for v4l2_fwnode_device_parse 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: <20250605-uvc-orientation-v2-2-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Currently v4l2_fwnode_device_parse() obtains the orientation and rotation via fwnode properties. Extend the function to support as well ACPI devices with _PLD info. We give a higher priority to fwnode, because it might contain quirks injected via swnodes. Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede --- drivers/media/v4l2-core/v4l2-fwnode.c | 85 +++++++++++++++++++++++++++++++= +--- 1 file changed, 79 insertions(+), 6 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-cor= e/v4l2-fwnode.c index cb153ce42c45d69600a3ec4e59a5584d7e791a2a..379290ab3cfde74c8f663d61837= a9a95011b5ae0 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -15,6 +15,7 @@ * Author: Guennadi Liakhovetski */ #include +#include #include #include #include @@ -807,16 +808,65 @@ int v4l2_fwnode_connector_add_link(struct fwnode_hand= le *fwnode, } EXPORT_SYMBOL_GPL(v4l2_fwnode_connector_add_link); =20 -int v4l2_fwnode_device_parse(struct device *dev, - struct v4l2_fwnode_device_properties *props) +static int v4l2_fwnode_device_parse_acpi(struct device *dev, + struct v4l2_fwnode_device_properties *props) +{ + struct acpi_pld_info *pld; + int ret =3D 0; + + if (!is_acpi_device_node(dev_fwnode(dev))) + return 0; + + if (!acpi_get_physical_device_location(ACPI_HANDLE(dev), &pld)) { + dev_dbg(dev, "acpi _PLD call failed\n"); + return 0; + } + + if (props->orientation !=3D V4L2_FWNODE_PROPERTY_UNSET) { + switch (pld->panel) { + case ACPI_PLD_PANEL_FRONT: + props->orientation =3D V4L2_FWNODE_ORIENTATION_FRONT; + break; + case ACPI_PLD_PANEL_BACK: + props->orientation =3D V4L2_FWNODE_ORIENTATION_BACK; + break; + case ACPI_PLD_PANEL_TOP: + case ACPI_PLD_PANEL_LEFT: + case ACPI_PLD_PANEL_RIGHT: + case ACPI_PLD_PANEL_UNKNOWN: + props->orientation =3D V4L2_FWNODE_ORIENTATION_EXTERNAL; + break; + default: + dev_dbg(dev, "Unknown _PLD panel val %d\n", pld->panel); + ret =3D -EINVAL; + goto done; + } + } + + if (props->rotation !=3D V4L2_FWNODE_PROPERTY_UNSET) { + switch (pld->rotation) { + case 0 ... 7: + props->rotation =3D pld->rotation * 45; + break; + default: + dev_dbg(dev, "Unknown _PLD rotation val %d\n", pld->panel); + ret =3D -EINVAL; + goto done; + } + } + +done: + ACPI_FREE(pld); + return ret; +} + +static int v4l2_fwnode_device_parse_dt(struct device *dev, + struct v4l2_fwnode_device_properties *props) { struct fwnode_handle *fwnode =3D dev_fwnode(dev); u32 val; int ret; =20 - memset(props, 0, sizeof(*props)); - - props->orientation =3D V4L2_FWNODE_PROPERTY_UNSET; ret =3D fwnode_property_read_u32(fwnode, "orientation", &val); if (!ret) { switch (val) { @@ -833,7 +883,6 @@ int v4l2_fwnode_device_parse(struct device *dev, dev_dbg(dev, "device orientation: %u\n", val); } =20 - props->rotation =3D V4L2_FWNODE_PROPERTY_UNSET; ret =3D fwnode_property_read_u32(fwnode, "rotation", &val); if (!ret) { if (val >=3D 360) { @@ -847,6 +896,30 @@ int v4l2_fwnode_device_parse(struct device *dev, =20 return 0; } + +int v4l2_fwnode_device_parse(struct device *dev, + struct v4l2_fwnode_device_properties *props) +{ + int ret; + + memset(props, 0, sizeof(*props)); + + props->orientation =3D V4L2_FWNODE_PROPERTY_UNSET; + props->rotation =3D V4L2_FWNODE_PROPERTY_UNSET; + + /* Start by looking into swnodes and dt. */ + ret =3D v4l2_fwnode_device_parse_dt(dev, props); + if (ret) + return ret; + + /* Orientation and rotation found!, we are ready. */ + if (props->orientation !=3D V4L2_FWNODE_PROPERTY_UNSET && + props->rotation !=3D V4L2_FWNODE_PROPERTY_UNSET) + return 0; + + /* Let's check the acpi table. */ + return v4l2_fwnode_device_parse_acpi(dev, props); +} EXPORT_SYMBOL_GPL(v4l2_fwnode_device_parse); =20 /* --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (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 7203127A103 for ; Thu, 5 Jun 2025 17:53:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145989; cv=none; b=t6c1HvUwNPnAPw546QPB9fkhQbAyAVMQTIDNsCaI7nGd+JMlW9NCJsfI98aIVby2lByQCuziHCqC8eqMG7Bs56VByADaFXgCrIBa6kB0Texf0ypd6QpY04UiF8pkyYZNIwNfxXbFtEobuJlZV6xLbmzrneMF/Eo08rUshcfQ5AE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145989; c=relaxed/simple; bh=V3mF7pLDoaruyqIzAwwMyJdM0YQYzWL05/erg95lnDI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=anW6CH3UAA0hemT+6qLptp2Cid/KMAFCUgh3VDqIBxJ+PITD3KZEYSZ5gfmMODZ1Wc1u9GO1ESdiNvHkoTwqhfAH2evTheUYkfryk4QLZQ/fknKxxCmhxRcvvWdvIuMs0nCJGHZxrVDyaifhdkd3J6H9W+qRKlYIvP2EW22aRUI= 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=ETjM1jqi; arc=none smtp.client-ip=209.85.167.44 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="ETjM1jqi" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-551efd86048so1376051e87.3 for ; Thu, 05 Jun 2025 10:53:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145984; x=1749750784; 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=W8OIPxZw+kNtaX9XsRliFjEOnUVpjIedNlprBesFBFM=; b=ETjM1jqiveXzdwPDQFMdlninWX7WCzWyBBTNVcW8rRYgpQ9RBIljJU1/Z4o4pYaX/E ho9z0jjgKf6qSxZ5fghWCD/nUGaOdMY0r3O5cfwPsx6FHPvxDVWfvcfWQgD956eFgjyj gwNfHRFdK2iaQ2xUr6iRIhtPpoIHBQRoN6HSM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145984; x=1749750784; 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=W8OIPxZw+kNtaX9XsRliFjEOnUVpjIedNlprBesFBFM=; b=XMyGJesjhREzMoI0sTjgeC2NQCYGA9Vf+LBQSPfcIKfR9WWyCaH/X0s9LtcnEq8VeZ PHJtmZ2Jr0hkK3W1cUHhhDtgix9vEFZ6EBS77PT6qtiVZgrJnBB7LHKEAlRoZuao3lfD t+dtObc4Q2AkKASSGFF6UUobBqSnzYlcmkLdamKUx02nzrDfx8M/e3b+fj0Or3ckkc/i Z41U5WfoLq43rAfJ41hkk/tN0hSEf/NF4XMtIzViruct2eyxZy0n2GnWKUwOj6n4ND4J WIPYzo08tHOV0IRL50yVhpR2ZkFcIqvt5BMed5VbDjJH8kxh19RSG2dum0hjVvT3U14h ZHNw== X-Forwarded-Encrypted: i=1; AJvYcCX2KWRMLhxo/ngmk3pD3/2cyDe5xtB95ASXNCD58oLlWHBl3rgCdNUAEvajVLUc9PBNZhIkG/ZmftXftsQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyD/RO45nuUGvDhn7QHfI7fIKeydF6e437LGsKhn3AQpb4s/cvv wfK3ctvB5PONulapSPH/Vs1Qzuk6YOHFPj2F7XjHPNW5+2I/eNKLqe8eWwEYFFQBQW8+aeOkd3I pr7g= X-Gm-Gg: ASbGncuwUsXeFV60Z94FhoeRdZ12CeqaIQ4T9lkZbyC1Laq8UF/gzBBC3he6QKq0mou y1M6BC/IHdcv4+/mtrazul9Go4fhU32NiVkIJrg/KsC+Imt1t8sj8s3l/4UMgNuuw9vEOzY6V8W F6zc3vMbJpZTcSZSOPw4O5cAessnuWFNkrKTyPo65L+K2bJmmofVyDrx6u9K5pjBDKxStNrHtYC El0n/K/Mv7s0f4fVb4OqGpQziGBlVFwTuwq+uGO6MHYYbdnqCJv+8bExcNAusl/D+NoFa2jTU+2 Y+p6AWSsMdks4mgNSSpc4RyMGMIo0hentVDo2iSwswZfbVjYaiXeolBOsIK42UNdjQ3m57sGdTe 3oiD3k3lGtq5PR80UXKGoeGtT3aciIk9h9Q7FZCMlMmdDIQc= X-Google-Smtp-Source: AGHT+IGs54mK0grF5GpYvNrIRBVyl5RIQTl5wT33xEXZ6lSNp2Qm87PtJXgiSarLAOoqtbFmQtgqJA== X-Received: by 2002:a05:6512:224b:b0:553:2bf2:e303 with SMTP id 2adb3069b0e04-55366bf9034mr20502e87.30.1749145984304; Thu, 05 Jun 2025 10:53:04 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:04 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:56 +0000 Subject: [PATCH v2 03/12] ACPI: mipi-disco-img: Do not duplicate rotation info into swnodes 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: <20250605-uvc-orientation-v2-3-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 The function v4l2_fwnode_device_parse() is not capable of parsint the _PLD method, there is no need to duplicate the rotation information in a swnode. Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede --- drivers/acpi/mipi-disco-img.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/acpi/mipi-disco-img.c b/drivers/acpi/mipi-disco-img.c index 5b85989f96beeb726f59ac9e12e965a215fb38f6..b58b5ba22a47a4afc5212998074= d322f0b7586dc 100644 --- a/drivers/acpi/mipi-disco-img.c +++ b/drivers/acpi/mipi-disco-img.c @@ -617,21 +617,6 @@ static void init_crs_csi2_swnodes(struct crs_csi2 *csi= 2) =20 adev_fwnode =3D acpi_fwnode_handle(adev); =20 - /* - * If the "rotation" property is not present, but _PLD is there, - * evaluate it to get the "rotation" value. - */ - if (!fwnode_property_present(adev_fwnode, "rotation")) { - struct acpi_pld_info *pld; - - if (acpi_get_physical_device_location(handle, &pld)) { - swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_ROTATION)] =3D - PROPERTY_ENTRY_U32("rotation", - pld->rotation * 45U); - kfree(pld); - } - } - if (!fwnode_property_read_u32(adev_fwnode, "mipi-img-clock-frequency", &v= al)) swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_CLOCK_FREQUENCY)] =3D PROPERTY_ENTRY_U32("clock-frequency", val); --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.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 7774327A442 for ; Thu, 5 Jun 2025 17:53:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145991; cv=none; b=a+Pybnuknd16O/LN8MM3/A+Av0skORToLX4Og82fy+WM5hke1vXV+Ud36Y78OXIDFRmLmChMIwICeHuqFgo0iUcEYDSCJ0WkYlvolJSZekk0w4Mo96/oo+QLef9UBOgNWXCAyTyjLOajzM+Tcr/S+7YMblAZrRlH4Co59Daa40w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145991; c=relaxed/simple; bh=HkpzCJY6QMUo/A2tmF9l8NRgkFwGl+Bw/RVcSwiZ3nc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RHCq/ozwIkrwQ396VZCiw0dDbbuQWUKwfw5ecfOnAE1qGq6cTf5FiOBIs9u+54g9LGXCwwxB2mF6sukxlgADIVwL2dMf2p4lFPxcbs2fQWujJio54mzqAVix/Y+DlwZQ4GkGDVTN/N49Uxj7vS57TpnkJOLgGrlzPxXa1RQGvqA= 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=mAIbvnSb; arc=none smtp.client-ip=209.85.167.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="mAIbvnSb" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-553543ddfc7so1375597e87.0 for ; Thu, 05 Jun 2025 10:53:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145985; x=1749750785; 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=IAddCa1zo14U93p/hxz3tXNuMoufL4dFoj1aELCNFac=; b=mAIbvnSbSujXriDone/jjS4I6hRdXbCA6Sb+MUaRuNWkIv0C+UTJskIZwnosB21vDQ GM5uBqOYGmjZmzBvzcWO3BRwgYvDA47BfeHSLZnpiQTPE8wlGEXSrIfXPI+cTZjNueI2 ac8/+2ZXhvKnXpb3IYUEHaoCIdg3h+8EuvdfE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145985; x=1749750785; 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=IAddCa1zo14U93p/hxz3tXNuMoufL4dFoj1aELCNFac=; b=ht3Vid6uHQ/J1O7VUgV/tz4zcyMLYtpMfTtwvxsVjLaCTLo64zGGzfzlJT+N/SSlmt wxrl8rklUAZNQisFcjgHX60POdnX2iLGktC2MfeKSk68LWLxCm4MIsgmNrkB8ix+Qukn VZuytXV/MncINuFwAGHCGKec/Z53EU98yZZLJTEPfMtzOdrvd2O+R9RZ4go4Uql1URk9 hmMf1BtGv4u1iBqhaTUjs6v20tp3UYbtGIJ6GBoVjPzXFriCxIxgQFzB0JRsfQakR+zP LTx64T62oFB3CBt2LA0rJHneeSngk89z19blq3uYu7yDT7xu8CAHOApfPDhvX2/WYlrR rZjw== X-Forwarded-Encrypted: i=1; AJvYcCU0qRmYTb9TOaMdgvqJVqAKX0jJcI0k+EPS4bvrOqpIrm+qKOhXeTou54VvUujwknegf1GXJ3iRtkFj7qU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0UCvmWzXBuLY4Kx5SBXGm34va0u4a7d2j+uAzA29E5G+gMUXg 0658VoWr8B5Dt+KVbew1+TdsJQUAlBQvC3SJEJ3TPEbR+aPspslUEdNDht2IeLdLKF2OIPN4iwR Z5rs= X-Gm-Gg: ASbGncu65DcEkVC4EymmiUnpfvk9wILVVArQnaRyF5gRPPdFstrQGlqqcURHA++R/Ja uP5ISUT3WsmLnPMn7SOfQ8LwBAd1s6K8Ku2qiQsV560nf6pqDu8cBoZxkNqjXEH3rz7CDwOT3Lw /lfhg0khelP+dqCiosODgylzMpSDXXVOgG4Z8Du3s6unlEJ75nGaYOW1MMZAj9LtR2ACAvwypM2 QkmLpPyiZCWaj22JrL4Fju6eOlDlqjiYNjY/ws5b+Lk1SdORIlVEVkHTC8zzhAf7vL9jR65AUGs M2+yLSRK5C68bp7C9FAV/rRCGrJKuCPH5FK9opDhjghtSwtOk1VD98BS0qf/LS7rxZffPQDRNJV FohzUSZsUdetpWp4ZFZwWRWuTgQ== X-Google-Smtp-Source: AGHT+IEuQ3DoWfSTvrnWbXmxFE5uIRwAzd3dzxpPZvGceJdrS5ZQ7/hUcchLBDj/wBd6vU9oMBKPzQ== X-Received: by 2002:a05:6512:3e0f:b0:553:30fc:cedf with SMTP id 2adb3069b0e04-55366c1ee9emr20515e87.38.1749145984851; Thu, 05 Jun 2025 10:53:04 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:04 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:57 +0000 Subject: [PATCH v2 04/12] media: ipu-bridge: Use v4l2_fwnode_device_parse helper 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: <20250605-uvc-orientation-v2-4-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 v4l2_fwnode_device_parse now supports acpi devices as well. Use the helper instead of re-implement the logic. Signed-off-by: Ricardo Ribalda --- drivers/media/pci/intel/ipu-bridge.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index 83e682e1a4b77d9d97b2988750732d0b7c9087b3..020aa52f590d66b6d333adc56eb= fb9ab0561db51 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -253,36 +253,16 @@ static u32 ipu_bridge_parse_rotation(struct acpi_devi= ce *adev, =20 static enum v4l2_fwnode_orientation ipu_bridge_parse_orientation(struct ac= pi_device *adev) { - enum v4l2_fwnode_orientation orientation; - struct acpi_pld_info *pld =3D NULL; + struct v4l2_fwnode_device_properties props; + int ret; =20 - if (!acpi_get_physical_device_location(ACPI_PTR(adev->handle), &pld)) { - dev_warn(ADEV_DEV(adev), "_PLD call failed, using default orientation\n"= ); + ret =3D v4l2_fwnode_device_parse(ADEV_DEV(adev), &props); + if (!ret || props.rotation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) { + dev_warn(ADEV_DEV(adev), "Using default orientation\n"); return V4L2_FWNODE_ORIENTATION_EXTERNAL; } =20 - switch (pld->panel) { - case ACPI_PLD_PANEL_FRONT: - orientation =3D V4L2_FWNODE_ORIENTATION_FRONT; - break; - case ACPI_PLD_PANEL_BACK: - orientation =3D V4L2_FWNODE_ORIENTATION_BACK; - break; - case ACPI_PLD_PANEL_TOP: - case ACPI_PLD_PANEL_LEFT: - case ACPI_PLD_PANEL_RIGHT: - case ACPI_PLD_PANEL_UNKNOWN: - orientation =3D V4L2_FWNODE_ORIENTATION_EXTERNAL; - break; - default: - dev_warn(ADEV_DEV(adev), "Unknown _PLD panel val %d\n", - pld->panel); - orientation =3D V4L2_FWNODE_ORIENTATION_EXTERNAL; - break; - } - - ACPI_FREE(pld); - return orientation; + return props.orientation; } =20 int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sen= sor) --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 CAB8227A47A for ; Thu, 5 Jun 2025 17:53:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145991; cv=none; b=tMwO7Q1civx+fYhlCAyNBhIuyVze9lQZoJZ6wSJrcPGiiGHrv0C+ItgT4vJLRAFCywyxH+dMh03ApqoTzm6LXYp70cqKX21txJFIVuUii6+APN6P3rLulaT/8DVAx63TjpO75WFtZQBuyGfbTiePze1qvdok8358ea8k40tFmTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145991; c=relaxed/simple; bh=yCJh8xYi8LYreBh5dydvM47XVBLZAxTNUSYJHtb7x4M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YIsR8pDNbj9XcQ9cOiG9m3e7wRCI7fCdZW7CvmWWmAA7XS771xC2N/UJbf869VtL7eQwsVQYE6LHx6/mUOdJF0o5SYBjs8AAsgBvZFNXaGAitMlqQIo7oc6aDuyAuwg7Rfxvtbljtt6uOYy+ItkV7TTEat8QJKc59A+wEOQbmhM= 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=D1YRJps2; arc=none smtp.client-ip=209.85.167.49 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="D1YRJps2" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-553241d30b3so1176693e87.3 for ; Thu, 05 Jun 2025 10:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145985; x=1749750785; 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=5bWh2ADW8TZRmlfflymQkf2Dq+w112Fwi8JTTMtqDFE=; b=D1YRJps2zRih9coxBVTJrdx/51+lbtjKYRtENATLKOOVOlpyGlG9RH6yDbXUop3PFC Li6dRkgEYA7bQK84Z1zpJ8upk7MmM5j3Fxoi04JNCcAEX2n+XWksq9RUbGaGHLWm1hVk kR7Zn2Yn9TS1/lFia5inydJLM2WAwPacg8Yrs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145985; x=1749750785; 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=5bWh2ADW8TZRmlfflymQkf2Dq+w112Fwi8JTTMtqDFE=; b=xGOqeL+DbRcLmKParqOUligiWxOUatZ8zkyHoipQwLmgF+lQSMdO0fl6yVw3H7PYLc a4OsXmVyWe2K/m8VMAZKovuikwwQ2hvLNESzoQutIlnEV1c3+2peAevY8eMvMNN8HFcC eF86HsEX7sAoj5730URQEf5IGtdurqUhYM69WfdwwdGP84Lk0T4FNguJfIdvCryP73lz NGaQhx6nYndOg13Yw9pLHriIziTAdSkI9M741SVxdoJ9JOR7jJ6YEN0SizrTq6qo3Ml0 ubp7zQp/rXrrJCkYQMDGkzsitecAMmP204xQG+KphRFzJkFZQOYU58b61D1ohownPxWQ sjYA== X-Forwarded-Encrypted: i=1; AJvYcCUP2RE4TTa+yXj248bO3fMDMhfA96xWj5KiG99YLRn2Ow9V7DhrqD8S3nL+DB873wSJtFI1TpHvgvqhTQM=@vger.kernel.org X-Gm-Message-State: AOJu0YzpIlwXrMu/9zxnnr0abmFsu04hdjM1JDwsL+F+6bqDXNoBczA9 hcLUBwvPmqUYPPcQyk5L8oy8jzvX8b0YVhxEpwIrnJxyO2u7AjxzlVphqhYURVBWnvaV6InIvrW Fwg4= X-Gm-Gg: ASbGncs5dXUCWPyK5/VQvwffZarGI72r8RAhl99nKxA1leQLG1JAgoO0O2ZV8BYXbp9 uXJPCxobfNYUyAFdDpkZsjgJY9pMjZWABe7M9a7KkvEp+XqfLbByxWj+S4kQCPbDnoBv5yG7VCH kCGFJeUyB6S6GfHpk3uo4OLGNglxKDKAtzWWxIFyQ8qX9Sh/UPgEzX/uUHfmUXB2QTScVhsKwEa QHGo7hTGsENcEGf/7GSZwXxLTgLAXrM0UcT5pG5VSxJ922Fi+SSjyz6euc72zNV4arYrHWv6Ucx Gzbgo+Hyfpp2W/DZuCPf9swyfdtbBSSYV+RyiclX0YkdL7yvqY7ksdmVG76tU/6pAkApiiXIPbA QzrgGHSom47KIHWEy0NfDuD8Pug== X-Google-Smtp-Source: AGHT+IHP/jNThy5aDvW7T/hvxtEAhADh14D+is1JaPoxECZSvFGKZLcZx8jZje+1dqjf1fDgdS/nDw== X-Received: by 2002:a05:6512:2247:b0:553:2dce:3aab with SMTP id 2adb3069b0e04-55366c301f2mr13260e87.40.1749145985423; Thu, 05 Jun 2025 10:53:05 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:05 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:58 +0000 Subject: [PATCH v2 05/12] media: ipu-bridge: Use v4l2_fwnode for unknown rotations 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: <20250605-uvc-orientation-v2-5-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 The v4l2_fwnode_device_properties contains information about the rotation. Use it if the ssdb data is inconclusive. Signed-off-by: Ricardo Ribalda --- drivers/media/pci/intel/ipu-bridge.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index 020aa52f590d66b6d333adc56ebfb9ab0561db51..6f436a8b4d23373af8a66685303= 33a827eca467a 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -236,37 +236,41 @@ static int ipu_bridge_read_acpi_buffer(struct acpi_de= vice *adev, char *id, } =20 static u32 ipu_bridge_parse_rotation(struct acpi_device *adev, - struct ipu_sensor_ssdb *ssdb) + struct ipu_sensor_ssdb *ssdb, + struct v4l2_fwnode_device_properties *props) { switch (ssdb->degree) { case IPU_SENSOR_ROTATION_NORMAL: return 0; case IPU_SENSOR_ROTATION_INVERTED: return 180; - default: + } + + if (props->rotation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) { dev_warn(ADEV_DEV(adev), "Unknown rotation %d. Assume 0 degree rotation\n", ssdb->degree); return 0; } + + return props->rotation; } =20 -static enum v4l2_fwnode_orientation ipu_bridge_parse_orientation(struct ac= pi_device *adev) +static enum v4l2_fwnode_orientation +ipu_bridge_parse_orientation(struct acpi_device *adev, + struct v4l2_fwnode_device_properties *props) { - struct v4l2_fwnode_device_properties props; - int ret; - - ret =3D v4l2_fwnode_device_parse(ADEV_DEV(adev), &props); - if (!ret || props.rotation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) { + if (props->orientation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) { dev_warn(ADEV_DEV(adev), "Using default orientation\n"); return V4L2_FWNODE_ORIENTATION_EXTERNAL; } =20 - return props.orientation; + return props->orientation; } =20 int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sen= sor) { + struct v4l2_fwnode_device_properties props; struct ipu_sensor_ssdb ssdb =3D {}; int ret; =20 @@ -274,6 +278,10 @@ int ipu_bridge_parse_ssdb(struct acpi_device *adev, st= ruct ipu_sensor *sensor) if (ret) return ret; =20 + ret =3D v4l2_fwnode_device_parse(ADEV_DEV(adev), &props); + if (ret) + return ret; + if (ssdb.vcmtype > ARRAY_SIZE(ipu_vcm_types)) { dev_warn(ADEV_DEV(adev), "Unknown VCM type %d\n", ssdb.vcmtype); ssdb.vcmtype =3D 0; @@ -287,8 +295,8 @@ int ipu_bridge_parse_ssdb(struct acpi_device *adev, str= uct ipu_sensor *sensor) sensor->link =3D ssdb.link; sensor->lanes =3D ssdb.lanes; sensor->mclkspeed =3D ssdb.mclkspeed; - sensor->rotation =3D ipu_bridge_parse_rotation(adev, &ssdb); - sensor->orientation =3D ipu_bridge_parse_orientation(adev); + sensor->rotation =3D ipu_bridge_parse_rotation(adev, &ssdb, &props); + sensor->orientation =3D ipu_bridge_parse_orientation(adev, &props); =20 if (ssdb.vcmtype) sensor->vcm_type =3D ipu_vcm_types[ssdb.vcmtype - 1]; --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.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 BEAA127A935 for ; Thu, 5 Jun 2025 17:53:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145992; cv=none; b=YnKWG6BonaE+QVe9b28jDvxK8ER34VS1NLPwN0zKHyqGxyR7HJbM/EibMRQ3qUSr4FkF0/LkTnYt95eh08ucr5f04Ux08XqDbN4tPh5q3/YcrmCiy5mSelfUoOvUhecBuhvEBpcCdmSXHxS2+oI+u+3l3kTnWC+/tvENweZkwmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145992; c=relaxed/simple; bh=NngJ6Yx0t8C9t8P4XXbFrpgjfgvwAkcfBnBpT4lxGFs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GqBmuMmLpG/paEOLzCB5PqgLIh4XP0Wux5t/1asCgM/OH/4NaozchkK9oAkOpa7HZaKqbAkczAYNbnpvLw1CbBWAA2rJ4GBcOhgI/pD5gDbJfbzZu+NPvakxSdEj6+ebs/nE0l6a1klHazAT67HFGApw3yCahz2tM8n5c+Jue6c= 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=I1VnEq3T; arc=none smtp.client-ip=209.85.167.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="I1VnEq3T" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-551fc6d4a76so1309723e87.0 for ; Thu, 05 Jun 2025 10:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145986; x=1749750786; 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=Ar8+oEy28CepxnVsr2jEiRDXTfDok/weLPLs5Z9kVHA=; b=I1VnEq3T8ddqhvoQ5NQEukgf98kgl7JFV0+hJFR08RpOZNJJecr1c0dpbMFgc2cV05 0qvwE/NiO1qE7Mp+j7Wh7nVnDoL2Ul0nM8dMnVCvPQiR8V5swuaCtKPfusjdb1M3GaMR wlX1GOuM584IpO1TFQgHjYERmMzoyas7NAhKw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145986; x=1749750786; 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=Ar8+oEy28CepxnVsr2jEiRDXTfDok/weLPLs5Z9kVHA=; b=VsA52h+XCQj/sivnYvMaePM5AH2+6uPS78xU7I+2J0uq4HG5jDMyxVBhnPAOic/SeD 3D5NrygJxP5L+X9plBNWlp3voGclzyue0xDSXzPb5W8TdGTsMZw/Z2MPjUmxdIkBZJf1 XGVvYCUm6wNcnGRYkmstopKk+WEG0nMlN8TccZGSfjV7REY3hxZyzGeI7D+K44LvkHXn CsKBOaLd7yIhhn9+B3z3YDbFyJ0SmTabyjyAPVoEANBkIkHIWgce1sN0h2JxjrrWK4O/ WQMiId5LWeHyWg2pzaOg7rcUzBCgvBYzeQQdGZiBkQ9QhvKbAbsTxPXliqIIbEJXbSM1 ZLLA== X-Forwarded-Encrypted: i=1; AJvYcCXi6rjCwlo+DzH8LSliv3tpwlzGidEOPboQ0N8G61MikLrZjnehOivPZzd6vBPBgH+I9tUkhmpdSlGKBlY=@vger.kernel.org X-Gm-Message-State: AOJu0YzPJryzX9wgpALNUmhc6gf48+114qQn+0ouKpIaDIK0uBfooQJG 1xdOQXKRmculBPUe4WfRVBNXH4A9NvlSs48EM5xBNu4TxI8pJGFv4papbjMg+JSSqv4MdqnNQsd Rs9E= X-Gm-Gg: ASbGnct9JDYgD6KGW6xQkC94mqX/pAqYDi+cUTKQ+QC1Kra32lXWDGMofv5LOeapfI4 syWTmoKqy3nAAf5yUumPDd/9kefw4kvRFvKljerJfK3BRXn6BqDgMsRx1ScPKxlNOqqKcY6PssU 8ul6dbwdXeQUZhU7lqqdztZNgikjHxg8a85mBvtKs0GW0cgpKN3hGaVYLCXx4Y4H/ZQKEUi0c3w 7DQ7NEcp6XCa/qlRHC6c4bHRQqB+agkL5QLaodAXO5D30HP2uaPcuQ7KtLlHHvv52XGvvEI/KMs V6qGlDcw9YV7gL46TQHAlki0NzApJNS4sIJAqa7LgIrLNj9YopOixniANsxHBFogQIbVvjwogbr n2KdGsUXtmeV2wJtz8SD5SfQ3wn/y7vLGPxKr X-Google-Smtp-Source: AGHT+IGuo9eAuj3/ZulUgVYVuEINR6TV4aJnWcXikBTGTDNlZ8YqpVl3rERmqVeHdcMBB1locGc5IA== X-Received: by 2002:a05:6512:2242:b0:553:3892:5ec3 with SMTP id 2adb3069b0e04-55366c354f4mr16249e87.46.1749145985864; Thu, 05 Jun 2025 10:53:05 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:05 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:52:59 +0000 Subject: [PATCH v2 06/12] dt-bindings: usb: usb-device: Add orientation and rotation 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: <20250605-uvc-orientation-v2-6-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 For some devices, such as cameras, the OS needs to know where they are mounted. ACPI has a property for this purpose, which is parsed by acpi_get_physical_device_location(): https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/06_Device_Configuration/Devic= e_Configuration.html#pld-physical-location-of-device In DT we have similar properties for video-interface-devices called orientation and rotation: Documentation/devicetree/bindings/media/video-interface-devices.yaml Add rotation and orientation for usb-devices that matches the already existing properties of video-interface-devices. Signed-off-by: Ricardo Ribalda --- Documentation/devicetree/bindings/usb/usb-device.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/usb-device.yaml b/Docume= ntation/devicetree/bindings/usb/usb-device.yaml index c676956810331b81f11f3624340fc3e612c98315..a44eb24c657993f88145377a470= 6ec419b6cd998 100644 --- a/Documentation/devicetree/bindings/usb/usb-device.yaml +++ b/Documentation/devicetree/bindings/usb/usb-device.yaml @@ -44,6 +44,14 @@ properties: - minimum: 1 maximum: 255 =20 + orientation: + description: If present, specifies the orientation of the usb device. + $ref: /schemas/media/video-interface-devices.yaml#/properties/orientat= ion + + rotation: + description: If present, specifies the rotation of the usb device. + $ref: /schemas/media/video-interface-devices.yaml#/properties/rotation + "#address-cells": description: should be 1 for hub nodes with device nodes, should be 2 for device nodes with interface nodes. @@ -103,6 +111,8 @@ examples: device@2 { compatible =3D "usb123,4567"; reg =3D <2>; + orientation =3D <0>; + rotation =3D <90>; }; =20 device@3 { --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 7583927AC5C for ; Thu, 5 Jun 2025 17:53:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145992; cv=none; b=E7potGKmvGUNsDp5Q+eUaeHcOEmhZnBq0q7d1KyijrU0RjtjXQKHwcsttScQokMklvlbMDBoJppVz5Fse+pJtOlkAHCxuP2942RuvJciQ+kgZVq6gFTmORMvwcxgoIOCPzwKZLIADmhPnHsZiCV0XEmvQ8TuEriqWF2aNyJTHPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145992; c=relaxed/simple; bh=1ZgSjQTaGaaFH/a8mMoBM5PvRpGKxv9Y52j0p6HXpHM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dyTc9vTV407MId8knaTC495ePRuP3zHoDQteWufeWi6y4jBfL+TNOiiiQTSQZjm6nCW7btD3xG2+lRnaP+SDIQT5O0Ouza11ghcXmlJsH74L96qbASqTQ/aSJoWPIWL0qSEWT9eqNeVL/jYnq/IRNllJ8mv81c1g4ADOCsDhDFc= 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=aCh43tO+; arc=none smtp.client-ip=209.85.167.52 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="aCh43tO+" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5533302b49bso1384825e87.2 for ; Thu, 05 Jun 2025 10:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145986; x=1749750786; 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=ITiETVL4DPlwiitJN8fQTR1CuO5aBFmT5UfjWJScKqs=; b=aCh43tO+ZuTamS1hd+2y1nDBrpy0Zw3gcRNZy0qbqIUkvLlXaM5nfyQiodfAYNqr22 ALAg9iirpfeN+hRSB8RsY0joZc6hYDKzTp7kCqVEDJyAihjnnLhY0WJX/3v4VOPVdnfp gqoxtNoQqZ04fbfzYd5uWUCiyXGM1IQGS1n0o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145986; x=1749750786; 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=ITiETVL4DPlwiitJN8fQTR1CuO5aBFmT5UfjWJScKqs=; b=YEJzvq7RzfQSMXNFE9sxDCm37q5oAKk5H9TGekBe0JZpvL83rDPyrnTfl4YFidlGCL ejGzcJ2dmNDSSuiOb4jGYlmUQ8z+QxB17f4u7GTF173cfTsx54ZA7TSyxY04wJZN0xsI N1crsg5mw+x3nZwHubtWTq/IykhMEv2m8u6Sair7SsBdBRru7l4NkQtmp5JdrWkDx8Fa N6c+nigQbpjjWFBeTf7UvqUr7CxyV2O4f1ufht+M7tqrzkNuAkMS8dKlQvRBlo/DCWRj eWgnt87mCLJJ9YLhWc/mslvJ4KQK3EzD49A7kQ1SnEJcLks8mghNa494R1tLSiz/iIEj u59Q== X-Forwarded-Encrypted: i=1; AJvYcCV2q4u2iSzFXwGNwiyRNwJ7jAWQ2yw6YQ44uo8Q5uKDCOiI0WsDFycE/59k2xV9DXIw0g3jxZNkc14otAk=@vger.kernel.org X-Gm-Message-State: AOJu0YwMN6MiTag2IOuudFyxNiw7a5x+pChLIvg7Jz/wSgBlRcJ23ob6 3alq/14QRi3ES9OnCBkDCiFUtoDhJCVgn9H8aWlRW03nHPN0xjiAa661ih0DcgnlMM7QFbo7CQx IXsI= X-Gm-Gg: ASbGncuDwX1UQsmDS7jGFND3d4VqUf/ZOTZBQeft8CFU3xftTC4aSXxH5JDdN6yAEo6 heC5x0Qpt/N0WJ4F/14zMn9JzmnZJvfVGGUgtP911vJIu0z+RIwxmnTXXeUvLcxf+CBHnL0hhVR P6moyeiIXlaXOSDaRwn6geyRnGPlDtR27Pnl8AN498v0soXee0yTgGNmUjyF0Wgb1KML5JGBjGm mogmxpSmuT7hxiKXtWOut/W9nMut/NMjZTDioyD4fed9nwUxGb6wAJGIyiuKVw48vx9M0b265IH 4oldjhUWC4HGZAjqecvvdDdEeHIsW7VfkdqD71YxA2UhCo+Pbg7CNAjPGyaPVkdX/ug1hvFADVF xIephjaRXqdge6s9TuGdlj0B+og== X-Google-Smtp-Source: AGHT+IF1UcMtPah0m8jT6Ln6JdgWvGYN1lsGuqlL6zma9QAAKsKScIhOqpWLrtFSd+pn1Q20FL2yNg== X-Received: by 2002:a05:6512:10d4:b0:553:2e4a:bb58 with SMTP id 2adb3069b0e04-55366bdcb99mr25796e87.9.1749145986344; Thu, 05 Jun 2025 10:53:06 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:06 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:00 +0000 Subject: [PATCH v2 07/12] media: uvcvideo: Make uvc_alloc_entity non static 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: <20250605-uvc-orientation-v2-7-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 The function is useful for other compilation units. This is just a refactor patch, no new functionality is added. Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede Reviewed-by: Laurent Pinchart --- drivers/media/usb/uvc/uvc_driver.c | 4 ++-- drivers/media/usb/uvc/uvcvideo.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index da24a655ab68cc0957762f2b67387677c22224d1..bcc97f71fa1703aea1119469fb3= 2659c17d9409a 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -792,8 +792,8 @@ static const u8 uvc_media_transport_input_guid[16] =3D UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT; static const u8 uvc_processing_guid[16] =3D UVC_GUID_UVC_PROCESSING; =20 -static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id, - unsigned int num_pads, unsigned int extra_size) +struct uvc_entity *uvc_alloc_entity(u16 type, u16 id, unsigned int num_pad= s, + unsigned int extra_size) { struct uvc_entity *entity; unsigned int num_inputs; diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index b9f8eb62ba1d82ea7788cf6c10cc838a429dbc9e..dc23d8a97340dc4615d4182232d= 395106e6d9ed5 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -684,6 +684,8 @@ do { \ */ =20 struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id); +struct uvc_entity *uvc_alloc_entity(u16 type, u16 id, unsigned int num_pad= s, + unsigned int extra_size); =20 /* Video buffers queue management. */ int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type); --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 D9B5D27AC45 for ; Thu, 5 Jun 2025 17:53:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145993; cv=none; b=VkDBWtEteRax+rjXV8+/e0cuLGzzFdisFlrtbK0aa/irF3HwbqPLn+SMvDK9QEDtLLEmEkOA4w/R5ix0rm+FcraLlBF/aPXJOgIwuW1TAx1hPn5e8D3g4o2IIqhmUTpuLFz2KW0t0q/pGYxFkOUw4xeiK+eVRl6S8bkY2FRV9x4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145993; c=relaxed/simple; bh=PckKnFSxOg9GYZ2RgDdQ7TbT8exqy29AY7cJP+o5vh8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OSsjep6y7Fyy4z96jUsmlk4IsErgiC30VY+FTVVws5+nB184ZFKuIMx2MZmkmQpneFtA327Kl7X6iMphpwsiIDbuK86ooTpe+VhS+a5zAS/P202xwvO+7T3iLXm0zOMQVuvN/5EXUDPB8i1BgFQZf8qZUS6nJp8q512g3hF/4Iw= 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=AXZKedNF; arc=none smtp.client-ip=209.85.167.53 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="AXZKedNF" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-55324e35f49so1352527e87.3 for ; Thu, 05 Jun 2025 10:53:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145987; x=1749750787; 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=j6tUr6JaXE+CWPBqDdD3JjkYCAuszK1ZF5ibIukQa9c=; b=AXZKedNF/G3j/7ahIQ3xMkuJHynm3huVck4ebXW2msBXnWHZ4y6l5Z4Q6jX5MBCD5w JMhm0d1C2F3mOOY5JC7R7OklPZY/zSa/oRO7AudWwFW5pDBZDGucJIk8c+V+Lxtc/itz iX4Qftq/xbpEErzOlFl3CllZsBCuL1DN1Hacw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145987; x=1749750787; 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=j6tUr6JaXE+CWPBqDdD3JjkYCAuszK1ZF5ibIukQa9c=; b=efRVFX7uKv4INv7dAaHDB7hBVhMe25/E2Da7wlB/Mk8NLjY0e0oMqbNhWtwWAD4dDe ZdegvE/IXjkQaWIFCvZ+sxj7hS82qVN1MePG264o6HMHN0H/mUgebdehePkxoL/Kv0wX 5/JytdsuCpb63bxTqxQ+mWgOm8enf7kn0b1WtF0o01q2WLkoRtgvk6VqOSwobXtrKsgg WfAW5GRcQKLNaHKn3tRuTt/YHYkZvIu+pxpYjMIMDlWAEvs6IR072eXY1h0DnEKQ+Qdc 2Qm1fqeCeXhhi9X/Zt2ZZY0NBibAq32ftoHBwmP8Tp1gldNPDlsh0G5MpJU+W/z5j27V L77w== X-Forwarded-Encrypted: i=1; AJvYcCXSr0aZuI58aBAyFPnmRjTzF18MiAP8lsbI0LW9gPzFm5e6MlS00OM5K+3jotzAisr1rIiVsZXyFAY7o/I=@vger.kernel.org X-Gm-Message-State: AOJu0Yz//o1+3gpijPGoYZLzk/dfSJsODWEHzSauvU3rqagT4ba1I12W 7M9mXdP11uYMmhvSTAJa3SLoQLgYueDLkZu/mxiSB0VPpmkX5PyY2gm/YstD5ATyaVBwgygRGjv Mzgs= X-Gm-Gg: ASbGncsQrl0oUn6ycx+sgUtzUM18FBMKgSz0NgzkrQoJs67ZSNYOIb6aCfn7tav1Svp r/Nmy1gv4i0H0IO+2FOpatG7mlLprF3e3sP5xg7Nc6OlnO+JZknsXKmeuWvQqDlEjRT7sGZy52u p5cuHa30TyP783Bm+KgJfHZzPPkKgVyZXjeOfPcI0/UXyA325m/3UOg4hQyaLrHg0PePLvTzjp+ ITTaifCpJGkRGM36MEbH0CvzTV5UUnB9QbaNUFLsZV0tbmWjNxNDjEROHfad1yrX6UFlg00eTLS FTVuOWyI79VPsh6Zpua7nWYJ4BUeIX6AXctNYf5pZlmIc2aXhuRwiz5IUOoZ4Hn6J5PnPymaEvh hhVc9TKWIZeThTQibgQ7pmzS9Ew== X-Google-Smtp-Source: AGHT+IE78QhzN066PWs7vNhzkflF4XTGNMukn6K/7Yeg2fkW1EQLVSK/ScBTu0hitshAPAesP+ysdA== X-Received: by 2002:a05:6512:31d0:b0:553:23c4:6825 with SMTP id 2adb3069b0e04-55366bf07a4mr19063e87.19.1749145986843; Thu, 05 Jun 2025 10:53:06 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:06 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:01 +0000 Subject: [PATCH v2 08/12] media: uvcvideo: Add support for V4L2_CID_CAMERA_ORIENTATION 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: <20250605-uvc-orientation-v2-8-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Fetch the orientation from the fwnode and map it into a control. The uvc driver does not use the media controller, so we need to create a virtual entity, like we previously did with the external gpio. We do not re-purpose the external gpio entity because its is planned to remove it. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/Makefile | 3 +- drivers/media/usb/uvc/uvc_ctrl.c | 21 +++++++++++ drivers/media/usb/uvc/uvc_driver.c | 14 +++++-- drivers/media/usb/uvc/uvc_entity.c | 1 + drivers/media/usb/uvc/uvc_swentity.c | 73 ++++++++++++++++++++++++++++++++= ++++ drivers/media/usb/uvc/uvcvideo.h | 14 +++++++ include/linux/usb/uvc.h | 3 ++ 7 files changed, 125 insertions(+), 4 deletions(-) diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile index 4f9eee4f81ab6436a8b90324a688a149b2c3bcd1..b4398177c4bb0a9bd49dfd4ca7f= 2e933b4a1d7df 100644 --- a/drivers/media/usb/uvc/Makefile +++ b/drivers/media/usb/uvc/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 uvcvideo-objs :=3D uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ct= rl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o uvc_metadata.o + uvc_status.o uvc_isight.o uvc_debugfs.o uvc_metadata.o \ + uvc_swentity.o ifeq ($(CONFIG_MEDIA_CONTROLLER),y) uvcvideo-objs +=3D uvc_entity.o endif diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 47e8ccc39234d1769384b55539a21df07f3d57c7..b2768080c08aafa85acb9b7f318= 672c043d84e55 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -376,6 +376,13 @@ static const struct uvc_control_info uvc_ctrls[] =3D { | UVC_CTRL_FLAG_GET_DEF | UVC_CTRL_FLAG_AUTO_UPDATE, }, + { + .entity =3D UVC_GUID_SWENTITY, + .selector =3D 0, + .index =3D 0, + .size =3D 1, + .flags =3D UVC_CTRL_FLAG_GET_CUR, + }, }; =20 static const u32 uvc_control_classes[] =3D { @@ -975,6 +982,17 @@ static const struct uvc_control_mapping uvc_ctrl_mappi= ngs[] =3D { .data_type =3D UVC_CTRL_DATA_TYPE_BITMASK, .name =3D "Region of Interest Auto Ctrls", }, + { + .id =3D V4L2_CID_CAMERA_ORIENTATION, + .entity =3D UVC_GUID_SWENTITY, + .selector =3D 0, + .size =3D 8, + .offset =3D 0, + .v4l2_type =3D V4L2_CTRL_TYPE_MENU, + .data_type =3D UVC_CTRL_DATA_TYPE_ENUM, + .menu_mask =3D GENMASK(V4L2_CAMERA_ORIENTATION_EXTERNAL, + V4L2_CAMERA_ORIENTATION_FRONT), + }, }; =20 /* ------------------------------------------------------------------------ @@ -3210,6 +3228,9 @@ static int uvc_ctrl_init_chain(struct uvc_video_chain= *chain) } else if (UVC_ENTITY_TYPE(entity) =3D=3D UVC_EXT_GPIO_UNIT) { bmControls =3D entity->gpio.bmControls; bControlSize =3D entity->gpio.bControlSize; + } else if (UVC_ENTITY_TYPE(entity) =3D=3D UVC_SWENTITY_UNIT) { + bmControls =3D entity->swentity.bmControls; + bControlSize =3D entity->swentity.bControlSize; } =20 /* Remove bogus/blacklisted controls */ diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index bcc97f71fa1703aea1119469fb32659c17d9409a..96eeb3aee546487d15f3c30dfe1= 775189ddf7e47 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1869,11 +1869,15 @@ static int uvc_scan_device(struct uvc_device *dev) return -1; } =20 - /* Add GPIO entity to the first chain. */ - if (dev->gpio_unit) { + /* Add virtual entities to the first chain. */ + if (dev->gpio_unit || dev->swentity_unit) { chain =3D list_first_entry(&dev->chains, struct uvc_video_chain, list); - list_add_tail(&dev->gpio_unit->chain, &chain->entities); + if (dev->gpio_unit) + list_add_tail(&dev->gpio_unit->chain, &chain->entities); + if (dev->swentity_unit) + list_add_tail(&dev->swentity_unit->chain, + &chain->entities); } =20 return 0; @@ -2249,6 +2253,10 @@ static int uvc_probe(struct usb_interface *intf, if (ret < 0) goto error; =20 + ret =3D uvc_swentity_init(dev); + if (ret < 0) + goto error; + dev_info(&dev->udev->dev, "Found UVC %u.%02x device %s (%04x:%04x)\n", dev->uvc_version >> 8, dev->uvc_version & 0xff, udev->product ? udev->product : "", diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc= _entity.c index cc68dd24eb42dce5b2846ca52a8dfa499c8aed96..d1a652ef35ec34801bd39a5124b= 834edf838a79e 100644 --- a/drivers/media/usb/uvc/uvc_entity.c +++ b/drivers/media/usb/uvc/uvc_entity.c @@ -106,6 +106,7 @@ static int uvc_mc_init_entity(struct uvc_video_chain *c= hain, case UVC_OTT_MEDIA_TRANSPORT_OUTPUT: case UVC_EXTERNAL_VENDOR_SPECIFIC: case UVC_EXT_GPIO_UNIT: + case UVC_SWENTITY_UNIT: default: function =3D MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN; break; diff --git a/drivers/media/usb/uvc/uvc_swentity.c b/drivers/media/usb/uvc/u= vc_swentity.c new file mode 100644 index 0000000000000000000000000000000000000000..702a2c26e029a0655dade177ed2= a9b88d7a4136d --- /dev/null +++ b/drivers/media/usb/uvc/uvc_swentity.c @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * uvc_swentity.c -- USB Video Class driver + * + * Copyright 2025 Google LLC + */ + +#include +#include +#include +#include "uvcvideo.h" + +static int uvc_swentity_get_cur(struct uvc_device *dev, struct uvc_entity = *entity, + u8 cs, void *data, u16 size) +{ + if (size < 1) + return -EINVAL; + + switch (entity->swentity.props.orientation) { + case V4L2_FWNODE_ORIENTATION_FRONT: + *(u8 *)data =3D V4L2_CAMERA_ORIENTATION_FRONT; + break; + case V4L2_FWNODE_ORIENTATION_BACK: + *(u8 *)data =3D V4L2_CAMERA_ORIENTATION_BACK; + break; + default: + *(u8 *)data =3D V4L2_CAMERA_ORIENTATION_EXTERNAL; + } + + return 0; +} + +static int uvc_swentity_get_info(struct uvc_device *dev, + struct uvc_entity *entity, u8 cs, u8 *caps) +{ + *caps =3D UVC_CONTROL_CAP_GET; + return 0; +} + +int uvc_swentity_init(struct uvc_device *dev) +{ + static const u8 uvc_swentity_guid[] =3D UVC_GUID_SWENTITY; + struct v4l2_fwnode_device_properties props; + struct uvc_entity *unit; + int ret; + + ret =3D v4l2_fwnode_device_parse(&dev->udev->dev, &props); + if (ret) + return dev_err_probe(&dev->intf->dev, ret, + "Can't parse fwnode\n"); + + if (props.orientation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) + return 0; + + unit =3D uvc_alloc_entity(UVC_SWENTITY_UNIT, UVC_SWENTITY_UNIT_ID, 0, 1); + if (!unit) + return -ENOMEM; + + memcpy(unit->guid, uvc_swentity_guid, sizeof(unit->guid)); + unit->swentity.props =3D props; + unit->swentity.bControlSize =3D 1; + unit->swentity.bmControls =3D (u8 *)unit + sizeof(*unit); + unit->swentity.bmControls[0] =3D 1; + unit->get_cur =3D uvc_swentity_get_cur; + unit->get_info =3D uvc_swentity_get_info; + strscpy(unit->name, "SWENTITY", sizeof(unit->name)); + + list_add_tail(&unit->list, &dev->entities); + + dev->swentity_unit =3D unit; + + return 0; +} diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index dc23d8a97340dc4615d4182232d395106e6d9ed5..a931750bdea25b9062dcc7644bf= 5f2ed89c1cb4c 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -19,6 +19,7 @@ #include #include #include +#include =20 /* -----------------------------------------------------------------------= --- * UVC constants @@ -41,6 +42,9 @@ #define UVC_EXT_GPIO_UNIT 0x7ffe #define UVC_EXT_GPIO_UNIT_ID 0x100 =20 +#define UVC_SWENTITY_UNIT 0x7ffd +#define UVC_SWENTITY_UNIT_ID 0x101 + /* ------------------------------------------------------------------------ * Driver specific constants. */ @@ -242,6 +246,12 @@ struct uvc_entity { int irq; bool initialized; } gpio; + + struct { + u8 bControlSize; + u8 *bmControls; + struct v4l2_fwnode_device_properties props; + } swentity; }; =20 u8 bNrInPins; @@ -617,6 +627,7 @@ struct uvc_device { } async_ctrl; =20 struct uvc_entity *gpio_unit; + struct uvc_entity *swentity_unit; }; =20 enum uvc_handle_state { @@ -836,4 +847,7 @@ void uvc_debugfs_cleanup_stream(struct uvc_streaming *s= tream); size_t uvc_video_stats_dump(struct uvc_streaming *stream, char *buf, size_t size); =20 +/* swentity */ +int uvc_swentity_init(struct uvc_device *dev); + #endif diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h index bce95153e5a65613a710d7316fc17cf5462b5bce..88a23e8919d1294da4308e0e3ca= 0eccdc66a318f 100644 --- a/include/linux/usb/uvc.h +++ b/include/linux/usb/uvc.h @@ -29,6 +29,9 @@ #define UVC_GUID_EXT_GPIO_CONTROLLER \ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03} +#define UVC_GUID_SWENTITY \ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04} =20 #define UVC_GUID_FORMAT_MJPEG \ { 'M', 'J', 'P', 'G', 0x00, 0x00, 0x10, 0x00, \ --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (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 D29A327C863 for ; Thu, 5 Jun 2025 17:53:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145995; cv=none; b=lm79S6r3fk/wTOLczrPaxWc5j5YeIC9wQl09HlADxCn9vSO7dFMVuX0sWHd+72DnOdpQiDpfvFaYflec7uFJ2g2qJ4IeiLPhvNk4qK44LtTgsgwEhTpLIKiTLVTeCa+Qs1iMWg82grhjACltS8Ef01opMioJ7y2NcsMvmJLe67g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145995; c=relaxed/simple; bh=egMOMDJhHu8VwnbxMN9Mymsv63L3oycTPM3I/mDsNRQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DIN0GdcKHkukCX32WOq+zl0lJUtif/ri0rDeJPIHTohLpc6iqjR3H8vX2J+qrNDyAVowolu+KMwwRWtq7agUDE6NH+07s9BTmpfKJTyWA6U3lPG4/KrGxrPz/eWIfOM9teCs6uhmOV3mm8HJvHORnbYQ/fAZYw8x3exMq06RwXY= 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=UHkseJYV; arc=none smtp.client-ip=209.85.167.44 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="UHkseJYV" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-54e7967cf67so1434686e87.0 for ; Thu, 05 Jun 2025 10:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145988; x=1749750788; 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=UY1nemN8kbEMaW5aIDSm45n0IYZoWUHM/pKH/2rX0uY=; b=UHkseJYVy0u4EXsL85LuqmIPeTdak5S6hH4bKS9NqW45rauBziI1Q7eqUM+LWi/cUP zZxt3wnmQG9ZUGAKjoDPl7+/b2PSH4y3wxMcAF9o8/V6aidM8oktpvDWRvgQ0ojYF1je dCcgRcaK4tQ4We6Ob8hRi9kFe2LG3fBkdoyZA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145988; x=1749750788; 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=UY1nemN8kbEMaW5aIDSm45n0IYZoWUHM/pKH/2rX0uY=; b=gBMvXFPFVAKniM362uviZIsGNCxb9JQVjUQ+hgxJCPHZmwuhS2KWqhUh2WCsH+1Vdd sNeT5nLH+BdgjVJK1JPkgb8vPm01tA08aqlfuVvj1r44uVcNYL4wZEgN8FyJLoucOQVJ 5yY4J4vLjVN8v57VSWQOI9D/mLSD82Ou2kb00hHmPmo7FsRU5emhqZjCECvpfiOn9wWw UunGuouGyVqzU2YzQ52NJ4Jz/z7nXWGLXMD/P/ys+MlV4VS+Q3Cnk89ptQxN6AVzRveZ CPBpdYGmT17WHsTBtUjtUutIqUNv4LtTz+H8941j+NjqEVkrwlbVxipV9B8G8qX8PIl2 guaA== X-Forwarded-Encrypted: i=1; AJvYcCXb9/lM4+PaHf4+Msf+G0Mf3Rk6YgMvMUN307jqCXwCrnGv2J0c0dS5vgtBCkjJ6OjB+TXUV6dI5s6Z4KE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxd2pCGu22jaszrGefCoAKQMPR+2LgFdIjk19bqzR3x9sHnzmss GxmLgsejzJ02NJXtAG//t45/xQvy9UbXmgp+DiS6K5d0JELn1imJMpG8xHOa88PhXKXluEQvJdG Z6yA= X-Gm-Gg: ASbGncuaFpAxy0noV/GAmApoUonh6FUz0YA8VzGrge28qbGWV4gGc/vdOND3ubEGoQ0 ZkQa4nj0Nk23COuPqvQZWr3Zixm3miNDh+epiQDMc9GR35tWKsLTdL5piZ9Dn9wvVAZrBWxZy5U AE7S99bF/RXEFpzk1KTBaxP1gUuzf3UlrHg14XhmMg5wg+4JvEd/bleFUb0g8TV0TyVgNnq/Od4 +dIm0hAAV7mbe0mo2PMg9Gq9sQjsArBy3fooWnDW46wQM2l/nHoqUQmrKuWxwpQJ89f4BIqKiiQ 8ufaGrjVJ/V1eEQjanoNn7y5+fHXrje7gKT0UIctTA4d2sseQSfR8AzVHJfMuExHnQ+76bjcYtn oTAGUJcvG/glzD9rILw94mn6Efg== X-Google-Smtp-Source: AGHT+IEnD7AFEZckYuKmwsfHwGsLYjywTkpmWOaoTd6kF/ELxj955HQ/ZSBaFJSZRs3aRwI14ePC2g== X-Received: by 2002:a05:6512:10d5:b0:553:25f4:695a with SMTP id 2adb3069b0e04-55366bdf719mr23052e87.22.1749145987747; Thu, 05 Jun 2025 10:53:07 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:07 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:02 +0000 Subject: [PATCH v2 09/12] media: uvcvideo: Add uvc_ctrl_query_entity helper 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: <20250605-uvc-orientation-v2-9-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Create a helper function to query a control. The new function reduces the number of arguments, calculates the length of the operation and redirects the operation to the hardware or to the entity private functions. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_ctrl.c | 81 ++++++++++++++++++++----------------= ---- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index b2768080c08aafa85acb9b7f318672c043d84e55..21ec7b978bc7aca21db7cb8fd5d= 135d876f3330c 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -576,6 +576,34 @@ static const struct uvc_control_mapping uvc_ctrl_power= _line_mapping_uvc15 =3D { V4L2_CID_POWER_LINE_FREQUENCY_DISABLED), }; =20 +static int uvc_ctrl_query_entity(struct uvc_device *dev, + const struct uvc_control *ctrl, u8 query, + void *data) +{ + u16 len; + + switch (query) { + case UVC_GET_INFO: + len =3D 1; + break; + case UVC_GET_LEN: + len =3D 2; + break; + default: + len =3D ctrl->info.size; + } + + if (query =3D=3D UVC_GET_CUR && ctrl->entity->get_cur) + return ctrl->entity->get_cur(dev, ctrl->entity, + ctrl->info.selector, data, len); + if (query =3D=3D UVC_GET_INFO && ctrl->entity->get_info) + return ctrl->entity->get_info(dev, ctrl->entity, + ctrl->info.selector, data); + + return uvc_query_ctrl(dev, query, ctrl->entity->id, dev->intfnum, + ctrl->info.selector, data, len); +} + static const struct uvc_control_mapping *uvc_ctrl_filter_plf_mapping( struct uvc_video_chain *chain, struct uvc_control *ctrl) { @@ -1222,35 +1250,27 @@ static int uvc_ctrl_populate_cache(struct uvc_video= _chain *chain, int ret; =20 if (ctrl->info.flags & UVC_CTRL_FLAG_GET_DEF) { - ret =3D uvc_query_ctrl(chain->dev, UVC_GET_DEF, ctrl->entity->id, - chain->dev->intfnum, ctrl->info.selector, - uvc_ctrl_data(ctrl, UVC_CTRL_DATA_DEF), - ctrl->info.size); + ret =3D uvc_ctrl_query_entity(chain->dev, ctrl, UVC_GET_DEF, + uvc_ctrl_data(ctrl, UVC_CTRL_DATA_DEF)); if (ret < 0) return ret; } =20 if (ctrl->info.flags & UVC_CTRL_FLAG_GET_MIN) { - ret =3D uvc_query_ctrl(chain->dev, UVC_GET_MIN, ctrl->entity->id, - chain->dev->intfnum, ctrl->info.selector, - uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MIN), - ctrl->info.size); + ret =3D uvc_ctrl_query_entity(chain->dev, ctrl, UVC_GET_MIN, + uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MIN)); if (ret < 0) return ret; } if (ctrl->info.flags & UVC_CTRL_FLAG_GET_MAX) { - ret =3D uvc_query_ctrl(chain->dev, UVC_GET_MAX, ctrl->entity->id, - chain->dev->intfnum, ctrl->info.selector, - uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MAX), - ctrl->info.size); + ret =3D uvc_ctrl_query_entity(chain->dev, ctrl, UVC_GET_MAX, + uvc_ctrl_data(ctrl, UVC_CTRL_DATA_MAX)); if (ret < 0) return ret; } if (ctrl->info.flags & UVC_CTRL_FLAG_GET_RES) { - ret =3D uvc_query_ctrl(chain->dev, UVC_GET_RES, ctrl->entity->id, - chain->dev->intfnum, ctrl->info.selector, - uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES), - ctrl->info.size); + ret =3D uvc_ctrl_query_entity(chain->dev, ctrl, UVC_GET_RES, + uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES)); if (ret < 0) { if (UVC_ENTITY_TYPE(ctrl->entity) !=3D UVC_VC_EXTENSION_UNIT) @@ -1291,16 +1311,7 @@ static int __uvc_ctrl_load_cur(struct uvc_video_chai= n *chain, return 0; } =20 - if (ctrl->entity->get_cur) - ret =3D ctrl->entity->get_cur(chain->dev, ctrl->entity, - ctrl->info.selector, data, - ctrl->info.size); - else - ret =3D uvc_query_ctrl(chain->dev, UVC_GET_CUR, - ctrl->entity->id, chain->dev->intfnum, - ctrl->info.selector, data, - ctrl->info.size); - + ret =3D uvc_ctrl_query_entity(chain->dev, ctrl, UVC_GET_CUR, data); if (ret < 0) return ret; =20 @@ -2164,11 +2175,8 @@ static int uvc_ctrl_commit_entity(struct uvc_device = *dev, continue; =20 if (!rollback) - ret =3D uvc_query_ctrl(dev, UVC_SET_CUR, ctrl->entity->id, - dev->intfnum, ctrl->info.selector, - uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), - ctrl->info.size); - + ret =3D uvc_ctrl_query_entity(dev, ctrl, UVC_SET_CUR, + uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT)); if (!ret) processed_ctrls++; =20 @@ -2570,13 +2578,7 @@ static int uvc_ctrl_get_flags(struct uvc_device *dev, if (data =3D=3D NULL) return -ENOMEM; =20 - if (ctrl->entity->get_info) - ret =3D ctrl->entity->get_info(dev, ctrl->entity, - ctrl->info.selector, data); - else - ret =3D uvc_query_ctrl(dev, UVC_GET_INFO, ctrl->entity->id, - dev->intfnum, info->selector, data, 1); - + ret =3D uvc_ctrl_query_entity(dev, ctrl, UVC_GET_INFO, data); if (!ret) { info->flags &=3D ~(UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_SET_CUR | @@ -2654,8 +2656,7 @@ static int uvc_ctrl_fill_xu_info(struct uvc_device *d= ev, info->selector =3D ctrl->index + 1; =20 /* Query and verify the control length (GET_LEN) */ - ret =3D uvc_query_ctrl(dev, UVC_GET_LEN, ctrl->entity->id, dev->intfnum, - info->selector, data, 2); + ret =3D uvc_ctrl_query_entity(dev, ctrl, UVC_GET_LEN, data); if (ret < 0) { uvc_dbg(dev, CONTROL, "GET_LEN failed on control %pUl/%u (%d)\n", --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (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 D372927C875 for ; Thu, 5 Jun 2025 17:53:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145995; cv=none; b=Mralw1IzksJ8P1XVyrm3O1SoDQV4pSNT4pJhvgSe1bMvEM8ekgVjz1QJ0nT2Wt6CGHo79XDHrrDrm+roqapMPMZecFjMRnnDKEiqQpMgpnRvmN10OoaAqI9R4P1bw4hQhFmv6KmeX3suutaT+xrRI59CPW0Gb4hv9pdnFklftE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145995; c=relaxed/simple; bh=R4NuKjk4LUn+NcJI1dWp1KbkF6gjPs2+DtnjDwx4z/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hiVlqEWzmfUsdABi4uypzBosWFzayBMybQpDay0BoMGitkMrsysxQwKHCSdUun9j0W75kxdwJ4uofL9nxbcG1e1ltvwBnml0+1kjdiRdhw+x7IcxdVGedCWDGvyGq8L+N068AElZRMGmu3epwaHrUgo6c6z9eQax/LqeG8220KQ= 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=V+0C9v+d; arc=none smtp.client-ip=209.85.167.43 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="V+0C9v+d" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-5535e35b059so1205524e87.1 for ; Thu, 05 Jun 2025 10:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145988; x=1749750788; 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=IKykJ86GJEjKAZ51EtUiBvhJS0VRnpbfEH3e5dzBR4w=; b=V+0C9v+d+sPzo+NIIu+xX4SgvhbNXZT1rIU/lO+otk7ArMDYMkCKVfP/HyVr7Gv7g2 XgyTjdgtyNzyK8o98HyCCx7QsCFysvih4WgTvrcoVgdg2gXBC6HxPmrIL7x35V4oByyB Zw5erXMKN13T3/kcFHyctTALxIvFQWaJtsGdU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145988; x=1749750788; 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=IKykJ86GJEjKAZ51EtUiBvhJS0VRnpbfEH3e5dzBR4w=; b=wz5HVMNBKF6cPub/9KkJVDU1bWblm1QlH3S0EDWNL8AMLEyrmd3X70o/FRdmhj0acl xexn/of2/zB6A5qvIzgI0XEKgETeFmGCz8qw+b7y3ZMJgLS3+ijK7lOJooLzlgvR7eSm NVB2f5+lih52vuk3GysuBnAIAmGWg30yOFII7fLTdE262NJJyM0iodmn0YXr9Q19X4Ce wG80JaQUaqwoQ5NoySHVXEovvGluD2rP4BdhxaEJHupIf0/kx8fDzVHve5j2GFtMemXO yJ7VLTXfaPxxPtr8E+2wPsWaLxhTA2DdGAbQNTFWVbm+MWJc/35GbeOWt4OO/iwOqYQU nmaw== X-Forwarded-Encrypted: i=1; AJvYcCXcLGbvSUD4sLtPHTEQUVfV1toCeOvZMnOT7azbeu3Xdd/ZBbAdBUulSX1fY9SvOrgF89Osfi+czet1xIM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzl/sk5FJbgbOKDnf6IB8ly1AbT8ByR7SpaUsrXyItKv1KZwC9I cLQKDTStyqvKIht8xYAjVgd71Oy95N9P/Em/r1PSzu1mLU2vBT8hlfWgxl++iefUr7AYAbPTA35 +nLw= X-Gm-Gg: ASbGnctlb5c8UEw2KJ6bCugpwHshFCNAcC4h4bm4JWn2Sor58LmK35wFL1gTP+9gFFu Xje3LciG0VF3H3gF/FU6ffzq8cKcxqNE4IiIkHaMM9PNfJoOY9b4IXd4y/AkVNtw9iBDf/frJD1 duiBZ7sxOHh4hfABqE+djWgfcYVu+FLwzJy92R3ecxc6QcskUN0F2gjvJhnAxpSA0uqxM7jIbqQ j7oVC7gxdvYn0WUCvIeww6BG4QX7vu5R1bi/6LaAxAEchh68Bf5wSgeYezQjgpiOJGlvnw+HTTq 2IgHujWveRp1tKxhLvHYqt9iSNjk3cOrSRULUyEaQQ0DrZ+wXkC495WQEFbCCegE6KpRslk4LC4 I2vVeUdov83qpxXKgBpZ+yDxuCQ== X-Google-Smtp-Source: AGHT+IHp+xpg2FO63nkT7Lh5wy4seP/EyKn6xsYU+/2Jg59TJvy9YvZlmgC6AlIASMeTxBqC41J75A== X-Received: by 2002:a05:6512:239d:b0:553:35bb:f7ba with SMTP id 2adb3069b0e04-55366bf08b7mr21355e87.11.1749145988208; Thu, 05 Jun 2025 10:53:08 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:07 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:03 +0000 Subject: [PATCH v2 10/12] media: uvcvideo: Add get_* functions to uvc_entity 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: <20250605-uvc-orientation-v2-10-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Virtual entities need to provide more values than get_cur and get_cur for their controls. Add support for get_def, get_min, get_max and get_res. This is a preparation patch. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_ctrl.c | 12 ++++++++++++ drivers/media/usb/uvc/uvcvideo.h | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 21ec7b978bc7aca21db7cb8fd5d135d876f3330c..59be62ae24a4219fa9d7aacf2ae= 7382c95362178 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -596,6 +596,18 @@ static int uvc_ctrl_query_entity(struct uvc_device *de= v, if (query =3D=3D UVC_GET_CUR && ctrl->entity->get_cur) return ctrl->entity->get_cur(dev, ctrl->entity, ctrl->info.selector, data, len); + if (query =3D=3D UVC_GET_DEF && ctrl->entity->get_def) + return ctrl->entity->get_def(dev, ctrl->entity, + ctrl->info.selector, data, len); + if (query =3D=3D UVC_GET_MIN && ctrl->entity->get_min) + return ctrl->entity->get_min(dev, ctrl->entity, + ctrl->info.selector, data, len); + if (query =3D=3D UVC_GET_MAX && ctrl->entity->get_max) + return ctrl->entity->get_max(dev, ctrl->entity, + ctrl->info.selector, data, len); + if (query =3D=3D UVC_GET_RES && ctrl->entity->get_res) + return ctrl->entity->get_res(dev, ctrl->entity, + ctrl->info.selector, data, len); if (query =3D=3D UVC_GET_INFO && ctrl->entity->get_info) return ctrl->entity->get_info(dev, ctrl->entity, ctrl->info.selector, data); diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index a931750bdea25b9062dcc7644bf5f2ed89c1cb4c..d6da8ed3ad4cf3377df49923e05= 1fe04d83d2e38 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -261,6 +261,14 @@ struct uvc_entity { u8 cs, u8 *caps); int (*get_cur)(struct uvc_device *dev, struct uvc_entity *entity, u8 cs, void *data, u16 size); + int (*get_def)(struct uvc_device *dev, struct uvc_entity *entity, + u8 cs, void *data, u16 size); + int (*get_min)(struct uvc_device *dev, struct uvc_entity *entity, + u8 cs, void *data, u16 size); + int (*get_max)(struct uvc_device *dev, struct uvc_entity *entity, + u8 cs, void *data, u16 size); + int (*get_res)(struct uvc_device *dev, struct uvc_entity *entity, + u8 cs, void *data, u16 size); =20 unsigned int ncontrols; struct uvc_control *controls; --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.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 03F3A27CB28 for ; Thu, 5 Jun 2025 17:53:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145996; cv=none; b=aFE+ZCspH7BTU6XK5Qm6/D+X5BdfcsXqD5S2Hc5S9jslYCvj5LM9QVGqR0boatlww+O59Kh1d5tIIveUGl0mVfGcK1zQYjGdBMbvABe8ZydnNKPLCKPTS8eg2LcNbcYLYfd0meTzWtH2UDCcc+GzfhVNwKGKF+bLhnX2hpzqugk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145996; c=relaxed/simple; bh=7MKTDlXdmTzEBoZknQKsTqh+wgws17pHYpyBR/S4V4U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ra/3EQp3HRkQvy+DEV6RZaYWIOJfGBzVejtBgUaeRE48tyvmdo0pfBztx0XHW8DTB+zsfEaetN7lZ1n8sbdYD428qOHdib2c7CpQ5KOmkc+TBq60wgJHZej+IRgkD1RKq0cVU3s7BpkwZGKkaqmEwfZovEXgV3ng91lbi90tnsI= 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=Oywg+k5E; arc=none smtp.client-ip=209.85.167.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="Oywg+k5E" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-553241d30b3so1176743e87.3 for ; Thu, 05 Jun 2025 10:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145989; x=1749750789; 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=vl8ssGy20WIwQ9oJ9UugxpfMo+m1ppVl8PDiVTX1sSc=; b=Oywg+k5EBVEHy3LHmGFUNavNA7GwdFWc1vz6M5mpc/7YMcA0QBSVYfrhbclqESCxur J9IfISe7u56op8zhaCm0PCXm74qTf5+i1Htx3Fq+OkNAm2lfRqc3bb+4LfIrj+sR71pZ rRkgSmbWLLqlwYYhse4psHCe9ECJqMEuCj2j0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145989; x=1749750789; 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=vl8ssGy20WIwQ9oJ9UugxpfMo+m1ppVl8PDiVTX1sSc=; b=qTknTAEEiBhROxgIjUlgJmZj4VzciCubAxJSQKbgYzeC5ze0u6B8P61dcnKAtk3Ulh OEOEIbXlDB1L9kWDXTqsD3WqRD/uEozhdpivxeGTSa+7WgQIslau1n85LGB9NMcPjUOu LhrXbpViTv6BC96pnuRLCxXHGkxhWBdy5vxjoGYmVBir+XEf73avVlDaBIPYm76d/3ic 2HXlk2ZnL1SXsapiYqYY9i3ZHP6xHX/IglZKYcsLiEJy85APKFe3vZ/tXB7mdf/0u5I2 QcdAJflAhDSsqbQScdQfcwKLdMFP+Or8t2dfQXbP5sZDVWGXrHsvrOvFRvI6o+reLkF/ BFYQ== X-Forwarded-Encrypted: i=1; AJvYcCWYgP34h5wTcM6gZjdEGCqwb9fXYKeBA13LSI3pPPp5RebjXcb6i1mRG+XTnKGnCifzSMtBjj3qnneThXg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+Yh31TTvtzfo9tOsKAkX8q8zvAr+MTgmMMCZzwZeqrqwDLGGJ WR61P9lJsOIg+9BjadzuKdd7HzBtgl9FyuGwOq2JdqxMu7wpeE5OL1VCPtiQZXJppFEcGq+oWRH BkGw= X-Gm-Gg: ASbGncvyYVryKsUYxWeVz8PGEpH5N92nv3JXVTnX4yitApabRpF5Mr2nmbTExMtr/3d Lh2EzpP5tKYOhw8Yz/eQVR5IyfYKYqD7rBRHbL71yhAWeBbeUHLrbwLTVzMz990mKtQF87J2eyA BvxEJ+z9o5c9hy1LtyoDVrpBRgdRKaLEi0lvGIkD7dsvH+KGWToXs/f86IQUo5Rrzc72qOJrpds /UOWq77MzRLlXOvcOOwQkZivS3iqOpLj61aVMHOM4OqJjzuWql5edV5Pv78pVx4l6HNQcWsLKXM AkH+yYEjZxTeEp0rKS0FxebC81QNOx+32uTud2AASCV1iK+lV1aldEyX9ZnWn3g2D7v8bVR4Vty 0OtJPYIm2IhQ58Bvtpsv5LQAlkQ== X-Google-Smtp-Source: AGHT+IFlq5ht3uZf7ciRLQmdAPYFGASf3iU3YYzwLzFJOAeEkyQ6j/O5YV23vNe1kOHNJm+t25D9ag== X-Received: by 2002:a05:6512:b94:b0:553:20f2:2e57 with SMTP id 2adb3069b0e04-55366be0c0emr26440e87.17.1749145988776; Thu, 05 Jun 2025 10:53:08 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:08 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:04 +0000 Subject: [PATCH v2 11/12] media: uvcvideo: Add support for V4L2_CID_CAMERA_ROTATION 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: <20250605-uvc-orientation-v2-11-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Fetch the rotation from the fwnode and map it into a control. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_ctrl.c | 22 +++++++++++++-- drivers/media/usb/uvc/uvc_swentity.c | 55 ++++++++++++++++++++++++++++++++= ---- drivers/media/usb/uvc/uvcvideo.h | 5 ++++ 3 files changed, 74 insertions(+), 8 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 59be62ae24a4219fa9d7aacf2ae7382c95362178..5788f0c0f6604da06a7bca1b999= 9d0957817e75e 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -378,11 +378,18 @@ static const struct uvc_control_info uvc_ctrls[] =3D { }, { .entity =3D UVC_GUID_SWENTITY, - .selector =3D 0, - .index =3D 0, + .selector =3D UVC_SWENTITY_ORIENTATION, + .index =3D UVC_SWENTITY_ORIENTATION, .size =3D 1, .flags =3D UVC_CTRL_FLAG_GET_CUR, }, + { + .entity =3D UVC_GUID_SWENTITY, + .selector =3D UVC_SWENTITY_ROTATION, + .index =3D UVC_SWENTITY_ROTATION, + .size =3D 2, + .flags =3D UVC_CTRL_FLAG_GET_RANGE, + }, }; =20 static const u32 uvc_control_classes[] =3D { @@ -1025,7 +1032,7 @@ static const struct uvc_control_mapping uvc_ctrl_mapp= ings[] =3D { { .id =3D V4L2_CID_CAMERA_ORIENTATION, .entity =3D UVC_GUID_SWENTITY, - .selector =3D 0, + .selector =3D UVC_SWENTITY_ORIENTATION, .size =3D 8, .offset =3D 0, .v4l2_type =3D V4L2_CTRL_TYPE_MENU, @@ -1033,6 +1040,15 @@ static const struct uvc_control_mapping uvc_ctrl_map= pings[] =3D { .menu_mask =3D GENMASK(V4L2_CAMERA_ORIENTATION_EXTERNAL, V4L2_CAMERA_ORIENTATION_FRONT), }, + { + .id =3D V4L2_CID_CAMERA_SENSOR_ROTATION, + .entity =3D UVC_GUID_SWENTITY, + .selector =3D UVC_SWENTITY_ROTATION, + .size =3D 16, + .offset =3D 0, + .v4l2_type =3D V4L2_CTRL_TYPE_INTEGER, + .data_type =3D UVC_CTRL_DATA_TYPE_UNSIGNED, + }, }; =20 /* ------------------------------------------------------------------------ diff --git a/drivers/media/usb/uvc/uvc_swentity.c b/drivers/media/usb/uvc/u= vc_swentity.c index 702a2c26e029a0655dade177ed2a9b88d7a4136d..60f3166addbeb7d2e431d107b23= 034d2d11a1812 100644 --- a/drivers/media/usb/uvc/uvc_swentity.c +++ b/drivers/media/usb/uvc/uvc_swentity.c @@ -10,10 +10,11 @@ #include #include "uvcvideo.h" =20 -static int uvc_swentity_get_cur(struct uvc_device *dev, struct uvc_entity = *entity, - u8 cs, void *data, u16 size) +static int uvc_swentity_get_orientation(struct uvc_device *dev, + struct uvc_entity *entity, u8 cs, + void *data, u16 size) { - if (size < 1) + if (cs !=3D UVC_SWENTITY_ORIENTATION || size !=3D 1) return -EINVAL; =20 switch (entity->swentity.props.orientation) { @@ -30,6 +31,31 @@ static int uvc_swentity_get_cur(struct uvc_device *dev, = struct uvc_entity *entit return 0; } =20 +static int uvc_swentity_get_rotation(struct uvc_device *dev, + struct uvc_entity *entity, u8 cs, void *data, + u16 size) +{ + if (cs !=3D UVC_SWENTITY_ROTATION || size !=3D 2) + return -EINVAL; + + ((u8 *)data)[0] =3D entity->swentity.props.rotation; + ((u8 *)data)[1] =3D entity->swentity.props.rotation >> 8; + + return 0; +} + +static int uvc_swentity_get_cur(struct uvc_device *dev, struct uvc_entity = *entity, + u8 cs, void *data, u16 size) +{ + switch (cs) { + case UVC_SWENTITY_ORIENTATION: + return uvc_swentity_get_orientation(dev, entity, cs, data, size); + case UVC_SWENTITY_ROTATION: + return uvc_swentity_get_rotation(dev, entity, cs, data, size); + } + return -EINVAL; +} + static int uvc_swentity_get_info(struct uvc_device *dev, struct uvc_entity *entity, u8 cs, u8 *caps) { @@ -37,11 +63,22 @@ static int uvc_swentity_get_info(struct uvc_device *dev, return 0; } =20 +static int uvc_swentity_get_res(struct uvc_device *dev, struct uvc_entity = *entity, + u8 cs, void *res, u16 size) +{ + if (size =3D=3D 0) + return -EINVAL; + ((u8 *)res)[0] =3D 1; + memset(res + 1, 0, size - 1); + return 0; +} + int uvc_swentity_init(struct uvc_device *dev) { static const u8 uvc_swentity_guid[] =3D UVC_GUID_SWENTITY; struct v4l2_fwnode_device_properties props; struct uvc_entity *unit; + u8 controls =3D 0; int ret; =20 ret =3D v4l2_fwnode_device_parse(&dev->udev->dev, &props); @@ -49,7 +86,11 @@ int uvc_swentity_init(struct uvc_device *dev) return dev_err_probe(&dev->intf->dev, ret, "Can't parse fwnode\n"); =20 - if (props.orientation =3D=3D V4L2_FWNODE_PROPERTY_UNSET) + if (props.orientation !=3D V4L2_FWNODE_PROPERTY_UNSET) + controls |=3D BIT(UVC_SWENTITY_ORIENTATION); + if (props.rotation !=3D V4L2_FWNODE_PROPERTY_UNSET) + controls |=3D BIT(UVC_SWENTITY_ROTATION); + if (!controls) return 0; =20 unit =3D uvc_alloc_entity(UVC_SWENTITY_UNIT, UVC_SWENTITY_UNIT_ID, 0, 1); @@ -60,9 +101,13 @@ int uvc_swentity_init(struct uvc_device *dev) unit->swentity.props =3D props; unit->swentity.bControlSize =3D 1; unit->swentity.bmControls =3D (u8 *)unit + sizeof(*unit); - unit->swentity.bmControls[0] =3D 1; + unit->swentity.bmControls[0] =3D controls; unit->get_cur =3D uvc_swentity_get_cur; unit->get_info =3D uvc_swentity_get_info; + unit->get_res =3D uvc_swentity_get_res; + unit->get_def =3D uvc_swentity_get_rotation; + unit->get_min =3D uvc_swentity_get_rotation; + unit->get_max =3D uvc_swentity_get_rotation; strscpy(unit->name, "SWENTITY", sizeof(unit->name)); =20 list_add_tail(&unit->list, &dev->entities); diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index d6da8ed3ad4cf3377df49923e051fe04d83d2e38..7cca0dc75d11f6a13bc4f09676a= 5a00e80cb38f7 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -45,6 +45,11 @@ #define UVC_SWENTITY_UNIT 0x7ffd #define UVC_SWENTITY_UNIT_ID 0x101 =20 +enum { + UVC_SWENTITY_ORIENTATION, + UVC_SWENTITY_ROTATION +}; + /* ------------------------------------------------------------------------ * Driver specific constants. */ --=20 2.50.0.rc0.642.g800a2b2222-goog From nobody Fri Dec 19 00:02:39 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 2EA1927A123 for ; Thu, 5 Jun 2025 17:53:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145996; cv=none; b=IwO+kDU4HOncfeghg3jlQJyeDAu0pnnvJ1OjL/noNnL8JQZTdsu7XA9lCKbGsIBZw+6qQmOs5kdicvA1+tMDf/d+/KEyyX62S3s83jXiJ17MV8QKWin/WIHOblDx/EmKUQZWSBMUVNPLo/UuXKWIaxsQUrSUjm3SZOsaqXVGnkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749145996; c=relaxed/simple; bh=ud/yG1CR5QNIjOMJtgHhzLjfPGyRK5X2yNstenoh6F0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h9uLqcTx/jEibd+vEMlmKdKxy4xXA1cI+OhirZQnM6igJj6TxQHlCaZCAguXzPwWbpdVAPE4qpbLGwVl4G23al6lkVs1c/4bG1CvEK3xD3c2+8sXzeU3ho9+/dlzB/zx80phQ/7fOuc6+yLyk69q5fSYtG/EonOwS8QxZmw9gGQ= 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=Zo+alpBC; arc=none smtp.client-ip=209.85.167.41 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="Zo+alpBC" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-5533a86a134so1238261e87.3 for ; Thu, 05 Jun 2025 10:53:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1749145989; x=1749750789; 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=V9Qke5DC9C5R7oeoSiHKicNykKWx9HQwgMxvcWAUcsQ=; b=Zo+alpBC9ydAquWIpW+tcw7w9hjbZzS3WB0v4tV40PZFbtfrQA1Cmtckr2j8Krk+za f/A75+JcseniPbhdkoDdrYYQbkmzdx08B52fi0TIXzLMrNU4LxRF5FOOTDMQNfyQdwiQ hDMcCBsfKo7IkwzxdgV6Crsjoi/fEZyEDyF2o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749145989; x=1749750789; 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=V9Qke5DC9C5R7oeoSiHKicNykKWx9HQwgMxvcWAUcsQ=; b=tiqnju8WAiRSCnTXf77Q7QNAkNBcefFNrkiAAj1u/TNlt2MNTSlUrMG9OXsC9sfSVb WDM2Tpy3Bc3hC8F1hutWT53a6ROs2n8D4MyuO27eAKLuRgYn/aAUNTYoisTMR2OjGFCG LDFhhflNMsbohFeMK61kVkiyv2n1kCG5FELz9XTqhyjk7JmT8AXzBGHhRc/5qiwfke2B /BF+fL9F5WNlzPkr9LzpecOPDHvXKAztZ9DUBJmTGxL3vzEg4dfHvkiz6k6CTypI6bSo 5QYcIxbzkXCYjBPos6yeZXqKVoM0+m2QUivUO91B3xS+6MlCtfgrn+ND0ZZb5Y2oHCfc +Ibg== X-Forwarded-Encrypted: i=1; AJvYcCURg1yG3oF2uk80Ia2ecxhg+XLhsqRDFpNmTiJfQao50SyFoo/egugLVTXNvxiZgqL1BuKcHox3argl/lY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1zVR8zFCAKp6m/xVv/vV6i8l9nVv1qoB9uuIZ19V1xXlUZa1g z0/PuPQzFVlZFk6umO40T4StViX8fDuSDW2dlup9+01O1YJ12Mni8PRJN7FwwTF9SY13N06qGH/ ZrvA= X-Gm-Gg: ASbGncuuwsJa65xztqVgDgWhmoThs9AN0HIZeAP2t9ZS0uBUCzEuhc9rnseaCG3pq3G Q8AXRSs7V6BDaKpa9mRZD+rfHMrL5qMYv+jX4naN5J9SJYYTc2oDXW3wvVI7Dz5TJ1FG7vY+3dW JEkGxraHtfDZPSXY47JoVbD2/95EJsM16mLvudEQr4nuH6PNkHp205tsI6vPExivFnzlr+8n+XC 3CYuzDY7P4SbtClNWNLQgE6fgISFX6YHeXsa8gP9Lk6rHLle9O0juZW6IWRp968HcZVXMFAFxc7 c9AVYWmeUiRaToEQQcZlCBPLTzOUwBhr7CLPCoYmLuk9mTdtQ4XeZ/P2PCEsJFOOzmmQSK2R/QV GmdijEITtG1Y/lN8TD8233gjksA== X-Google-Smtp-Source: AGHT+IGkU0Qv4tzSIKsGHyevtVEeWEZfFr7MOjKvYk6divFF106BKU0YcQGNBaigtq0IO3jXnttxCg== X-Received: by 2002:a05:6512:3da7:b0:553:2698:99c0 with SMTP id 2adb3069b0e04-55366c0e612mr15721e87.36.1749145989470; Thu, 05 Jun 2025 10:53:09 -0700 (PDT) Received: from ribalda.c.googlers.com (90.52.88.34.bc.googleusercontent.com. [34.88.52.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-553379379c2sm2641210e87.251.2025.06.05.10.53.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 10:53:08 -0700 (PDT) From: Ricardo Ribalda Date: Thu, 05 Jun 2025 17:53:05 +0000 Subject: [PATCH v2 12/12] media: uvcvideo: Do not create MC entities for virtual entities 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: <20250605-uvc-orientation-v2-12-5710f9d030aa@chromium.org> References: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> In-Reply-To: <20250605-uvc-orientation-v2-0-5710f9d030aa@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , "Rafael J. Wysocki" , Len Brown Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Neither the GPIO nor the SWENTITY entities form part of the device pipeline. We just create them to hold emulated uvc controls. When the device initializes, a warning is thrown by the v4l2 core: uvcvideo 1-1:1.0: Entity type for entity SWENTITY was not initialized! There are no entity function that matches what we are doing here, and it does not make to much sense to create a function for entities that do not really exist. Do not create MC entities for them and pretend nothing happened here. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_entity.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc= _entity.c index d1a652ef35ec34801bd39a5124b834edf838a79e..2dbeb4ab0c4c8cc763ff2dcd2d8= 36a50f3c6a040 100644 --- a/drivers/media/usb/uvc/uvc_entity.c +++ b/drivers/media/usb/uvc/uvc_entity.c @@ -72,6 +72,16 @@ static int uvc_mc_init_entity(struct uvc_video_chain *ch= ain, { int ret; =20 + /* + * Do not initialize virtual entities, they do not really exist + * and are not connected to any other entities. + */ + switch (UVC_ENTITY_TYPE(entity)) { + case UVC_EXT_GPIO_UNIT: + case UVC_SWENTITY_UNIT: + return 0; + } + if (UVC_ENTITY_TYPE(entity) !=3D UVC_TT_STREAMING) { u32 function; =20 --=20 2.50.0.rc0.642.g800a2b2222-goog