All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] IPU bridge improvements for IPU6
@ 2024-02-13 13:08 Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 1/4] media: ipu-bridge: Add ov01a10 in Dell XPS 9315 Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Sakari Ailus @ 2024-02-13 13:08 UTC (permalink / raw)
  To: linux-media; +Cc: Hans de Goede, Daniel Scally, Bingbu Cao

Hi folks,

Here are four simple patches, one to add support for ov01a10 in Dell XPS
9315 and the rest to improve reliability of driver probing on systems with
IVSC.

since v1:

- Instead of sleeping in IPU6 driver probe, instantiate the software nodes
  via IPU bridge init also from MEI CSI driver.

Sakari Ailus (4):
  media: ipu-bridge: Add ov01a10 in Dell XPS 9315
  media: ipu-bridge: Move graph checking to IPU bridge
  media: ipu-bridge: Serialise calls to IPU bridge init
  media: ivsc: csi: Use IPU bridge

 drivers/media/pci/intel/ipu-bridge.c     | 26 ++++++++++++++++++++
 drivers/media/pci/intel/ipu3/ipu3-cio2.c | 30 +++---------------------
 drivers/media/pci/intel/ivsc/mei_csi.c   | 20 ++++++++++++++--
 3 files changed, 47 insertions(+), 29 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/4] media: ipu-bridge: Add ov01a10 in Dell XPS 9315
  2024-02-13 13:08 [PATCH v2 0/4] IPU bridge improvements for IPU6 Sakari Ailus
@ 2024-02-13 13:08 ` Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Sakari Ailus @ 2024-02-13 13:08 UTC (permalink / raw)
  To: linux-media; +Cc: Hans de Goede, Daniel Scally, Bingbu Cao

Add Omnivision ov01a10 sensor used in Dell XPS 9315, and use the driver
default frequency.

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 | 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 f980e3125a7b..b2cf80d62ba2 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -60,6 +60,8 @@ static const struct ipu_sensor_config ipu_supported_sensors[] = {
 	IPU_SENSOR_CONFIG("OVTIDB10", 1, 560000000),
 	/* GalaxyCore GC0310 */
 	IPU_SENSOR_CONFIG("INT0310", 0),
+	/* Omnivision ov01a10 */
+	IPU_SENSOR_CONFIG("OVTI01A0", 1, 400000000),
 };
 
 static const struct ipu_property_names prop_names = {
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge
  2024-02-13 13:08 [PATCH v2 0/4] IPU bridge improvements for IPU6 Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 1/4] media: ipu-bridge: Add ov01a10 in Dell XPS 9315 Sakari Ailus
@ 2024-02-13 13:08 ` Sakari Ailus
  2024-02-14  5:12   ` kernel test robot
  2024-02-13 13:08 ` [PATCH v2 3/4] media: ipu-bridge: Serialise calls to IPU bridge init Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge Sakari Ailus
  3 siblings, 1 reply; 7+ messages in thread
From: Sakari Ailus @ 2024-02-13 13:08 UTC (permalink / raw)
  To: linux-media; +Cc: Hans de Goede, Daniel Scally, Bingbu Cao

Move checking the graph to the IPU bridge. This way the caller won't need
to do it.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/pci/intel/ipu-bridge.c     | 20 ++++++++++++++++
 drivers/media/pci/intel/ipu3/ipu3-cio2.c | 30 +++---------------------
 2 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
index b2cf80d62ba2..735c62c37c22 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -2,6 +2,7 @@
 /* Author: Dan Scally <djrscally@gmail.com> */
 
 #include <linux/acpi.h>
+#include <linux/cleanup.h>
 #include <linux/device.h>
 #include <linux/i2c.h>
 #include <linux/mei_cl_bus.h>
@@ -749,6 +750,22 @@ static int ipu_bridge_ivsc_is_ready(void)
 	return ready;
 }
 
