aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/boot/acpigen.c22
-rw-r--r--src/arch/x86/include/arch/acpigen.h2
-rw-r--r--src/drivers/lenovo/wacom.c18
3 files changed, 22 insertions, 20 deletions
diff --git a/src/arch/x86/boot/acpigen.c b/src/arch/x86/boot/acpigen.c
index f714d5985b..cc9f9abc48 100644
--- a/src/arch/x86/boot/acpigen.c
+++ b/src/arch/x86/boot/acpigen.c
@@ -382,13 +382,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_patch_len(len - 1);
@@ -535,7 +535,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);
@@ -713,20 +713,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_patch_len(len-1);
return 2;
@@ -773,7 +777,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 e07a0f5c22..64f496910b 100644
--- a/src/arch/x86/include/arch/acpigen.h
+++ b/src/arch/x86/include/arch/acpigen.h
@@ -63,7 +63,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 ce49535cc3..7368afe416 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);