sb/amd/sb[6|7|8]00: Initialize PIC

The PIC was not initialized, leading to hangs when booting
Linux as a payload.  This error was hidden by both SeaBIOS
and GRUB due to both payloads initializing the PIC as a
matter of routine.

Change-Id: I9a3b9bd831d4dafdd0bb82ea023026a10fe7efca
Signed-off-by: Timothy Pearson <tpearson@raptorengineering.com>
Reviewed-on: https://review.coreboot.org/16018
Tested-by: build bot (Jenkins)
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
This commit is contained in:
Timothy Pearson 2016-08-01 16:04:12 -05:00
parent 9e561f8e80
commit d6319e8cc0
3 changed files with 15 additions and 0 deletions

View File

@ -20,6 +20,8 @@
#include <device/pci_ids.h> #include <device/pci_ids.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <pc80/mc146818rtc.h> #include <pc80/mc146818rtc.h>
#include <pc80/i8254.h>
#include <pc80/i8259.h>
#include <arch/acpi.h> #include <arch/acpi.h>
#include <arch/acpigen.h> #include <arch/acpigen.h>
#include <pc80/isa-dma.h> #include <pc80/isa-dma.h>
@ -60,6 +62,9 @@ static void lpc_init(device_t dev)
pci_write_config8(dev, 0x78, byte); pci_write_config8(dev, 0x78, byte);
cmos_check_update_date(); cmos_check_update_date();
setup_i8259(); /* Initialize i8259 pic */
setup_i8254(); /* Initialize i8254 timers */
} }
static void sb600_lpc_read_resources(device_t dev) static void sb600_lpc_read_resources(device_t dev)

View File

@ -21,6 +21,8 @@
#include <device/pci_ids.h> #include <device/pci_ids.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <pc80/mc146818rtc.h> #include <pc80/mc146818rtc.h>
#include <pc80/i8254.h>
#include <pc80/i8259.h>
#include <arch/acpi.h> #include <arch/acpi.h>
#include <arch/acpigen.h> #include <arch/acpigen.h>
#include <pc80/isa-dma.h> #include <pc80/isa-dma.h>
@ -75,6 +77,9 @@ static void lpc_init(device_t dev)
pci_write_config8(dev, 0x78, byte); pci_write_config8(dev, 0x78, byte);
cmos_check_update_date(); cmos_check_update_date();
setup_i8259(); /* Initialize i8259 pic */
setup_i8254(); /* Initialize i8254 timers */
} }
#if IS_ENABLED(CONFIG_LATE_CBMEM_INIT) #if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)

View File

@ -21,6 +21,8 @@
#include <device/pci_ids.h> #include <device/pci_ids.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <pc80/mc146818rtc.h> #include <pc80/mc146818rtc.h>
#include <pc80/i8254.h>
#include <pc80/i8259.h>
#include <pc80/isa-dma.h> #include <pc80/isa-dma.h>
#include <arch/io.h> #include <arch/io.h>
#include <arch/acpi.h> #include <arch/acpi.h>
@ -66,6 +68,9 @@ static void lpc_init(device_t dev)
pci_write_config8(dev, 0xBB, byte); pci_write_config8(dev, 0xBB, byte);
cmos_check_update_date(); cmos_check_update_date();
setup_i8259(); /* Initialize i8259 pic */
setup_i8254(); /* Initialize i8254 timers */
} }
static void sb800_lpc_read_resources(device_t dev) static void sb800_lpc_read_resources(device_t dev)