From patchwork Tue Jul 27 13:54:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 13131 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 78C79C322C for ; Tue, 27 Jul 2021 13:54:54 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 320CC687C6; Tue, 27 Jul 2021 15:54:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="I+sIJjeA"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E080A60272 for ; Tue, 27 Jul 2021 15:54:52 +0200 (CEST) Received: from perceval.ideasonboard.com (unknown [103.251.226.156]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0EA9CEE; Tue, 27 Jul 2021 15:54:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1627394092; bh=Esmr/ZbgBa9TfiyNbTRGgozpu86UzFDE5faHND2ZG1A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I+sIJjeAihdazSUCTo+OV230S7rwyrNY5icmkbkKIaIYu0l+v5ATaFXL+VUr1//A/ hvGa1mEXp+A6AR8kxkxtaHWDtVPdEhnrwezKJVHoMe5j1QVm8IDviB0uauhb3VXVAf Yl9nKjvQ3l/nIT5DkydyGec/zQoF796lL8MRZnic= From: Umang Jain To: libcamera-devel@lists.libcamera.org Date: Tue, 27 Jul 2021 19:24:39 +0530 Message-Id: <20210727135440.53640-2-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210727135440.53640-1-umang.jain@ideasonboard.com> References: <20210727135440.53640-1-umang.jain@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/2] android: Override camera is "Internal" provided if found on HAL config X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Currently, all UVC cameras are marked with CameraLocationExternal [1] property, since there is no universal information or standard, to know the location of these cameras. However, in the libcamera HAL layer, we can make an informed decision whether its external or internal, simply by checking the presence of it, in the HAL configuration file. If the camera is found to be present on the HAL configuration file, treat it as internal and assign its numerical id accordingly. [1] 76809320bb1a ("libcamera: pipeline: uvcvideo: Treat all UVC cameras as external") Signed-off-by: Umang Jain --- src/android/camera_device.cpp | 10 +++++++++- src/android/camera_hal_manager.cpp | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 678cde23..ba4e2d15 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -330,7 +330,15 @@ int CameraDevice::initialize(const CameraConfigData *cameraConfigData) facing_ = CAMERA_FACING_BACK; break; case properties::CameraLocationExternal: - facing_ = CAMERA_FACING_EXTERNAL; + /* + * If the camera is 'internal' as found by + * CameraHalManager, use its location from + * HAL config file. + */ + if (id_ < 1000 && cameraConfigData) + facing_ = cameraConfigData->facing; + else + facing_ = CAMERA_FACING_EXTERNAL; break; } diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp index 4cd67544..1a9b3413 100644 --- a/src/android/camera_hal_manager.cpp +++ b/src/android/camera_hal_manager.cpp @@ -133,6 +133,20 @@ void CameraHalManager::cameraAdded(std::shared_ptr cam) } } + /* + * In some cases, particularly in UVC cameras, the camera location is defaulted + * to 'External'. However, if the HAL config file mentions the camera in question, + * it shall mean that the camera is integrated to the system so, override to treat + * it correctly as a 'internal' camera. + */ + if (isCameraNew && isCameraExternal && halConfig_.exists()) { + const CameraConfigData *configData = halConfig_.cameraConfigData(cam->id()); + if (configData && configData->facing != CAMERA_FACING_EXTERNAL) { + isCameraExternal = false; + id = numInternalCameras_; + } + } + /* Create a CameraDevice instance to wrap the libcamera Camera. */ std::unique_ptr camera = CameraDevice::create(id, cam); From patchwork Tue Jul 27 13:54:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 13132 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C8AFDC322C for ; Tue, 27 Jul 2021 13:54:56 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 84656687CB; Tue, 27 Jul 2021 15:54:56 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Mzxqn/k/"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 7CE1E60272 for ; Tue, 27 Jul 2021 15:54:55 +0200 (CEST) Received: from perceval.ideasonboard.com (unknown [103.251.226.156]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 3B283EE; Tue, 27 Jul 2021 15:54:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1627394095; bh=VPS5P+622Z59x5r9fV+mxd1gwgA/ZrF/pZagOxRVklA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Mzxqn/k/I7YlZKpmTe8+asqNk4lyP3sNsrHme9jMsOpHjCMR7Q4zI6ukdT9/3Q+oR a8CreFvJzQJjtlP0eD6DvkxLGHPJ8adEJJ9PskLvAwpqLS/KHSlqYFNfvKDyFBNV02 kaP5J7Q3WRrl4wcHwVzg4EGcxpwbplsm4pvV6WiI= From: Umang Jain To: libcamera-devel@lists.libcamera.org Date: Tue, 27 Jul 2021 19:24:40 +0530 Message-Id: <20210727135440.53640-3-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210727135440.53640-1-umang.jain@ideasonboard.com> References: <20210727135440.53640-1-umang.jain@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/2] android: nautilus: Add camera HAL configuration X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Nautilus has two in-built cameras, one UVC and one attached to IPU3. Signed-off-by: Umang Jain Reviewed-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- src/android/data/nautilus/camera_hal.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/android/data/nautilus/camera_hal.yaml diff --git a/src/android/data/nautilus/camera_hal.yaml b/src/android/data/nautilus/camera_hal.yaml new file mode 100644 index 00000000..faddd29e --- /dev/null +++ b/src/android/data/nautilus/camera_hal.yaml @@ -0,0 +1,8 @@ +cameras: + "\\_SB_.PCI0.I2C2.CAM0": + location: back + rotation: 0 + + "\\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647": + location: front + rotation: 0