acpigen: Add and use acpigen_write_device.

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: I2c33fa403832eb1cfadfbf8d9adef5b63fb9cb24
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/7348
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Tested-by: build bot (Jenkins)
This commit is contained in:
Vladimir Serbinenko 2014-11-05 21:29:45 +01:00
parent 80fb8edaea
commit 663be6e9f2
3 changed files with 16 additions and 10 deletions

View File

@ -408,6 +408,19 @@ int acpigen_write_method(const char *name, int nargs)
return len; return len;
} }
int acpigen_write_device(const char *name)
{
int len;
/* method op */
len = acpigen_emit_byte(0x5b);
len += acpigen_emit_byte(0x82);
len += acpigen_write_len_f();
len += acpigen_emit_namestring(name);
return len;
}
/* /*
* Generates a func with max supported P-states. * Generates a func with max supported P-states.
*/ */

View File

@ -44,6 +44,7 @@ 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_name_byte(const char *name, uint8_t val);
int acpigen_write_scope(const char *name); int acpigen_write_scope(const char *name);
int acpigen_write_method(const char *name, int nargs); int acpigen_write_method(const char *name, int nargs);
int acpigen_write_device(const char *name);
int acpigen_write_PPC(u8 nr); int acpigen_write_PPC(u8 nr);
int acpigen_write_PPC_NVS(void); int acpigen_write_PPC_NVS(void);
int acpigen_write_empty_PCT(void); int acpigen_write_empty_PCT(void);

View File

@ -98,11 +98,7 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
acpigen_write_scope(scope); acpigen_write_scope(scope);
if (drivers_lenovo_is_wacom_present()) { if (drivers_lenovo_is_wacom_present()) {
/* Device op. */ acpigen_write_device("DTR");
acpigen_emit_byte(0x5b);
acpigen_emit_byte(0x82);
acpigen_write_len_f();
acpigen_emit_namestring("DTR");
acpigen_write_name("_HID"); acpigen_write_name("_HID");
acpigen_emit_eisaid("WACF004"); acpigen_emit_eisaid("WACF004");
@ -125,11 +121,7 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
} }
if (have_dock_serial) { if (have_dock_serial) {
/* Device op. */ acpigen_write_device("COMA");
acpigen_emit_byte(0x5b);
acpigen_emit_byte(0x82);
acpigen_write_len_f();
acpigen_emit_namestring("COMA");
acpigen_write_name("_HID"); acpigen_write_name("_HID");
acpigen_emit_eisaid("PNP0501"); acpigen_emit_eisaid("PNP0501");