From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lr2-f12.google.com (mail-lr2-f12.google.com [74.125.230.76]) (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 554062F0C48 for ; Thu, 24 Sep 2026 17:19:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.230.76 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790270384; cv=none; b=PSNSP31naZm4TCc+7nNBJ6ZBlF1yKSNb4oNQ1rrsnMmQUMGOq7AMmRKnQ3fsOizhMzO+FyzkslZ4qeR/At/CRmrQVF6MmrcFgoM9xwQoSDMvVbq0QqU1lv2msgwGsMkCq12MJBfLR461OzGMTXOFRpFHCyIuwAvxNcmicaHMAGk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790270384; c=relaxed/simple; bh=450tFLg7EnOAPR2yDMHJYBlANAdWJqaRzrSNWvypPRs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SPbk4MhcyjR1/bShk5Y+BQ9DDVDVjs1TbHAKzfhmPkSlNMBJn/hG1D5WSYlJl82xeEmwVoxlzb0phEzfIcVgYLosAp9w+ZSgnx7FZ36caCF7aTkoJ4MwtXfxZiWLUIptr5qy/EVuL53I8BesxImdSCEjkAw/yziEX8ZCuL8HVIk= 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=P93qPqkX; arc=none smtp.client-ip=74.125.230.76 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="P93qPqkX" Received: by mail-lr2-f12.google.com with SMTP id 38308e7fff4ca-3a5b6840edcso20592811fa.1 for ; Thu, 24 Sep 2026 10:19:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790270379; x=1790875179; darn=lists.linux.dev; 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=pdnRArbPWf99f27wgWWClhvY6JdJmK7JETplDExRxWg=; b=P93qPqkXcavJb/IzJ9W5Vs4BHJto5UrBBOF02KUI2Xa64WxwfLHV7LSMpYL7Ip8A+X WiKq2uGNxQ0uZeWdZAIxGiwsL/u6ezYxX9Mh+i2Zdr1IMjDNEFONGzuM8UaT0PCmJaKd ImVQwxF737f/wpGEpuH992deZhMBW8xKkeSUEZs2PVU/Xbxbgw/VC9z2SkFYiR5w5Zsj FiigEN0Mnc/B1uPQGXeXByccG6q/g5nsb9wpQeopZ0/9HA1WvrxuzwYvY2ZBhGPQ+SaO MymXZFeeNOkxZGAPHdXoFQp/zJIYLDSdSOefGzFU2o5rrW8GXfJoU/PXP/6J/EMI8A// yBAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790270379; x=1790875179; 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=pdnRArbPWf99f27wgWWClhvY6JdJmK7JETplDExRxWg=; b=1f2Btw2Bxq4+5nQre3hsTnTN9Ws7EjPvFOIgtiqjEN/NpqxYKOOpQsW/rk33nDpkcc C9ozc4dW95kJpP1NCQwVlO/10TdZi9uCWx+oJDMwKZvydCX71QuXxKe87Vfdaya0ynFT bHTg+1e9heSGqbWnBM3LgeqORVddddrUz1wSTZy1p13NYVw84/4al5/ulhEpzyW+zJsk Rk4TxE1DWMkYGqlLv5qB1vVhtAUdaT39mO+RT3ozS0nGT/SYIhcAJmXtDYIkKk+xC3pL hO7mrPO0XuRaUETv7nEQfYppoxvj8am8UtNHqbpWYF6w+EDW6TwbCWx9M6Gi6Sa1+Yhy 19/A== X-Forwarded-Encrypted: i=1; AKwUvBwXe4Xk/WZ9/weK/qWCldscZg1PTnm0poHFp5RI4laE7eqtpvTW4huO+AKmXjNodcJ591fqMf+cm1b+S5jK@lists.linux.dev X-Gm-Message-State: AFuF++kiL6gnn5cyGgzAmgr0NMvm3upljUMXIYIFbbapuCAeWNEQ2Ik5 K8OrbooTcmB1t2rkS4wVGVHktz03i5a0xq4bV6TJ2l/0ZtLGoZh07Usj X-Gm-Gg: AYBFou3AimYX9IB0Elt0fthhNuAhYg+lOI1JzTg8+o9icQFxMQXlCrTVz328fi7LOUH oJRWOJx3Buq3bNpb0CwzE1znknhih8C+n0QLw4zSrAJX59trm/EFkRi2JN3udJ/4dpkN9wmzMu/ YMbGhM4uErPjEjjFb6Cn9lYmr/mfUC13iq04qagCHUCXQmuHE4W77uNd2YXjvY6/Jlfrd/20rkq OR1M6BRdQyWNU5jS2DCwm1V1bktPHlvKx4cm2H6NE/HhxIT5arj3RCOiMTqjoIM4tXEl5JZWts2 t7d1C+pdJFbhKVJRREDBz0HydLm0EQbnmCNBcFc889Yc5Ypg9DV5DMGdsTtzDesG1JEtKYH0Igi Y3yTQfXda96QeF6dvPZZQYJBGgG5Vm7mYSB4V52jSgKqzgMVGNQa5ouJNkWTLyNR+HLOLKJHuVS OZefPIYCZ5zPazAPjqqRr/K25BmKh5CnnKtpjLuVtqUrh+EDuPs3L7ZWGkSrushZuGRJjXtakef uCKdM0SceakIfs= X-Received: by 2002:a05:651c:554:b0:3a5:e792:2dc7 with SMTP id 38308e7fff4ca-3a63c0e07demr8418331fa.15.1790270379301; Thu, 24 Sep 2026 10:19:39 -0700 (PDT) Received: from quietus.tail91f8a6.ts.net ([104.194.144.188]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a63bf2c4aesm9450601fa.8.2026.09.24.10.19.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 10:19:38 -0700 (PDT) From: Ruslan Koreev To: sakari.ailus@linux.intel.com, benjamin.mugnier@foss.st.com, sylvain.petinot@foss.st.com, dan.scally@ideasonboard.com Cc: mchehab@kernel.org, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, gregkh@linuxfoundation.org, linux-media@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Peter Marshall , Ruslan Koreev Subject: [PATCH 3/4] media: i2c: vd55g1: Add ACPI support for the Lenovo TBE20A1 HID Date: Thu, 24 Sep 2026 20:18:19 +0300 Message-ID: <20260924171820.1179823-4-koreev.r@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260924171820.1179823-1-koreev.r@gmail.com> References: <20260924171820.1179823-1-koreev.r@gmail.com> Precedence: bulk X-Mailing-List: linux-staging@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The IR camera of the Lenovo ThinkPad X1 Carbon Gen 14 is an ST VD55G1 enumerated by ACPI as TBE20A1, connected to the Intel IPU7 with one CSI-2 lane and powered through an INT3472 discrete device. Match the HID and take the sensor version from the match data, as for OF. Only the analog supply is switchable on this platform; vcore and vddio are always on and fall back to dummy regulators. On these platforms the CSI-2 endpoint is a software node that ipu-bridge attaches to the sensor device when the IPU driver probes, which can happen after the sensor driver has been bound. Defer probing instead of failing when there is no endpoint yet, as the other sensor drivers used with the IPU bridge do and as v4l2_fwnode_endpoint_parse() itself does for a missing endpoint. Tested on a ThinkPad X1 Carbon Gen 14 (Core Ultra X7 358H, IPU7), streaming 804x704 through libcamera. Signed-off-by: Ruslan Koreev --- drivers/media/i2c/vd55g1.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/vd55g1.c b/drivers/media/i2c/vd55g1.c index 6f458f611..64889c35d 100644 --- a/drivers/media/i2c/vd55g1.c +++ b/drivers/media/i2c/vd55g1.c @@ -1903,10 +1903,9 @@ static int vd55g1_parse_dt(struct vd55g1 *sensor) endpoint = fwnode_graph_get_endpoint_by_id(dev_fwnode(sensor->dev), 0, 0, 0); - if (!endpoint) { - dev_err(sensor->dev, "Endpoint node not found\n"); - return -EINVAL; - } + if (!endpoint) + return dev_err_probe(sensor->dev, -EPROBE_DEFER, + "waiting for fwnode graph endpoint\n"); ret = vd55g1_check_csi_conf(sensor, endpoint); fwnode_handle_put(endpoint); @@ -2084,6 +2083,13 @@ static const struct of_device_id vd55g1_dt_ids[] = { }; MODULE_DEVICE_TABLE(of, vd55g1_dt_ids); +static const struct acpi_device_id vd55g1_acpi_ids[] = { + /* Lenovo ThinkPad X1 Carbon Gen 14 IR camera, Intel IPU7 */ + { "TBE20A1", (kernel_ulong_t)&vd55g1_versions[0] }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(acpi, vd55g1_acpi_ids); + static const struct dev_pm_ops vd55g1_pm_ops = { SET_RUNTIME_PM_OPS(vd55g1_power_off, vd55g1_power_on, NULL) }; @@ -2092,6 +2098,7 @@ static struct i2c_driver vd55g1_i2c_driver = { .driver = { .name = "vd55g1", .of_match_table = vd55g1_dt_ids, + .acpi_match_table = vd55g1_acpi_ids, .pm = &vd55g1_pm_ops, }, .probe = vd55g1_probe, -- 2.55.0