[PATCH v8 09/15] media: intel: ipu-bridge: select OV2740 frequency by IPU ID

From: mauriziocasciano7

Date: Fri Oct 02 2026 - 04:22:26 EST


The OV2740 connected to the Cherry Trail AtomISP uses a 288 MHz link,
while the generic OVTI2740 configuration uses 360 MHz.

Use the bridge's existing PCI-device matching mechanism to add a
Cherry Trail-specific OVTI2740 entry before the generic fallback. This
keeps the platform distinction in the bridge and avoids adding a second
per-sensor link-frequency override path.

Suggested-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
Signed-off-by: Maurizio Casciano <mauriziocasciano7@xxxxxxxxx>
Assisted-by: LLM
---
drivers/media/pci/intel/ipu-bridge.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/media/pci/intel/ipu-bridge.c
b/drivers/media/pci/intel/ipu-bridge.c
index 62852fe1a406..1a133194cbc0 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -21,6 +21,8 @@

#define ADEV_DEV(adev) ACPI_PTR(&((adev)->dev))

+#define PCI_DEVICE_ID_INTEL_ATOMISP_CHT 0x22b8
+
/*
* 92335fcf-3203-4472-af93-7b4453ac29da
*
@@ -58,6 +60,11 @@ static const u16 ipu6_ov5693_ncont_clk[] = {
0
};

+static const u16 atomisp_cht_pci_ids[] = {
+ PCI_DEVICE_ID_INTEL_ATOMISP_CHT,
+ 0
+};
+
static const struct ipu_sensor_config ipu_supported_sensors[] = {
/* Himax HM1092 */
IPU_SENSOR_CONFIG("HIMX1092", 2, 180000000, 180480000),
@@ -112,6 +119,8 @@ static const struct ipu_sensor_config
ipu_supported_sensors[] = {
/* Omnivision OV2680 */
IPU_SENSOR_CONFIG("OVTI2680", 1, 331200000),
/* Omnivision OV2740 */
+ IPU_SENSOR_CONFIG_MATCH_FL("OVTI2740", atomisp_cht_pci_ids, 0,
+ 1, 288000000),
IPU_SENSOR_CONFIG("OVTI2740", 1, 360000000),
/* Omnivision OV5675 */
IPU_SENSOR_CONFIG("OVTI5675", 1, 450000000),
--
2.53.0



On Fri, 02 Oct 2026 01:15:55 -0700, mauriziocasciano7@xxxxxxxxx wrote:
> Add camera support for the Lenovo Yoga Book YB1-X91L. The tablet uses
> an AtomISP ISP2401 with an OV2740 front sensor, an OV8858 rear sensor
> and a WV517S rear-camera lens actuator.
>
> The series adds the missing ACPI and bridge configuration, selects the
> OV2740 link frequency through the existing IPU PCI-ID mechanism, derives
> AtomISP CSI-2 timing from the sensor link frequency, enables raw Bayer
> capture and adds the sensor controls and actuator driver needed by the
> hardware.
>
> Runtime validation used the same 15-patch content on the current
> media_stage.git master. The final media-committers.git next rebase changes
> only three source line wraps needed by the media 80-column check:
>
> - W=1 builds and sparse builds of all eight affected objects passed both
> before and after the rebase.
> - A full x86_64 Debian binary package build passed and produced kernel
> 7.3.0-rc1-yogabook-media-v8-20261002-001605.
> - The kernel booted on a Lenovo Yoga Book YB1-X91L with AtomISP PCI ID
> 8086:22b8. OV2740 negotiated 288 MHz and OV8858 negotiated 360 MHz;
> both sensors bound and AtomISP registered two cameras.
> - OV8858 digital, red and blue gains were changed during streaming and
> read back correctly. Continuous raw capture produced changing frames
> from both sensors (6/8 unique rear samples and 8/8 unique front
> samples), including front-to-rear-to-front switching without OV8858,
> I2C or CSI errors.
> - Both front and rear cameras were also exercised successfully with
> Cheese.
> - v4l2-compliance 1.32.0 completed 47 tests on the AtomISP capture node:
> 40 succeeded and 7 failed in invalid-ioctl, multiple-open, input,
> control enumeration, stream-parameter and buffer tests. These failures
> remain a validation limitation; this series does not claim to make the
> staging AtomISP driver fully compliant.
>
> Only the Yoga Book 19.2 MHz OV8858 path was hardware-tested; the existing
> 24 MHz paths received build and static-analysis coverage but were not
> tested on separate hardware.
>
> ---
> Changes in v8:
>
> - Keep patch 2's commit message focused on the implementation, remove the
> invalid review Link and move runtime results to this cover letter.
> - Express OV8858 frequencies with HZ_PER_MHZ/HZ_PER_KHZ, name clock
> tables by their input and link frequencies, and remove platform names
> from the sensor driver.
> - Explain that V4L2 exposes standard red and blue balance controls but no
> standard green-balance control, so green remains the unity reference.
> - Replace the per-sensor link-frequency override with the IPU bridge's
> existing PCI-ID matching mechanism. Add an 8086:22b8-specific OV2740
> 288 MHz entry before the generic 360 MHz fallback. This removes the
> associated AtomISP hand-off patch and reduces the series to 15 patches.
> - Add the introducing commit to the OV2740 group-hold fix and mark it for
> stable backporting.
> - Use the documented Assisted-by tag syntax.
> - Keep the padding helper as a normal static function and avoid a
> single-use raw-format descriptor structure.
> - Retain Andy's Reviewed-by tags only where the corresponding patches did
> not change materially. In particular, drop the tag from the redesigned
> IPU bridge frequency patch.
>
> v7: https://lore.kernel.org/linux-media/cover.1788360629.git.mauriziocasciano7@xxxxxxxxx/
>
> Maurizio Casciano (15):
> media: ov8858: Extract digital gain programming
> media: ov8858: support 19.2 MHz clock and manual white balance
> media: ov2740: Use C99 initializers for ACPI IDs
> media: ov2740: Add OVTI2740 ACPI ID
> media: ov8858: Add INT3477 ACPI ID
> media: intel: ipu-bridge: Add Yoga Book camera sensors
> media: atomisp: Add Yoga Book camera configuration
> media: ov2740: support 288 MHz link frequency
> media: intel: ipu-bridge: select OV2740 frequency by IPU ID
> media: atomisp: derive CSI-2 timing from sensor link frequency
> media: ov2740: release group hold after gain write errors
> media: ov2740: add manual white balance controls
> media: atomisp: Use struct v4l2_area for padding
> media: atomisp: allow raw Bayer capture
> media: i2c: Add WV517S lens actuator driver
>
> MAINTAINERS | 1 +
> drivers/media/i2c/Kconfig | 11 +
> drivers/media/i2c/Makefile | 1 +
> drivers/media/i2c/ov2740.c | 114 +++++++--
> drivers/media/i2c/ov8858.c | 221 ++++++++++++++----
> drivers/media/i2c/wv517s.c | 208 +++++++++++++++++
> drivers/media/pci/intel/ipu-bridge.c | 13 ++
> .../staging/media/atomisp/pci/atomisp_cmd.c | 81 ++++---
> .../staging/media/atomisp/pci/atomisp_cmd.h | 6 +-
> .../staging/media/atomisp/pci/atomisp_csi2.c | 20 +-
> .../media/atomisp/pci/atomisp_csi2_bridge.c | 19 +-
> .../staging/media/atomisp/pci/atomisp_ioctl.c | 32 ++-
> .../media/atomisp/pci/atomisp_subdev.c | 4 +-
> .../media/atomisp/pci/atomisp_subdev.h | 3 +-
> 14 files changed, 605 insertions(+), 129 deletions(-)
> create mode 100644 drivers/media/i2c/wv517s.c
>
>
> base-commit: 4a069a763e8a86821edac4159f7c59a20015631b
>
> With Best Regards,
> Maurizio Casciano
> --
> 2.53.0