* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.