acpigen: Add option for reserved bits in Field
Add an option for unused/reserved bits in a Field definition, allowing for declarations that do not start at bit 0: Field (UART, AnyAcc, NoLock, Preserve) { , 7, /* RESERVED */ BITF, /* Used bit */ } These just use byte 0 instead of a name. Change-Id: I86b54685dbdebacb0834173857c9341ea9fa9a46 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46254 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
cf5d58328f
commit
095bbf969d
|
@ -505,6 +505,12 @@ static void acpigen_write_field_name(const char *name, uint32_t size)
|
|||
acpigen_write_field_length(size);
|
||||
}
|
||||
|
||||
static void acpigen_write_field_reserved(uint32_t size)
|
||||
{
|
||||
acpigen_emit_byte(0);
|
||||
acpigen_write_field_length(size);
|
||||
}
|
||||
|
||||
/*
|
||||
* Generate ACPI AML code for Field
|
||||
* Arg0: region name
|
||||
|
@ -515,6 +521,7 @@ static void acpigen_write_field_name(const char *name, uint32_t size)
|
|||
* struct fieldlist l[] = {
|
||||
* FIELDLIST_OFFSET(0x84),
|
||||
* FIELDLIST_NAMESTR("PMCS", 2),
|
||||
* FIELDLIST_RESERVED(6),
|
||||
* };
|
||||
* acpigen_write_field("UART", l, ARRAY_SIZE(l), FIELD_ANYACC | FIELD_NOLOCK |
|
||||
* FIELD_PRESERVE);
|
||||
|
@ -522,7 +529,8 @@ static void acpigen_write_field_name(const char *name, uint32_t size)
|
|||
* Field (UART, AnyAcc, NoLock, Preserve)
|
||||
* {
|
||||
* Offset (0x84),
|
||||
* PMCS, 2
|
||||
* PMCS, 2,
|
||||
* , 6,
|
||||
* }
|
||||
*/
|
||||
void acpigen_write_field(const char *name, const struct fieldlist *l, size_t count,
|
||||
|
@ -546,6 +554,10 @@ void acpigen_write_field(const char *name, const struct fieldlist *l, size_t cou
|
|||
acpigen_write_field_name(l[i].name, l[i].bits);
|
||||
current_bit_pos += l[i].bits;
|
||||
break;
|
||||
case RESERVED:
|
||||
acpigen_write_field_reserved(l[i].bits);
|
||||
current_bit_pos += l[i].bits;
|
||||
break;
|
||||
case OFFSET:
|
||||
acpigen_write_field_offset(l[i].bits, current_bit_pos);
|
||||
current_bit_pos = l[i].bits;
|
||||
|
|
|
@ -158,6 +158,10 @@ enum {
|
|||
.name = X, \
|
||||
.bits = Y, \
|
||||
}
|
||||
#define FIELDLIST_RESERVED(X) { .type = RESERVED, \
|
||||
.name = "", \
|
||||
.bits = X, \
|
||||
}
|
||||
|
||||
#define FIELD_ANYACC 0
|
||||
#define FIELD_BYTEACC 1
|
||||
|
@ -174,6 +178,7 @@ enum {
|
|||
enum field_type {
|
||||
OFFSET,
|
||||
NAME_STRING,
|
||||
RESERVED,
|
||||
FIELD_TYPE_MAX,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue