acpigen: Add functions to generate _STA() and _PRW()
Add helper functions for generating some common objects: acpigen_write_STA(status) will generate a status method that will indicate the device status as provided: Method (_STA) { Return (status) } Full status byte configuration is possible and macros are provided for the common status bytes used for generated code: ACPI_STATUS_DEVICE_ALL_OFF = 0x0 ACPI_STATUS_DEVICE_ALL_ON = 0xF acpigen_write_PRW() will generate a Power Resoruce for Wake that describes the GPE that will wake a particular device: Name (_PRW, Package (2) { wake, level } Change-Id: I10277f0f3820d272d3975abf34b9a8de577782e5 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/14795 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
f7c3876c28
commit
abe2de8854
|
@ -449,6 +449,17 @@ void acpigen_write_device(const char *name)
|
||||||
acpigen_emit_namestring(name);
|
acpigen_emit_namestring(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void acpigen_write_STA(uint8_t status)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Method (_STA, 0, NotSerialized) { Return (status) }
|
||||||
|
*/
|
||||||
|
acpigen_write_method("_STA", 0);
|
||||||
|
acpigen_emit_byte(0xa4);
|
||||||
|
acpigen_write_byte(status);
|
||||||
|
acpigen_pop_len();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates a func with max supported P-states.
|
* Generates a func with max supported P-states.
|
||||||
*/
|
*/
|
||||||
|
@ -503,6 +514,18 @@ void acpigen_write_TPC(const char *gnvs_tpc_limit)
|
||||||
acpigen_pop_len();
|
acpigen_pop_len();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void acpigen_write_PRW(u32 wake, u32 level)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Name (_PRW, Package () { wake, level }
|
||||||
|
*/
|
||||||
|
acpigen_write_name("_PRW");
|
||||||
|
acpigen_write_package(2);
|
||||||
|
acpigen_write_integer(wake);
|
||||||
|
acpigen_write_integer(level);
|
||||||
|
acpigen_pop_len();
|
||||||
|
}
|
||||||
|
|
||||||
void acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat,
|
void acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat,
|
||||||
u32 busmLat, u32 control, u32 status)
|
u32 busmLat, u32 control, u32 status)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,18 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <arch/acpi.h>
|
#include <arch/acpi.h>
|
||||||
|
|
||||||
|
/* Values that can be returned for ACPI Device _STA method */
|
||||||
|
#define ACPI_STATUS_DEVICE_PRESENT (1 << 0)
|
||||||
|
#define ACPI_STATUS_DEVICE_ENABLED (1 << 1)
|
||||||
|
#define ACPI_STATUS_DEVICE_SHOW_IN_UI (1 << 2)
|
||||||
|
#define ACPI_STATUS_DEVICE_STATE_OK (1 << 3)
|
||||||
|
|
||||||
|
#define ACPI_STATUS_DEVICE_ALL_OFF 0
|
||||||
|
#define ACPI_STATUS_DEVICE_ALL_ON (ACPI_STATUS_DEVICE_PRESENT |\
|
||||||
|
ACPI_STATUS_DEVICE_ENABLED |\
|
||||||
|
ACPI_STATUS_DEVICE_SHOW_IN_UI |\
|
||||||
|
ACPI_STATUS_DEVICE_STATE_OK)
|
||||||
|
|
||||||
void acpigen_write_len_f(void);
|
void acpigen_write_len_f(void);
|
||||||
void acpigen_pop_len(void);
|
void acpigen_pop_len(void);
|
||||||
void acpigen_set_current(char *curr);
|
void acpigen_set_current(char *curr);
|
||||||
|
@ -58,6 +70,8 @@ void acpigen_write_PPC(u8 nr);
|
||||||
void acpigen_write_PPC_NVS(void);
|
void acpigen_write_PPC_NVS(void);
|
||||||
void acpigen_write_empty_PCT(void);
|
void acpigen_write_empty_PCT(void);
|
||||||
void acpigen_write_empty_PTC(void);
|
void acpigen_write_empty_PTC(void);
|
||||||
|
void acpigen_write_PRW(u32 wake, u32 level);
|
||||||
|
void acpigen_write_STA(uint8_t status);
|
||||||
void acpigen_write_TPC(const char *gnvs_tpc_limit);
|
void acpigen_write_TPC(const char *gnvs_tpc_limit);
|
||||||
void acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat, u32 busmLat,
|
void acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat, u32 busmLat,
|
||||||
u32 control, u32 status);
|
u32 control, u32 status);
|
||||||
|
|
Loading…
Reference in New Issue