ACPI: property: Replicate DT-aligned u32 properties from DisCo for Imaging
authorSakari Ailus <sakari.ailus@linux.intel.com>
Mon, 6 Nov 2023 16:31:18 +0000 (17:31 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 20 Nov 2023 15:50:48 +0000 (16:50 +0100)
MIPI DisCo for Imaging defines properties for camera sensors that
functionally align with DT equivalents.

Replicate these properties in the ACPI device swnodes so the code
using the corresponding DT properties already does not need to be
updated to deal with their MIPI counterparts directly.

The replicated properties are:

"mipi-img-clock-frequency" -> "clock-frequency"
"mipi-img-led-max-current" -> "led-max-microamp"
"mipi-img-flash-max-current" -> "flash-max-microamp"
"mipi-img-flash-max-timeout" -> "flash-max-timeout-us"

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
[ rjw: Changelog edits, removal of redundant braces ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
drivers/acpi/mipi-disco-img.c
include/acpi/acpi_bus.h

index b2c7a4922804a4d76e87eb230aad65217d175b53..cad72d1fc127a804b24980a528318cba5fcbd994 100644 (file)
@@ -600,6 +600,7 @@ static void init_crs_csi2_swnodes(struct crs_csi2 *csi2)
        struct acpi_device *adev;
        acpi_status status;
        unsigned int i;
+       u32 val;
        int ret;
 
        /*
@@ -631,6 +632,22 @@ static void init_crs_csi2_swnodes(struct crs_csi2 *csi2)
                }
        }
 
+       if (!fwnode_property_read_u32(adev_fwnode, "mipi-img-clock-frequency", &val))
+               swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_CLOCK_FREQUENCY)] =
+                       PROPERTY_ENTRY_U32("clock-frequency", val);
+
+       if (!fwnode_property_read_u32(adev_fwnode, "mipi-img-led-max-current", &val))
+               swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_LED_MAX_MICROAMP)] =
+                       PROPERTY_ENTRY_U32("led-max-microamp", val);
+
+       if (!fwnode_property_read_u32(adev_fwnode, "mipi-img-flash-max-current", &val))
+               swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_FLASH_MAX_MICROAMP)] =
+                       PROPERTY_ENTRY_U32("flash-max-microamp", val);
+
+       if (!fwnode_property_read_u32(adev_fwnode, "mipi-img-flash-max-timeout-us", &val))
+               swnodes->dev_props[NEXT_PROPERTY(prop_index, DEV_FLASH_MAX_TIMEOUT_US)] =
+                       PROPERTY_ENTRY_U32("flash-max-timeout-us", val);
+
        status = acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
        if (ACPI_FAILURE(status)) {
                acpi_handle_info(handle, "Unable to get the path name\n");
index 1e5d2e2c3444caf9308580abee803469a0b69ffe..989ea623b1c236156d1f4c33b8505497b93d9d5f 100644 (file)
@@ -381,6 +381,10 @@ struct acpi_gpio_mapping;
 
 enum acpi_device_swnode_dev_props {
        ACPI_DEVICE_SWNODE_DEV_ROTATION,
+       ACPI_DEVICE_SWNODE_DEV_CLOCK_FREQUENCY,
+       ACPI_DEVICE_SWNODE_DEV_LED_MAX_MICROAMP,
+       ACPI_DEVICE_SWNODE_DEV_FLASH_MAX_MICROAMP,
+       ACPI_DEVICE_SWNODE_DEV_FLASH_MAX_TIMEOUT_US,
        ACPI_DEVICE_SWNODE_DEV_NUM_OF,
        ACPI_DEVICE_SWNODE_DEV_NUM_ENTRIES
 };