From mboxrd@z Thu Jan 1 00:00:00 1970 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 3E253332919 for ; Mon, 17 Nov 2025 20:14:19 +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=1763410462; cv=none; b=MoxSNpoq2GHz+jKNEZmyLeANd7EEyPqHHjy6J2zY30lfeLcdEuF2bKY//z68dS7oPoEpy6lWVxX/tLNrIOiyuCjgtTYzGtyeMswSivh5/gAVxoccBXF3MtPugUlaKkChMQAEB/V2JWmi1BE35zQ6Inq96WqHyZI00Koyo78WkRg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763410462; c=relaxed/simple; bh=yAEG85GYrN3ElOkyTjNy3tCOE6XKbdGKYBvZg/pwYHA=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=evmPu6DCB3RN/59S8uosILtN0aAfM03paPZlCA3FCWYBrN9GDtk2yp8WXZzaIqSy+76uWUUfJ6p6oCbLC4UV4iNtT1AdGaG6xnoowODQUCLI087o9vpVH2DyXrzwq7sLmARPG4orzBjXs5io8tOJAf6/bRlSXhDQjgIWV4sEqE0= 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=e/TSjmmm; 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="e/TSjmmm" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-5958931c9c7so3147776e87.2 for ; Mon, 17 Nov 2025 12:14:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1763410457; x=1764015257; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=GgHXo4GJGpAcaLA4PTb3BZ5lDtzW4GBjMfZZU48RY5w=; b=e/TSjmmmZSLVN36oQ07xL+atzBJRGfOi8Bu/NK33RQ1oe5uY/48Ze9m5kCl7U30UlI tNsF9Suj3FDgGwEWZjZqAdV+1gXSySojulEqiQW7r1VdwsWI2jyQGTo1v6QonBCFskYW XiFSUuK1ozp1GcjJnVkPG7fnLaepkGOFzoQZM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763410457; x=1764015257; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GgHXo4GJGpAcaLA4PTb3BZ5lDtzW4GBjMfZZU48RY5w=; b=hcwnwrnybWfttZq4p5XsbVMuuNHo/NdXdxwsOJJqZXhq0j41xILPzoOCZTmTxGH64J pMWbdptPmKUB/taUqODzM5tLj/b0sOZrEVHzvuK56YlBoYfdKsnVQRP6tnF3ypJDPgou i15z3vm2t8xTXZWctU1QwF+yIToaYwjXZoX37psK8m8wjO9QQ7Hj8PW/qq/+Ll+XCIf2 oWyVdFHy8YExh/JDrLzra5G4i7gSx5ZKwIMqfbHvvzPSx4IPePvhjRiE67UuOKYLLemI Ttm0DRzLyuzOlsPAdeukrrv0yHWkJrjL0OaOEFI4LYX43RuubOjVtxlNakqnexXGIHmg 2EqA== X-Forwarded-Encrypted: i=1; AJvYcCUH64C0F715EUkCIFZrE2AO2pzx/91NFe1jw+husgNk/Xd9an6+bOUybFDEjixtWaF96a2eqlK4PJG471w=@vger.kernel.org X-Gm-Message-State: AOJu0YyxrpZ/ukFItUgWUAGLm3qxQA/xcAZorh/IR75dz8pudjuMIaOv I7tu7ZfcVdbJFn471LqcuC8OSsM/Z4aeiUb9Q6zBW1fCXWTS6WQY8OfscalTFX8pnw== X-Gm-Gg: ASbGnctp/KaW8IAyF7FT8Q6AGhQHOLoP6Affuy/JUR+0fFt51aFUBhf/B59W1BDtIdz an7mOHeOjaxEocHhJPnv3/jrhhFLvRtWk6+IQV3Lamx3vAiVYdNz0oG5FT3mc9LEM48vE9QwieQ o89IP3RMbWY9e9VFKLqLrmxOyUAA6rMCbKk4K6mAlLLolUXjbD4sDhoTcpZ72Vj0WONuYYBxFS/ BIHyRBKDMOKUJM22VxCIanAOMzKE/HS7FtKexxnH8meENQz2vAYLHC6f3o5lXUieRhYOea9DM4/ o/EmhK/z7wF33U/1RvNNBUjbwtB1Vv+w80dnoKCP4pbRDQzvrjHQT44x6+VeUhjHlgKX1/NJhQd U7tK0/OJ5smNhHUFjw6ER7XUa0ft+tTCjSGxsqdFG1wKCTgeQYyq2bRXTktZ5WMaFFtrdyRs9UQ YZblHh+M/B/0uN8RL0idBIT4NNBQ4sGH25wvh9c3pdTEnfUI2sJImV9xKOxSlRWi5x7O/Tic6l X-Google-Smtp-Source: AGHT+IFc43tykLdR7iGrO4WldYv3LdTnARilIJdABWioVTl/8nUjj1uXHiVVOMgIMBPJ5aNeGwOKtg== X-Received: by 2002:a05:6512:b9a:b0:595:8200:9f79 with SMTP id 2adb3069b0e04-595842134a8mr4845108e87.43.1763410457359; Mon, 17 Nov 2025 12:14:17 -0800 (PST) Received: from ribalda.c.googlers.com (80.38.88.34.bc.googleusercontent.com. [34.88.38.80]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-595804003a4sm3413302e87.59.2025.11.17.12.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Nov 2025 12:14:16 -0800 (PST) From: Ricardo Ribalda Subject: [PATCH 0/4] media: uvcvideo: Map known XU controls Date: Mon, 17 Nov 2025 20:14:15 +0000 Message-Id: <20251117-uvcdynctrl-v1-0-aed70eadf3d8@chromium.org> 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: 7bit X-B4-Tracking: v=1; b=H4sIABeCG2kC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDI1NDQ0Nz3dKy5JTKvOSSohxd8yQLgzTTpLSkJBNDJaCGgqLUtMwKsGHRsbW 1AGA9BM1cAAAA X-Change-ID: 20251117-uvcdynctrl-7b80f5bfbb41 To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Greg Kroah-Hartman Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Ricardo Ribalda , Manav Gautama , Martin Rubli X-Mailer: b4 0.14.2 The UVC driver uses a custom ioctl `UVCIOC_CTRL_MAP` to map XU controls into v4l2 controls. The most well know user of this feature is the uvcdynctrl app. This app has a set of XML files which contains the list of mappings. Some of these mappings are standard and other ones are custom. This series move the standard mappings to the kernel driver, so userspace do not need to depend on external apps to use them. While we are at it we realized that some of the mappings can be harmful for the privacy of the user. This series introduce a mechanism to block those mappings. While we are at it, we complete the deprecation of the nodrop parameter. Ideally, this patch should belong in a different series, but then we will have conflicts... and who wants to works twice? I have tried this series with a Logitech Webcam Pro 9000, that has been donated by Hans de Goede (Thanks Hans!!!). Without this patch and uvcdynctrl the device has 14 controls. (Ctrls A) With this patch the device has 15 controls (Ctrls B): Ctrls A + control 0x009a090a `Focus, Absolute' min 0 max 255 step 0 default 0 current 0 With uvcdynctrl and this patch the device has 17 controls (Ctrls C): Ctrls B + control 0x0a046d71 `Disable video processing' min 0 max 1 step 1 default 0 current 0 control 0x0a046d72 `Raw bits per pixel' min 0 max 1 step 1 default 0 current 0 With uvcdynctrl and without this patch the device has 19 controls: Ctrls C + control 0x0a046d05 `LED1 Mode' min 0 max 3 step 1 default 3 current 3 0: Off 1: On 2: Blinking 3: Auto (*) control 0x0a046d06 `LED1 Frequency' min 0 max 255 step 1 default 0 current 0 BTW, Driver tested with virtme-ng. First time that I use it for uvc development, and it works like a charm :). virtme-run --kimg arch/x86/boot/bzImage --mods auto --show-command \ --show-boot-console --verbose --qemu-opts -usb -device qemu-xhci \ -device usb-host,hostbus=1,hostport=4 Signed-off-by: Ricardo Ribalda --- Ricardo Ribalda (4): media: uvcvideo: Remove nodrop parameter media: uvcvideo: Import standard controls from uvcdynctrl media: uvcvideo: Announce deprecation intentions for UVCIOC_CTRL_MAP media: uvcvideo: Introduce allow_privacy_override .../userspace-api/media/drivers/uvcvideo.rst | 2 + drivers/media/usb/uvc/uvc_ctrl.c | 161 +++++++++++++++++++++ drivers/media/usb/uvc/uvc_driver.c | 24 +-- drivers/media/usb/uvc/uvc_queue.c | 25 ---- drivers/media/usb/uvc/uvc_v4l2.c | 36 +++++ drivers/media/usb/uvc/uvcvideo.h | 2 +- include/linux/usb/uvc.h | 10 ++ 7 files changed, 215 insertions(+), 45 deletions(-) --- base-commit: 1f2353f5a1af995efbf7bea44341aa0d03460b28 change-id: 20251117-uvcdynctrl-7b80f5bfbb41 Best regards, -- Ricardo Ribalda