acpi: Add acpigen_write_LPI_package

Low Power Idle States defines additional information not present in the
_CST.

See ACPI Specification, Version 6.3 Section 8.4.4.3 _LPI.

BUG=b:178728116, b:185787242
TEST=Boot guybrush and dump ACPI tables

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Signed-off-by: Jason Glenesk <jason.glenesk@amd.corp-partner.google.com>
Change-Id: I4f5301b95ff8245facaf48e2fbd51cc82df2d8cc
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52529
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
This commit is contained in:
Raul E Rangel
2021-04-19 15:58:25 -06:00
committed by Raul Rangel
parent a89a4ea8ea
commit c7048323f4
3 changed files with 92 additions and 0 deletions

View File

@@ -898,6 +898,25 @@ typedef struct acpi_tstate {
u32 status;
} __packed acpi_tstate_t;
enum acpi_lpi_state_flags {
ACPI_LPI_STATE_DISABLED = 0,
ACPI_LPI_STATE_ENABLED
};
/* Low Power Idle State */
struct acpi_lpi_state {
u32 min_residency_us;
u32 worst_case_wakeup_latency_us;
u32 flags;
u32 arch_context_lost_flags;
u32 residency_counter_frequency_hz;
u32 enabled_parent_state;
acpi_addr_t entry_method;
acpi_addr_t residency_counter_register;
acpi_addr_t usage_counter_register;
const char *state_name;
};
/* Port types for ACPI _UPC object */
enum acpi_upc_type {
UPC_TYPE_A,

View File

@@ -338,6 +338,7 @@ inline void acpigen_write_device_end(void)
{
acpigen_pop_len();
}
void acpigen_write_LPI_package(u64 level, const struct acpi_lpi_state *states, u16 nentries);
void acpigen_write_PPC(u8 nr);
void acpigen_write_PPC_NVS(void);
void acpigen_write_empty_PCT(void);