Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Andy Shevchenko and committed by
Rafael J. Wysocki
1fbd9029 197b6b60

+34 -46
+34 -46
drivers/acpi/property.c
··· 971 971 enum dev_prop_type proptype, void *val) 972 972 { 973 973 const union acpi_object *obj; 974 - int ret; 974 + int ret = 0; 975 975 976 - if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64) { 976 + if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64) 977 977 ret = acpi_data_get_property(data, propname, ACPI_TYPE_INTEGER, &obj); 978 - if (ret) 979 - return ret; 980 - 981 - switch (proptype) { 982 - case DEV_PROP_U8: 983 - if (obj->integer.value > U8_MAX) 984 - return -EOVERFLOW; 985 - 986 - if (val) 987 - *(u8 *)val = obj->integer.value; 988 - 989 - break; 990 - case DEV_PROP_U16: 991 - if (obj->integer.value > U16_MAX) 992 - return -EOVERFLOW; 993 - 994 - if (val) 995 - *(u16 *)val = obj->integer.value; 996 - 997 - break; 998 - case DEV_PROP_U32: 999 - if (obj->integer.value > U32_MAX) 1000 - return -EOVERFLOW; 1001 - 1002 - if (val) 1003 - *(u32 *)val = obj->integer.value; 1004 - 1005 - break; 1006 - default: 1007 - if (val) 1008 - *(u64 *)val = obj->integer.value; 1009 - 1010 - break; 1011 - } 1012 - 1013 - if (!val) 1014 - return 1; 1015 - } else if (proptype == DEV_PROP_STRING) { 978 + else if (proptype == DEV_PROP_STRING) 1016 979 ret = acpi_data_get_property(data, propname, ACPI_TYPE_STRING, &obj); 1017 - if (ret) 1018 - return ret; 980 + if (ret) 981 + return ret; 1019 982 983 + switch (proptype) { 984 + case DEV_PROP_U8: 985 + if (obj->integer.value > U8_MAX) 986 + return -EOVERFLOW; 987 + if (val) 988 + *(u8 *)val = obj->integer.value; 989 + break; 990 + case DEV_PROP_U16: 991 + if (obj->integer.value > U16_MAX) 992 + return -EOVERFLOW; 993 + if (val) 994 + *(u16 *)val = obj->integer.value; 995 + break; 996 + case DEV_PROP_U32: 997 + if (obj->integer.value > U32_MAX) 998 + return -EOVERFLOW; 999 + if (val) 1000 + *(u32 *)val = obj->integer.value; 1001 + break; 1002 + case DEV_PROP_U64: 1003 + if (val) 1004 + *(u64 *)val = obj->integer.value; 1005 + break; 1006 + case DEV_PROP_STRING: 1020 1007 if (val) 1021 1008 *(char **)val = obj->string.pointer; 1022 - 1023 1009 return 1; 1024 - } else { 1025 - ret = -EINVAL; 1010 + default: 1011 + return -EINVAL; 1026 1012 } 1027 - return ret; 1013 + 1014 + /* When no storage provided return number of available values */ 1015 + return val ? 0 : 1; 1028 1016 } 1029 1017 1030 1018 #define acpi_copy_property_array_uint(items, val, nval) \