Sugnan Prabhu S has uploaded this change for review.

View Change

drivers/intel/mipi_camera: Handling IPU generic device

Includes changes in mipi_camera driver to handle generic device which
fixes the IPU device probing.

Change-Id: I309edd065719cb8250f1241898bb5854004d2a9f
Signed-off-by: Sugnan Prabhu S <sugnan.prabhu.s@intel.com>
---
M src/drivers/intel/mipi_camera/camera.c
1 file changed, 22 insertions(+), 19 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/25/44025/1
diff --git a/src/drivers/intel/mipi_camera/camera.c b/src/drivers/intel/mipi_camera/camera.c
index 51686d0..6f237a9 100644
--- a/src/drivers/intel/mipi_camera/camera.c
+++ b/src/drivers/intel/mipi_camera/camera.c
@@ -761,8 +761,6 @@

static void write_pci_camera_device(const struct device *dev)
{
- struct drivers_intel_mipi_camera_config *config = dev->chip_info;
-
if (dev->path.type != DEVICE_PATH_PCI) {
printk(BIOS_ERR, "CIO2/IMGU devices require PCI\n");
return;
@@ -770,8 +768,7 @@

acpigen_write_device(acpi_device_name(dev));
acpigen_write_ADR_pci_device(dev);
- acpigen_write_name_string("_DDN", config->device_type == INTEL_ACPI_CAMERA_CIO2 ?
- "Camera and Imaging Subsystem" : "Imaging Unit");
+ acpigen_write_name_string("_DDN", "Camera and Imaging Subsystem");
}

static void write_i2c_camera_device(const struct device *dev, const char *scope)
@@ -784,11 +781,6 @@
.resource = scope,
};

- if (dev->path.type != DEVICE_PATH_I2C) {
- printk(BIOS_ERR, "Non-CIO2/IMGU devices require I2C\n");
- return;
- }
-
acpigen_write_device(acpi_device_name(dev));

/* add power resource */
@@ -930,18 +922,29 @@
acpigen_pop_len(); /* Guarded power resource operations scope */
}

- /* Device */
- scope = acpi_device_scope(dev);
- if (!scope)
- return;
+ switch (dev->path.type) {
+ case DEVICE_PATH_I2C:
+ scope = acpi_device_scope(dev);
+ if (!scope)
+ return;

- acpigen_write_scope(scope);
-
- if (config->device_type == INTEL_ACPI_CAMERA_CIO2 ||
- config->device_type == INTEL_ACPI_CAMERA_IMGU)
- write_pci_camera_device(dev);
- else
+ acpigen_write_scope(scope);
write_i2c_camera_device(dev, scope);
+ break;
+ case DEVICE_PATH_GENERIC:
+ pdev = dev->bus->dev;
+ scope = acpi_device_scope(pdev);
+ if (!scope)
+ return;
+
+ acpigen_write_scope(scope);
+ write_pci_camera_device(pdev);
+ break;
+ default:
+ printk(BIOS_ERR, "Unsupported device type: %x\n"
+ "OS camera driver will likely not work\n", dev->path.type);
+ return;
+ }

write_camera_device_common(dev);


To view, visit change 44025. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I309edd065719cb8250f1241898bb5854004d2a9f
Gerrit-Change-Number: 44025
Gerrit-PatchSet: 1
Gerrit-Owner: Sugnan Prabhu S <sugnan.prabhu.s@intel.com>
Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org>
Gerrit-MessageType: newchange