mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
acpi: Add support for writing a _PRW
A 'Power Resource for Wake' list the resources a device depends on for wake. Add a function to generate this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
99e555a79a
commit
e0a896b88f
3 changed files with 50 additions and 0 deletions
|
@ -563,4 +563,14 @@ int acpigen_set_enable_tx_gpio(struct acpi_ctx *ctx, u32 tx_state_val,
|
|||
const char *dw0_read, const char *dw0_write,
|
||||
struct acpi_gpio *gpio, bool enable);
|
||||
|
||||
/**
|
||||
* acpigen_write_prw() - Write a power resource for wake (_PRW)
|
||||
*
|
||||
* @ctx: ACPI context pointer
|
||||
* @wake: GPE that wakes up the device
|
||||
* @level: Deepest power system sleeping state that can be entered while still
|
||||
* providing wake functionality
|
||||
*/
|
||||
void acpigen_write_prw(struct acpi_ctx *ctx, uint wake, uint level);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -426,6 +426,16 @@ void acpigen_write_register_resource(struct acpi_ctx *ctx,
|
|||
acpigen_write_resourcetemplate_footer(ctx);
|
||||
}
|
||||
|
||||
void acpigen_write_prw(struct acpi_ctx *ctx, uint wake, uint level)
|
||||
{
|
||||
/* Name (_PRW, Package () { wake, level } */
|
||||
acpigen_write_name(ctx, "_PRW");
|
||||
acpigen_write_package(ctx, 2);
|
||||
acpigen_write_integer(ctx, wake);
|
||||
acpigen_write_integer(ctx, level);
|
||||
acpigen_pop_len(ctx);
|
||||
}
|
||||
|
||||
/*
|
||||
* ToUUID(uuid)
|
||||
*
|
||||
|
|
|
@ -1097,3 +1097,33 @@ static int dm_test_acpi_write_name(struct unit_test_state *uts)
|
|||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_acpi_write_name, 0);
|
||||
|
||||
/* Test emitting a _PRW component */
|
||||
static int dm_test_acpi_write_prw(struct unit_test_state *uts)
|
||||
{
|
||||
struct acpi_ctx *ctx;
|
||||
u8 *ptr;
|
||||
|
||||
ut_assertok(alloc_context(&ctx));
|
||||
|
||||
ptr = acpigen_get_current(ctx);
|
||||
acpigen_write_prw(ctx, 5, 3);
|
||||
ut_asserteq(NAME_OP, *ptr++);
|
||||
|
||||
ut_asserteq_strn("_PRW", (char *)ptr);
|
||||
ptr += 4;
|
||||
ut_asserteq(PACKAGE_OP, *ptr++);
|
||||
ut_asserteq(8, acpi_test_get_length(ptr));
|
||||
ptr += 3;
|
||||
ut_asserteq(2, *ptr++);
|
||||
ut_asserteq(BYTE_PREFIX, *ptr++);
|
||||
ut_asserteq(5, *ptr++);
|
||||
ut_asserteq(BYTE_PREFIX, *ptr++);
|
||||
ut_asserteq(3, *ptr++);
|
||||
ut_asserteq_ptr(ptr, ctx->current);
|
||||
|
||||
free_context(&ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_acpi_write_prw, 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue