Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp4363030pxu; Mon, 21 Dec 2020 10:29:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJzXZyYIniW4FX/2Xt2SviADHjtlSCe5jHjbc1+PhOV8csNKzmtusQ7Ej+E6oj+8f4AluiMU X-Received: by 2002:a17:906:3953:: with SMTP id g19mr16308444eje.429.1608575346939; Mon, 21 Dec 2020 10:29:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608575346; cv=none; d=google.com; s=arc-20160816; b=tBAOIuQswK9WwD6oGwaKDCKd1KtRtX6pTQomHwq6tSevRzkEshG+/GmWoE5aUmi6oo 5F5472HSnGqgSO5rZKCjcCxdVifmzQ6V2CRNO3o8KSyC07HU0H/sz81Po5aKynrZ9tHQ QoX8LZaZBURxxwhgRFMrdcCYimFwWtmARn9hInaA+Ht26F/4bRiAdcnC8KnH6MAim6fe /iAKxamik5BgSWR+9ZYAQeZjlq//scNZ2mblKQcvzE3+KbOiVgT0KPOgaFnmpc2454dE HFBO49TsQ2m4BCOK+dSo0QLmQQ6F/i+5eOBOwMKYzZsRRNcjeszkFJhPic1g+jEeedCo LSdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=vJuLPvN2RTSNyr6LApzw+/OhfeYw5gbFBvw/kpJgHjI=; b=Q6Pw9lPLJxU6dDOQVa77O/isFe4w6GxVwzkvUX93XP18Uco8Y3dCDuuAj7/PEqQ95m fCxepsjRQpHCjSJ7bfV4l99pjONehVb9p6swFlgeNoI4XLk2GxADkDfXQpeWn2P8lU71 Z/uJZzaMuilOnVhRPX1G/mkbhpMw/T78fUhFe2Jf/4rfklG3eukXRo1dfm0UaM7Bmcuz wNXKmHbdqU/XjAgT8vvG1EMOsIabA2xs9y/87186D4Io2arfDCbPUbC7AERedbiGunaX DWSrjvj6Kg64fwUNu7HfoXHiDgEveiQ/IXfd0n3YwgMHgZ1dcPnmq5YlGriK8hC0czKO 7SuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=DQyB82We; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b2si9275018ejh.264.2020.12.21.10.28.43; Mon, 21 Dec 2020 10:29:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=DQyB82We; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726313AbgLUS2V (ORCPT + 99 others); Mon, 21 Dec 2020 13:28:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725818AbgLUS2V (ORCPT ); Mon, 21 Dec 2020 13:28:21 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81B2CC061793 for ; Mon, 21 Dec 2020 10:27:40 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id g185so11858650wmf.3 for ; Mon, 21 Dec 2020 10:27:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vJuLPvN2RTSNyr6LApzw+/OhfeYw5gbFBvw/kpJgHjI=; b=DQyB82We6HV18Ka32uGMj6H2J+bJdM7Y3zVVCfkuJOaodSSJNWB/8GqFOdELB7k+KS DUxjF69Dfb8bXn4RpaOvWr6M3LUO5KWekB+4gvw9cu3biW6KB/9jwvbyX3HSRGsyN/+G z1Y83YcMUDAVWO6uoxRYfbM7FagtC2CYHd8L0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vJuLPvN2RTSNyr6LApzw+/OhfeYw5gbFBvw/kpJgHjI=; b=M15676QYe41oJy2aMSHqXs4wAGFGj2KhjHvdzBdtcZ+cewvdDSLL18qYYo4sD8Ffrg Rka1mz4lxZ+e+Txu3yzptfdCX/Ci4j83WISNFmeBMIpLPShCxMU02kEiV2ag+bfC0Qgl PWqinPwAKzrGHBWYBcMvZSMavIMOo3ZZn1LQRn79cHOZCMhGhyZwq+EliIoEI7z4u8Y7 ClzRIVEiab5MX3u7Qq3TgyE9ncNg/gTdS5Cwp3szNVaXRCChhfdqT19jx7fU3nCmK+DY pLL/jVlEblWbENCfgszY4z6EtcstWmyDISdi2GcmNBFJHSiyS9fCEGDFZudZnK9z2xeu qkkw== X-Gm-Message-State: AOAM533phFRuBnAyojofJCMDjIkwH4XrsI8+H687YaZi8bCriOxq11y4 3T1ag3w/eAWRLiIWkihMBtL/duuY0aAzSAG04yc= X-Received: by 2002:a05:600c:2306:: with SMTP id 6mr17698261wmo.53.1608569302238; Mon, 21 Dec 2020 08:48:22 -0800 (PST) Received: from alco.lan ([80.71.134.83]) by smtp.gmail.com with ESMTPSA id o125sm24581109wmo.30.2020.12.21.08.48.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Dec 2020 08:48:21 -0800 (PST) From: Ricardo Ribalda To: Laurent Pinchart , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ricardo Ribalda Subject: [PATCH v5 00/12]Show privacy_gpio as a v4l2_ctrl Date: Mon, 21 Dec 2020 17:48:07 +0100 Message-Id: <20201221164819.792019-1-ribalda@chromium.org> X-Mailer: git-send-email 2.29.2.684.gfbc64c5ab5-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some devices can implement a physical switch to disable the input of the camera on demand. Think of it like an elegant privacy sticker. The system can read the status of the privacy switch via a GPIO. The ACPI table maps this GPIO to the USB device via _CRS and _DSD descriptors, so the kernel can find it. The userspace applications need to know if the privacy pin is enabled or not. The obvious way to show it to userspace is via the V4L2_CID_PRIVACY control. This patchset implement this functionality. v5: Thanks to all the comments from Laurent! - Allow multiple async_ctrls - Use dev_dbg() for uvc_trace - Major redesing of "Implement UVC_EXT_GPIO_UNIT" - Major redesing of "Implement UVC_QUIRK_PRIVACY_DURING_STREAM" v4: Implement UVC_QUIRK_PRIVACY_DURING_STREAM v3: Thanks to all the comments from Joe Perches - Rework of printk macros v2: Thanks to all the comments from Laurent! - move guid to unit - support entities with no pads - CodeStyle - Irq handling - pr_cont - new ids Ricardo Ribalda (12): media: uvcvideo: Fix race condition handling events media: uvcvideo: Allow more that one asyc_ctrl media: uvcvideo: Move guid to entity media: uvcvideo: Allow extra entities media: uvcvideo: Allow entities with no pads media: uvcvideo: Allow entity-defined get_info and get_cur media: uvcvideo: Implement UVC_EXT_GPIO_UNIT media: uvcvideo: Add Privacy control based on EXT_GPIO media: uvcvideo: Implement UVC_QUIRK_PRIVACY_DURING_STREAM media: uvcvideo: Use dev_ printk aliases media: uvcvideo: New macro uvc_trace_cont media: uvcvideo: use dev_dbg() for uvc_trace() drivers/media/usb/uvc/uvc_ctrl.c | 204 +++++---- drivers/media/usb/uvc/uvc_driver.c | 644 +++++++++++++++++++---------- drivers/media/usb/uvc/uvc_entity.c | 11 +- drivers/media/usb/uvc/uvc_isight.c | 16 +- drivers/media/usb/uvc/uvc_queue.c | 12 +- drivers/media/usb/uvc/uvc_status.c | 32 +- drivers/media/usb/uvc/uvc_v4l2.c | 53 ++- drivers/media/usb/uvc/uvc_video.c | 120 +++--- drivers/media/usb/uvc/uvcvideo.h | 91 ++-- 9 files changed, 767 insertions(+), 416 deletions(-) -- 2.29.2.684.gfbc64c5ab5-goog