* [PATCH 0/3] Rework IPU6 PCI table
@ 2026-09-09 8:19 Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Sakari Ailus @ 2026-09-09 8:19 UTC (permalink / raw)
To: linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
Hello everyone,
This set reworks IPU PCI tables a little, by moving them from the IVSC and
CVS drivers to the IPU bridge. The IPU 6 driver will need a copy of the
PCI ID table for module device table whereas another copy will reside on
the IPU bridge. That's one copy less.
since v1:
- Use static inline for ipu_bridge_get_ipu6() in non-CONFIG_IPU_BRIDGE=[my]
case and move the line above the comment related to the line following
the comment.
Sakari Ailus (3):
media: ipu-bridge: Add ipu_bridge_get_ipu6()
media: cvs: Use ipu_bridge_get_ipu6()
media: ivsc: Use ipu_bridge_get_ipu6()
drivers/media/i2c/cvs/core.c | 7 ++-----
drivers/media/pci/intel/ipu-bridge.c | 14 ++++++++++++++
drivers/media/pci/intel/ivsc/mei_csi.c | 7 +------
include/media/ipu-bridge.h | 2 ++
4 files changed, 19 insertions(+), 11 deletions(-)
base-commit: bc4257aa73edad2ba94a725f8f156eca69fc60ce
--
2.47.3
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6()
2026-09-09 8:19 [PATCH 0/3] Rework IPU6 PCI table Sakari Ailus
@ 2026-09-09 8:19 ` Sakari Ailus
2026-09-09 9:18 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
2026-09-09 8:19 ` [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 3/3] media: ivsc: " Sakari Ailus
2 siblings, 2 replies; 11+ messages in thread
From: Sakari Ailus @ 2026-09-09 8:19 UTC (permalink / raw)
To: linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
Add ipu_bridge_get_ipu6() for obtaining the IPU 6 (or soon later) PCI
device. This isn't technically a job of the IPU bridge, but the
functionality is required in conjunction with the firmware definitions
that necessitate the use of the IPU bridge on many systems.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/media/pci/intel/ipu-bridge.c | 14 ++++++++++++++
include/media/ipu-bridge.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
index 7e65491faf6d..67a1f233c4c6 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -8,6 +8,7 @@
#include <linux/dmi.h>
#include <linux/i2c.h>
#include <linux/mei_cl_bus.h>
+#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/property.h>
@@ -15,6 +16,7 @@
#include <linux/workqueue.h>
#include <media/ipu-bridge.h>
+#include <media/ipu6-pci-table.h>
#include <media/v4l2-fwnode.h>
#define ADEV_DEV(adev) ACPI_PTR(&((adev)->dev))
@@ -950,6 +952,18 @@ static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
return ipu_bridge_check_fwnode_graph(fwnode->secondary);
}
+struct pci_dev *ipu_bridge_get_ipu6(void)
+{
+ struct pci_dev *ipu = NULL;
+
+ for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
+ ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
+ ipu6_pci_tbl[i].device, NULL);
+
+ return ipu;
+}
+EXPORT_SYMBOL_NS_GPL(ipu_bridge_get_ipu6, "INTEL_IPU_BRIDGE");
+
static DEFINE_MUTEX(ipu_bridge_mutex);
int ipu_bridge_init(struct device *dev,
diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h
index 16fac765456e..b46b6693f856 100644
--- a/include/media/ipu-bridge.h
+++ b/include/media/ipu-bridge.h
@@ -169,11 +169,13 @@ struct ipu_bridge {
};
#if IS_ENABLED(CONFIG_IPU_BRIDGE)
+struct pci_dev *ipu_bridge_get_ipu6(void);
int ipu_bridge_init(struct device *dev,
ipu_parse_sensor_fwnode_t parse_sensor_fwnode);
int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor);
int ipu_bridge_instantiate_vcm(struct device *sensor);
#else
+static inline struct pci_dev *ipu_bridge_get_ipu6(void) { return NULL; }
/* Use a define to avoid the @parse_sensor_fwnode argument getting evaluated */
#define ipu_bridge_init(dev, parse_sensor_fwnode) (0)
static inline int ipu_bridge_instantiate_vcm(struct device *s) { return 0; }
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
@ 2026-09-09 9:18 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Antti Laakso @ 2026-09-09 9:18 UTC (permalink / raw)
To: Sakari Ailus
Cc: linux-media, antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
On Wed, Sep 09, 2026 at 11:19:50AM +0300, Sakari Ailus wrote:
> Add ipu_bridge_get_ipu6() for obtaining the IPU 6 (or soon later) PCI
> device. This isn't technically a job of the IPU bridge, but the
> functionality is required in conjunction with the firmware definitions
> that necessitate the use of the IPU bridge on many systems.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Antti Laakso <antti.laakso@linux.intel.com>
> drivers/media/pci/intel/ipu-bridge.c | 14 ++++++++++++++
> include/media/ipu-bridge.h | 2 ++
> 2 files changed, 16 insertions(+)
>
> diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
> index 7e65491faf6d..67a1f233c4c6 100644
> --- a/drivers/media/pci/intel/ipu-bridge.c
> +++ b/drivers/media/pci/intel/ipu-bridge.c
> @@ -8,6 +8,7 @@
> #include <linux/dmi.h>
> #include <linux/i2c.h>
> #include <linux/mei_cl_bus.h>
> +#include <linux/pci.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> #include <linux/property.h>
> @@ -15,6 +16,7 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> +#include <media/ipu6-pci-table.h>
> #include <media/v4l2-fwnode.h>
>
> #define ADEV_DEV(adev) ACPI_PTR(&((adev)->dev))
> @@ -950,6 +952,18 @@ static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
> return ipu_bridge_check_fwnode_graph(fwnode->secondary);
> }
>
> +struct pci_dev *ipu_bridge_get_ipu6(void)
> +{
> + struct pci_dev *ipu = NULL;
> +
> + for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
> + ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> + ipu6_pci_tbl[i].device, NULL);
> +
> + return ipu;
> +}
> +EXPORT_SYMBOL_NS_GPL(ipu_bridge_get_ipu6, "INTEL_IPU_BRIDGE");
> +
> static DEFINE_MUTEX(ipu_bridge_mutex);
>
> int ipu_bridge_init(struct device *dev,
> diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h
> index 16fac765456e..b46b6693f856 100644
> --- a/include/media/ipu-bridge.h
> +++ b/include/media/ipu-bridge.h
> @@ -169,11 +169,13 @@ struct ipu_bridge {
> };
>
> #if IS_ENABLED(CONFIG_IPU_BRIDGE)
> +struct pci_dev *ipu_bridge_get_ipu6(void);
> int ipu_bridge_init(struct device *dev,
> ipu_parse_sensor_fwnode_t parse_sensor_fwnode);
> int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor);
> int ipu_bridge_instantiate_vcm(struct device *sensor);
> #else
> +static inline struct pci_dev *ipu_bridge_get_ipu6(void) { return NULL; }
> /* Use a define to avoid the @parse_sensor_fwnode argument getting evaluated */
> #define ipu_bridge_init(dev, parse_sensor_fwnode) (0)
> static inline int ipu_bridge_instantiate_vcm(struct device *s) { return 0; }
> --
> 2.47.3
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 9:18 ` Antti Laakso
@ 2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Dan Scally @ 2026-09-09 14:24 UTC (permalink / raw)
To: Sakari Ailus, linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Hans de Goede,
Sapre, Sarang
Hi Sakari
On 09/09/2026 09:19, Sakari Ailus wrote:
> Add ipu_bridge_get_ipu6() for obtaining the IPU 6 (or soon later) PCI
> device. This isn't technically a job of the IPU bridge, but the
> functionality is required in conjunction with the firmware definitions
> that necessitate the use of the IPU bridge on many systems.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
> drivers/media/pci/intel/ipu-bridge.c | 14 ++++++++++++++
> include/media/ipu-bridge.h | 2 ++
> 2 files changed, 16 insertions(+)
>
> diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
> index 7e65491faf6d..67a1f233c4c6 100644
> --- a/drivers/media/pci/intel/ipu-bridge.c
> +++ b/drivers/media/pci/intel/ipu-bridge.c
> @@ -8,6 +8,7 @@
> #include <linux/dmi.h>
> #include <linux/i2c.h>
> #include <linux/mei_cl_bus.h>
> +#include <linux/pci.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> #include <linux/property.h>
> @@ -15,6 +16,7 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> +#include <media/ipu6-pci-table.h>
> #include <media/v4l2-fwnode.h>
>
> #define ADEV_DEV(adev) ACPI_PTR(&((adev)->dev))
> @@ -950,6 +952,18 @@ static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
> return ipu_bridge_check_fwnode_graph(fwnode->secondary);
> }
>
> +struct pci_dev *ipu_bridge_get_ipu6(void)
> +{
> + struct pci_dev *ipu = NULL;
> +
> + for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
> + ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> + ipu6_pci_tbl[i].device, NULL);
> +
> + return ipu;
> +}
> +EXPORT_SYMBOL_NS_GPL(ipu_bridge_get_ipu6, "INTEL_IPU_BRIDGE");
> +
> static DEFINE_MUTEX(ipu_bridge_mutex);
>
> int ipu_bridge_init(struct device *dev,
> diff --git a/include/media/ipu-bridge.h b/include/media/ipu-bridge.h
> index 16fac765456e..b46b6693f856 100644
> --- a/include/media/ipu-bridge.h
> +++ b/include/media/ipu-bridge.h
> @@ -169,11 +169,13 @@ struct ipu_bridge {
> };
>
> #if IS_ENABLED(CONFIG_IPU_BRIDGE)
> +struct pci_dev *ipu_bridge_get_ipu6(void);
> int ipu_bridge_init(struct device *dev,
> ipu_parse_sensor_fwnode_t parse_sensor_fwnode);
> int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor);
> int ipu_bridge_instantiate_vcm(struct device *sensor);
> #else
> +static inline struct pci_dev *ipu_bridge_get_ipu6(void) { return NULL; }
> /* Use a define to avoid the @parse_sensor_fwnode argument getting evaluated */
> #define ipu_bridge_init(dev, parse_sensor_fwnode) (0)
> static inline int ipu_bridge_instantiate_vcm(struct device *s) { return 0; }
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 [PATCH 0/3] Rework IPU6 PCI table Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
@ 2026-09-09 8:19 ` Sakari Ailus
2026-09-09 9:19 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
2026-09-09 8:19 ` [PATCH v2 3/3] media: ivsc: " Sakari Ailus
2 siblings, 2 replies; 11+ messages in thread
From: Sakari Ailus @ 2026-09-09 8:19 UTC (permalink / raw)
To: linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
Instead of going through the PCI device ID table, use
ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/media/i2c/cvs/core.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/media/i2c/cvs/core.c b/drivers/media/i2c/cvs/core.c
index d4a3b9c3bab1..98cadd58a075 100644
--- a/drivers/media/i2c/cvs/core.c
+++ b/drivers/media/i2c/cvs/core.c
@@ -21,7 +21,6 @@
#include <linux/workqueue.h>
#include <media/ipu-bridge.h>
-#include <media/ipu6-pci-table.h>
#include "icvs.h"
@@ -656,14 +655,12 @@ static int cvs_configure_dev_caps(struct icvs *ctx)
*/
static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
{
- struct pci_dev *ipu = NULL;
+ struct pci_dev *ipu;
struct icvs *ctx;
int ret;
/* Locate IPU device */
- for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
- ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
- ipu6_pci_tbl[i].device, NULL);
+ ipu = ipu_bridge_get_ipu6();
for (unsigned int i = 0; !ipu && icvs_ipu7_tbl[i].vendor; i++)
ipu = pci_get_device(icvs_ipu7_tbl[i].vendor,
icvs_ipu7_tbl[i].device, NULL);
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6() Sakari Ailus
@ 2026-09-09 9:19 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Antti Laakso @ 2026-09-09 9:19 UTC (permalink / raw)
To: Sakari Ailus
Cc: linux-media, antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
On Wed, Sep 09, 2026 at 11:19:51AM +0300, Sakari Ailus wrote:
> Instead of going through the PCI device ID table, use
> ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Antti Laakso <antti.laakso@linux.intel.com>
> drivers/media/i2c/cvs/core.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/i2c/cvs/core.c b/drivers/media/i2c/cvs/core.c
> index d4a3b9c3bab1..98cadd58a075 100644
> --- a/drivers/media/i2c/cvs/core.c
> +++ b/drivers/media/i2c/cvs/core.c
> @@ -21,7 +21,6 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> -#include <media/ipu6-pci-table.h>
>
> #include "icvs.h"
>
> @@ -656,14 +655,12 @@ static int cvs_configure_dev_caps(struct icvs *ctx)
> */
> static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
> {
> - struct pci_dev *ipu = NULL;
> + struct pci_dev *ipu;
> struct icvs *ctx;
> int ret;
>
> /* Locate IPU device */
> - for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
> - ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> - ipu6_pci_tbl[i].device, NULL);
> + ipu = ipu_bridge_get_ipu6();
> for (unsigned int i = 0; !ipu && icvs_ipu7_tbl[i].vendor; i++)
> ipu = pci_get_device(icvs_ipu7_tbl[i].vendor,
> icvs_ipu7_tbl[i].device, NULL);
> --
> 2.47.3
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 9:19 ` Antti Laakso
@ 2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Dan Scally @ 2026-09-09 14:24 UTC (permalink / raw)
To: Sakari Ailus, linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Hans de Goede,
Sapre, Sarang
Hi Sakari
On 09/09/2026 09:19, Sakari Ailus wrote:
> Instead of going through the PCI device ID table, use
> ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
> drivers/media/i2c/cvs/core.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/i2c/cvs/core.c b/drivers/media/i2c/cvs/core.c
> index d4a3b9c3bab1..98cadd58a075 100644
> --- a/drivers/media/i2c/cvs/core.c
> +++ b/drivers/media/i2c/cvs/core.c
> @@ -21,7 +21,6 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> -#include <media/ipu6-pci-table.h>
>
> #include "icvs.h"
>
> @@ -656,14 +655,12 @@ static int cvs_configure_dev_caps(struct icvs *ctx)
> */
> static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
> {
> - struct pci_dev *ipu = NULL;
> + struct pci_dev *ipu;
> struct icvs *ctx;
> int ret;
>
> /* Locate IPU device */
> - for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
> - ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> - ipu6_pci_tbl[i].device, NULL);
> + ipu = ipu_bridge_get_ipu6();
> for (unsigned int i = 0; !ipu && icvs_ipu7_tbl[i].vendor; i++)
> ipu = pci_get_device(icvs_ipu7_tbl[i].vendor,
> icvs_ipu7_tbl[i].device, NULL);
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 3/3] media: ivsc: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 [PATCH 0/3] Rework IPU6 PCI table Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6() Sakari Ailus
@ 2026-09-09 8:19 ` Sakari Ailus
2026-09-09 9:20 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
2 siblings, 2 replies; 11+ messages in thread
From: Sakari Ailus @ 2026-09-09 8:19 UTC (permalink / raw)
To: linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
Instead of going through the PCI device ID table, use
ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/media/pci/intel/ivsc/mei_csi.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c b/drivers/media/pci/intel/ivsc/mei_csi.c
index c2917e156345..d4256415a829 100644
--- a/drivers/media/pci/intel/ivsc/mei_csi.c
+++ b/drivers/media/pci/intel/ivsc/mei_csi.c
@@ -27,7 +27,6 @@
#include <linux/workqueue.h>
#include <media/ipu-bridge.h>
-#include <media/ipu6-pci-table.h>
#include <media/v4l2-async.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-fwnode.h>
@@ -644,13 +643,9 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
struct device *dev = &cldev->dev;
struct pci_dev *ipu;
struct mei_csi *csi;
- unsigned int i;
int ret;
- for (i = 0, ipu = NULL; !ipu && ipu6_pci_tbl[i].vendor; i++)
- ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
- ipu6_pci_tbl[i].device, NULL);
-
+ ipu = ipu_bridge_get_ipu6();
if (!ipu)
return -ENODEV;
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] media: ivsc: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 3/3] media: ivsc: " Sakari Ailus
@ 2026-09-09 9:20 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Antti Laakso @ 2026-09-09 9:20 UTC (permalink / raw)
To: Sakari Ailus
Cc: linux-media, antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
On Wed, Sep 09, 2026 at 11:19:52AM +0300, Sakari Ailus wrote:
> Instead of going through the PCI device ID table, use
> ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Antti Laakso <antti.laakso@linux.intel.com>
> drivers/media/pci/intel/ivsc/mei_csi.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c b/drivers/media/pci/intel/ivsc/mei_csi.c
> index c2917e156345..d4256415a829 100644
> --- a/drivers/media/pci/intel/ivsc/mei_csi.c
> +++ b/drivers/media/pci/intel/ivsc/mei_csi.c
> @@ -27,7 +27,6 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> -#include <media/ipu6-pci-table.h>
> #include <media/v4l2-async.h>
> #include <media/v4l2-ctrls.h>
> #include <media/v4l2-fwnode.h>
> @@ -644,13 +643,9 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
> struct device *dev = &cldev->dev;
> struct pci_dev *ipu;
> struct mei_csi *csi;
> - unsigned int i;
> int ret;
>
> - for (i = 0, ipu = NULL; !ipu && ipu6_pci_tbl[i].vendor; i++)
> - ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> - ipu6_pci_tbl[i].device, NULL);
> -
> + ipu = ipu_bridge_get_ipu6();
> if (!ipu)
> return -ENODEV;
>
> --
> 2.47.3
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] media: ivsc: Use ipu_bridge_get_ipu6()
2026-09-09 8:19 ` [PATCH v2 3/3] media: ivsc: " Sakari Ailus
2026-09-09 9:20 ` Antti Laakso
@ 2026-09-09 14:24 ` Dan Scally
1 sibling, 0 replies; 11+ messages in thread
From: Dan Scally @ 2026-09-09 14:24 UTC (permalink / raw)
To: Sakari Ailus, linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Hans de Goede,
Sapre, Sarang
Hi sakari
On 09/09/2026 09:19, Sakari Ailus wrote:
> Instead of going through the PCI device ID table, use
> ipu_bridge_get_ipu6() to obtain a pointer to the IPU PCI device.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
> drivers/media/pci/intel/ivsc/mei_csi.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c b/drivers/media/pci/intel/ivsc/mei_csi.c
> index c2917e156345..d4256415a829 100644
> --- a/drivers/media/pci/intel/ivsc/mei_csi.c
> +++ b/drivers/media/pci/intel/ivsc/mei_csi.c
> @@ -27,7 +27,6 @@
> #include <linux/workqueue.h>
>
> #include <media/ipu-bridge.h>
> -#include <media/ipu6-pci-table.h>
> #include <media/v4l2-async.h>
> #include <media/v4l2-ctrls.h>
> #include <media/v4l2-fwnode.h>
> @@ -644,13 +643,9 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
> struct device *dev = &cldev->dev;
> struct pci_dev *ipu;
> struct mei_csi *csi;
> - unsigned int i;
> int ret;
>
> - for (i = 0, ipu = NULL; !ipu && ipu6_pci_tbl[i].vendor; i++)
> - ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
> - ipu6_pci_tbl[i].device, NULL);
> -
> + ipu = ipu_bridge_get_ipu6();
> if (!ipu)
> return -ENODEV;
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/3] Rework IPU6 PCI table
@ 2026-09-07 20:31 Sakari Ailus
0 siblings, 0 replies; 11+ messages in thread
From: Sakari Ailus @ 2026-09-07 20:31 UTC (permalink / raw)
To: linux-media
Cc: antti.laakso, Lixu Zhang, Miguel Vadillo, Dan Scally,
Hans de Goede, Sapre, Sarang
Hello everyone,
This set reworks IPU PCI tables a little, by moving them from the IVSC and
CVS drivers to the IPU bridge. The IPU 6 driver will need a copy of the
PCI ID table for module device table whereas another copy will reside on
the IPU bridge. That's one copy less.
Sakari Ailus (3):
media: ipu-bridge: Add ipu_bridge_get_ipu6()
media: cvs: Use ipu_bridge_get_ipu6()
media: ivsc: Use ipu_bridge_get_ipu6()
drivers/media/i2c/cvs/core.c | 7 ++-----
drivers/media/pci/intel/ipu-bridge.c | 14 ++++++++++++++
drivers/media/pci/intel/ivsc/mei_csi.c | 7 +------
include/media/ipu-bridge.h | 2 ++
4 files changed, 19 insertions(+), 11 deletions(-)
base-commit: 201807737edef3af88c54072e2b895ab9e0ab7c7
--
2.47.3
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-09-09 14:24 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 8:19 [PATCH 0/3] Rework IPU6 PCI table Sakari Ailus
2026-09-09 8:19 ` [PATCH v2 1/3] media: ipu-bridge: Add ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 9:18 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
2026-09-09 8:19 ` [PATCH v2 2/3] media: cvs: Use ipu_bridge_get_ipu6() Sakari Ailus
2026-09-09 9:19 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
2026-09-09 8:19 ` [PATCH v2 3/3] media: ivsc: " Sakari Ailus
2026-09-09 9:20 ` Antti Laakso
2026-09-09 14:24 ` Dan Scally
-- strict thread matches above, loose matches on Subject: below --
2026-09-07 20:31 [PATCH 0/3] Rework IPU6 PCI table Sakari Ailus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox