Messages in this thread Patch in this message | | | From | Andy Shevchenko <> | Subject | [PATCH v1 7/7] ACPI: property: Allow counting a single value as an array of 1 element | Date | Wed, 10 Feb 2021 13:43:20 +0200 |
| |
We allow to read the single value as a first element in the array. Unfortunately the counting doesn't work in this case and we can't call fwnode_property_count_*() API without getting an error.
Modify acpi_data_prop_read() to always try the single value read and thus allow counting the single value as an array of 1 element.
Reported-by: Calvin Johnson <calvin.johnson@oss.nxp.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/acpi/property.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index 236316ee0e25..d6100585fceb 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -913,12 +913,14 @@ static int acpi_data_prop_read(const struct acpi_device_data *data, const union acpi_object *items; int ret; - if (val && nval == 1) { + /* Try to read as a single value first */ + if (!val || nval == 1) { ret = acpi_data_prop_read_single(data, propname, proptype, val); if (ret >= 0) - return ret; + return val ? ret : 1; } + /* It's not the single value, get an array instead */ ret = acpi_data_get_property_array(data, propname, ACPI_TYPE_ANY, &obj); if (ret) return ret; -- 2.30.0
| |