* [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.