From 20ea04034dd1d2a1660e6d5fc9f5e8bc6c7859f4 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Sat, 15 Feb 2014 18:57:17 +0100 Subject: [PATCH] acpigen: Add acpigen_write_irq. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iba52dc2d52b7ac9a65d1d17b43e7204f5ede373e Signed-off-by: Vladimir Serbinenko Reviewed-on: http://review.coreboot.org/5241 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki --- src/arch/x86/boot/acpigen.c | 15 +++++++++++++++ src/arch/x86/include/arch/acpigen.h | 1 + 2 files changed, 16 insertions(+) diff --git a/src/arch/x86/boot/acpigen.c b/src/arch/x86/boot/acpigen.c index 6496d759de..fdb7e02c9b 100644 --- a/src/arch/x86/boot/acpigen.c +++ b/src/arch/x86/boot/acpigen.c @@ -623,6 +623,21 @@ int acpigen_write_register(acpi_addr_t *addr) return 15; } +int acpigen_write_irq(u16 mask) +{ + /* + * acpi 3.0b section 6.4.2.1: IRQ Descriptor + * Byte 0: + * Bit7 : 0 => small item + * Bit6-3: 0100 (0x4) => IRQ port descriptor + * Bit2-0: 010 (0x2) => 2 Bytes long + */ + acpigen_emit_byte(0x22); + acpigen_emit_byte(mask & 0xff); + acpigen_emit_byte((mask >> 8) & 0xff); + return 3; +} + int acpigen_write_io16(u16 min, u16 max, u8 align, u8 len, u8 decode16) { /* diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h index be138ce74c..2ff996727d 100644 --- a/src/arch/x86/include/arch/acpigen.h +++ b/src/arch/x86/include/arch/acpigen.h @@ -62,6 +62,7 @@ int acpigen_write_resourcetemplate_header(void); int acpigen_write_resourcetemplate_footer(int len); int acpigen_write_mainboard_resource_template(void); int acpigen_write_mainboard_resources(const char *scope, const char *name); +int acpigen_write_irq(u16 mask); int get_cst_entries(acpi_cstate_t **);