i2c: core: Allow getting ACPI info by index
Modify struct i2c_acpi_lookup and i2c_acpi_fill_info() to allow using them to get the info from a certain index in the ACPI-resource list rather then taking the first I2cSerialBus resource. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
97da3854c5
commit
417f784379
|
@ -112,6 +112,8 @@ struct i2c_acpi_lookup {
|
||||||
acpi_handle adapter_handle;
|
acpi_handle adapter_handle;
|
||||||
acpi_handle device_handle;
|
acpi_handle device_handle;
|
||||||
acpi_handle search_handle;
|
acpi_handle search_handle;
|
||||||
|
int n;
|
||||||
|
int index;
|
||||||
u32 speed;
|
u32 speed;
|
||||||
u32 min_speed;
|
u32 min_speed;
|
||||||
};
|
};
|
||||||
|
@ -130,6 +132,9 @@ static int i2c_acpi_fill_info(struct acpi_resource *ares, void *data)
|
||||||
if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
|
if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
if (lookup->index != -1 && lookup->n++ != lookup->index)
|
||||||
|
return 1;
|
||||||
|
|
||||||
status = acpi_get_handle(lookup->device_handle,
|
status = acpi_get_handle(lookup->device_handle,
|
||||||
sb->resource_source.string_ptr,
|
sb->resource_source.string_ptr,
|
||||||
&lookup->adapter_handle);
|
&lookup->adapter_handle);
|
||||||
|
@ -182,6 +187,7 @@ static int i2c_acpi_get_info(struct acpi_device *adev,
|
||||||
|
|
||||||
memset(&lookup, 0, sizeof(lookup));
|
memset(&lookup, 0, sizeof(lookup));
|
||||||
lookup.info = info;
|
lookup.info = info;
|
||||||
|
lookup.index = -1;
|
||||||
|
|
||||||
ret = i2c_acpi_do_lookup(adev, &lookup);
|
ret = i2c_acpi_do_lookup(adev, &lookup);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -328,6 +334,7 @@ u32 i2c_acpi_find_bus_speed(struct device *dev)
|
||||||
lookup.search_handle = ACPI_HANDLE(dev);
|
lookup.search_handle = ACPI_HANDLE(dev);
|
||||||
lookup.min_speed = UINT_MAX;
|
lookup.min_speed = UINT_MAX;
|
||||||
lookup.info = &dummy;
|
lookup.info = &dummy;
|
||||||
|
lookup.index = -1;
|
||||||
|
|
||||||
status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
||||||
I2C_ACPI_MAX_SCAN_DEPTH,
|
I2C_ACPI_MAX_SCAN_DEPTH,
|
||||||
|
|
Loading…
Reference in New Issue