acpigen: Add and use acpigen_write_method.
The sequence of bytes to create a method is used several times in codebase. Put it into a function with logical arguments rather than duplicating magic bytes everywhere. Change-Id: I0e55d8dc7d5e8e92a521c7a83117c470d0614008 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/7347 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
parent
f9cdb486d1
commit
80fb8edaea
|
@ -395,6 +395,19 @@ int acpigen_write_empty_PTC(void)
|
|||
return len + nlen;
|
||||
}
|
||||
|
||||
int acpigen_write_method(const char *name, int nargs)
|
||||
{
|
||||
int len;
|
||||
|
||||
/* method op */
|
||||
len = acpigen_emit_byte(0x14);
|
||||
len += acpigen_write_len_f();
|
||||
len += acpigen_emit_namestring(name);
|
||||
len += acpigen_emit_byte(nargs & 7);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generates a func with max supported P-states.
|
||||
*/
|
||||
|
@ -407,18 +420,13 @@ int acpigen_write_PPC(u8 nr)
|
|||
}
|
||||
*/
|
||||
int len;
|
||||
/* method op */
|
||||
acpigen_emit_byte(0x14);
|
||||
len = acpigen_write_len_f();
|
||||
len += acpigen_emit_namestring("_PPC");
|
||||
/* no fnarg */
|
||||
acpigen_emit_byte(0x00);
|
||||
len = acpigen_write_method("_PPC", 0);
|
||||
/* return */
|
||||
acpigen_emit_byte(0xa4);
|
||||
/* arg */
|
||||
len += acpigen_write_byte(nr);
|
||||
/* add all single bytes */
|
||||
len += 3;
|
||||
len += 1;
|
||||
acpigen_patch_len(len - 1);
|
||||
return len;
|
||||
}
|
||||
|
@ -436,18 +444,14 @@ int acpigen_write_PPC_NVS(void)
|
|||
}
|
||||
*/
|
||||
int len;
|
||||
/* method op */
|
||||
acpigen_emit_byte(0x14);
|
||||
len = acpigen_write_len_f();
|
||||
len += acpigen_emit_namestring("_PPC");
|
||||
/* no fnarg */
|
||||
acpigen_emit_byte(0x00);
|
||||
|
||||
len = acpigen_write_method("_PPC", 0);
|
||||
/* return */
|
||||
acpigen_emit_byte(0xa4);
|
||||
/* arg */
|
||||
len += acpigen_emit_namestring("PPCM");
|
||||
/* add all single bytes */
|
||||
len += 3;
|
||||
len += 1;
|
||||
acpigen_patch_len(len - 1);
|
||||
return len;
|
||||
}
|
||||
|
@ -463,10 +467,7 @@ int acpigen_write_TPC(const char *gnvs_tpc_limit)
|
|||
*/
|
||||
int len;
|
||||
|
||||
len = acpigen_emit_byte(0x14); /* MethodOp */
|
||||
len += acpigen_write_len_f(); /* PkgLength */
|
||||
len += acpigen_emit_namestring("_TPC");
|
||||
len += acpigen_emit_byte(0x00); /* No Arguments */
|
||||
len = acpigen_write_method("_TPC", 0);
|
||||
len += acpigen_emit_byte(0xa4); /* ReturnOp */
|
||||
len += acpigen_emit_namestring(gnvs_tpc_limit);
|
||||
acpigen_patch_len(len - 1);
|
||||
|
|
|
@ -43,6 +43,7 @@ int acpigen_write_name_dword(const char *name, uint32_t val);
|
|||
int acpigen_write_name_qword(const char *name, uint64_t val);
|
||||
int acpigen_write_name_byte(const char *name, uint8_t val);
|
||||
int acpigen_write_scope(const char *name);
|
||||
int acpigen_write_method(const char *name, int nargs);
|
||||
int acpigen_write_PPC(u8 nr);
|
||||
int acpigen_write_PPC_NVS(void);
|
||||
int acpigen_write_empty_PCT(void);
|
||||
|
|
|
@ -106,10 +106,7 @@ static void generate_C_state_entries(void)
|
|||
if (!cpu || !cpu->cstates)
|
||||
return;
|
||||
|
||||
acpigen_emit_byte(0x14); /* MethodOp */
|
||||
acpigen_write_len_f(); /* PkgLength */
|
||||
acpigen_emit_namestring("_CST");
|
||||
acpigen_emit_byte(0x00); /* No Arguments */
|
||||
acpigen_write_method("_CST", 0);
|
||||
|
||||
/* If running on AC power */
|
||||
acpigen_emit_byte(0xa0); /* IfOp */
|
||||
|
|
|
@ -106,10 +106,7 @@ static void generate_C_state_entries(void)
|
|||
if (!cpu || !cpu->cstates)
|
||||
return;
|
||||
|
||||
acpigen_emit_byte(0x14); /* MethodOp */
|
||||
acpigen_write_len_f(); /* PkgLength */
|
||||
acpigen_emit_namestring("_CST");
|
||||
acpigen_emit_byte(0x00); /* No Arguments */
|
||||
acpigen_write_method("_CST", 0);
|
||||
|
||||
/* If running on AC power */
|
||||
acpigen_emit_byte(0xa0); /* IfOp */
|
||||
|
|
|
@ -106,10 +106,7 @@ static void generate_C_state_entries(void)
|
|||
if (!cpu || !cpu->cstates)
|
||||
return;
|
||||
|
||||
acpigen_emit_byte(0x14); /* MethodOp */
|
||||
acpigen_write_len_f(); /* PkgLength */
|
||||
acpigen_emit_namestring("_CST");
|
||||
acpigen_emit_byte(0x00); /* No Arguments */
|
||||
acpigen_write_method("_CST", 0);
|
||||
|
||||
/* If running on AC power */
|
||||
acpigen_emit_byte(0xa0); /* IfOp */
|
||||
|
|
|
@ -115,12 +115,7 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
|
|||
|
||||
acpigen_write_resourcetemplate_footer(reslen);
|
||||
|
||||
/* method op */
|
||||
acpigen_emit_byte(0x14);
|
||||
acpigen_write_len_f();
|
||||
acpigen_emit_namestring("_STA");
|
||||
/* no fnarg */
|
||||
acpigen_emit_byte(0x00);
|
||||
acpigen_write_method("_STA", 0);
|
||||
/* return */
|
||||
acpigen_emit_byte(0xa4);
|
||||
acpigen_write_byte(0xf);
|
||||
|
@ -151,11 +146,7 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
|
|||
acpigen_write_resourcetemplate_footer(reslen);
|
||||
|
||||
/* method op */
|
||||
acpigen_emit_byte(0x14);
|
||||
acpigen_write_len_f();
|
||||
acpigen_emit_namestring("_STA");
|
||||
/* no fnarg */
|
||||
acpigen_emit_byte(0x00);
|
||||
acpigen_write_method("_STA", 0);
|
||||
/* return */
|
||||
acpigen_emit_byte(0xa4);
|
||||
acpigen_write_byte(0xf);
|
||||
|
|
Loading…
Reference in New Issue