On Wed May 27 10:05:30 2026 -0700, Miguel Vadillo wrote:
> CVS is located between IPU device and sensors and is available in
> existing commercial platforms from multiple OEMs. The connection
> information between them in firmware is not enough to build a V4L2
> connection graph. This patch parses the connection properties from the
> SSDB buffer in DSDT and builds the connection using software nodes.
> 
> From the IPU bridge point of view, CVS is just like IVSC.
> 
> Signed-off-by: Miguel Vadillo <[email protected]>
> Tested-by: Mehdi Djait <[email protected]> # Dell XPS 13 9350 + IPU7
> Reviewed-by: Mehdi Djait <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>

Patch committed.

Thanks,
Sakari Ailus

 drivers/media/pci/intel/ipu-bridge.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

---

diff --git a/drivers/media/pci/intel/ipu-bridge.c 
b/drivers/media/pci/intel/ipu-bridge.c
index fc6608e33de4..88581a4c081d 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -168,6 +168,9 @@ static const struct acpi_device_id ivsc_acpi_ids[] = {
        { "INTC1095" },
        { "INTC100A" },
        { "INTC10CF" },
+       { "INTC10DE" }, /* LNL */
+       { "INTC10E0" }, /* ARL */
+       { "INTC10E1" }, /* PTL */
 };
 
 static struct acpi_device *ipu_bridge_get_ivsc_acpi_dev(struct acpi_device 
*adev)
@@ -221,7 +224,13 @@ static struct device *ipu_bridge_get_ivsc_csi_dev(struct 
acpi_device *adev)
                return csi_dev;
        }
 
-       return NULL;
+       /* Try to locate CVS device on the I2C bus */
+       csi_dev = bus_find_device_by_acpi_dev(&i2c_bus_type, adev);
+       if (csi_dev)
+               return csi_dev;
+
+       /* Fallback to platform bus for CVS device */
+       return bus_find_device_by_acpi_dev(&platform_bus_type, adev);
 }
 
 static int ipu_bridge_check_ivsc_dev(struct ipu_sensor *sensor,
@@ -235,7 +244,7 @@ static int ipu_bridge_check_ivsc_dev(struct ipu_sensor 
*sensor,
                csi_dev = ipu_bridge_get_ivsc_csi_dev(adev);
                if (!csi_dev) {
                        acpi_dev_put(adev);
-                       dev_err(ADEV_DEV(adev), "Failed to find MEI CSI dev\n");
+                       dev_err(ADEV_DEV(adev), "Failed to find MEI or CVS CSI 
dev\n");
                        return -ENODEV;
                }
 
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to