diff options
author | Furquan Shaikh <furquan@chromium.org> | 2016-10-03 23:30:14 -0700 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-10-07 18:04:34 +0200 |
commit | 35c01bc4e0bc72d4ba8bafc922b47f9aa47ca02d (patch) | |
tree | 42f222ecfede7ad2dea96b070eb356aefa9beb17 /src | |
parent | 93b51e7ac9242738a9e3354661ea7a9980938e0a (diff) | |
download | coreboot-35c01bc4e0bc72d4ba8bafc922b47f9aa47ca02d.tar.xz |
x86/acpi_device: Fix writing of array property
Only acpi_dp of type DP_TYPE_TABLE is allowed to be an array. This
DP_TYPE_TABLE does not have a value which is written. Thus,
acpi_dp_write_array needs to start counting from the next element type
in the array. Fix this by updating the initialization in for loop for
writing array elements.
BUG=chrome-os-partner:55988
BRANCH=None
TEST=Verified that the correct number of elements are passed for
add_gpio in maxim sdmode-gpio.
Change-Id: I8e1e540d66086971de2edf0bb83494d3b1dbd176
Signed-off-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: https://review.coreboot.org/16871
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/x86/acpi_device.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/arch/x86/acpi_device.c b/src/arch/x86/acpi_device.c index 2982999fe5..7cf292fbee 100644 --- a/src/arch/x86/acpi_device.c +++ b/src/arch/x86/acpi_device.c @@ -530,7 +530,12 @@ static void acpi_dp_write_array(const struct acpi_dp *array) /* Package element count determined as it is populated */ pkg_count = acpigen_write_package(0); - for (dp = array; dp; dp = dp->next) { + /* + * Only acpi_dp of type DP_TYPE_TABLE is allowed to be an array. + * DP_TYPE_TABLE does not have a value to be written. Thus, start + * the loop from next type in the array. + */ + for (dp = array->next; dp; dp = dp->next) { acpi_dp_write_value(dp); (*pkg_count)++; } |