From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 88B174A1E14 for ; Mon, 31 Aug 2026 18:19:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200354; cv=none; b=BFDxSOJ+DlV8gKkTaaZyj/FO+ClnatRAPAoRmLRL39Eoy5klzM8+pBFj5ggkj/scrg+1TyoalWYVhyK/AGsBz/ZQYRsQWMHcTg80TBXCoYo8punZMDGD6JpgqVgIFDg1VpHP2McH++ol/yof42+hByNyYFPWcaIKLRSedSuNj7k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200354; c=relaxed/simple; bh=7Mf6k0qVkozT4YeFG9EjJGBACApFcUwcZixfGal0Bpc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GSH6x118sqcrT2/Jwgyd1grnh1gEYpJ38e0/ln0lKXMFE8S1FJt6+WiVL4hw/PGsYoOUuqzK72g/CJbsHflMnRYesJqG+wInRToYfmSVlZzq8KV5Cdmhq7qNTIIMOE7UHal5wjbyI+98YXeH3hHBw60/tCDM+Ug67s/O4C19H84= 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=by6AYrJ7; arc=none smtp.client-ip=209.85.221.50 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="by6AYrJ7" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-482f9309813so41622f8f.1 for ; Mon, 31 Aug 2026 11:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200351; x=1788805151; 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=SM52+0dlyaiG6ccFqkc22ArwQiXLj4h7/RuQ4lLTioI=; b=by6AYrJ7WlEs3sQO0NeCK3zLL5B+bsrro/R7H4K2pDPD0TDuMHvoQHlmRR01kfYKb/ rTd09bX1COsRZ3yqoU3ggSoFSEp504z6OzuiDUljS0qL6CQ/Pz5Y2mvNizSNET8uyjzd CqAxzqfTEWdLxMQDHr1jAKOejIPV5vAhiDYJSRnMq5Hrg7Hf3aqtL3yyvVBHpHa37iCx JTixCVeW8Y1UUv1rWsRvesuRUVx0E5yLyta3EGBe/JDwMT+By13bK8gNS9UhhLDsX07w 51mH4R4eMXrfT2fjbh73KeCGtiAYt7W4LlsMG6QQvU0PkHHh0bC3P6NQ7hPt/jUF7Uf1 Ux1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200351; x=1788805151; 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=SM52+0dlyaiG6ccFqkc22ArwQiXLj4h7/RuQ4lLTioI=; b=LKCCXHLYa/vWMRp4UMZ9KNqC+zSQLk0DbkcGEREMG+wgHuNbCT9QdXHl3aYlY7nn5f WUKwmuLucBaYyZpne01nwoYJe+scVcfL3uP/pnKwLBZmn9HqYCuJD1/vanXxsyehbinD YCgsh4ubgkvdNbt0jU8m4LUZrOJ7vpul1/7zwPYrWVNB0+oImQXFc+wf8IlUxTphC9+I V+yPdjeC+KnpeT5PvZ748qo5FjkNBMSlPjlBGx8saZ2MrPRsXHXntDVNia7fJBwZ1Qc2 O54JuMp/hN/qbDQAFg2reVIRcVE1sjnV69eK5vi6ATBbVj6VrUI+wvCcvvf5IRiRM81q orLQ== X-Forwarded-Encrypted: i=1; AHgh+Rro36d/Aq9Zf74D6ZqF5l9h7RILJKW8CCAvebBWoAbpYXEgjW6jKB0xfo/GBNiXMGSAlmUXjZvb4eRDa+M=@vger.kernel.org X-Gm-Message-State: AFuF++nmdW5aISj8zV1krz4urWeFPjNXUFT+fDviC2WYQfZWBaFEDInI 7Cw6FL4+ZOg9iAKVUz/U/+cbLtAj9CAKE2Mh4btdwq+ZjDDHwpgaRlbc X-Gm-Gg: AR+sD10DTgnhvXoPHyGb9qU8qMDAJ5BBAtMrO7qoj07dljzXqLFcEWkVO28zBBuJ15T HXSQib5gYTySZMtN5LD61fmVSK7cqwhtsUqnSL5Qdy0sNPLDliHGgUjHh51uojujs7JALubbWvT BTbenEPQctiFPLiyFPTht/D7nQhnDwpTMQTf8gA7PlL2J44+OUNsZDAgh17mS0ZfAKNWX/dPsrf bKSWNrKmKFmp3ImyUqtnvsmaRYetbpuJRD0KFDgOawYNN5lzd0FX6G4kdHz9ew0sOheBGS6JIFw WbpbFv4Iix5WzTVNRxVMlRu1OuqNBbTNaIt96nVw3C1QYKz+15+r72CI2oW5j9SFxB487KWE14p V8bBPK8JaSveK1SXmqhzMw/BmFMr5q3lKuYEdfmBMB2u1WIZZLrzWLr8BiPwOv+SEXIM0qE2h4u 6+xEnsRtfl1uzXMV/FYiEN0nJNLYqVtwkaUeYRw3nhFdUYbR0c1DElUIgKzVAXOyBsL9yNdwRz3 GxLdcKkAlsdBQ== X-Received: by 2002:a05:600c:a106:b0:49b:92df:87be with SMTP id 5b1f17b1804b1-49b92df8833mr356747355e9.4.1788200350661; Mon, 31 Aug 2026 11:19:10 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:10 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 1/6] media: i2c: ov5693: Add OVTI5693 ACPI HID Date: Mon, 31 Aug 2026 20:18:53 +0200 Message-ID: <20260831181858.325109-2-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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 ov5693 driver only matches the "INT33BE" ACPI HID. Some Intel IPU6 Surface devices (e.g. Microsoft Surface Pro 9) enumerate the OV5693 front camera with the ACPI HID "OVTI5693" instead, so the i2c core never binds the driver. Add "OVTI5693" to the ACPI match table. Devices that use "INT33BE" (e.g. Surface Go 4) are unaffected. Tested on Surface Pro 9 (IPU6): the sensor enumerates as OVTI5693:00 (ACPI path \_SB_.PC00.I2C3.CAMF) and binds with this change. Link: https://github.com/linux-surface/linux-surface/pull/2171 Signed-off-by: Fernando Rimoli Reviewed-by: Daniel Scally Reviewed-by and Jakob's Tested-by rather than carry them across a --- drivers/media/i2c/ov5693.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/media/i2c/ov5693.c b/drivers/media/i2c/ov5693.c index 4cc796bbe..02236f3db 100644 --- a/drivers/media/i2c/ov5693.c +++ b/drivers/media/i2c/ov5693.c @@ -1396,6 +1396,7 @@ static const struct dev_pm_ops ov5693_pm_ops =3D { =20 static const struct acpi_device_id ov5693_acpi_match[] =3D { {"INT33BE"}, + {"OVTI5693"}, {}, }; MODULE_DEVICE_TABLE(acpi, ov5693_acpi_match); --=20 2.43.0 From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 27EB24A2048 for ; Mon, 31 Aug 2026 18:19:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200356; cv=none; b=uQi1V+KH0RYf46vLuxmyeiA8clbJW6Ohk3yp/48bwfqkPyY8f/V9BtxCFLt8mh9wZ/inwcVCAEVjjfjNckbUTV8CzeFV10zMoIvcs2+ZaLl41AQ26GlExOjmw64n9n1xC8tL8yVNfAllfZnZWAASJfgLBpbN1Ae+HqDm3emiOng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200356; c=relaxed/simple; bh=38NdsR7peVgmU+Oqd+nIHCO2SJKGV8pY8vX9DgyGykU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XhUsApfrvRRIT23tPUnexBz992TSHtBMKoT+YS+UFVUZA3mKy46gVbCzaisVGJcNfgCqXLbnILPG4k6lRt4JdjOV0Tsd+Vq21nDO9QAqSjWrzT8QWFtYxl8jpAdd9DtBYK38rT3X4UgN6C42axRa8bI8lciTEGfRS1U/o3qb+7w= 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=Cit7pU/8; arc=none smtp.client-ip=209.85.128.41 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="Cit7pU/8" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-49cd77e0f95so13803615e9.3 for ; Mon, 31 Aug 2026 11:19:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200353; x=1788805153; 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=2abaWYtjVKV9VZXaLgXVyTO08oA7zY/lp6O2BFsx6Gs=; b=Cit7pU/8uR4akFIzlwQcRbKgon3icdWxW+vdCJbXVuYYaiQ4PWUfeYDMMrFfGG/49t uoH4KJDe9p2uVTA4qqcysNfBOg5JM+4LGxgsmYu5ZRnIe12Ht9dqLiDmxjiiEKcsMaBu C0B+wKDUZjZRkBZcr3IvbqYe7FKC7EAzoyysY2E5tBDGdNE4WWcOL5wF6IetKozFBoyI UUeYnsOLp2VWJupurv8G8GmZjJUZC74NzAN3NcoeCayCPxt5OYsFsAlbGmWPPxyfSSiR mrJtIpcKi12ZXHZJAWuPpDuiRX2/rc+D9FJ91v0Yn/tEoRvIASujSEs89oFwjn836lZH HbKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200353; x=1788805153; 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=2abaWYtjVKV9VZXaLgXVyTO08oA7zY/lp6O2BFsx6Gs=; b=Sw9EW1MZLEuKwSQ2vXduTEc0qz1ijqt9O0DanVoB+mfEX46LxuMjnslq0BS76jQ1hD Lxi/YJWPIKfI+tt+vr2r+444MQdaEleUvuKXIDt9Pa3yHzKMOlTcpoWPePJxCkNHutJr +gOjo2/Yhwyb/fifIT67I+nEkzPjBRmwlS5BMWtJYvze7tmXooTaJF6OejwqCVEelrII 00QkO1DuQ/IxmUzU3yeg73zROaeRWlMgZ4ZQL9sMEL2A6d0RFnY80zXEra4HIelbscpZ wlnr0rc0XUAsGOWFPeoSRRE8x+W9haA92AUbLh6bwRrUNPU8dKqzYc4edc6oZd6/VZuG 3OHg== X-Forwarded-Encrypted: i=1; AHgh+RohGYu8uVQoszGATE/RyDufdNoQ3JZsMXR5cSiTK4msq01cg3Tb7kXhq29605RONbQeMHKqQ32h8aN5jOY=@vger.kernel.org X-Gm-Message-State: AFuF++ktkuwXgZvbELD8MK43ugZQzMDaGQeIPtYoYrUAX78L/DkwVDvq 5GENdN4MWgFLjpFdmEuJX4B1wK1WlaMRpzd0zbqATfHsc1LKK5Yrb/nc X-Gm-Gg: AR+sD11cUyhmN/Tz0OxSde9xPf/fyVHt+OK4bn2hJ25dKe9R5yMOzpxKPaL+3Ch5be9 mk7rlq+Ud1394xzlUqIn+gRlI7CQqtMniw9AsMd33h/kRHv83KMb+sTOwEHvR1as5ahcR0Eo+x9 flC9QX7pxjcvDpn2QlLeeSmRyCvO3RGK/VsYoCTrUZfaT8sNIupK9ZB66YoCg7ywL72YyiTnqGq td692JXVZ6pqZt6VWWqfCh4wx+oQhyWUcE81mX0MhDpwA0rVb3ypvVt/tpohAdUrLsZvw2LaQ8l +ghKVipCaQahBvMLnBaSNZg5XUanA4HJI3qN+pOdPKlLi4OMyrxSo0lX9ZmlsM1In9SjTRRFNyv 2YoBgNycHstwkZExon9cf+SzpsKF8QOQlZ03E0cU7nTDcFecdUCO6gaU6cU+MVY6uM4TFNUlzsx F3JOzxynxlYr7yMxCrETyaCqax9FnBzFYwxo9MEhBdpshLpYabWkTcUqpvG3PQcILbPoDiXAMQw m6D4qrw0EYw X-Received: by 2002:a05:600c:4512:b0:49c:dc14:d681 with SMTP id 5b1f17b1804b1-49cdc14d69dmr51045145e9.3.1788200353295; Mon, 31 Aug 2026 11:19:13 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:12 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 2/6] media: ipu-bridge: Add OVTI5693 to the list of supported sensors Date: Mon, 31 Aug 2026 20:18:54 +0200 Message-ID: <20260831181858.325109-3-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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 IPU bridge builds the firmware node graph only for sensors listed in ipu_supported_sensors[]. The OV5693 is currently listed only under its legacy "INT33BE" HID, so on Intel IPU6 Surface devices that enumerate it as "OVTI5693" (e.g. Microsoft Surface Pro 9) the bridge never wires up the sensor and the front camera is unusable. Add an "OVTI5693" entry. The link frequency (419200000) matches the existing INT33BE entry, as it is the same sensor. Tested on Surface Pro 9 (IPU6). Link: https://github.com/linux-surface/linux-surface/pull/2171 Signed-off-by: Fernando Rimoli Reviewed-by: Daniel Scally Reviewed-by and Jakob's Tested-by rather than carry them across a --- 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 1bb3a3e98..131c70844 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -95,6 +95,8 @@ static const struct ipu_sensor_config ipu_supported_senso= rs[] =3D { IPU_SENSOR_CONFIG("OVTI2680", 1, 331200000), /* Omnivision OV5675 */ IPU_SENSOR_CONFIG("OVTI5675", 1, 450000000), + /* Omnivision OV5693 */ + IPU_SENSOR_CONFIG("OVTI5693", 1, 419200000), /* Omnivision OV8856 */ IPU_SENSOR_CONFIG("OVTI8856", 3, 180000000, 360000000, 720000000), /* Sony IMX471 */ --=20 2.43.0 From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 B17654A207B for ; Mon, 31 Aug 2026 18:19:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200359; cv=none; b=fOsUmbzB3EZUj2J2zPyTmhtvya/6NDiYUD/Dy6w9KNCX9kCbnYeQUJvgD5GHKgOXwy2D1RewVVuAKyy8uz30HDD970SQLVE6JM6Yy9qkj4iyw5lr3RZgmh/hUP0BEuNg4m+y+kYaNREKMZwzhk3LevBdYUXw2nqP/r7kVbm9waA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200359; c=relaxed/simple; bh=F/P/lDzBUQgAHm9DWr74x+YLUzXYIEkJzXHwbOSy83k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fZSGj55EPzEtALLE66/AU6aB8Ud5y34QiWFZIlcBoYWrchR/M64AVIuSGIVbkyxOHmIsSRxH2RuR9cvywSrx5kjaum1BAz0PWhdP7NQgtHi/vXTPxhv8Aak/uLF1hgPsq62bSTiIOI3MB+FRxvIEQG6KJ6Je3e1kO4NQ+xCjIBI= 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=JwV6j+1i; arc=none smtp.client-ip=209.85.128.44 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="JwV6j+1i" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-49557167508so40662475e9.1 for ; Mon, 31 Aug 2026 11:19:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200356; x=1788805156; 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=8tRCYYXXIwDhhRFCoMY7bivZyfHuyPHIYVD2obasJQk=; b=JwV6j+1i8zrLtPLTQzzp/oUcR57UYNmNIMdLlIkAlraAShJnaGzgewRGnI2C1sts3E H7W2ffFjIrkYj9WEfusK0rpfs00ZnSnZ3w+kOWCau3T3pdpE6aeJaABbQjaTD3MkPmil WvA6QvtfCoxTI7KOkC4m4c3fV63cPGwSxT5gZ2qyvu59YfYlMXEC5FDeACzzJQSmFUWs PMZrboG86KLd+Ugj5pxEwM5AqlQGbq+IPGhQhYfVK7dqzvisMrY2fG4gx9xVmvPhws+M odoM8nz6Gyh93ROJgK7FrJPRf+IrbiN3VwQ/golCOjGO+FbdAjxXbNn4lc11y79ubo+v YcWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200356; x=1788805156; 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=8tRCYYXXIwDhhRFCoMY7bivZyfHuyPHIYVD2obasJQk=; b=gPRiJm2CAaW5G+Aj38tEEnuiF59XcBPkqact8MBQtSTQe/n+AT0jkrtSt2GS+BVQV6 FB/518mr3IsE0gaAK0AKm5cyNh5Uu9U/Ld6EzExkRhxyRoh7KmohO5lp9HOnbiTT9FIZ 8bkAYoO2JrFf/yxZyqtsrFn2jRlG5l2BpOPY2+UUckaiz5TXLcv5SpySLZc1+FRla6W/ u4tx8dskJ+V8PDEirZ9Dk9cZFG4bdcOli/yqtCDOnUfQLH2LzEJPioGVlj1pnkxBYcZh GYyvPB15+eDy9hf24zvWwekRNf4oMyEOPQNcNKxre5ACBlEBtwodSjbdz6FDBsW5NM71 euqA== X-Forwarded-Encrypted: i=1; AHgh+RqtrizF5CRgerS5MThIKRqmAAkMGW5wvxtwYNuK4DWZgu5oh66KqfsVA5gTwPSGqCv6kbuZYausa3vxEQI=@vger.kernel.org X-Gm-Message-State: AFuF++mom8nsm7T3T1nKPHDr88dyj37K9ZCmCDM3vN/oLKu4FNaX56YI BHLiawZIgjzR5vJ54AEIBgfyFBuS36Qk3hLxKuYKpeAOEMKfK2ZrcJlu X-Gm-Gg: AR+sD11HIq7pRpuLtPfQQuFxxJAQ1U9BS8YSetUsokSr76IKbG1WXF//D3ccqQCRor3 YKC/ja5tdHtvk+aSDIzp15tl5BvpPCaYu8RMNgCPB1NFy8gbj435JKDNZIRh5fNFXe0waQkv6mY Z5FsV5xIzlZrtELNVMWBv9RGpZlEhLEoKbKgqjpfKF3mCZtjB4VxVjdwpblLHpURn5XhD15Jr6j ZbV+c59joJyrjpmnBKwnvDJqEKCvFU0+kHn7uOt8FwkjDDPe2ufqNLFuJaDMUpvFA+slnB1eNLR mvhTv5JL9gN5PSUjfsC5HAdTeXX5AuH7AanoPm7khABPQtCyFtILEiepsa7mhLDd5xdw5qs7FD4 UEQIx4klL8jHxqhhsj4y+c/12rtpvq8X4ciuHygA001Ng2qt6iqFHQ0Xrt7+8EuiMR20tX9bP3s eMtgxTjrLXUlfM5j6sOtP7Ly9lf1TgG68KAPHgNDG1/uEEHO4moTqIiOEP5eU5v/F5J+CGQdgs0 blQ0G17Yuew X-Received: by 2002:a05:600c:1d89:b0:493:f140:c3fb with SMTP id 5b1f17b1804b1-49cdc43fc55mr45086345e9.7.1788200355447; Mon, 31 Aug 2026 11:19:15 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:15 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 3/6] media: i2c: ov5693: Gate the MIPI clock lane for non-continuous clock Date: Mon, 31 Aug 2026 20:18:55 +0200 Message-ID: <20260831181858.325109-4-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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 ov5693 never programs MIPI_CTRL00 (0x4800), leaving it at its 0x00 power-on default, which lets the MIPI clock run freely. The IPU3 CSI-2 receiver tolerates this, but the IPU6 receiver (e.g. on Microsoft Surface Pro 8/9 and Surface Go 4) fails to lock onto the link, so the sensor streams but capture times out with "stream stop time out" and no frames arrive. Parse the "clock-noncontinuous" endpoint property (which sets the V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK flag) and, when it is present, gate the clock lane while idle at stream on. Bit 5 of MIPI_CTRL00 has the same meaning here as in ov5647, which sets it for the same purpose. Unlike ov5647, which owns the register across its own stream on and off, this is a read-modify-write of the single gate bit: the ov5693 otherwise never touches MIPI_CTRL00, so preserving the rest of it keeps every platform that does not ask for a non-continuous clock bit-for-bit as it was. No counterpart is needed at stream off, as the link is down by then and the register returns to its default when the sensor is powered off. The "clock-noncontinuous" property is supplied by the ipu-bridge for the affected IPU6 variants in a subsequent patch. Link: https://github.com/linux-surface/linux-surface/pull/2171 Co-developed-by: Arsalan Naeem Signed-off-by: Arsalan Naeem Signed-off-by: Fernando Rimoli Reviewed-by and Jakob's Tested-by rather than carry them across a Tested-by: Fil Dunsky Tested-by: Jakob Berg Jespersen # Surface Pro 7+, IPU6 Tiger = Lake --- drivers/media/i2c/ov5693.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/media/i2c/ov5693.c b/drivers/media/i2c/ov5693.c index 02236f3db..cedc6ea03 100644 --- a/drivers/media/i2c/ov5693.c +++ b/drivers/media/i2c/ov5693.c @@ -35,6 +35,11 @@ #define OV5693_STOP_STREAMING 0x00 #define OV5693_SW_RESET 0x01 =20 +/* MIPI transmitter control */ +#define OV5693_MIPI_CTRL00_REG CCI_REG8(0x4800) +/* Gate the clock lane when there is no packet to transmit */ +#define OV5693_MIPI_CTRL00_CLOCK_LANE_GATE BIT(5) + #define OV5693_REG_CHIP_ID CCI_REG16(0x300a) /* Yes, this is right. The datasheet for the OV5693 gives its ID as 0x5690= */ #define OV5693_CHIP_ID 0x5690 @@ -144,6 +149,9 @@ struct ov5693_device { struct regulator_bulk_data supplies[OV5693_NUM_SUPPLIES]; struct clk *xvclk; =20 + /* Gate the MIPI clock lane when idle (CSI-2 non-continuous clock) */ + bool clock_ncont; + struct ov5693_mode { struct v4l2_rect crop; struct v4l2_mbus_framefmt format; @@ -611,6 +619,19 @@ static int ov5693_enable_streaming(struct ov5693_devic= e *ov5693, bool enable) { int ret =3D 0; =20 + /* + * Gate the MIPI clock lane while idle if the CSI-2 link is configured + * for a non-continuous clock. Only that bit is touched, and only in + * that case, so the register keeps whatever the platform left in it + * and the clock stays free-running as before everywhere else. It + * needs no counterpart at stream off: the link is down by then, and + * the register returns to its default when the sensor is powered off. + */ + if (enable && ov5693->clock_ncont) + cci_update_bits(ov5693->regmap, OV5693_MIPI_CTRL00_REG, + OV5693_MIPI_CTRL00_CLOCK_LANE_GATE, + OV5693_MIPI_CTRL00_CLOCK_LANE_GATE, &ret); + cci_write(ov5693->regmap, OV5693_SW_STREAM_REG, enable ? OV5693_START_STREAMING : OV5693_STOP_STREAMING, &ret); @@ -1259,6 +1280,9 @@ static int ov5693_check_hwcfg(struct ov5693_device *o= v5693) goto out_free_bus_cfg; } =20 + ov5693->clock_ncont =3D bus_cfg.bus.mipi_csi2.flags & + V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK; + out_free_bus_cfg: v4l2_fwnode_endpoint_free(&bus_cfg); =20 --=20 2.43.0 From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 286964A2608 for ; Mon, 31 Aug 2026 18:19:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200360; cv=none; b=QFUK2viBGxxZLl1MbPbYEe6gKTfYxG+bX3rxa26cCTpMO5FLqIEqbLI2geSV5HQ3v9CJmd7aKX8bN11sqUTP4Ox0ATTdPqAMtnl9mIT3Fu9oXMIpUrwjFIAi7NgGrVpPmWh8Ih9OwNgaYe/7mtbiQT6wYp/LdNpkE4422JzJWDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200360; c=relaxed/simple; bh=FztbYciuUu/xBl4EtmM8UJG3T8usV0MXM/d6deYWyo0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mVXqE61ND4eXqx0M1HQD7pY3xFHCfK7Ah4OFv5kbebdvRVeoCHF2FbrWFbPUkNhfhbpYQtC+jbMC9GSLukcJtuY7gqxsc3UcCpGmkhvaPdY6ED/UrHywAlzsdolrzOu578dH0WJneiDgahb8B7fmBQ3m5UqrnHkKr7gPUgrBprw= 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=rM1HRszv; arc=none smtp.client-ip=209.85.128.42 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="rM1HRszv" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-49b8be0409fso24258075e9.2 for ; Mon, 31 Aug 2026 11:19:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200357; x=1788805157; 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=fsl1K9EFVIiMJCG+9Qgue9j3QGOqyAit8togwWpGNDY=; b=rM1HRszvxblm7QOtDWz4Xeqi7ZKigWiihmbhVoCxGq8NdxgqdZjjAOAob+NrZ40UTy czCuZG+Wac0wvTfHBuHfPCevY6d9tlRR8s+uvMXgCKGfNVRlQZQ92POoC6hNJNGjE77F UK9BSv8CTrOkgTMdmKT/+RZhzgKv/FZ+CpMFx3eMx0AsVjK9VnIoJJ/Vy1sVrlLf0rt+ jJInhcnWMLo8/f3mrpvfZNCZgo0f6almUfLRQB2KlTW2yinLRpVaT69bSxTM+Nf8alf1 KjWkHbbtPErMLIycC/Qt+bYORIdldolrdw0/dB0LiUxZnOTmlst/l7hbCuYVjR5Ng5RM LLSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200357; x=1788805157; 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=fsl1K9EFVIiMJCG+9Qgue9j3QGOqyAit8togwWpGNDY=; b=d/xvru5axs7eZYVhUnoh+x89ROLIttBJKFgYU/6nHrmGRfGdtUmseAYvs1LD42urDN TLpPTWDjxDEuR4tw3UPs2h3zffV3xqqITnXyFahmPE6aZ8SWXtm7NTeim5kekcgqg8TY TpWMZFLdHb7hEO3NAHRxu8mgRffj1OdhUQCxeX2YcjNoJWZtdiCS12Oj6T5tGnkv3oR+ cLslUklYQFa05WdQ9hDZY4fE7bMSDgSDYdyOQsfZrTD0pxypr5kq1zZKwPkTxJsmibdM kylGEtYWXpFAVbEXV0ELnusMPYUrE6RAc6t54k8y+ML4Y7rOMvzFzvXW4SGoWSAaQ0hG gnQQ== X-Forwarded-Encrypted: i=1; AHgh+RqqT10aVzzighZRoS1q/hgLk/sbTn8O8+W8AqarQV5URzJLGEgzHeQN9lpToKJiPBD9vmleupI8yASwRaQ=@vger.kernel.org X-Gm-Message-State: AFuF++nzDHzDpbBvh+gpHgF1cHvVX8tGMJ/NKQNPmkt57f+IKhZzZSKQ S5+s8nSrKn3E+ezYhu0wR1bcc+f2Xe7rXfcMSdrksJovcyrwFRHjXe3G X-Gm-Gg: AR+sD10SjECFZdxyiY7B6AGhbn6n/xAhIE3VGsfEAEr35BZn6ZVivTqRmox6HHhgGos 9nN69Xl9G35VMdKBCxyre/UxjtwUJsvI0410CJDOVTnIeksLhYnix3P75wLGS71vYDCPRfyDzRG J4soxGlBCL4wHrB3+9IyKCNj7LE7F2ODPfrCSlOqFYRghuLg1bhHxS7CCW7BGm3MHn9i8mxxJRZ /tDnpqY7GZ6pf4ZskOOzYhrTT2oLqGbn1jMd0ChvJC5azLxxi39RpmHZYti39jfdY9fbJ/gxwMC GOi9eMfyodKLwDIaXIL9LBq2n+rOiDZFoq84NT7vgvFXkGN0pwv7caxq4vGE7BbyXOVbb0fhhMh 9iLjQo64oBGyA+8Sq8HYyreTvudKF7Cu+bpq1tQdVx9ACPhfwKmTqrv1ibpXZAmLsADJqLP4pEa q1SJpdcdmJAOtVxLCqbO2t4FZfvYR71jEIcL96fLsNz4jXRJiwd7PWixArBW1fdbIBhNNaw2/i/ UOS2kgnsq4g X-Received: by 2002:a05:600c:4e86:b0:499:db6d:bc97 with SMTP id 5b1f17b1804b1-49b91bd43a7mr385786455e9.0.1788200357210; Mon, 31 Aug 2026 11:19:17 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:16 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 4/6] media: ipu-bridge: Assign endpoint property indices dynamically Date: Mon, 31 Aug 2026 20:18:56 +0200 Message-ID: <20260831181858.325109-5-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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 endpoint property array is populated with hardcoded indices, so a property that is only set conditionally has to be placed at a fixed slot. As the array is NULL-terminated, such a property is silently dropped when an earlier optional slot is left empty: "link-frequencies" is skipped for configs with nr_link_freqs =3D=3D 0, which would truncate the array before anything following it. Name the endpoint property slots in an enum, size the array accordingly and assign the indices through a bounds-checked running index, as done for the MIPI DisCo for Imaging properties in mipi-disco-img.c. No functional change intended: the same properties are set in the same order. Signed-off-by: Fernando Rimoli Reviewed-by and Jakob's Tested-by rather than carry them across a --- drivers/media/pci/intel/ipu-bridge.c | 27 ++++++++++++++------------- include/media/ipu-bridge.h | 19 ++++++++++++++++++- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index 131c70844..cd3c36d44 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -449,6 +449,7 @@ static void ipu_bridge_create_fwnode_properties( struct ipu_bridge *bridge, const struct ipu_sensor_config *cfg) { + unsigned int i =3D IPU_SENSOR_EP_BUS_TYPE; struct ipu_property_names *names =3D &sensor->prop_names; struct software_node *nodes =3D sensor->swnodes; =20 @@ -508,21 +509,21 @@ static void ipu_bridge_create_fwnode_properties( PROPERTY_ENTRY_REF_ARRAY("lens-focus", sensor->vcm_ref); } =20 - sensor->ep_properties[0] =3D PROPERTY_ENTRY_U32( - sensor->prop_names.bus_type, - V4L2_FWNODE_BUS_TYPE_CSI2_DPHY); - sensor->ep_properties[1] =3D PROPERTY_ENTRY_U32_ARRAY_LEN( - sensor->prop_names.data_lanes, - bridge->data_lanes, sensor->lanes); - sensor->ep_properties[2] =3D PROPERTY_ENTRY_REF_ARRAY( - sensor->prop_names.remote_endpoint, - sensor->local_ref); + sensor->ep_properties[IPU_NEXT_EP_PROPERTY(i, NUM_OF)] =3D + PROPERTY_ENTRY_U32(names->bus_type, + V4L2_FWNODE_BUS_TYPE_CSI2_DPHY); + sensor->ep_properties[IPU_NEXT_EP_PROPERTY(i, NUM_OF)] =3D + PROPERTY_ENTRY_U32_ARRAY_LEN(names->data_lanes, + bridge->data_lanes, sensor->lanes); + sensor->ep_properties[IPU_NEXT_EP_PROPERTY(i, NUM_OF)] =3D + PROPERTY_ENTRY_REF_ARRAY(names->remote_endpoint, + sensor->local_ref); =20 if (cfg->nr_link_freqs > 0) - sensor->ep_properties[3] =3D PROPERTY_ENTRY_U64_ARRAY_LEN( - sensor->prop_names.link_frequencies, - cfg->link_freqs, - cfg->nr_link_freqs); + sensor->ep_properties[IPU_NEXT_EP_PROPERTY(i, NUM_OF)] =3D + PROPERTY_ENTRY_U64_ARRAY_LEN(names->link_frequencies, + cfg->link_freqs, + cfg->nr_link_freqs); =20 sensor->ipu_properties[0] =3D PROPERTY_ENTRY_U32_ARRAY_LEN( sensor->prop_names.data_lanes, diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h index 16fac7654..61e10cef1 100644 --- a/include/media/ipu-bridge.h +++ b/include/media/ipu-bridge.h @@ -64,6 +64,23 @@ enum ipu_sensor_swnodes { SWNODE_COUNT }; =20 +enum ipu_sensor_ep_props { + IPU_SENSOR_EP_BUS_TYPE, + IPU_SENSOR_EP_DATA_LANES, + IPU_SENSOR_EP_REMOTE_EP, + IPU_SENSOR_EP_LINK_FREQUENCIES, + IPU_SENSOR_EP_NUM_OF, + IPU_SENSOR_EP_NUM_ENTRIES +}; + +/* + * Get the index of the next endpoint property in the property array, with= a + * given maximum value. + */ +#define IPU_NEXT_EP_PROPERTY(index, max) \ + (WARN_ON((index) > IPU_SENSOR_EP_##max) ? \ + IPU_SENSOR_EP_##max : (index)++) + /* Data representation as it is in ACPI SSDB buffer */ struct ipu_sensor_ssdb { u8 version; @@ -141,7 +158,7 @@ struct ipu_sensor { const char *vcm_type; =20 struct ipu_property_names prop_names; - struct property_entry ep_properties[5]; + struct property_entry ep_properties[IPU_SENSOR_EP_NUM_ENTRIES]; struct property_entry dev_properties[5]; struct property_entry ipu_properties[3]; struct property_entry ivsc_properties[1]; --=20 2.43.0 From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 B01524A261C for ; Mon, 31 Aug 2026 18:19:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200362; cv=none; b=T/Pv+fqkdYG23GUPGfAcx9/GtqCcl+3q4tEakYp+iNNCReY2jh5Zu9b616y2+kQrHNqNy49kYR45s57G+Xn0q/sQeD83tX7161KMX+8LenrEtTdscWzOc3v6DGP14Noaxaw64Ly8UWiIyzPgEcuKONl6QHe8Zn+LWyxwUozE7BI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200362; c=relaxed/simple; bh=BNErPJFItjdmNqkCy5QarfwFjClYdyv4WlBIvJKkr6A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YvXv/ppLyKhH2glCibTz1vZkZgJiG8g8jZtsKoJH7XqsD7xeyp0YpaYLzwvF//2LcuADGDdM/BwUa++OpqWAeZhcY/unbUbHoWCt2ezIvKtFXRC54VPu23iGmIXoInGr87HbM0sKuvtS8Fpf3c+XJRuV8scT1FNGdso41QLdwLg= 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=Iq+BJ66D; arc=none smtp.client-ip=209.85.128.43 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="Iq+BJ66D" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-49b0eab380eso1884605e9.0 for ; Mon, 31 Aug 2026 11:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200359; x=1788805159; 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=XwCJrHtvcffMrHWjLqVlY+8cLXvhynbdWqJIBifJ6ts=; b=Iq+BJ66DjJOduTrXSzoz52ZtNDPtc1oyFwOaMXkbRJz9xR8qIZbP6PhVICNHcoYNZq jVHGvWrGfdZqVsF0qWnWs92eGegZBYmV36s01yS4YRhjFhadbR60ZF0bk24JlJ6ibm85 K0P0x4Lem78KOb6r+5wlqA65MzL1SYqgEnM9/JsxSnlM8yHW3Ymz7aexfzGH9yTzHgHL jlFe8c7ZW4GfPaTpy3jpYGzPkgG8o52pLFl3UEAwAEhQ26r0Ctytnpzn5BvY59Qw8Kym Dkfx2S3YMgF/wYnNQ0RHofB1pqYvc1h7DhqZOQjVhmOVWvggCYMUAdd+sqG5CeXpdcNU vChg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200359; x=1788805159; 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=XwCJrHtvcffMrHWjLqVlY+8cLXvhynbdWqJIBifJ6ts=; b=jH4rjybEU4QTMhCi/giD+oHNr8T/xMt162cEofNIlQDVVgKm5YknygIJ6YuWKvhk0q oQJ2ps/lhQw0mHKnHYdZVD8/xlHr3AhG8W7+k/Vyy7jhdC59mB3IDS0k5QvkjmKVKpIq eVwyJ952zgMmEQLD2o9KZEE9x8yqZtLGpOxO4Ta4TwIDlPtHqclT6TNqvth9lZyywhPk Vw3Yppf3yTX7o7J7u8dFtvxwtcq3YDa/p9TYgUkKia/Mm80pRljcUUP18D8XjpjRW3es oh0FCO4fx+aVlY3iEyxcvsn3lAx79WJZLQ1P5HaJqhvYCOXieqWm+S4jYTHp6kr0n9I7 j3yA== X-Forwarded-Encrypted: i=1; AHgh+Ro31+NGlz8Co3n9Hd4lB1UtlW4lW1uUUW28968GXyAqj5UnJXeLufnkoR3Zu8U+9kSE5llKecAiDJsuIzk=@vger.kernel.org X-Gm-Message-State: AFuF++lZHjb0w1pu7Y6tYSa6TV8Ek7/gCGgDOQcKimV2MVgemrLjh7JC I8DACvWMJS+tFPvhzhTjiPaa4oXZclnjPNZAAABaTiiG+2G/eLIdF+DU X-Gm-Gg: AR+sD13u6LzHflYfQEdpp1o/+gMnISN9pbN59oUwN6Y09brCvINmuiSc03B0ZjW+ce4 v/4yR5W+NXM9+rvIl8VpsSVj8KchmxcTwlXljiWs9Nh0+eFMaU5V5a2amxWvjrEcEQPdpdoSmLj O9tYi2/jc/86iRmOmKF4pc5+syIAsKKr++vfgjs6NZGBDbND09CzIzFuRYUZbG/gnu+Ud9pASKl 56gI+rtbi8Rb2F9+SReuOca/cdtQrXWKcD9KBJncqngl8RhfSKLsN7bLhqlp4ud/SK60xekpayJ SDTYVwktBWOD8LmzAJF6rnGvyuxOIpkNxGMnsYovrSCPjwucz/mIHQyt4dw+VjtQTJ1jmz7mtzd usMbw9YxrmeYoB+D+qMV8G1XRYFlfdNtk2t+4tEsInZ3eLD2U/bM0UAObBp1GKe93g4bYwpRuFU inQvvwPfzXPewab95SQAjhN1ln7CVbYpcYasS4YOfM0jMZe+0g7Ad3a73uImaUOdstLKwZnpWpn EtVP9hocR4/ X-Received: by 2002:a05:600c:6819:b0:493:f783:c46a with SMTP id 5b1f17b1804b1-49cdd41ca5amr3351055e9.6.1788200358770; Mon, 31 Aug 2026 11:19:18 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:18 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 5/6] media: ipu-bridge: Match sensor configs per IPU and add config flags Date: Mon, 31 Aug 2026 20:18:57 +0200 Message-ID: <20260831181858.325109-6-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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" Some sensors need different treatment depending on which IPU they are connected to, so the sensor's ACPI HID alone is not always enough to describe what the bridge has to set up. Add an optional IPU PCI product ID and a set of flags to struct ipu_sensor_config, along with an IPU_SENSOR_CONFIG_MATCH_FL() macro to define such an entry. A config naming a PCI product ID only applies to that IPU and takes precedence over a generic config for the same sensor, so that a sensor covered by both is connected once, through the more specific entry. Existing entries are unchanged and keep matching any IPU. No flags are defined yet and no entry uses the new macro, so there is no functional change. Signed-off-by: Fernando Rimoli Reviewed-by and Jakob's Tested-by rather than carry them across a --- drivers/media/pci/intel/ipu-bridge.c | 31 ++++++++++++++++++++++++++++ include/media/ipu-bridge.h | 29 +++++++++++++++++++++----- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index cd3c36d44..38ad3e54e 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -853,6 +854,32 @@ static int ipu_bridge_connect_sensor(const struct ipu_= sensor_config *cfg, return ret; } =20 +/* + * Whether a sensor config applies to the IPU the bridge sits on. A config + * naming a PCI product ID only applies to that IPU, and takes precedence = over + * a generic config for the same sensor, which is skipped so that the sens= or is + * not connected twice. + */ +static bool ipu_bridge_config_matches(const struct ipu_sensor_config *cfg, + struct ipu_bridge *bridge) +{ + unsigned int i; + + if (cfg->pci_id) + return cfg->pci_id =3D=3D bridge->pci_id; + + for (i =3D 0; i < ARRAY_SIZE(ipu_supported_sensors); i++) { + const struct ipu_sensor_config *sp =3D + &ipu_supported_sensors[i]; + + if (sp->pci_id && sp->pci_id =3D=3D bridge->pci_id && + !strcmp(sp->hid, cfg->hid)) + return false; + } + + return true; +} + static int ipu_bridge_connect_sensors(struct ipu_bridge *bridge) { unsigned int i; @@ -862,6 +889,9 @@ static int ipu_bridge_connect_sensors(struct ipu_bridge= *bridge) const struct ipu_sensor_config *cfg =3D &ipu_supported_sensors[i]; =20 + if (!ipu_bridge_config_matches(cfg, bridge)) + continue; + ret =3D ipu_bridge_connect_sensor(cfg, bridge); if (ret) goto err_unregister_sensors; @@ -948,6 +978,7 @@ int ipu_bridge_init(struct device *dev, sizeof(bridge->ipu_node_name)); bridge->ipu_hid_node.name =3D bridge->ipu_node_name; bridge->dev =3D dev; + bridge->pci_id =3D dev_is_pci(dev) ? to_pci_dev(dev)->device : 0; bridge->parse_sensor_fwnode =3D parse_sensor_fwnode; =20 ret =3D software_node_register(&bridge->ipu_hid_node); diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h index 61e10cef1..d12e51336 100644 --- a/include/media/ipu-bridge.h +++ b/include/media/ipu-bridge.h @@ -17,13 +17,27 @@ #define IPU_SENSOR_ROTATION_NORMAL 0 #define IPU_SENSOR_ROTATION_INVERTED 1 =20 -#define IPU_SENSOR_CONFIG(_HID, _NR, ...) \ - (const struct ipu_sensor_config) { \ - .hid =3D _HID, \ - .nr_link_freqs =3D _NR, \ - .link_freqs =3D { __VA_ARGS__ } \ +/* Flags for struct ipu_sensor_config */ +#define IPU_BR_FL_NONE 0 + +/* + * Sensor config specific to a single IPU, identified by its PCI product I= D, + * with flags describing what the sensor needs on that IPU. Where both a + * specific and a generic (IPU_SENSOR_CONFIG) entry exist for the same HID, + * the specific one takes precedence. + */ +#define IPU_SENSOR_CONFIG_MATCH_FL(_HID, _ID, _FLAGS, _NR, ...) \ + (const struct ipu_sensor_config) { \ + .hid =3D _HID, \ + .pci_id =3D _ID, \ + .flags =3D IPU_BR_FL_##_FLAGS, \ + .nr_link_freqs =3D _NR, \ + .link_freqs =3D { __VA_ARGS__ } \ } =20 +#define IPU_SENSOR_CONFIG(_HID, _NR, ...) \ + IPU_SENSOR_CONFIG_MATCH_FL(_HID, 0, NONE, _NR, __VA_ARGS__) + #define NODE_SENSOR(_HID, _PROPS) \ (const struct software_node) { \ .name =3D _HID, \ @@ -132,6 +146,9 @@ struct ipu_node_names { =20 struct ipu_sensor_config { const char *hid; + /* IPU PCI product ID this config is specific to, 0 for any */ + const u16 pci_id; + const u32 flags; const u8 nr_link_freqs; const u64 link_freqs[MAX_NUM_LINK_FREQS]; }; @@ -177,6 +194,8 @@ typedef int (*ipu_parse_sensor_fwnode_t)(struct acpi_de= vice *adev, =20 struct ipu_bridge { struct device *dev; + /* PCI product ID of the IPU, 0 if it is not a PCI device */ + u16 pci_id; ipu_parse_sensor_fwnode_t parse_sensor_fwnode; char ipu_node_name[ACPI_ID_LEN]; struct software_node ipu_hid_node; --=20 2.43.0 From nobody Sat Sep 26 14:39:03 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.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 3799D4A263C for ; Mon, 31 Aug 2026 18:19:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200365; cv=none; b=AnRbqZ3qogeytPRdTUnmsMbKjD9ESWtpIPYvtjQaiTAmIEJKdbDYuGqhR2f7qQyjjmUjdXCaRu8zR4iBVHBKUeG3ncY9heYHO7AYwCKwKubZ1crqaZ4ZhqsAvYj88gS6eViO5hGWRuqEG3WzHWqMju/DZ8K3blxs268uge4TO7Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788200365; c=relaxed/simple; bh=LO4/rrD/7/bVghxt3sL+m1l7ZUa/uTicC4lIzaefMGI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LjdbunXTq80NdkkEqaXSrhMSWkh/Zr5ZcAr86oUKdXcAOEVNluiV3CKUkJ8SRNodHNTYEkPZWVsOYkjSPoFh3XLkn1d0GVukeuMBRI1LxcAlXKeIcIL0xEGO+U+ByuoZiFOkYfCO8aPom89iU4zCQBOiDDPQoLAuKdIfehV6vYE= 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=IxqjPiAt; arc=none smtp.client-ip=209.85.221.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="IxqjPiAt" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-48431648f33so128842f8f.0 for ; Mon, 31 Aug 2026 11:19:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788200360; x=1788805160; 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=pL0y7/95vb7zUgQ3J7eBZ/5EUBqoEavK9GlZ7VqRDKc=; b=IxqjPiAtGDdvCu0VqBZEqL85IxqRLfR7IP/QSzpYseW/LBs/XxSqA6CNDgF28f7vah XTfbb/Z8zTl1/R6VFFoD70w1rqPZPeJ6Jnm8LcPJLNtHDHEJjGbiipYO6KIHzrfqMIF3 D2rCfCi+pp4BzbgvgFhNciIPsgcv6NNTde8cg/ud1F+gEMZnXC4nXOjMdaZLRKzphNBL 509M91L5RqSWd5d1YwzffkH6xd33F3ytvXI4KbgIGyNI8j89bvZAsLbDrqzcEsSBj6W7 33O/boKW7cNfZ4TxHmfOVGqThiS04X/GdAxDo4uwNCCjMuM7thkH7ixVJAfZh/w4KhUz zWKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788200360; x=1788805160; 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=pL0y7/95vb7zUgQ3J7eBZ/5EUBqoEavK9GlZ7VqRDKc=; b=Zzmt2KYe8snvl7qSaE1Q5PY+/UDntANg/1E2LOOoMkpo8J5bdNFM6zFbG1zPy34k6y QL4VlT2gLgmFR5SHODP02sbqBvSMDHu4Z7NFeegYpIg992JYC01d0t2fE7WCC+gczaZO 7orUlrcNtb+SQtDWqkSyBKRNtrMW4lRcp/8nKnb9ft5I0+zT+LUGZcoktTz3BVUZ0adX FAkc+AQJF0Cyeu68NNayFYkZSWONb0LMWHyXGtHT6k00LjV+1RtH9vrLKU7CLX4Ps2Be osAx37S5IMOcRBcn/vlsl6AGGn2/KgfLR+msUdQ1Yz9s5k4GUv63s3fgsatbU6TRVal0 DWag== X-Forwarded-Encrypted: i=1; AHgh+RrIvEjWiuD3o2UUmbJhRkgzCWNvpsJX/X95oN2VOQi7vAaKMzsG18V2H8XRhnEShrAMaEgTpw7FKnqqWzg=@vger.kernel.org X-Gm-Message-State: AFuF++mowRf71KrQhvLqiGzilfdA9Bshu3mOBp7JdVb9ILbOjG3ACV+n sZECi+eBRrzjwleIYTKk79yp/AwUgPVFfGQWfidnjot04zH5palk26h1 X-Gm-Gg: AR+sD106j9oDgDqGOA4ggU6yhMcS060r241qTceEY+TRhDg6qLx/uOOk04xZqXRVwyY d3v0qbDGv0eOeG6tmxbaXTnjInQEU6NfjjOJSrBBaLYEmhyhNVvSHTb0cXjK5PJY2kseQmZLUQX 3Uf6efCAMi3DtWd71vCNdFfYS60cj4WKcTz/IbNSHc+mxqHXPIyGhnpPgqCjWdhChtISN2sZo+4 Sbsbq/MeJACMV1CTL0AvJQF3QIM6f6AZGglLML1psQArpdlbwf//zLQZ4WRx3XbcgoAXsAOT3J5 jxNkYyYBdJ8aPFu0RuxqXbZJNVqp2S5FVZvvHdtIUWGnse30MhZDnfhZnyXdJxPLZJJQVJCS7d0 R2C6GVZRymQVj0MUlWtqn0qzxZRDcJigTV2XqXBy8GuUGalxGMKvhxH5SBQdV0DrbccPYg15is1 m3WIIvEsLFOcMo+OK5EImc/G86kfeGj6OoIRLONIRmwAUNOhGZwW2b5ljhyvG+Wb07Xf3fefuMI MyCGHzqZRgb X-Received: by 2002:a05:600c:8519:b0:49c:799a:177b with SMTP id 5b1f17b1804b1-49cdd402618mr3340315e9.2.1788200360336; Mon, 31 Aug 2026 11:19:20 -0700 (PDT) Received: from localhost.localdomain ([2001:b07:5d3a:fe75:a74b:bc2a:bdfb:30ff]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cdce3e4e7sm9041965e9.9.2026.08.31.11.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 11:19:19 -0700 (PDT) From: Fernando Rimoli To: Sakari Ailus , Daniel Scally , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Arsalan Naeem , Jakob Berg Jespersen , linux-kernel@vger.kernel.org, Fernando Rimoli Subject: [PATCH v4 6/6] media: ipu-bridge: Request non-continuous clock for ov5693 on IPU6 Date: Mon, 31 Aug 2026 20:18:58 +0200 Message-ID: <20260831181858.325109-7-fernandorimoli11@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260831181858.325109-1-fernandorimoli11@gmail.com> References: <20260720163819.104130-1-fernandorimoli11@gmail.com> <20260831181858.325109-1-fernandorimoli11@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 ov5693 (INT33BE / OVTI5693) needs its MIPI clock lane gated while idle for the IPU6 CSI-2 receiver to lock onto the link; otherwise the sensor streams but capture times out and no frames arrive. The sensor driver gates the clock lane when the endpoint requests a non-continuous clock, so the bridge has to supply that property. The same sensor works with a free-running clock on the IPU3, so add IPU_BR_FL_CSI2_CLK_NONCONTINUOUS and set it only for the ov5693 on the IPU6 variants where the gate is known to be needed: IPU6 (Tiger Lake, tested on a Surface Pro 7+) and IPU6EP_ADLP (Alder Lake-P, tested on a Surface Pro 9). Other IPU6 product IDs are left out until someone can confirm them on hardware; the generic entries continue to apply there and on the IPU3. Signed-off-by: Fernando Rimoli Reviewed-by and Jakob's Tested-by rather than carry them across a Tested-by: Kengo Oki # Surface Go 4, IPU6 Al= der Lake-N 8086:462e --- drivers/media/pci/intel/ipu-bridge.c | 13 +++++++++++++ include/media/ipu-bridge.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel= /ipu-bridge.c index 38ad3e54e..7498531f2 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -16,6 +16,7 @@ #include =20 #include +#include #include =20 #define ADEV_DEV(adev) ACPI_PTR(&((adev)->dev)) @@ -62,6 +63,10 @@ static const struct ipu_sensor_config ipu_supported_sens= ors[] =3D { IPU_SENSOR_CONFIG("INT0310", 1, 55692000), /* Omnivision OV5693 */ IPU_SENSOR_CONFIG("INT33BE", 1, 419200000), + IPU_SENSOR_CONFIG_MATCH_FL("INT33BE", PCI_DEVICE_ID_INTEL_IPU6, + CSI2_CLK_NONCONTINUOUS, 1, 419200000), + IPU_SENSOR_CONFIG_MATCH_FL("INT33BE", PCI_DEVICE_ID_INTEL_IPU6EP_ADLP, + CSI2_CLK_NONCONTINUOUS, 1, 419200000), /* Onsemi MT9M114 */ IPU_SENSOR_CONFIG("INT33F0", 1, 384000000), /* Omnivision OV2740 */ @@ -98,6 +103,10 @@ static const struct ipu_sensor_config ipu_supported_sen= sors[] =3D { IPU_SENSOR_CONFIG("OVTI5675", 1, 450000000), /* Omnivision OV5693 */ IPU_SENSOR_CONFIG("OVTI5693", 1, 419200000), + IPU_SENSOR_CONFIG_MATCH_FL("OVTI5693", PCI_DEVICE_ID_INTEL_IPU6, + CSI2_CLK_NONCONTINUOUS, 1, 419200000), + IPU_SENSOR_CONFIG_MATCH_FL("OVTI5693", PCI_DEVICE_ID_INTEL_IPU6EP_ADLP, + CSI2_CLK_NONCONTINUOUS, 1, 419200000), /* Omnivision OV8856 */ IPU_SENSOR_CONFIG("OVTI8856", 3, 180000000, 360000000, 720000000), /* Sony IMX471 */ @@ -526,6 +535,10 @@ static void ipu_bridge_create_fwnode_properties( cfg->link_freqs, cfg->nr_link_freqs); =20 + if (cfg->flags & IPU_BR_FL_CSI2_CLK_NONCONTINUOUS) + sensor->ep_properties[IPU_NEXT_EP_PROPERTY(i, NUM_OF)] =3D + PROPERTY_ENTRY_BOOL("clock-noncontinuous"); + sensor->ipu_properties[0] =3D PROPERTY_ENTRY_U32_ARRAY_LEN( sensor->prop_names.data_lanes, bridge->data_lanes, sensor->lanes); diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h index d12e51336..a5f8c5d4b 100644 --- a/include/media/ipu-bridge.h +++ b/include/media/ipu-bridge.h @@ -19,6 +19,8 @@ =20 /* Flags for struct ipu_sensor_config */ #define IPU_BR_FL_NONE 0 +/* The sensor's CSI-2 transmitter needs a non-continuous clock */ +#define IPU_BR_FL_CSI2_CLK_NONCONTINUOUS BIT(0) =20 /* * Sensor config specific to a single IPU, identified by its PCI product I= D, @@ -83,6 +85,7 @@ enum ipu_sensor_ep_props { IPU_SENSOR_EP_DATA_LANES, IPU_SENSOR_EP_REMOTE_EP, IPU_SENSOR_EP_LINK_FREQUENCIES, + IPU_SENSOR_EP_CLOCK_NONCONTINUOUS, IPU_SENSOR_EP_NUM_OF, IPU_SENSOR_EP_NUM_ENTRIES }; --=20 2.43.0