From 35c01bc4e0bc72d4ba8bafc922b47f9aa47ca02d Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Mon, 3 Oct 2016 23:30:14 -0700 Subject: 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 Reviewed-on: https://review.coreboot.org/16871 Reviewed-by: Aaron Durbin Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie --- src/arch/x86/acpi_device.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') 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)++; } -- cgit v1.2.3