+static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
+{
+	struct fwnode_handle *endpoint;
+
+	if (IS_ERR_OR_NULL(fwnode))
+		return -EINVAL;
+
+	endpoint = fwnode_graph_get_next_endpoint(fwnode, NULL);
+	if (endpoint) {
+		fwnode_handle_put(endpoint);
+		return 0;
+	}
+
+	return ipu_bridge_check_fwnode_graph(fwnode->secondary);
+}
+
 int ipu_bridge_init(struct device *dev,
 		    ipu_parse_sensor_fwnode_t parse_sensor_fwnode)
 {
@@ -757,6 +774,9 @@ int ipu_bridge_init(struct device *dev,
 	unsigned int i;
 	int ret;
 
+	if (!ipu_bridge_check_fwnode_graph(dev_fwnode(dev)))
+		return 0;
+
 	if (!ipu_bridge_ivsc_is_ready())
 		return -EPROBE_DEFER;
 
diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
index 83e29c56fe33..df6a9308559a 100644
--- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
+++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
@@ -1667,22 +1667,6 @@ static void cio2_queues_exit(struct cio2_device *cio2)
 		cio2_queue_exit(cio2, &cio2->queue[i]);
 }
 
-static int cio2_check_fwnode_graph(struct fwnode_handle *fwnode)
-{
-	struct fwnode_handle *endpoint;
-
-	if (IS_ERR_OR_NULL(fwnode))
-		return -EINVAL;
-
-	endpoint = fwnode_graph_get_next_endpoint(fwnode, NULL);
-	if (endpoint) {
-		fwnode_handle_put(endpoint);
-		return 0;
-	}
-
-	return cio2_check_fwnode_graph(fwnode->secondary);
-}
-
 /**************** PCI interface ****************/
 
 static int cio2_pci_probe(struct pci_dev *pci_dev,
@@ -1698,17 +1682,9 @@ static int cio2_pci_probe(struct pci_dev *pci_dev,
 	 * if the device has no endpoints then we can try to build those as
 	 * software_nodes parsed from SSDB.
 	 */
-	r = cio2_check_fwnode_graph(fwnode);
-	if (r) {
-		if (fwnode && !IS_ERR_OR_NULL(fwnode->secondary)) {
-			dev_err(dev, "fwnode graph has no endpoints connected\n");
-			return -EINVAL;
-		}
-
-		r = ipu_bridge_init(dev, ipu_bridge_parse_ssdb);
-		if (r)
-			return r;
-	}
+	r = ipu_bridge_init(dev, ipu_bridge_parse_ssdb);
+	if (r)
+		return r;
 
 	cio2 = devm_kzalloc(dev, sizeof(*cio2), GFP_KERNEL);
 	if (!cio2)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/4] media: ipu-bridge: Serialise calls to IPU bridge init
  2024-02-13 13:08 [PATCH v2 0/4] IPU bridge improvements for IPU6 Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 1/4] media: ipu-bridge: Add ov01a10 in Dell XPS 9315 Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge Sakari Ailus
@ 2024-02-13 13:08 ` Sakari Ailus
  2024-02-13 13:08 ` [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge Sakari Ailus
  3 siblings, 0 replies; 7+ messages in thread
From: Sakari Ailus @ 2024-02-13 13:08 UTC (permalink / raw)
  To: linux-media; +Cc: Hans de Goede, Daniel Scally, Bingbu Cao

The IPU bridge initialisation will be called from multiple locations in
the future. Serialise the access to devices' fwnodes in this context.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/pci/intel/ipu-bridge.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
index 735c62c37c22..e994db4f4d91 100644
--- a/drivers/media/pci/intel/ipu-bridge.c
+++ b/drivers/media/pci/intel/ipu-bridge.c
@@ -766,6 +766,8 @@ static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
 	return ipu_bridge_check_fwnode_graph(fwnode->secondary);
 }
 
+static DEFINE_MUTEX(ipu_bridge_mutex);
+
 int ipu_bridge_init(struct device *dev,
 		    ipu_parse_sensor_fwnode_t parse_sensor_fwnode)
 {
@@ -774,6 +776,8 @@ int ipu_bridge_init(struct device *dev,
 	unsigned int i;
 	int ret;
 
+	guard(mutex)(&ipu_bridge_mutex);
+
 	if (!ipu_bridge_check_fwnode_graph(dev_fwnode(dev)))
 		return 0;
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge
  2024-02-13 13:08 [PATCH v2 0/4] IPU bridge improvements for IPU6 Sakari Ailus
                   ` (2 preceding siblings ...)
  2024-02-13 13:08 ` [PATCH v2 3/4] media: ipu-bridge: Serialise calls to IPU bridge init Sakari Ailus
@ 2024-02-13 13:08 ` Sakari Ailus
  2024-02-14  2:56   ` kernel test robot
  3 siblings, 1 reply; 7+ messages in thread
From: Sakari Ailus @ 2024-02-13 13:08 UTC (permalink / raw)
  To: linux-media; +Cc: Hans de Goede, Daniel Scally, Bingbu Cao

Use IPU bridge to instantiate software nodes for IPU6 related devices. If
the IPU6 device is probed before the MEI CSI device is created, neither
will probe unless there are further devices probed successfully which
triggers re-probe of both IPU6 and MEI CSI.

This patch ensures the necessary software nodes are in place when the MEI
CSI driver is probed.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/pci/intel/ivsc/mei_csi.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c b/drivers/media/pci/intel/ivsc/mei_csi.c
index 15b905f66ab7..b97f341318fe 100644
--- a/drivers/media/pci/intel/ivsc/mei_csi.c
+++ b/drivers/media/pci/intel/ivsc/mei_csi.c
@@ -19,12 +19,15 @@
 #include <linux/mei_cl_bus.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
+#include <linux/pci.h>
 #include <linux/pm_runtime.h>
 #include <linux/slab.h>
 #include <linux/units.h>
 #include <linux/uuid.h>
 #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>
@@ -716,11 +719,23 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
 			 const struct mei_cl_device_id *id)
 {
 	struct device *dev = &cldev->dev;
+	unsigned int i;
+	struct pci_dev *ipu;
 	struct mei_csi *csi;
 	int ret;
 
-	if (!dev_fwnode(dev))
-		return -EPROBE_DEFER;
+	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);
+
+	if (!ipu)
+		return -ENODEV;
+
+	ret = ipu_bridge_init(&ipu->dev, ipu_bridge_parse_ssdb);
+	if (ret < 0)
+		return ret;
+	if (WARN_ON(!dev_fwnode(dev)))
+		return -ENXIO;
 
 	csi = devm_kzalloc(dev, sizeof(struct mei_csi), GFP_KERNEL);
 	if (!csi)
@@ -841,6 +856,7 @@ static struct mei_cl_driver mei_csi_driver = {
 
 module_mei_cl_driver(mei_csi_driver);
 
+MODULE_IMPORT_NS(INTEL_IPU_BRIDGE);
 MODULE_AUTHOR("Wentong Wu <wentong.wu@intel.com>");
 MODULE_AUTHOR("Zhifeng Wang <zhifeng.wang@intel.com>");
 MODULE_DESCRIPTION("Device driver for IVSC CSI");
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge
  2024-02-13 13:08 ` [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge Sakari Ailus
@ 2024-02-14  2:56   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2024-02-14  2:56 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: oe-kbuild-all

Hi Sakari,

kernel test robot noticed the following build errors:

[auto build test ERROR on media-tree/master]
[also build test ERROR on linuxtv-media-stage/master linus/master v6.8-rc4 next-20240213]
[cannot apply to sailus-media-tree/streams]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Sakari-Ailus/media-ipu-bridge-Add-ov01a10-in-Dell-XPS-9315/20240213-211311
base:   git://linuxtv.org/media_tree.git master
patch link:    https://lore.kernel.org/r/20240213130815.382792-5-sakari.ailus%40linux.intel.com
patch subject: [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge
config: i386-randconfig-006-20240214 (https://download.01.org/0day-ci/archive/20240214/202402141003.GR4DOSY3-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240214/202402141003.GR4DOSY3-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402141003.GR4DOSY3-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/media/pci/intel/ivsc/mei_csi.c:30:10: fatal error: media/ipu6-pci-table.h: No such file or directory
    #include <media/ipu6-pci-table.h>
             ^~~~~~~~~~~~~~~~~~~~~~~~
   compilation terminated.


vim +30 drivers/media/pci/intel/ivsc/mei_csi.c

    28	
    29	#include <media/ipu-bridge.h>
  > 30	#include <media/ipu6-pci-table.h>
    31	#include <media/v4l2-async.h>
    32	#include <media/v4l2-ctrls.h>
    33	#include <media/v4l2-fwnode.h>
    34	#include <media/v4l2-subdev.h>
    35	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge
  2024-02-13 13:08 ` [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge Sakari Ailus
@ 2024-02-14  5:12   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2024-02-14  5:12 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: oe-kbuild-all

Hi Sakari,

kernel test robot noticed the following build warnings:

[auto build test WARNING on media-tree/master]
[also build test WARNING on linuxtv-media-stage/master linus/master v6.8-rc4 next-20240213]
[cannot apply to sailus-media-tree/streams]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Sakari-Ailus/media-ipu-bridge-Add-ov01a10-in-Dell-XPS-9315/20240213-211311
base:   git://linuxtv.org/media_tree.git master
patch link:    https://lore.kernel.org/r/20240213130815.382792-3-sakari.ailus%40linux.intel.com
patch subject: [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge
config: x86_64-randconfig-161-20240214 (https://download.01.org/0day-ci/archive/20240214/202402141359.puqfkWZY-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240214/202402141359.puqfkWZY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402141359.puqfkWZY-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/media/pci/intel/ipu3/ipu3-cio2.c: In function 'cio2_pci_probe':
>> drivers/media/pci/intel/ipu3/ipu3-cio2.c:1676:24: warning: unused variable 'fwnode' [-Wunused-variable]
    1676 |  struct fwnode_handle *fwnode = dev_fwnode(dev);
         |                        ^~~~~~


vim +/fwnode +1676 drivers/media/pci/intel/ipu3/ipu3-cio2.c

c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1671  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1672  static int cio2_pci_probe(struct pci_dev *pci_dev,
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1673  			  const struct pci_device_id *id)
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1674  {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1675  	struct device *dev = &pci_dev->dev;
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13 @1676  	struct fwnode_handle *fwnode = dev_fwnode(dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1677  	struct cio2_device *cio2;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1678  	int r;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1679  
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1680  	/*
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1681  	 * On some platforms no connections to sensors are defined in firmware,
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1682  	 * if the device has no endpoints then we can try to build those as
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1683  	 * software_nodes parsed from SSDB.
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1684  	 */
998af18082fe4e3 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Hans de Goede         2023-07-05  1685  	r = ipu_bridge_init(dev, ipu_bridge_parse_ssdb);
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1686  	if (r)
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1687  		return r;
803abec64ef9d31 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Daniel Scally         2021-01-07  1688  
fc2c204538a9fbf drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Hans de Goede         2021-12-03  1689  	cio2 = devm_kzalloc(dev, sizeof(*cio2), GFP_KERNEL);
fc2c204538a9fbf drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Hans de Goede         2021-12-03  1690  	if (!cio2)
fc2c204538a9fbf drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Hans de Goede         2021-12-03  1691  		return -ENOMEM;
fc2c204538a9fbf drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Hans de Goede         2021-12-03  1692  	cio2->pci_dev = pci_dev;
fc2c204538a9fbf drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Hans de Goede         2021-12-03  1693  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1694  	r = pcim_enable_device(pci_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1695  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1696  		dev_err(dev, "failed to enable device (%d)\n", r);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1697  		return r;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1698  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1699  
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1700  	dev_info(dev, "device 0x%x (rev: 0x%x)\n",
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1701  		 pci_dev->device, pci_dev->revision);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1702  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1703  	r = pcim_iomap_regions(pci_dev, 1 << CIO2_PCI_BAR, pci_name(pci_dev));
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1704  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1705  		dev_err(dev, "failed to remap I/O memory (%d)\n", r);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1706  		return -ENODEV;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1707  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1708  
c12841388e16184 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Andy Shevchenko       2020-08-17  1709  	cio2->base = pcim_iomap_table(pci_dev)[CIO2_PCI_BAR];
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1710  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1711  	pci_set_drvdata(pci_dev, cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1712  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1713  	pci_set_master(pci_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1714  
887069f424550eb drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Christophe JAILLET    2021-08-22  1715  	r = dma_set_mask(&pci_dev->dev, CIO2_DMA_MASK);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1716  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1717  		dev_err(dev, "failed to set DMA mask (%d)\n", r);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1718  		return -ENODEV;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1719  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1720  
34a07e65bae27ab drivers/media/pci/intel/ipu3/ipu3-cio2.c      Andy Shevchenko       2020-08-17  1721  	r = pci_enable_msi(pci_dev);
34a07e65bae27ab drivers/media/pci/intel/ipu3/ipu3-cio2.c      Andy Shevchenko       2020-08-17  1722  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1723  		dev_err(dev, "failed to enable MSI (%d)\n", r);
34a07e65bae27ab drivers/media/pci/intel/ipu3/ipu3-cio2.c      Andy Shevchenko       2020-08-17  1724  		return r;
34a07e65bae27ab drivers/media/pci/intel/ipu3/ipu3-cio2.c      Andy Shevchenko       2020-08-17  1725  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1726  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1727  	r = cio2_fbpt_init_dummy(cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1728  	if (r)
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1729  		return r;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1730  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1731  	mutex_init(&cio2->lock);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1732  
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1733  	cio2->media_dev.dev = dev;
c0decac19da3906 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Mauro Carvalho Chehab 2018-09-10  1734  	strscpy(cio2->media_dev.model, CIO2_DEVICE_NAME,
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1735  		sizeof(cio2->media_dev.model));
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1736  	cio2->media_dev.hw_revision = 0;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1737  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1738  	media_device_init(&cio2->media_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1739  	r = media_device_register(&cio2->media_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1740  	if (r < 0)
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1741  		goto fail_mutex_destroy;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1742  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1743  	cio2->v4l2_dev.mdev = &cio2->media_dev;
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1744  	r = v4l2_device_register(dev, &cio2->v4l2_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1745  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1746  		dev_err(dev, "failed to register V4L2 device (%d)\n", r);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1747  		goto fail_media_device_unregister;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1748  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1749  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1750  	r = cio2_queues_init(cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1751  	if (r)
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1752  		goto fail_v4l2_device_unregister;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1753  
b8ec754ae4c563f drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2023-02-23  1754  	v4l2_async_nf_init(&cio2->notifier, &cio2->v4l2_dev);
2c93346698bacd5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1755  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1756  	/* Register notifier for subdevices we care */
2c93346698bacd5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1757  	r = cio2_parse_firmware(cio2);
706c0cffaf2a1b5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1758  	if (r)
2c93346698bacd5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1759  		goto fail_clean_notifier;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1760  
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1761  	r = devm_request_irq(dev, pci_dev->irq, cio2_irq, IRQF_SHARED,
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1762  			     CIO2_NAME, cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1763  	if (r) {
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1764  		dev_err(dev, "failed to request IRQ (%d)\n", r);
2c93346698bacd5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1765  		goto fail_clean_notifier;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1766  	}
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1767  
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1768  	pm_runtime_put_noidle(dev);
cfd13612a5a7071 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Andy Shevchenko       2021-07-13  1769  	pm_runtime_allow(dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1770  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1771  	return 0;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1772  
2c93346698bacd5 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Sakari Ailus          2019-03-04  1773  fail_clean_notifier:
3c8c153914812a9 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Sakari Ailus          2021-03-05  1774  	v4l2_async_nf_unregister(&cio2->notifier);
3c8c153914812a9 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c Sakari Ailus          2021-03-05  1775  	v4l2_async_nf_cleanup(&cio2->notifier);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1776  	cio2_queues_exit(cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1777  fail_v4l2_device_unregister:
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1778  	v4l2_device_unregister(&cio2->v4l2_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1779  fail_media_device_unregister:
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1780  	media_device_unregister(&cio2->media_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1781  	media_device_cleanup(&cio2->media_dev);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1782  fail_mutex_destroy:
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1783  	mutex_destroy(&cio2->lock);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1784  	cio2_fbpt_exit_dummy(cio2);
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1785  
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1786  	return r;
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1787  }
c2a6a07afe4a466 drivers/media/pci/intel/ipu3/ipu3-cio2.c      Yong Zhi              2017-11-08  1788  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-02-14  5:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-13 13:08 [PATCH v2 0/4] IPU bridge improvements for IPU6 Sakari Ailus
2024-02-13 13:08 ` [PATCH v2 1/4] media: ipu-bridge: Add ov01a10 in Dell XPS 9315 Sakari Ailus
2024-02-13 13:08 ` [PATCH v2 2/4] media: ipu-bridge: Move graph checking to IPU bridge Sakari Ailus
2024-02-14  5:12   ` kernel test robot
2024-02-13 13:08 ` [PATCH v2 3/4] media: ipu-bridge: Serialise calls to IPU bridge init Sakari Ailus
2024-02-13 13:08 ` [PATCH v2 4/4] media: ivsc: csi: Use IPU bridge Sakari Ailus
2024-02-14  2:56   ` kernel test robot

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.