2019-03-29 14:12:17 +08:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2019-01-10 08:16:04 +08:00
|
|
|
From: kgopala2 <karthik.l.gopalakrishnan@intel.com>
|
|
|
|
Date: Sat, 29 Dec 2018 01:07:06 +0800
|
2019-03-29 14:12:17 +08:00
|
|
|
Subject: [PATCH] media: intel-ipu4: [ICI]: get virtual I2C ID dynamically if
|
|
|
|
different from physical
|
2019-01-10 08:16:04 +08:00
|
|
|
|
|
|
|
Acquire bus i2c adapter id in run time to adapt to changes in i2c enumeration
|
|
|
|
order
|
|
|
|
|
|
|
|
Change-Id: If7b97800f58f6df7b0c8eca5370424b0566bcf3d
|
|
|
|
Tracked-On: PKT-1644
|
|
|
|
Tracked-On: OAM-74863
|
|
|
|
Signed-off-by: kgopala2 <karthik.l.gopalakrishnan@intel.com>
|
|
|
|
---
|
|
|
|
drivers/media/pci/intel/ici/Makefile | 2 +-
|
|
|
|
drivers/media/pci/intel/ici/ici-isys.c | 24 ++++++++++++++++++------
|
|
|
|
2 files changed, 19 insertions(+), 7 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/drivers/media/pci/intel/ici/Makefile b/drivers/media/pci/intel/ici/Makefile
|
2020-10-27 02:14:06 +08:00
|
|
|
index 415df762fe89..fb23912113fc 100644
|
2019-01-10 08:16:04 +08:00
|
|
|
--- a/drivers/media/pci/intel/ici/Makefile
|
|
|
|
+++ b/drivers/media/pci/intel/ici/Makefile
|
|
|
|
@@ -6,7 +6,7 @@ srcpath := $(srctree)
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef CONFIG_VIDEO_INTEL_ICI
|
|
|
|
-ccflags-y += -DHAS_DUAL_CMD_CTX_SUPPORT=0 -DIPU_VC_SUPPORT -DIPU_HAS_ISA -DIPU_PSYS_LEGACY -Wframe-larger-than=4096
|
|
|
|
+ccflags-y += -DHAS_DUAL_CMD_CTX_SUPPORT=0 -DIPU_VC_SUPPORT -DIPU_HAS_ISA -DIPU_PSYS_LEGACY -DI2C_WA -Wframe-larger-than=4096
|
|
|
|
|
|
|
|
|
|
|
|
# work-around to re-use ipu4-css and libintel-ipu4_ici.c together when
|
|
|
|
diff --git a/drivers/media/pci/intel/ici/ici-isys.c b/drivers/media/pci/intel/ici/ici-isys.c
|
2020-10-27 02:14:06 +08:00
|
|
|
index 848fac9d1b06..500491ee038f 100644
|
2019-01-10 08:16:04 +08:00
|
|
|
--- a/drivers/media/pci/intel/ici/ici-isys.c
|
|
|
|
+++ b/drivers/media/pci/intel/ici/ici-isys.c
|
|
|
|
@@ -306,21 +306,33 @@ static int isys_register_ext_subdev(struct ici_isys *isys,
|
|
|
|
struct ipu_isys_subdev_info *sd_info,
|
|
|
|
bool acpi_only)
|
|
|
|
{
|
|
|
|
- struct i2c_adapter *adapter =
|
|
|
|
- i2c_get_adapter(sd_info->i2c.i2c_adapter_id);
|
|
|
|
+ struct i2c_adapter *adapter;
|
|
|
|
struct ici_ext_subdev *sd;
|
|
|
|
struct i2c_client *client;
|
|
|
|
int rval;
|
|
|
|
+ int bus;
|
|
|
|
|
|
|
|
- dev_info(&isys->adev->dev,
|
|
|
|
- "creating new i2c subdev for %s (address %2.2x, bus %d)",
|
|
|
|
- sd_info->i2c.board_info.type, sd_info->i2c.board_info.addr,
|
|
|
|
- sd_info->i2c.i2c_adapter_id);
|
|
|
|
+#ifdef I2C_WA
|
|
|
|
+ bus = ipu_get_i2c_bus_id(sd_info->i2c.i2c_adapter_id);
|
|
|
|
+ if (bus < 0) {
|
|
|
|
+ dev_err(&isys->adev->dev, "Failed to find adapter!");
|
|
|
|
+ return -ENOENT;
|
|
|
|
+ }
|
|
|
|
+#else
|
|
|
|
+ bus = sd_info->i2c.i2c_adapter_id;
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
+ adapter = i2c_get_adapter(bus);
|
|
|
|
if (!adapter) {
|
|
|
|
dev_warn(&isys->adev->dev, "can't find adapter\n");
|
|
|
|
return -ENOENT;
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ dev_info(&isys->adev->dev,
|
|
|
|
+ "creating new i2c subdev for %s (address %2.2x, bus %d)",
|
|
|
|
+ sd_info->i2c.board_info.type, sd_info->i2c.board_info.addr,
|
|
|
|
+ bus);
|
|
|
|
+
|
|
|
|
if (sd_info->csi2) {
|
|
|
|
dev_info(&isys->adev->dev, "sensor device on CSI port: %d\n",
|
|
|
|
sd_info->csi2->port);
|
|
|
|
--
|
2019-04-08 18:08:36 +08:00
|
|
|
https://clearlinux.org
|
2019-01-10 08:16:04 +08:00
|
|
|
|