From nobody Tue Sep 29 18:54:56 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.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 F03D43AEF2A for ; Wed, 19 Aug 2026 14:01:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148083; cv=none; b=DEF9YkTZFbaLN+UpTQ6BA2sgHYl1Tg32S/Qst1wEtVXuHFkNsW95jR7f+b61+bbzkG4VSAeGZY3KAJfzBlGOWI8SN750gCm0FwIirYOLCLPjQFpp1iateX4bQdiet3q3BPZ/HfiDhBvhb+BzHN7V4RZ1CC+eMfkf8Rvy9mZLRiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148083; c=relaxed/simple; bh=jGEqquZ2fD8KfC6B3eKEDe79Xup6NmyDIFmkXgCEm9k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cV+B4ffpNXoceLDPxlm9+Faz4BWTH09r8HjBP28woN58sCWPn4T9coRFq0kG6mora8EPbNJPWzTOh+dk0d+Ly3qZ+sQ+OPu7sofqMhpx1yh7K2TAfKvLUVTImMMNSL5PrOfpOpUxXuyY2zwplz+j6JoJzQupdOTcK+wFk1ZpQu8= 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=gAWXJJRT; arc=none smtp.client-ip=209.85.128.46 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="gAWXJJRT" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-499ae1c6471so4039385e9.3 for ; Wed, 19 Aug 2026 07:01:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787148078; x=1787752878; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Njwz4GpR6Lsmc9++a5m2bWV+NAXHXBWZE5m0XlH/aas=; b=gAWXJJRTR2+10sOkexBeSWd5j9MwLQmFi75lqYj4IZU25t+RSQUXFgx4kgo8tSHhO6 S8PE6io5ZjSb6ZIAw2kj4A9Krnv81f4mDc2K29zDAcHvF186n5+3DGs9e9xHGMX44bQm r9BhedyICLMeX6LemI7/oProm6RgJxJvSlp8USwCnrJhZWPX7/tqnlh5U/hn62LdLuO0 KXLuwQkZIR72izGiRpZmFGxvsErVwl32la0zq1TMylLCDuOAapBzmpp9gMr2tpluw1U5 U3Ewq5pC3rwIrFiyNtByJzH/gWAh6tCQXWR9rq+g6sBcjSTGWWYArckcANyEVb1KjVIh DPPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787148078; x=1787752878; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Njwz4GpR6Lsmc9++a5m2bWV+NAXHXBWZE5m0XlH/aas=; b=bTi+1nqTapmlFxorrzh8PDhv2Fo3sdVQuc9CKFx3iFjBgBwpREnhrz9ekGhStLzQla wEOGm2pq0T1AWS5bMTdwIvOsv3UR+OS19mvZWDStzc/2aZB3dVXAhGQUyX8V3s/LvAG5 VJ6NgpQ36IVZSwDfmWhpn4/CuYzOy6plzFtR3cuHxNGOEcaWhG/4Zkiig31xYcBx3NuY zdK9VdfVrzyiym+gJpCwlkLQOZmaiG3tZU8rgxMGXcGYCQCjATw/pdQ7EudyVmi4w3Tk DPpHdkx2z0ZZMtwI/jtukyPdQicvDeik5M7F4wtkuEXFcz80LixK4rwIO3SGluToi7bd qq1w== X-Gm-Message-State: AOJu0YytqE7vPUWPIfQXPDLB8r8WzBl7dW7Iz8tkKIxGIT6PV3HPXBOX qLmAKxIY40hzCx44JOhe+Ku0NecIPMK8sShKtjnx+/5i9cJeLO/SzRWlTanQ3+aTx24rpw== X-Gm-Gg: AR+sD13gQwe+aMb4U8ak9ec0ityWW4xVx9Q0LYksK9XfWF8BfdHsTIHpbyXwqQ9oVEl D+DUXtFxY/0D3TsxkSlkI5FdkErVWhJ7ekZibO/2blX+oR2vw/xkE86kFtueBnOX5CcnYLqcffD K8tMiD1nD5DA6okBChjY22cF4/1QlSQ7lIbeH6dl67iFUvLSyr0efdPWWoaldjluAr3F4PJ0RsR h0IIUVV61vjlSb2a2hkhyUuTTWnIPi7PU9a6RKXxlaULdY/xmNSZHgJrEHX2SP44LJzMri61uW2 VP5U6sn7Vp/7l/LLbFbb/MRGqmtI6YmUQGiwZ5u0BCixJsNM1E/X44j61ZFwCDbDth1SAO5TPvY 2YB86Mh/GrW1LegL0FbnHTnWM/nDUJeymfv6X1ziQT81ltbalH2gF74jlNKCrN+Rz6P3bETEfAe P2zFlD2ad9xi9e7SY19mTZsVBPSSjPcWXKjZmNFHs7vWjqRpjetDEcnS0= X-Received: by 2002:a05:600c:4e55:b0:499:a07d:a482 with SMTP id 5b1f17b1804b1-499aa1a28efmr108125755e9.10.1787148077976; Wed, 19 Aug 2026 07:01:17 -0700 (PDT) Received: from TC-LAPTOP ([2a01:e0a:b8a:2610:d3:816e:dd0c:fe6a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd728sm92751985e9.3.2026.08.19.07.01.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 07:01:17 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: hansg@kernel.org, lee@kernel.org, platform-driver-x86@vger.kernel.org, ilpo.jarvinen@linux.intel.com, djrscally@gmail.com, linux-media@vger.kernel.org, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, andriy.shevchenko@intel.com, v.vitovt@gmail.com, Thierry Chatard Subject: [PATCH v7 1/5] platform/x86: intel_lpss: add resource conflict quirk for Dell Latitude 5285 Date: Wed, 19 Aug 2026 16:01:03 +0200 Message-ID: <20260819140107.1329091-2-tchatard@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260819140107.1329091-1-tchatard@gmail.com> References: <20260819140107.1329091-1-tchatard@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Dell Latitude 5285 2-in-1 has a BIOS bug where the ACPI GEXP device and the I2C4 controller (INT3446) both claim the same MMIO region via the shared SB04 variable. This causes intel_lpss_acpi to fail binding to I2C4 with -EBUSY, preventing the front camera (OV5670) sensor from being registered. Add a DMI quirk that selects IGNORE_RESOURCE_CONFLICTS for INT3446 on this machine, matching the existing pattern used by other LPSS quirks. Signed-off-by: Thierry Chatard --- drivers/mfd/intel-lpss-acpi.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/mfd/intel-lpss-acpi.c b/drivers/mfd/intel-lpss-acpi.c index 63406026d..f08b41970 100644 --- a/drivers/mfd/intel-lpss-acpi.c +++ b/drivers/mfd/intel-lpss-acpi.c @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include #include #include @@ -52,6 +54,16 @@ static const struct intel_lpss_platform_info spt_i2c_inf= o =3D { .swnode =3D &spt_i2c_node, }; =20 +/* + * Same as spt_i2c_info but with QUIRK_IGNORE_RESOURCE_CONFLICTS for Dell = 5285 + * where ACPI GEXP device conflicts with I2C4 (INT3446) MMIO resources. + */ +static const struct intel_lpss_platform_info spt_i2c_info_ignore_conflicts= =3D { + .clk_rate =3D 120000000, + .swnode =3D &spt_i2c_node, + .quirks =3D QUIRK_IGNORE_RESOURCE_CONFLICTS, +}; + static const struct property_entry uart_properties[] =3D { PROPERTY_ENTRY_U32("reg-io-width", 4), PROPERTY_ENTRY_U32("reg-shift", 2), @@ -172,6 +184,16 @@ static const struct acpi_device_id intel_lpss_acpi_ids= [] =3D { }; MODULE_DEVICE_TABLE(acpi, intel_lpss_acpi_ids); =20 +static const struct dmi_system_id dell5285_lpss_dmi[] =3D { + { + .matches =3D { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Latitude 5285"), + }, + }, + { } +}; + static int intel_lpss_acpi_probe(struct platform_device *pdev) { const struct intel_lpss_platform_info *data; @@ -182,6 +204,18 @@ static int intel_lpss_acpi_probe(struct platform_devic= e *pdev) if (!data) return -ENODEV; =20 + /* + * Apply IGNORE_RESOURCE_CONFLICTS for I2C4 on Dell Latitude 5285. + * The ACPI GEXP device conflicts with I2C4 (INT3446) MMIO resources + * due to a BIOS bug where both use the same SB04 variable. + */ + if (acpi_dev_hid_uid_match(ACPI_COMPANION(&pdev->dev), + "INT3446", NULL) && + dmi_check_system(dell5285_lpss_dmi)) { + dev_info(&pdev->dev, "Dell 5285: applying IGNORE_RESOURCE_CONFLICTS for = I2C4\n"); + data =3D &spt_i2c_info_ignore_conflicts; + } + info =3D devm_kmemdup(&pdev->dev, data, sizeof(*info), GFP_KERNEL); if (!info) return -ENOMEM; --=20 2.51.0 From nobody Tue Sep 29 18:54:56 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 B8F4137C927 for ; Wed, 19 Aug 2026 14:01:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148105; cv=none; b=AyXR5Ka9ZK1tgtsLiCOF+5OUE9ijcI0y18Dtuy9kj4XXHHmI+7RDEdQz0ZD3xr8ssiMC3YPUFDF5kmyC+GbQqDsVUHyZGP7RWHMgOQZ9IRTksFH+lC6goPVXC30p1jBj88Xb/Vb+Zf4Igldj3ovknQ2i3UKse2fWb0NQuJQjebE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148105; c=relaxed/simple; bh=amIhiO6JmzW+kzPwLGwrMElO1KXnqHQPODse2YU5Vik=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=frzX2dlzjl87SuZbBlUK5HyeLnAmQED+o7Lp5t3rWqMECaM4YUHthID700+DOdFRVugFncd3bNQvK7XI+1QR76LCVH45hQgnSSvqOKQdjYM3MnjNeED2porFvm6MBxMeMHl4iNhcfZhqM0bJNIzgctNXAp62HZ/c0F8ng5yaBKg= 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=Wf8Se+Jm; arc=none smtp.client-ip=209.85.221.45 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="Wf8Se+Jm" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-4815bce4652so671389f8f.1 for ; Wed, 19 Aug 2026 07:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787148102; x=1787752902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=biMrT1thXy/ZTV9SLOUzhkAbxmjoLWgwh0fRGdvN4rY=; b=Wf8Se+JmKzc6ftaTwtrGvxwYCz/jr70Qa4GrwmRP4De1Nn2LW09ipLOIbArhpDJmzx PNZdMc7dpEWC9Ogj2JDDhLoILG5OfZcVZFh2nRnaPIBtimuvwuG1i5eJpf/9qVEgWbg8 wys5sICqsxruKi5o1EvQyuuTDitMz0UoImRiqXeRFvO2VVpS2iKIs4WqdXTHY5Ir3hzU GuLKK1yKrKdDVP15Zea/YYVaEgEX89Jln8dMcK1EEdYiU7qv4PalNuWqHTax3R3HFidV fWuB66hX6xKFlnwbbpZ6bGM4LYE9bw9eQvzm8xrmqfq3ja/iEPfKmlnm/8HplS7KCIQD foOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787148102; x=1787752902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=biMrT1thXy/ZTV9SLOUzhkAbxmjoLWgwh0fRGdvN4rY=; b=lHpKdxWwogP9S5Dn8XYsCnyOrPQWGlF4mPN/eoeYaywVnubx9FZ0QXRPZJfsvqppRp Ik6HZhzsRHMtaRvBS5tuNaTKyMhintJULePQqzer++jfkppxpfJmwPedEuMhJCcHNiVN 81vHNY8S18z29JbO/L2IRPGuMdD3a7bkpp+qOKCQbzJ6maapF8XLEUcfFYwyWGV2m3eI ikXZyTxN7j/XdhhlSL3jrFNJX8xjmLbcbM8Fasfg/RKm9HQbA9qUJWhSZ5RxEsPDwbC1 IHGipdgq85d0CFloBz3aJgqu5tRtQ3TFmPzuk24WB6hL2Eu7pkKylzUhO8ryjYDvVykG HaqA== X-Gm-Message-State: AOJu0YyVhUObFX+0h7UuBgDbMjJX65QOuSRhyAKAEt2Tkonvv9cm32jh ai37WbhFNjWxUNw92kqgvqtVI860NIQeCN3dJPSOKDGXU+LkmYW3VJlwK/y9x4FNkv4SZw== X-Gm-Gg: AR+sD11qq5Y0nSM0pwYXUNieumpsUJPELoMxHfhXqZOyCdX2VHo72ObKsY0FoqFWpwE UL7LYvtF9SjZPyCC6ncO+YweRwEHM0YQYJxiEWPg+ueovDEZKAa4drXUnVdBPyk8DLrmHSEJZNl L4VjsAVw+qErrEcE7jivpyiaOCVHdrL0y6k1Yk4r9/DR6aRBrkAjt/iQnyAiaFlEeSJGUp4clD6 YvDP4SLa1m3V1Qk5xh+qNSFbI9+uaJr+SqZSkPICks227R8UNm8yzIS0qiGrqLyPQ0lYgA74IQ3 iyb5GK1SEV3mIYCrhCTBdm9jh73n15wDrd3HTVeJqP8jhK0uuq3PVwEZDHG2NYKqCyLredDOpiW 4hqb9+/dxJmVR4/NTMRLXsk/2K7bWwtFdecQI2ze+J0UwULPMdgoKV0T26MITxWC7cRnKbFj0Tb 2gI9VtJ/GDoHiH2gH8CypcwPqHwsjmR+F6hGRaDTIXDoVujVA5gsHzj/U= X-Received: by 2002:a05:600c:1385:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-499aa17dcd0mr80712355e9.7.1787148080332; Wed, 19 Aug 2026 07:01:20 -0700 (PDT) Received: from TC-LAPTOP ([2a01:e0a:b8a:2610:d3:816e:dd0c:fe6a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd728sm92751985e9.3.2026.08.19.07.01.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 07:01:19 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: hansg@kernel.org, lee@kernel.org, platform-driver-x86@vger.kernel.org, ilpo.jarvinen@linux.intel.com, djrscally@gmail.com, linux-media@vger.kernel.org, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, andriy.shevchenko@intel.com, v.vitovt@gmail.com, Thierry Chatard Subject: [PATCH v7 2/5] platform/x86: int3472: tps68470: fix clock consumer registration for Dell Latitude 5285 Date: Wed, 19 Aug 2026 16:01:04 +0200 Message-ID: <20260819140107.1329091-3-tchatard@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260819140107.1329091-1-tchatard@gmail.com> References: <20260819140107.1329091-1-tchatard@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The BIOS on the Dell Latitude 5285 leaves GNVS field C0TP at zero. With C0TP=3D0 the ACPI _DEP method on INT3479 (OV5670, front camera) resolves to PCI0 instead of the INT3472 (TPS68470 PMIC) device. Because for_each_acpi_consumer_dev() walks the _DEP reverse-mapping, INT3479 is invisible to it: the clock consumer lookup entry for the front camera is never registered with the tps68470-clk driver, and the OV5670 sensor driver cannot acquire its MCLK. Fix this without touching ACPI tables by adding optional static clock consumer fields to struct int3472_tps68470_board_data: unsigned int n_clk_consumers; const struct tps68470_clk_consumer *clk_consumers; When board data is present and n_clk_consumers is non-zero, probe uses the static list instead of for_each_acpi_consumer_dev() to populate tps68470-clk platform data. Platforms that do not set these fields continue to use the existing ACPI traversal path unchanged. Signed-off-by: Thierry Chatard --- drivers/platform/x86/intel/int3472/tps68470.c | 106 ++++++++++-------- drivers/platform/x86/intel/int3472/tps68470.h | 10 ++ 2 files changed, 71 insertions(+), 45 deletions(-) diff --git a/drivers/platform/x86/intel/int3472/tps68470.c b/drivers/platfo= rm/x86/intel/int3472/tps68470.c index a496075c0..6c04ea6c0 100644 --- a/drivers/platform/x86/intel/int3472/tps68470.c +++ b/drivers/platform/x86/intel/int3472/tps68470.c @@ -147,18 +147,15 @@ static int skl_int3472_tps68470_probe(struct i2c_clie= nt *client) struct tps68470_clk_platform_data *clk_pdata; struct mfd_cell *cells; struct regmap *regmap; + struct gpiod_lookup_table * const *tables; int n_consumers; int device_type; int ret; - int i; + unsigned int i; =20 if (!adev) return -ENODEV; =20 - n_consumers =3D skl_int3472_fill_clk_pdata(&client->dev, &clk_pdata); - if (n_consumers < 0) - return n_consumers; - regmap =3D devm_regmap_init_i2c(client, &tps68470_regmap_config); if (IS_ERR(regmap)) { dev_err(&client->dev, "Failed to create regmap: %ld\n", PTR_ERR(regmap)); @@ -176,52 +173,71 @@ static int skl_int3472_tps68470_probe(struct i2c_clie= nt *client) device_type =3D skl_int3472_tps68470_calc_type(adev); switch (device_type) { case DESIGNED_FOR_WINDOWS: - board_data =3D int3472_tps68470_get_board_data(dev_name(&client->dev)); - if (!board_data) - return dev_err_probe(&client->dev, -ENODEV, "No board-data found for th= is model\n"); - - cells =3D kzalloc_objs(*cells, TPS68470_WIN_MFD_CELL_COUNT); - if (!cells) - return -ENOMEM; - - /* - * The order of the cells matters here! The clk must be first - * because the regulator depends on it. The gpios must be last, - * acpi_gpiochip_add() calls acpi_dev_clear_dependencies() and - * the clk + regulators must be ready when this happens. - */ - cells[0].name =3D "tps68470-clk"; - cells[0].platform_data =3D clk_pdata; - cells[0].pdata_size =3D struct_size(clk_pdata, consumers, n_consumers); - cells[1].name =3D "tps68470-regulator"; - cells[1].platform_data =3D (void *)board_data->tps68470_regulator_pdata; - cells[1].pdata_size =3D sizeof(struct tps68470_regulator_platform_data); - cells[2].name =3D "tps68470-gpio"; - - for (i =3D 0; i < board_data->n_gpiod_lookups; i++) - gpiod_add_lookup_table(board_data->tps68470_gpio_lookup_tables[i]); - - ret =3D devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, - cells, TPS68470_WIN_MFD_CELL_COUNT, - NULL, 0, NULL); - kfree(cells); - - if (ret) { - for (i =3D 0; i < board_data->n_gpiod_lookups; i++) - gpiod_remove_lookup_table(board_data->tps68470_gpio_lookup_tables[i]); - } - break; case DESIGNED_FOR_CHROMEOS: - ret =3D devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, - tps68470_cros, ARRAY_SIZE(tps68470_cros), - NULL, 0, NULL); - break; + return devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, + tps68470_cros, + ARRAY_SIZE(tps68470_cros), + NULL, 0, NULL); default: dev_err(&client->dev, "Failed to add MFD devices\n"); return device_type; } =20 + board_data =3D int3472_tps68470_get_board_data(dev_name(&client->dev)); + if (!board_data) + return dev_err_probe(&client->dev, -ENODEV, + "No board-data found for this model\n"); + + if (board_data->n_clk_consumers) { + clk_pdata =3D devm_kzalloc(&client->dev, + struct_size(clk_pdata, consumers, + board_data->n_clk_consumers), + GFP_KERNEL); + if (!clk_pdata) + return -ENOMEM; + clk_pdata->n_consumers =3D board_data->n_clk_consumers; + for (i =3D 0; i < board_data->n_clk_consumers; i++) + clk_pdata->consumers[i] =3D board_data->clk_consumers[i]; + n_consumers =3D board_data->n_clk_consumers; + } else { + n_consumers =3D skl_int3472_fill_clk_pdata(&client->dev, &clk_pdata); + if (n_consumers < 0) + return n_consumers; + } + + cells =3D kzalloc_objs(*cells, TPS68470_WIN_MFD_CELL_COUNT); + if (!cells) + return -ENOMEM; + + /* + * The order of the cells matters here! The clk must be first + * because the regulator depends on it. The gpios must be last, + * acpi_gpiochip_add() calls acpi_dev_clear_dependencies() and + * the clk + regulators must be ready when this happens. + */ + cells[0].name =3D "tps68470-clk"; + cells[0].platform_data =3D clk_pdata; + cells[0].pdata_size =3D struct_size(clk_pdata, consumers, n_consumers); + cells[1].name =3D "tps68470-regulator"; + cells[1].platform_data =3D (void *)board_data->tps68470_regulator_pdata; + cells[1].pdata_size =3D sizeof(struct tps68470_regulator_platform_data); + cells[2].name =3D "tps68470-gpio"; + + tables =3D board_data->tps68470_gpio_lookup_tables; + for (i =3D 0; i < board_data->n_gpiod_lookups; i++) + gpiod_add_lookup_table(tables[i]); + + ret =3D devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, + cells, TPS68470_WIN_MFD_CELL_COUNT, + NULL, 0, NULL); + kfree(cells); + + if (ret) { + for (i =3D 0; i < board_data->n_gpiod_lookups; i++) + gpiod_remove_lookup_table(tables[i]); + } + /* * No acpi_dev_clear_dependencies() here, since the acpi_gpiochip_add() * for the GPIO cell already does this. @@ -233,7 +249,7 @@ static int skl_int3472_tps68470_probe(struct i2c_client= *client) static void skl_int3472_tps68470_remove(struct i2c_client *client) { const struct int3472_tps68470_board_data *board_data; - int i; + unsigned int i; =20 board_data =3D int3472_tps68470_get_board_data(dev_name(&client->dev)); if (board_data) { diff --git a/drivers/platform/x86/intel/int3472/tps68470.h b/drivers/platfo= rm/x86/intel/int3472/tps68470.h index 35915e701..1d3d67459 100644 --- a/drivers/platform/x86/intel/int3472/tps68470.h +++ b/drivers/platform/x86/intel/int3472/tps68470.h @@ -12,11 +12,21 @@ #define _INTEL_SKL_INT3472_TPS68470_H =20 struct gpiod_lookup_table; +struct tps68470_clk_consumer; struct tps68470_regulator_platform_data; =20 struct int3472_tps68470_board_data { const char *dev_name; const struct tps68470_regulator_platform_data *tps68470_regulator_pdata; + /* + * Static clock consumers. When n_clk_consumers is non-zero these + * are used in place of for_each_acpi_consumer_dev() to build the + * tps68470-clk platform data. Needed on platforms where a sensor's + * ACPI _DEP does not list the INT3472 device, causing that sensor + * to be missed by the ACPI dependency traversal. + */ + unsigned int n_clk_consumers; + const struct tps68470_clk_consumer *clk_consumers; unsigned int n_gpiod_lookups; struct gpiod_lookup_table *tps68470_gpio_lookup_tables[]; }; --=20 2.51.0 From nobody Tue Sep 29 18:54:56 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 36D3433CEA8 for ; Wed, 19 Aug 2026 14:01:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148086; cv=none; b=CN7E4Unr436FtLhWxDff+/yBO9thkyiS9j9vPM090ZM7bwhbOFpcuRhMRVSC05vbc5iRvkuSfqnslwLw53DqVmfcOvPSytJd+EaOWDhf9TT6ihz8QhxotSn6bJLP61r/jjMY9Uxp0Clj5++Wv/o/4PUDmOK+7k2L179laOdD3bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148086; c=relaxed/simple; bh=tQVCUWPnmz+z7EC2JTxwJEAG8ApFHBzBlwu6BgQuJ4o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L5PIAcDK0itukUIXPtV8+X2UhS+dkYWzF2+PQT2pbpWqF/r82UHdEqBlttUiFe9Z5PY29ZY95hzJeQGNc60Gu5mj1ULfpoDRRMqVXnx3XyxdOYyEQCu2sMlPx+jvKy2g7qnQvmxQt40BncUCxrz8bbNq0wy+6J2BJ3MLR1mcEGE= 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=UpjBToLh; arc=none smtp.client-ip=209.85.128.47 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="UpjBToLh" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4998b5a63e2so11066745e9.1 for ; Wed, 19 Aug 2026 07:01:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787148082; x=1787752882; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mWN0v5UH0k+rxliqf8aJrBdp3hf7DtwmTD7oZK678to=; b=UpjBToLhIlz+UwWG1okY/5uzLg+Be/Q9QT7ysQj420D42A+lcxhERxqC7rFYoYd0aM LnPK0egKdQIdJWXyUGWLhmlnEBGguYKF7LUkpMbX8Nh5GYkkHejhhFkpwpEPQh0srJAL p32KUWf7GLmS5vQk/StWmXKp6ANTJSxJ5J69O+K19d0jq7p0bf5z35DH1e1ULv2u/Wzk HD9aKCCYpA0gM2Nw1LwqMLyJyAGZU6WZGTTN7p6y2KI8yAlO2xnrs16pJxvial1AWr9M +XN1rfH7lSHj4oDmfAfsOVzMrRzMzoV/al5xq6ZiXp7pYdCKQ5VttlTOm4yxsibDU1H1 3U5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787148082; x=1787752882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mWN0v5UH0k+rxliqf8aJrBdp3hf7DtwmTD7oZK678to=; b=KmB9zdDk0WmU9WCb354jdjyRVyl4ciESvg1nHgqnAn+B2tI2ENNqEkgf6wQGO3O4pj ZH8DvOQ5q7SFv3OSndqz9QzKed94uQ6AjBrx1BnFQGZSAoS/x0TGeyIHYlvSdO9OxyMe ZNSCMKgs+hEBWDeAr2Mg+caECPXuiDp3ws8y1N3+hrx6pwkF1B1F/QnJ68uWOkTos+3K YnugAPdGMEfPCZN3XwFoFNUFgAi/w0bTGpDbXHZDrlTncoDKTs40faBteGeGwPk5Tbtv Ghr8FHtw5OPYyCCc9oIhHg17Dk9Zu6dT7aaMkjIaS0dqgM17YhT9ah26P03NTQe1nZpv JKdg== X-Gm-Message-State: AOJu0YwTlxMaHCDcVq5mMD2Xwvr2u9a/IkCG9t6PXuMf0E6ojZdv5WGm ydkDVRG2fNYWaW/qPx5rD5zWDCeGc1AzAp0iqXq4CR2p6Ip5BhyQvRXtzCASq8vWd+P2YQ== X-Gm-Gg: AR+sD10CY7vkoPr8WpabwabXGrAWC73IxkoCwZn+u1Zrrl/oBXzElyADiFuVikkGhXK ORT5YKr9cODzNDDN0lTst/I7VgQPcS4BJKtC0b3OCeEoa6iZZDm7pgZcqENb6znooQqxQD0Wl5/ Q2z9lb7cqBqTOqkoe81puzPupn0ppSEm/56uezODwjbSDh6YlwIIiZrBX3qOJTsCJgDWVG99M+u NoEYu0bQoYzrG3K74dhAfmka3TKraoGcfDt8Z3K+fV2ZW4dCabHsYX3aLecXjrGkCmPFWckHAcQ QkMDcVewE37GLvBTY6XAoQpG8mDtOWkkjrQ3n+gj0CuoCBB7HQ8HyETa2lynYO6hzB4sQHt5lMp UhYKYf07FxYBKlp2PgXCXPgfvR6vdO0t2TyNZdnMpNCjhrXt30H5wjhHF17Kc5aLCfgipys1VoU z0YHFeCVl/jbxnbin57C631H81cE0JeIwkap5WgubamYhcYI7KFH9sqkU= X-Received: by 2002:a05:600c:3f19:b0:499:51f0:a9b2 with SMTP id 5b1f17b1804b1-499aa1499ecmr106433105e9.1.1787148082217; Wed, 19 Aug 2026 07:01:22 -0700 (PDT) Received: from TC-LAPTOP ([2a01:e0a:b8a:2610:d3:816e:dd0c:fe6a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd728sm92751985e9.3.2026.08.19.07.01.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 07:01:21 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: hansg@kernel.org, lee@kernel.org, platform-driver-x86@vger.kernel.org, ilpo.jarvinen@linux.intel.com, djrscally@gmail.com, linux-media@vger.kernel.org, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, andriy.shevchenko@intel.com, v.vitovt@gmail.com, Thierry Chatard Subject: [PATCH v7 3/5] platform/x86: int3472: tps68470: add board data for Dell Latitude 5285 Date: Wed, 19 Aug 2026 16:01:05 +0200 Message-ID: <20260819140107.1329091-4-tchatard@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260819140107.1329091-1-tchatard@gmail.com> References: <20260819140107.1329091-1-tchatard@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Dell Latitude 5285 2-in-1 has two cameras connected through a TPS68470 PMIC/clock/GPIO hub: Front: OV5670 (ACPI INT3479) on I2C4 Back: OV8858 (ACPI INT3477) on I2C2, daisy-chained behind TPS68470 S_I2C port (controlled by reg 0x43 S_I2C_CTL) GPIO mapping (TPS68470): INT3479 (OV5670): GPIO3 =3D reset, GPIO4 =3D powerdown (both active-low) INT3477 (OV8858): GPIO9 =3D s_resetn, GPIO7 =3D s_enable (both active-low) GPIO9 and GPIO7 are the TPS68470 secondary-port GPIOs (SGPO reg 0x22 bits 2 and 0), not regular GPDO outputs. Regulator mapping: CORE -> dvdd / INT3477 ANA -> avdd / INT3477 VIO -> generic (kept always_on; no direct consumers) VSIO -> dovdd / INT3477: enabling VSIO sets S_I2C_CTL (reg 0x43), opening the I2C passthrough to OV8858; the ov8858 driver enables dovdd at probe time, which naturally activates the passthrough before any I2C transaction to the sensor. AUX1 -> dvdd / INT3479 AUX2 -> dovdd / INT3479 A static clock consumer list is provided for both sensors (INT3477 and INT3479) to work around the broken ACPI _DEP on INT3479 described in the previous patch. Signed-off-by: Thierry Chatard --- .../x86/intel/int3472/tps68470_board_data.c | 170 +++++++++++++++++- 1 file changed, 167 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/intel/int3472/tps68470_board_data.c b/dri= vers/platform/x86/intel/int3472/tps68470_board_data.c index 71357a036..6961e2926 100644 --- a/drivers/platform/x86/intel/int3472/tps68470_board_data.c +++ b/drivers/platform/x86/intel/int3472/tps68470_board_data.c @@ -74,8 +74,12 @@ static const struct regulator_init_data surface_go_tps68= 470_vcm_reg_init_data =3D .consumer_supplies =3D int347a_vcm_consumer_supplies, }; =20 -/* Ensure the always-on VIO regulator has the same voltage as VSIO */ -static const struct regulator_init_data surface_go_tps68470_vio_reg_init_d= ata =3D { +/* + * Keep VIO always_on. Its voltage must exactly match VSIO on any board + * using the TPS68470 I2C pass-through, and must never have direct consume= rs + * (all I2C-path outputs are gated through VSIO). + */ +static const struct regulator_init_data generic_tps68470_vio_reg_init_data= =3D { .constraints =3D { .min_uV =3D 1800600, .max_uV =3D 1800600, @@ -122,7 +126,7 @@ static const struct tps68470_regulator_platform_data su= rface_go_tps68470_pdata =3D [TPS68470_CORE] =3D &surface_go_tps68470_core_reg_init_data, [TPS68470_ANA] =3D &surface_go_tps68470_ana_reg_init_data, [TPS68470_VCM] =3D &surface_go_tps68470_vcm_reg_init_data, - [TPS68470_VIO] =3D &surface_go_tps68470_vio_reg_init_data, + [TPS68470_VIO] =3D &generic_tps68470_vio_reg_init_data, [TPS68470_VSIO] =3D &surface_go_tps68470_vsio_reg_init_data, [TPS68470_AUX1] =3D &surface_go_tps68470_aux1_reg_init_data, [TPS68470_AUX2] =3D &surface_go_tps68470_aux2_reg_init_data, @@ -287,6 +291,159 @@ static const struct int3472_tps68470_board_data dell_= 7212_tps68470_board_data =3D }, }; =20 +/* Settings for Dell Latitude 5285 2-in-1 */ + +/* + * The BIOS leaves GNVS field C0TP at zero, which causes INT3479's _DEP to + * resolve to PCI0 instead of the INT3472 device. Provide a static clock + * consumer list so probe registers MCLK lookups for both sensors regardle= ss + * of the broken _DEP traversal. + */ +static const struct tps68470_clk_consumer dell_5285_clk_consumers[] =3D { + { .consumer_dev_name =3D "i2c-INT3477:00" }, /* OV8858 rear camera */ + { .consumer_dev_name =3D "i2c-INT3479:00" }, /* OV5670 front camera */ +}; + +static struct regulator_consumer_supply dell_5285_int3477_ana_consumer_sup= plies[] =3D { + REGULATOR_SUPPLY("avdd", "i2c-INT3477:00"), +}; + +static struct regulator_consumer_supply dell_5285_int3477_core_consumer_su= pplies[] =3D { + REGULATOR_SUPPLY("dvdd", "i2c-INT3477:00"), +}; + +/* + * VSIO controls the S_I2C_CTL passthrough; its voltage must match VIO + * (both 1800600 uV). dovdd/INT3477 enables the passthrough when OV8858 + * opens its I2C path. avdd/INT3479 provides the OV5670 analog supply. + */ +static struct regulator_consumer_supply dell_5285_int3477_vsio_consumer_su= pplies[] =3D { + REGULATOR_SUPPLY("dovdd", "i2c-INT3477:00"), + REGULATOR_SUPPLY("avdd", "i2c-INT3479:00"), +}; + +static struct regulator_consumer_supply dell_5285_int3479_aux1_consumer_su= pplies[] =3D { + REGULATOR_SUPPLY("dvdd", "i2c-INT3479:00"), +}; + +static struct regulator_consumer_supply dell_5285_int3479_aux2_consumer_su= pplies[] =3D { + REGULATOR_SUPPLY("dovdd", "i2c-INT3479:00"), +}; + +static const struct regulator_init_data dell_5285_tps68470_core_reg_init_d= ata =3D { + .constraints =3D { + .min_uV =3D 1200000, + .max_uV =3D 1200000, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D ARRAY_SIZE(dell_5285_int3477_core_consumer_sup= plies), + .consumer_supplies =3D dell_5285_int3477_core_consumer_supplies, +}; + +static const struct regulator_init_data dell_5285_tps68470_ana_reg_init_da= ta =3D { + .constraints =3D { + .min_uV =3D 2815200, + .max_uV =3D 2815200, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D ARRAY_SIZE(dell_5285_int3477_ana_consumer_supp= lies), + .consumer_supplies =3D dell_5285_int3477_ana_consumer_supplies, +}; + +static const struct regulator_init_data dell_5285_tps68470_vcm_reg_init_da= ta =3D { + .constraints =3D { + .min_uV =3D 2815200, + .max_uV =3D 2815200, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D 0, + .consumer_supplies =3D NULL, +}; + +static const struct regulator_init_data dell_5285_tps68470_vsio_reg_init_d= ata =3D { + .constraints =3D { + .min_uV =3D 1800600, + .max_uV =3D 1800600, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D ARRAY_SIZE(dell_5285_int3477_vsio_consumer_sup= plies), + .consumer_supplies =3D dell_5285_int3477_vsio_consumer_supplies, +}; + +static const struct regulator_init_data dell_5285_tps68470_aux1_reg_init_d= ata =3D { + .constraints =3D { + .min_uV =3D 1213200, + .max_uV =3D 1213200, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D ARRAY_SIZE(dell_5285_int3479_aux1_consumer_sup= plies), + .consumer_supplies =3D dell_5285_int3479_aux1_consumer_supplies, +}; + +static const struct regulator_init_data dell_5285_tps68470_aux2_reg_init_d= ata =3D { + .constraints =3D { + .min_uV =3D 1800600, + .max_uV =3D 1800600, + .apply_uV =3D 1, + .valid_ops_mask =3D REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies =3D ARRAY_SIZE(dell_5285_int3479_aux2_consumer_sup= plies), + .consumer_supplies =3D dell_5285_int3479_aux2_consumer_supplies, +}; + +static const struct tps68470_regulator_platform_data dell_5285_tps68470_pd= ata =3D { + .reg_init_data =3D { + [TPS68470_CORE] =3D &dell_5285_tps68470_core_reg_init_data, + [TPS68470_ANA] =3D &dell_5285_tps68470_ana_reg_init_data, + [TPS68470_VCM] =3D &dell_5285_tps68470_vcm_reg_init_data, + [TPS68470_VIO] =3D &generic_tps68470_vio_reg_init_data, + [TPS68470_VSIO] =3D &dell_5285_tps68470_vsio_reg_init_data, + [TPS68470_AUX1] =3D &dell_5285_tps68470_aux1_reg_init_data, + [TPS68470_AUX2] =3D &dell_5285_tps68470_aux2_reg_init_data, + }, +}; + +static struct gpiod_lookup_table dell_5285_int3477_gpios =3D { + .dev_id =3D "i2c-INT3477:00", + .table =3D { + /* + * TPS68470 GPIO9 =3D s_resetn (secondary camera reset, active-low) + * TPS68470 GPIO7 =3D s_enable (secondary camera enable/powerdown) + * These logic outputs are specifically designed for secondary + * camera control on the TPS68470. Matches Surface Go pattern. + */ + GPIO_LOOKUP("tps68470-gpio", 9, "reset", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("tps68470-gpio", 7, "powerdown", GPIO_ACTIVE_LOW), + { } + } +}; + +static struct gpiod_lookup_table dell_5285_int3479_gpios =3D { + .dev_id =3D "i2c-INT3479:00", + .table =3D { + GPIO_LOOKUP("tps68470-gpio", 3, "reset", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("tps68470-gpio", 4, "powerdown", GPIO_ACTIVE_LOW), + { } + } +}; + +static const struct int3472_tps68470_board_data dell_5285_tps68470_board_d= ata =3D { + .dev_name =3D "i2c-INT3472:05", + .tps68470_regulator_pdata =3D &dell_5285_tps68470_pdata, + .n_clk_consumers =3D ARRAY_SIZE(dell_5285_clk_consumers), + .clk_consumers =3D dell_5285_clk_consumers, + .n_gpiod_lookups =3D 2, + .tps68470_gpio_lookup_tables =3D { + &dell_5285_int3477_gpios, + &dell_5285_int3479_gpios, + }, +}; + static const struct dmi_system_id int3472_tps68470_board_data_table[] =3D { { .matches =3D { @@ -316,6 +473,13 @@ static const struct dmi_system_id int3472_tps68470_boa= rd_data_table[] =3D { }, .driver_data =3D (void *)&dell_7212_tps68470_board_data, }, + { + .matches =3D { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Latitude 5285"), + }, + .driver_data =3D (void *)&dell_5285_tps68470_board_data, + }, { } }; =20 --=20 2.51.0 From nobody Tue Sep 29 18:54:56 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 4B81047728F for ; Wed, 19 Aug 2026 14:01:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148088; cv=none; b=SshmtkcfOIyAHN1jTlJcWXdrOaV54C01MMp/Gyxp8f1L0qq2CmJgafEmMhgW1k6s7SEstJP6TV3WyBy/YIVsYmWX4Ma8LgjbZbBWSzuoPPeRtRx3q/KRZnRlLmG/DyXTQ/ZdiH6bZ5WpToU8Dzknlw8MjF5g27PzAlQyaHrOoWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148088; c=relaxed/simple; bh=wde4TF8CgNzn8si/JL9P12OCZloroRuFEPIxq/TcvgI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HBRZOeCabhPkoz0safBrvevaw/FDVCQrStaTOspv7tadHsI6/wKyANIGtUbytpoDVCpZR2abKOPcLseGff6iAqwRoGWwoa480KeNP6f6QHnOtLeDkA99OtZqQ1qTNCx/EgvVm+KuHQ8irpLFnkMzESnXp8lIlCWFcE9kGujV7Ak= 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=aGwBHTpR; arc=none smtp.client-ip=209.85.128.45 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="aGwBHTpR" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-499840a2575so8311695e9.3 for ; Wed, 19 Aug 2026 07:01:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787148084; x=1787752884; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TVHeDChmbK7H9JMCFb+9pqFytvxF0fdzrozCeGR4L7s=; b=aGwBHTpRkAl1g95/qIypJyRFejq/EnV4MnX5kJssY92jWQ49wjqpZ2MGbt1pRczR+a z5lKTaEfeQqpJlndkT5VkfGYujo41V6Tv7aWLcWhX17IQcSvcShtkvBmGBIbvu8tMZM3 XF3gOeo4KWVBDpfGZFogfkXQtv94ouyJvAfaR7Fk5SA5zpYznrnY/3TCZozRG7U5Cjak xWc5WiSRlL/Z66gXMkfgw72Vod8s8253TvcWx88GGxVck2YKl+txqK/qPx69Fc6kerIx oTfuisG0MF1YQ5ZbmUP5n1ymmao5fNlBtUC8oysLHEO5WLM8N/whSC9G8c8ZLtd2VVwi /tWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787148084; x=1787752884; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=TVHeDChmbK7H9JMCFb+9pqFytvxF0fdzrozCeGR4L7s=; b=H7nAHzBELpFJA/yZfx2llDaVFiTtex7tRkaE+6ZTZkETciaMTohdZR31B5mAMF0iFQ eLnRXUxVNqe06hj1yuiy1fTolTzYq01Nd/kIyr1+q+j4RljwlV1T+/pA126FOCo9myce GRbzN8SJoyi4pptkNMXKM3pqu0T22qBOdrp6SKhMjQsk+t9Pru2Ktxp4Mk9+j/n0iPgA C0aPjS/WyXumtUfVQTzSsdLOhpXLu+HGUk+zgjNt0qQzulqaTuAUhZZCLrQ9n7dpHxJk JSYi75hvdHFitDmSJosPyj01oVIgz2wN0WgN83aepf3PMF6hMMZ+gddhf6JMlQz9GJL4 Hnhg== X-Gm-Message-State: AOJu0Yw5Wqd7AH9SWjB5x+zHugkr0kC8zaynOA9I5v45xv6XXKi5A0zF 0vXNJhG58Y77Q5Udhs0p+XAJxbKJZcB5TmeN4ADIdvLtqYKTHbUqZdeV60ehL2RmulGaww== X-Gm-Gg: AR+sD10A1DMULEqrc9HPKAE6+CRrqHVxUSnGt1vtBaH19VSgwAOYL31SIEkMN7wRBFh cXGiR0y1McHpzghCQuLPtEyg3EBPmfkMW0aGrdRRXuQjvqiDMjDCyDz34a6qe0IZclnhmyu/U01 G2in7lhfjfr0zYFPCJw0iIfhylEnOt497uwGwR/35fQ7y7s2aBAolgwuEmYQVI4fH/UnLZnBY/e pnp2kJ0si3i0C+fo1WPgJDKlomxbHHvd2JNxsNWg808rX/jYsBF7CsEmAUsn9S+oGKtf/Y97OsQ gA5EZg54YAPfqhB4rhiMqCwDT98yvUGQIaWpJXZwrCOR1MTTXjDAGjzJU6QsjFvdzkHBV//u8l6 N+Yac1UPqlwwgGmCWeGWo/fGZXSPZIu9azMseI+1zxD7acUlrHe2a3V0frcXf+CCzp1izmuQtwo tUpdLyTa9qMSPOuTBzUAh+6aOPJM57y3Lm1jzYYP1XxtFK4Dv444pMfus= X-Received: by 2002:a05:600c:8b06:b0:495:5fdf:2075 with SMTP id 5b1f17b1804b1-499aa0dca0emr101822215e9.0.1787148084171; Wed, 19 Aug 2026 07:01:24 -0700 (PDT) Received: from TC-LAPTOP ([2a01:e0a:b8a:2610:d3:816e:dd0c:fe6a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd728sm92751985e9.3.2026.08.19.07.01.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 07:01:23 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: hansg@kernel.org, lee@kernel.org, platform-driver-x86@vger.kernel.org, ilpo.jarvinen@linux.intel.com, djrscally@gmail.com, linux-media@vger.kernel.org, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, andriy.shevchenko@intel.com, v.vitovt@gmail.com, Thierry Chatard Subject: [PATCH v7 4/5] media: ipu-bridge: add sensor configuration for OV8858 (INT3477) Date: Wed, 19 Aug 2026 16:01:06 +0200 Message-ID: <20260819140107.1329091-5-tchatard@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260819140107.1329091-1-tchatard@gmail.com> References: <20260819140107.1329091-1-tchatard@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Omnivision OV8858 is used as the rear camera in several Intel IPU3-based devices (e.g. Dell Latitude 5285 2-in-1). Its ACPI HID is INT3477. Add a sensor configuration entry with a link frequency of 360 MHz to allow ipu_bridge to create the firmware node for this sensor. Signed-off-by: Thierry Chatard --- drivers/media/pci/intel/ipu-bridge.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index fc6608e33..f51749d0f 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -63,6 +63,8 @@ static const struct ipu_sensor_config ipu_supported_senso= rs[] =3D { IPU_SENSOR_CONFIG("INT33F0", 1, 384000000), /* Omnivision OV2740 */ IPU_SENSOR_CONFIG("INT3474", 1, 180000000), + /* Omnivision OV8858 */ + IPU_SENSOR_CONFIG("INT3477", 1, 360000000), /* Omnivision OV5670 */ IPU_SENSOR_CONFIG("INT3479", 1, 422400000), /* Omnivision OV8865 */ --=20 2.51.0 From nobody Tue Sep 29 18:54:56 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 C575F36654C for ; Wed, 19 Aug 2026 14:01:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148089; cv=none; b=FRe8mWB+wgsAOqAlb+KhGTHyJbomJem2+wWye9NS9RkoPPaA/AZyHKG70VFhjXga+l0ugV0AfR4roEu8UKza1SLLIJzW3WJRnhdZ7AVdT4N7+gGU60xtrOyfgqT6DXIQMVQDqGiPu8DABkJHOwpFRfx62dZWlzlrlbx49B6m4Qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787148089; c=relaxed/simple; bh=86MNvmsnbWVXkw6zWONeDyMeOkiRVg8K9Hjh+fAPMKw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AdaPHUMnQ38AuqGpiNMnZYal3jAh8iIE5n1+AoQ6bbWDAmcYHxxFPZGdUJmvcNX/DmR+VM9Fre4wqJrwOzYy8poUVo4drIWWms3UDOkvg11g7SrufN2seByAS4v1krdeZlT9C3UnezilEpyhOHFqaIpwUt6pkgqTGtDTXwcGFj0= 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=WZcmANFA; arc=none smtp.client-ip=209.85.128.54 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="WZcmANFA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-49554ebb87dso11016125e9.3 for ; Wed, 19 Aug 2026 07:01:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787148086; x=1787752886; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NmAH5ezdPVsVJaUq1RUn7vsVIqur53S8admsZ2HZb1Y=; b=WZcmANFAnxN+u+5B1bRRCKC1236Qqsey7G1PGfnkVqrXPNfZq6xqS5GAgfLnEWTb4X 13VDFH7dgQUsFa/4gAuN6v+GklDhazam6LBFj4+8AxmkxJVn8O2DIVHpJa0SeFkZj2VW py4Ovm8T1UJz2liMBnXMnNRkSN/d2tE5AOjEvPsiVlTEqSYxYkEOC3Faeh78RkoC/7W+ THUWjUjS2LjyQs3iRK50KehhYLBCH6bOsOiK5yoiJBFeps9s9jeY3+U1BsScVThQ6i60 0ec80cmgOY52JyOfdPtcAwKcr5CBCo2JRVlY4/r/wlFmxA7IJWRafDioedJ7+iwt5ZAw /IXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787148086; x=1787752886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NmAH5ezdPVsVJaUq1RUn7vsVIqur53S8admsZ2HZb1Y=; b=kFWQGQKw+bpDseK2Hvq2Di899HM14MUgJqq3ikOnSnAKMHoLqjgR314FWAU5xrzpXX asHKT6s2QSm3klGLnIkbQKfyq8+WMqOfAScZu7GlAGWvkZQKNyWeiOC6b5iYBkHEb4Rs RiSwcWAMxreGFiaZPy2x6fUp1X0rcGAxJFz3M5ftyvI5529uVPEMe2HJbGK1sct9zY2q 66korqfDVREvbQ2iS4frJNlhAImnXKPx3n6+40amMQlkz9NWzn7IFShUy+UgT9SgbnrO jSRUbI/pJyaPL0JFM6dgNRniAIr8CcKT1/W7oJ/sOpSi2+T+bdPnIdijFJmMGwbmyuXJ vwaw== X-Gm-Message-State: AOJu0YxgPpP06IHJXtTR1lXT9/PmuOL0fv5Y8m/5sD/EA8nwKnwrD9Jk 60B6bJ1Xk7UwXxB1lxvebE7QmS4REoCwtVBrAaQ8nTWPkUMnB84QTZisXLwcV5Hb7EySnQ== X-Gm-Gg: AR+sD11Y0D/BOo/b561X41HMsm2+SRUVes5XFl+/IkFiftYbKwRBEYP18ItD5OjtsZH 4OalgRu0KKSbs2+t0fzqeeHiZJPi0RPl8e8/5TR5uRYMejrFXG6sVXg5F2bY7qPnnSREz79Tgcy JvwXqfPAfUxgmleXsYVZFAk0Up3auViGZIrrlln3ereNf+zhSj3p6VqGbSkEuXiNmlVPcBADxq4 tvXMLpzSITrdtnnCEVmf2ocGcnKmfGQ9mmkEhRhsreab+hcR/MepkboqloOljzmOCSzEyCsCH2j 1jI3PKctSacBDtPbEFXDw6a3z7WxndFvkBSSpuYLZU099FF3VvnTqZCeILFZYiLpQxSiut8p3Nv 4eaLCkgxiYZIXSMN3lbs/GJcuWbeaLMFzc1z9qtBj0M77xg0ZeClVAb5vbyRSatklzzC/beQFKa rdAlMpnTuP79MQpyIaanCuUu7TXXJ0i8yqjVeBy+xuulbcH6HKzrCfYEs= X-Received: by 2002:a05:600c:a30f:b0:499:b01e:911c with SMTP id 5b1f17b1804b1-499b01e9125mr1489005e9.2.1787148085828; Wed, 19 Aug 2026 07:01:25 -0700 (PDT) Received: from TC-LAPTOP ([2a01:e0a:b8a:2610:d3:816e:dd0c:fe6a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd728sm92751985e9.3.2026.08.19.07.01.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 07:01:25 -0700 (PDT) From: Thierry Chatard To: linux-kernel@vger.kernel.org Cc: hansg@kernel.org, lee@kernel.org, platform-driver-x86@vger.kernel.org, ilpo.jarvinen@linux.intel.com, djrscally@gmail.com, linux-media@vger.kernel.org, mchehab@kernel.org, sakari.ailus@linux.intel.com, jacopo.mondi@ideasonboard.com, nicholas@rothemail.net, andriy.shevchenko@intel.com, v.vitovt@gmail.com, Thierry Chatard Subject: [PATCH v7 5/5] media: ov8858: add ACPI device ID INT3477 Date: Wed, 19 Aug 2026 16:01:07 +0200 Message-ID: <20260819140107.1329091-6-tchatard@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260819140107.1329091-1-tchatard@gmail.com> References: <20260819140107.1329091-1-tchatard@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Omnivision OV8858 appears in ACPI firmware under the HID INT3477 on Intel IPU3-based platforms such as the Dell Latitude 5285 2-in-1. Add INT3477 to the ACPI match table so the driver binds when instantiated by ipu_bridge. Signed-off-by: Thierry Chatard --- drivers/media/i2c/ov8858.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c index 3f45f7fab..9c786c9bc 100644 --- a/drivers/media/i2c/ov8858.c +++ b/drivers/media/i2c/ov8858.c @@ -1981,11 +1981,18 @@ static const struct of_device_id ov8858_of_match[] = =3D { }; MODULE_DEVICE_TABLE(of, ov8858_of_match); =20 +static const struct acpi_device_id ov8858_acpi_ids[] =3D { + { "INT3477" }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(acpi, ov8858_acpi_ids); + static struct i2c_driver ov8858_i2c_driver =3D { .driver =3D { .name =3D "ov8858", .pm =3D &ov8858_pm_ops, .of_match_table =3D ov8858_of_match, + .acpi_match_table =3D ov8858_acpi_ids, }, .probe =3D ov8858_probe, .remove =3D ov8858_remove, --=20 2.51.0