[coreboot-gerrit] Patch set updated for coreboot: 81ef333 acpigen: Use implicit length patching in acpigen_write_resourcetemplate_footer

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Sun Nov 9 13:56:25 CET 2014


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7366

-gerrit

commit 81ef333f5e4fb19b1534207f8b5e8eec3a34ed66
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Sun Nov 9 03:37:28 2014 +0100

    acpigen: Use implicit length patching in acpigen_write_resourcetemplate_footer
    
    Change-Id: Ic177720b074fed13a17454dcb6765ac298365624
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/arch/x86/boot/acpigen.c         | 22 +++++++++++++---------
 src/arch/x86/include/arch/acpigen.h |  2 +-
 src/drivers/lenovo/wacom.c          | 18 ++++++++----------
 3 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/src/arch/x86/boot/acpigen.c b/src/arch/x86/boot/acpigen.c
index 0abe3f6..850fe91 100644
--- a/src/arch/x86/boot/acpigen.c
+++ b/src/arch/x86/boot/acpigen.c
@@ -371,13 +371,13 @@ int acpigen_write_empty_PTC(void)
 	/* ControlRegister */
 	rlen = acpigen_write_resourcetemplate_header();
 	rlen += acpigen_write_register(&addr);
-	len += acpigen_write_resourcetemplate_footer(rlen);
+	len += acpigen_write_resourcetemplate_footer();
 	len += rlen;
 
 	/* StatusRegister */
 	rlen = acpigen_write_resourcetemplate_header();
 	rlen += acpigen_write_register(&addr);
-	len += acpigen_write_resourcetemplate_footer(rlen);
+	len += acpigen_write_resourcetemplate_footer();
 	len += rlen;
 
 	acpigen_pop_len();
@@ -524,7 +524,7 @@ int acpigen_write_CST_package_entry(acpi_cstate_t *cstate)
 	acpigen_write_register(&cstate->resource);
 	end = acpigen_get_current();
 	len += end - start;
-	len += acpigen_write_resourcetemplate_footer(len);
+	len += acpigen_write_resourcetemplate_footer();
 	len += len0;
 	len += acpigen_write_dword(cstate->ctype);
 	len += acpigen_write_dword(cstate->latency);
@@ -702,20 +702,24 @@ int acpigen_write_resourcetemplate_header(void)
 	return len;
 }
 
-int acpigen_write_resourcetemplate_footer(int len)
+int acpigen_write_resourcetemplate_footer(void)
 {
 	char *p = len_stack[--ltop];
+	int len;
 	/*
 	 * end tag (acpi 4.0 Section 6.4.2.8)
 	 * 0x79 <checksum>
 	 * 0x00 is treated as a good checksum according to the spec
 	 * and is what iasl generates.
 	 */
-	len += acpigen_emit_byte(0x79);
-	len += acpigen_emit_byte(0x00);
+	acpigen_emit_byte(0x79);
+	acpigen_emit_byte(0x00);
+
+     	len = gencurrent - p;
+
 	/* patch len word */
-	p[0] = (len-6) & 0xff;
-	p[1] = ((len-6) >> 8) & 0xff;
+	p[0] = len & 0xff;
+	p[1] = (len >> 8) & 0xff;
 	/* patch len field */
 	acpigen_pop_len();
 	return 2;
@@ -762,7 +766,7 @@ int acpigen_write_mainboard_resource_template(void)
 
 	end = acpigen_get_current();
 	len += end-start;
-	len += acpigen_write_resourcetemplate_footer(len);
+	len += acpigen_write_resourcetemplate_footer();
 	return len;
 }
 
diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h
index c52a716..e4d6f1e 100644
--- a/src/arch/x86/include/arch/acpigen.h
+++ b/src/arch/x86/include/arch/acpigen.h
@@ -62,7 +62,7 @@ int acpigen_write_mem32fixed(int readwrite, u32 base, u32 size);
 int acpigen_write_io16(u16 min, u16 max, u8 align, u8 len, u8 decode16);
 int acpigen_write_register(acpi_addr_t *addr);
 int acpigen_write_resourcetemplate_header(void);
-int acpigen_write_resourcetemplate_footer(int len);
+int acpigen_write_resourcetemplate_footer(void);
 int acpigen_write_mainboard_resource_template(void);
 int acpigen_write_mainboard_resources(const char *scope, const char *name);
 int acpigen_write_irq(u16 mask);
diff --git a/src/drivers/lenovo/wacom.c b/src/drivers/lenovo/wacom.c
index ce49535..7368afe 100644
--- a/src/drivers/lenovo/wacom.c
+++ b/src/drivers/lenovo/wacom.c
@@ -93,8 +93,6 @@ void
 drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
 					  int have_dock_serial)
 {
-	int reslen;
-
 	acpigen_write_scope(scope);
 
 	if (drivers_lenovo_is_wacom_present()) {
@@ -105,11 +103,11 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
 
 		acpigen_write_name("_CRS");
 
-		reslen = acpigen_write_resourcetemplate_header();
-		reslen += acpigen_write_io16(0x200, 0x200, 1, 8, 1);
-		reslen += acpigen_write_irq((1 << 5));
+		acpigen_write_resourcetemplate_header();
+		acpigen_write_io16(0x200, 0x200, 1, 8, 1);
+		acpigen_write_irq((1 << 5));
 
-		acpigen_write_resourcetemplate_footer(reslen);
+		acpigen_write_resourcetemplate_footer();
 
 		acpigen_write_method("_STA", 0);
 		/* return */
@@ -131,11 +129,11 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
 
 		acpigen_write_name("_CRS");
 
-		reslen = acpigen_write_resourcetemplate_header();
-		reslen += acpigen_write_io16(0x3f8, 0x3f8, 1, 8, 1);
-		reslen += acpigen_write_irq(1 << 4);
+		acpigen_write_resourcetemplate_header();
+		acpigen_write_io16(0x3f8, 0x3f8, 1, 8, 1);
+		acpigen_write_irq(1 << 4);
 
-		acpigen_write_resourcetemplate_footer(reslen);
+		acpigen_write_resourcetemplate_footer();
 
 		/* method op */
 		acpigen_write_method("_STA", 0);



More information about the coreboot-gerrit mailing list