From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) (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 C1C3F27442 for ; Fri, 20 Mar 2026 00:09:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773965395; cv=none; b=CRFHngpcIYz0GJ1GgfghGhYt32F1ydAg/HKNs/Ik043X0Yys96MxBPkWrMijOK5Jw3/ZzzWOXpGE50sQLP5C+IYMLxoudb/Yn7/CK0dWU1OXI1MsvfwA6tDssMerkLcSPfqMtQE8nqZ5Cp4tzRamY8fCUJMlv7BE9FAXpmJgqGI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773965395; c=relaxed/simple; bh=hl5R1wSuFOIHerN8SJeEQSAJ9kXBeaQRyT3yG5kRwqY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=VCznRv73aPp7TXSetWmiIJjTuAPOv+1iZIdNjgb0YfzzwnvMBCnvy+1hIxohs+NfTuRueQSvdDI+lDk4McIjP4xfun2mfHihNF5ndU4e/M6r2Tc0N12YHzc9lhaHc307WWEmCjS6l9gXhAQArIkEF/ltzy4A6OLbjNEzW0XMpKg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=B1Ax5rpy; arc=none smtp.client-ip=74.125.82.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="B1Ax5rpy" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2b4520f6b32so2306949eec.0 for ; Thu, 19 Mar 2026 17:09:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773965393; x=1774570193; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=2kwwNcGSPXeBZpow/BgUByCuTFdk7AZ7r/FiRegFEZY=; b=B1Ax5rpyUeBlRINmzujNzJdmjctgK9MAYLbe/a8m+p1i3ea+wtkEUDLVG99KaCN0RP NBXjbea5nhMwGzW5Q9eYBe2iDgAPK+GARVdx1X7Xlmk6jhGglm5fRsUk0xlKv3o11+Td GQerxB221sUAc1EE3zkPqaqtizioXE88bFZen5YYqKn3k4yLbq2i9L4IzHK9TmH95/sN bnJUO4b2Ecs/TupVTGMJWg28wDOy/HZN6fPGVsczM8fsmvXyh0YudHQ1KWfG2HXoS3Fh jH55KmRnd8JhGuwv/jTTzKTgs7qTmQcumxBg7teD12ZyK9kUNgOXiJOAZApT5iv0NvM8 T6qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773965393; x=1774570193; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2kwwNcGSPXeBZpow/BgUByCuTFdk7AZ7r/FiRegFEZY=; b=Qe0L02qnDPGMf7QtiOPp1Wmop0VCKkmyqMI4ATstCCwaeQmKNzaf9MIr6M2CrC/P7B dMlMNgPo1BmU9RkmUkUjii40QZRo2lefC1R62VgMC1GNLXkomPPaLk4M2fMY+u1QxfGM 3M36ie9hj2ROFKqrebusAqxkgcq2j9fSEZV0jyG4i7TJNGn4ulHFq55LV2OtxgZIvsg0 GEgznkd4tTIFwJfam7pB3pvW3D2onrmyKkOrZdDk4HiaI4Ko+vwwBLtgF+WLAKsYnIe6 0DCy3uUSiAylgRntFeRCeDtW8OOZOrGtNc3gDKv0XEpkvqLNvlCa6yApIB1HjuOm+oNU o6Tw== X-Gm-Message-State: AOJu0Yw7Xwdx75eZb+9k2CVdbt66nPZLOCN28Ks/I98XrcfzJC24EoyJ 5I8nOVgmhrpqc+5k76lCiKobPkoDpDL6oBiyDGgtsQtghlxhYSZhL0y4wIrbhc1NQq8= X-Gm-Gg: ATEYQzzAs6P5TxPBE2q86qMCxG8I1yjTX0wrPQME+HU3O6pYsypk4IyzyjiLa9jWUfh yFD74BZecnJGvDEsYCixCIdKK/Zk7jmYjuZSm586nWqccf9AVsNzotDNqZEpPXqVxqXKvEBykaf WQTTXnL1+JRxJB/yihydzwUrBNxW5vUU+BRZ/SFBWZ5MpAIrUDfSOJ/wdbCdP3JRnw6ARV8iJ1B kL5nJwkAaGkPggngsQZX1KxwgAVvhjxrELqeZY22+IPud2L+vIG1SwVyE5mbKhbgKinf0La0pcb Ay7qF9p1yB+qrVirWxRxWwm5n+10vO7QIB2qCfAHK/nvRrSyLWnxl+xiPT/clajMVcMbsoQIQz7 oAYDxp39WQY7jBPMUcTmlcJbnRTLyAKnK8hqtr4cFFs/u27VzAkwcoTSlmkwVYObPbhcentkveZ FcfnB7pLxvuwvb2ZxN6pwb1w== X-Received: by 2002:a05:7301:e30:b0:2be:969:75f3 with SMTP id 5a478bee46e88-2c1097ae086mr557776eec.34.1773965392703; Thu, 19 Mar 2026 17:09:52 -0700 (PDT) Received: from TC-LAPTOP.lan ([209.76.64.37]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c10b3253d0sm927960eec.29.2026.03.19.17.09.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 17:09:52 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: linux-media@vger.kernel.org, platform-driver-x86@vger.kernel.org, lee@kernel.org, djrscally@gmail.com, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, Thierry Chatard Subject: [PATCH 0/5] Enable dual cameras on Dell Latitude 5285 2-in-1 Date: Thu, 19 Mar 2026 17:09:28 -0700 Message-ID: <20260320000937.9177-1-tchatard@gmail.com> X-Mailer: git-send-email 2.51.0 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: 8bit The Dell Latitude 5285 2-in-1 has two cameras: Front: OV5670 (ACPI INT3479, CSI-2 receiver 0) Back: OV8858 (ACPI INT3477, CSI-2 receiver 1) Neither camera works on a stock kernel. This series fixes four independent problems that must all be resolved for both cameras to function. Problem 1 — I2C4 host adapter missing (front camera only) The BIOS ACPI table exposes both an ACPI GEXP device and the I2C4 controller (INT3446) claiming the same MMIO region. The kernel rejects INT3446 with a resource conflict and the I2C bus that carries the OV5670 is never brought up. Patch 1 adds a DMI quirk to apply QUIRK_IGNORE_RESOURCE_CONFLICTS for INT3446 on this machine. Problem 2 — ACPI _DEP returns wrong dependency (front camera only) With the I2C bus available, the OV5670 device is still not created by ipu_bridge because _DEP on INT3479 returns the root PCI bus handle instead of the INT3472 (PMIC) handle. Root cause: the BIOS leaves three GNVS fields (C0TP, L0CL, L1CL) initialised to zero. Patch 2 patches these bytes to 0x02 in the TPS68470 probe path, before ipu_bridge evaluates _DEP, restoring the correct dependency chain. The GNVS physical address is discovered at run time by scanning the raw AML of the DSDT (and any SSDTs) for the GNVS SystemMemory OperationRegion definition. The parsed address is then mapped with acpi_os_map_memory(), which is safe because ACPI NVS memory is reserved by the firmware and already mapped by the OS. No hard-coded physical addresses are used. Problem 3 — No TPS68470 board data for this platform (both cameras) The int3472 driver has no entry for the Dell 5285, so it does not configure the PMIC regulators and GPIOs for either camera. Patch 3 adds the full supply map and GPIO lookup tables for both sensors. A key detail: the OV8858 sits behind the TPS68470 secondary I2C passthrough (S_I2C_CTL, register 0x43), which is gated by the VSIO regulator. VSIO is therefore marked always_on so the passthrough is active from PMIC probe time. Problem 4 — OV8858 not supported (back camera only) Two driver-level gaps remain after the platform is configured: - ipu_bridge does not know INT3477, so it skips the sensor when enumerating CSI-2 receivers (patch 4). - The ov8858 driver has no ACPI match entry for INT3477 and does not request the vsio supply that enables S_I2C_CTL (patch 5). Testing ------- Tested on a Dell Latitude 5285 2-in-1 running Ubuntu 25.10 with kernel 6.17.0-19-generic. After applying all five patches: $ cam -l Available cameras: 1: Internal front camera (\_SB_.PCI0.LNK0) [OV5670 / INT3479] 2: Internal back camera (\_SB_.PCI0.LNK1) [OV8858 / INT3477] Relevant kernel log: int3472-tps68470: Dell 5285 GNVS fix at 0xaae22000: C0TP=0x02 L0CL=0x00 L1CL=0x00 -> 0x02 ipu3-cio2: Connected 2 cameras ov8858: regulators enabled (avdd=1 dvdd=1 dovdd=1 vsio=1) ov8858: Detected OV8858 sensor, revision 0xb2 Patches 1–3 touch platform/x86 and mfd drivers; patches 4–5 touch media drivers. All five patches are needed for a fully working system, but each patch is self-contained and bisect-safe. Thierry Chatard (5): platform/x86: intel_lpss: add resource conflict quirk for Dell Latitude 5285 platform/x86: int3472: tps68470: fix GNVS clock fields for Dell Latitude 5285 platform/x86: int3472: tps68470: add board data for Dell Latitude 5285 media: ipu-bridge: add sensor configuration for OV8858 (INT3477) media: ov8858: add ACPI device ID INT3477 and vsio power supply .../x86/intel/int3472/tps68470_board_data.c | 163 ++++++++++++++++++ drivers/media/i2c/ov8858.c | 10 ++++++++- drivers/media/pci/intel/ipu-bridge.c | 2 ++ drivers/mfd/intel-lpss-acpi.c | 32 +++++++++++++++++++++++++++++++ drivers/platform/x86/intel/int3472/tps68470.c | 179 ++++++++++++++++++ 5 files changed, 386 insertions(+), 1 deletion(-) -- 2.51.0