Hello Martin Roth,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/41577
to review the following change.
Change subject: soc/amd/picasso: Give the mainboard the ability to modify the MADT table ......................................................................
soc/amd/picasso: Give the mainboard the ability to modify the MADT table
By default legacy ISA IRQs use edge triggering. Depending on what devices are used the IRQ types might need to be changed. We add an override method to allow the mainboard to configure the IRA IRQs.
BUG=b:145102877 TEST=Booted trembyle and was able to use the keyboard.
Change-Id: Ie95e8cc7ca835fb60bee8f10d5f28def6c2801dc Signed-off-by: Raul E Rangel rrangel@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/coreboot/+... Reviewed-by: Martin Roth martinroth@google.com --- M src/soc/amd/picasso/acpi.c M src/soc/amd/picasso/include/soc/acpi.h 2 files changed, 14 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/77/41577/1
diff --git a/src/soc/amd/picasso/acpi.c b/src/soc/amd/picasso/acpi.c index ac23d0f..8e12581 100644 --- a/src/soc/amd/picasso/acpi.c +++ b/src/soc/amd/picasso/acpi.c @@ -10,6 +10,7 @@ #include <acpi/acpigen.h> #include <device/pci_ops.h> #include <arch/ioapic.h> +#include <arch/smp/mpspec.h> #include <cpu/x86/smm.h> #include <cbmem.h> #include <device/device.h> @@ -36,6 +37,12 @@ return current; }
+unsigned long __weak acpi_mb_madt_irqoverride(unsigned long current) +{ + /* Add any additional overrides */ + return current; +} + unsigned long acpi_fill_madt(unsigned long current) { /* create all subtables for processors */ @@ -51,8 +58,11 @@ /* 5 mean: 0101 --> Edge-triggered, Active high */ current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) current, 0, 0, 2, 0); - current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) - current, 0, 9, 9, 0xf); + current += acpi_create_madt_irqoverride( + (acpi_madt_irqoverride_t *)current, 0, 9, 9, + MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW); + + current = acpi_mb_madt_irqoverride(current);
/* create all subtables for processors */ current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)current, diff --git a/src/soc/amd/picasso/include/soc/acpi.h b/src/soc/amd/picasso/include/soc/acpi.h index 6250f86..159d4c7 100644 --- a/src/soc/amd/picasso/include/soc/acpi.h +++ b/src/soc/amd/picasso/include/soc/acpi.h @@ -16,4 +16,6 @@
const char *soc_acpi_name(const struct device *dev);
+unsigned long acpi_mb_madt_irqoverride(unsigned long current); + #endif /* __SOC_PICASSO_ACPI_H__ */