mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
ACPI: property: Refactor acpi_data_prop_read_single()
Refactor acpi_data_prop_read_single() for decreased indentation and better structure. No functional changes intended. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
197b6b60ae
commit
1fbd9029c8
@ -971,60 +971,48 @@ static int acpi_data_prop_read_single(const struct acpi_device_data *data,
|
||||
enum dev_prop_type proptype, void *val)
|
||||
{
|
||||
const union acpi_object *obj;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64) {
|
||||
if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64)
|
||||
ret = acpi_data_get_property(data, propname, ACPI_TYPE_INTEGER, &obj);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
switch (proptype) {
|
||||
case DEV_PROP_U8:
|
||||
if (obj->integer.value > U8_MAX)
|
||||
return -EOVERFLOW;
|
||||
|
||||
if (val)
|
||||
*(u8 *)val = obj->integer.value;
|
||||
|
||||
break;
|
||||
case DEV_PROP_U16:
|
||||
if (obj->integer.value > U16_MAX)
|
||||
return -EOVERFLOW;
|
||||
|
||||
if (val)
|
||||
*(u16 *)val = obj->integer.value;
|
||||
|
||||
break;
|
||||
case DEV_PROP_U32:
|
||||
if (obj->integer.value > U32_MAX)
|
||||
return -EOVERFLOW;
|
||||
|
||||
if (val)
|
||||
*(u32 *)val = obj->integer.value;
|
||||
|
||||
break;
|
||||
default:
|
||||
if (val)
|
||||
*(u64 *)val = obj->integer.value;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (!val)
|
||||
return 1;
|
||||
} else if (proptype == DEV_PROP_STRING) {
|
||||
else if (proptype == DEV_PROP_STRING)
|
||||
ret = acpi_data_get_property(data, propname, ACPI_TYPE_STRING, &obj);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
switch (proptype) {
|
||||
case DEV_PROP_U8:
|
||||
if (obj->integer.value > U8_MAX)
|
||||
return -EOVERFLOW;
|
||||
if (val)
|
||||
*(u8 *)val = obj->integer.value;
|
||||
break;
|
||||
case DEV_PROP_U16:
|
||||
if (obj->integer.value > U16_MAX)
|
||||
return -EOVERFLOW;
|
||||
if (val)
|
||||
*(u16 *)val = obj->integer.value;
|
||||
break;
|
||||
case DEV_PROP_U32:
|
||||
if (obj->integer.value > U32_MAX)
|
||||
return -EOVERFLOW;
|
||||
if (val)
|
||||
*(u32 *)val = obj->integer.value;
|
||||
break;
|
||||
case DEV_PROP_U64:
|
||||
if (val)
|
||||
*(u64 *)val = obj->integer.value;
|
||||
break;
|
||||
case DEV_PROP_STRING:
|
||||
if (val)
|
||||
*(char **)val = obj->string.pointer;
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
ret = -EINVAL;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
return ret;
|
||||
|
||||
/* When no storage provided return number of available values */
|
||||
return val ? 0 : 1;
|
||||
}
|
||||
|
||||
#define acpi_copy_property_array_uint(items, val, nval) \
|
||||
|
Loading…
Reference in New Issue
Block a user