diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2023-04-17 12:11:03 +0300 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2023-04-26 10:51:35 +0000 |
commit | ddc37d69cb29327217151bd15a906177bc7949de (patch) | |
tree | df897f441d79176bee98aff415749661091ceef0 | |
parent | d48982acacbe87bfe78bf9b748d5a2f3fd3225c0 (diff) |
ACPI: Add acpigen_write_PTC()
Change-Id: Ibaf2d7105e7a5da8a50ef32b682978ff55fe31e0
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/74473
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
-rw-r--r-- | src/acpi/acpigen.c | 31 | ||||
-rw-r--r-- | src/include/acpi/acpigen.h | 1 |
2 files changed, 21 insertions, 11 deletions
diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c index d30893004e..d613becbc3 100644 --- a/src/acpi/acpigen.c +++ b/src/acpi/acpigen.c @@ -711,7 +711,7 @@ void acpigen_write_empty_PCT(void) acpigen_emit_stream(stream, ARRAY_SIZE(stream)); } -void acpigen_write_empty_PTC(void) +void acpigen_write_PTC(uint8_t duty_width, uint8_t duty_offset, uint16_t p_cnt) { /* Name (_PTC, Package (0x02) @@ -719,31 +719,35 @@ void acpigen_write_empty_PTC(void) ResourceTemplate () { Register (FFixedHW, - 0x00, // Bit Width - 0x00, // Bit Offset - 0x0000000000000000, // Address + 0x00, // Duty Width + 0x00, // Duty Offset + 0x0000000000000000, // P_CNT IO Address ,) }, ResourceTemplate () { Register (FFixedHW, - 0x00, // Bit Width - 0x00, // Bit Offset - 0x0000000000000000, // Address + 0x00, // Duty Width + 0x00, // Duty Offset + 0x0000000000000000, // P_CNT IO Address ,) } }) */ acpi_addr_t addr = { - .space_id = ACPI_ADDRESS_SPACE_FIXED, - .bit_width = 0, - .bit_offset = 0, + .bit_width = duty_width, + .bit_offset = duty_offset, .access_size = ACPI_ACCESS_SIZE_UNDEFINED, - .addrl = 0, + .addrl = p_cnt, .addrh = 0, }; + if (addr.addrl != 0) + addr.space_id = ACPI_ADDRESS_SPACE_IO; + else + addr.space_id = ACPI_ADDRESS_SPACE_FIXED; + acpigen_write_name("_PTC"); acpigen_write_package(2); @@ -756,6 +760,11 @@ void acpigen_write_empty_PTC(void) acpigen_pop_len(); } +void acpigen_write_empty_PTC(void) +{ + acpigen_write_PTC(0, 0, 0); +} + static void __acpigen_write_method(const char *name, uint8_t flags) { acpigen_emit_byte(METHOD_OP); diff --git a/src/include/acpi/acpigen.h b/src/include/acpi/acpigen.h index ae501432d1..180e93779d 100644 --- a/src/include/acpi/acpigen.h +++ b/src/include/acpi/acpigen.h @@ -431,6 +431,7 @@ void acpigen_write_PPC(u8 nr); void acpigen_write_PPC_NVS(void); void acpigen_write_empty_PCT(void); void acpigen_write_empty_PTC(void); +void acpigen_write_PTC(uint8_t duty_width, uint8_t duty_offset, uint16_t p_cnt); void acpigen_write_PRW(u32 wake, u32 level); void acpigen_write_STA(uint8_t status); void acpigen_write_STA_ext(const char *namestring); |