intel/i945 boards: Add EARLY_CBMEM_INIT
Inspired by commitsac6ea04b
and4560ca50
that enabled this feature for lenovo/x60 and lenovo/t60 with i945 chipset. Change-Id: Ia04f58b8c3769b5734708c6a338bb80c13c5aeba Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/3994 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@gmail.com>
This commit is contained in:
parent
66fd775168
commit
a7c9611712
|
@ -30,6 +30,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select SUPERIO_SMSC_FDC37N972
|
select SUPERIO_SMSC_FDC37N972
|
||||||
select SUPERIO_SMSC_SIO10N268
|
select SUPERIO_SMSC_SIO10N268
|
||||||
select EC_ACPI
|
select EC_ACPI
|
||||||
|
select EARLY_CBMEM_INIT
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_PIRQ_TABLE
|
select HAVE_PIRQ_TABLE
|
||||||
select HAVE_MP_TABLE
|
select HAVE_MP_TABLE
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
#include <cpu/x86/lapic.h>
|
#include <cpu/x86/lapic.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include <pc80/mc146818rtc.h>
|
#include <pc80/mc146818rtc.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/x86/bist.h>
|
#include <cpu/x86/bist.h>
|
||||||
|
@ -263,12 +264,11 @@ static void early_ich7_init(void)
|
||||||
RCBA32(0x2034) = reg32;
|
RCBA32(0x2034) = reg32;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <cbmem.h>
|
|
||||||
|
|
||||||
void main(unsigned long bist)
|
void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int boot_mode = 0;
|
int boot_mode = 0;
|
||||||
|
int cbmem_was_initted;
|
||||||
|
|
||||||
if (bist == 0)
|
if (bist == 0)
|
||||||
enable_lapic();
|
enable_lapic();
|
||||||
|
@ -357,11 +357,13 @@ void main(unsigned long bist)
|
||||||
#endif
|
#endif
|
||||||
MCHBAR16(SSKPD) = 0xCAFE;
|
MCHBAR16(SSKPD) = 0xCAFE;
|
||||||
|
|
||||||
|
cbmem_was_initted = !cbmem_initialize();
|
||||||
|
|
||||||
#if CONFIG_HAVE_ACPI_RESUME
|
#if CONFIG_HAVE_ACPI_RESUME
|
||||||
/* If there is no high memory area, we didn't boot before, so
|
/* If there is no high memory area, we didn't boot before, so
|
||||||
* this is not a resume. In that case we just create the cbmem toc.
|
* this is not a resume. In that case we just create the cbmem toc.
|
||||||
*/
|
*/
|
||||||
if ((boot_mode == 2) && cbmem_reinit()) {
|
if ((boot_mode == 2) && cbmem_was_initted) {
|
||||||
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
||||||
|
|
||||||
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
||||||
|
|
|
@ -9,6 +9,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select CHECK_SLFRCS_ON_RESUME
|
select CHECK_SLFRCS_ON_RESUME
|
||||||
select SOUTHBRIDGE_INTEL_I82801GX
|
select SOUTHBRIDGE_INTEL_I82801GX
|
||||||
select SUPERIO_WINBOND_W83627EHG
|
select SUPERIO_WINBOND_W83627EHG
|
||||||
|
select EARLY_CBMEM_INIT
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_PIRQ_TABLE
|
select HAVE_PIRQ_TABLE
|
||||||
select HAVE_MP_TABLE
|
select HAVE_MP_TABLE
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
#include <cpu/x86/lapic.h>
|
#include <cpu/x86/lapic.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include "superio/winbond/w83627ehg/w83627ehg.h"
|
#include "superio/winbond/w83627ehg/w83627ehg.h"
|
||||||
#include <pc80/mc146818rtc.h>
|
#include <pc80/mc146818rtc.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
@ -221,12 +222,11 @@ static void early_ich7_init(void)
|
||||||
RCBA32(0x2034) = reg32;
|
RCBA32(0x2034) = reg32;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <cbmem.h>
|
|
||||||
|
|
||||||
void main(unsigned long bist)
|
void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int boot_mode = 0;
|
int boot_mode = 0;
|
||||||
|
int cbmem_was_initted;
|
||||||
|
|
||||||
if (bist == 0)
|
if (bist == 0)
|
||||||
enable_lapic();
|
enable_lapic();
|
||||||
|
@ -311,11 +311,13 @@ void main(unsigned long bist)
|
||||||
|
|
||||||
MCHBAR16(SSKPD) = 0xCAFE;
|
MCHBAR16(SSKPD) = 0xCAFE;
|
||||||
|
|
||||||
|
cbmem_was_initted = !cbmem_initialize();
|
||||||
|
|
||||||
#if CONFIG_HAVE_ACPI_RESUME
|
#if CONFIG_HAVE_ACPI_RESUME
|
||||||
/* If there is no high memory area, we didn't boot before, so
|
/* If there is no high memory area, we didn't boot before, so
|
||||||
* this is not a resume. In that case we just create the cbmem toc.
|
* this is not a resume. In that case we just create the cbmem toc.
|
||||||
*/
|
*/
|
||||||
if ((boot_mode == 2) && cbmem_reinit()) {
|
if ((boot_mode == 2) && cbmem_was_initted) {
|
||||||
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
||||||
|
|
||||||
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
||||||
|
|
|
@ -30,6 +30,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select HAVE_OPTION_TABLE
|
select HAVE_OPTION_TABLE
|
||||||
select HAVE_PIRQ_TABLE
|
select HAVE_PIRQ_TABLE
|
||||||
select HAVE_MP_TABLE
|
select HAVE_MP_TABLE
|
||||||
|
select EARLY_CBMEM_INIT
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select BOARD_ROMSIZE_KB_512
|
select BOARD_ROMSIZE_KB_512
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
#include <cpu/x86/lapic.h>
|
#include <cpu/x86/lapic.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include "superio/smsc/lpc47m15x/lpc47m15x.h"
|
#include "superio/smsc/lpc47m15x/lpc47m15x.h"
|
||||||
#include <pc80/mc146818rtc.h>
|
#include <pc80/mc146818rtc.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
@ -182,12 +183,11 @@ static void early_ich7_init(void)
|
||||||
RCBA32(0x2034) = reg32;
|
RCBA32(0x2034) = reg32;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <cbmem.h>
|
|
||||||
|
|
||||||
void main(unsigned long bist)
|
void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int boot_mode = 0;
|
int boot_mode = 0;
|
||||||
|
int cbmem_was_initted;
|
||||||
|
|
||||||
if (bist == 0)
|
if (bist == 0)
|
||||||
enable_lapic();
|
enable_lapic();
|
||||||
|
@ -269,11 +269,13 @@ void main(unsigned long bist)
|
||||||
|
|
||||||
MCHBAR16(SSKPD) = 0xCAFE;
|
MCHBAR16(SSKPD) = 0xCAFE;
|
||||||
|
|
||||||
|
cbmem_was_initted = !cbmem_initialize();
|
||||||
|
|
||||||
#if CONFIG_HAVE_ACPI_RESUME
|
#if CONFIG_HAVE_ACPI_RESUME
|
||||||
/* If there is no high memory area, we didn't boot before, so
|
/* If there is no high memory area, we didn't boot before, so
|
||||||
* this is not a resume. In that case we just create the cbmem toc.
|
* this is not a resume. In that case we just create the cbmem toc.
|
||||||
*/
|
*/
|
||||||
if ((boot_mode == 2) && cbmem_reinit()) {
|
if ((boot_mode == 2) && cbmem_was_initted) {
|
||||||
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
||||||
|
|
||||||
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
||||||
|
|
|
@ -9,6 +9,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select CHECK_SLFRCS_ON_RESUME
|
select CHECK_SLFRCS_ON_RESUME
|
||||||
select SOUTHBRIDGE_INTEL_I82801GX
|
select SOUTHBRIDGE_INTEL_I82801GX
|
||||||
select SUPERIO_WINBOND_W83627THG
|
select SUPERIO_WINBOND_W83627THG
|
||||||
|
select EARLY_CBMEM_INIT
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_PIRQ_TABLE
|
select HAVE_PIRQ_TABLE
|
||||||
select HAVE_MP_TABLE
|
select HAVE_MP_TABLE
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
|
@ -314,12 +315,11 @@ static void early_ich7_init(void)
|
||||||
RCBA32(0x2034) = reg32;
|
RCBA32(0x2034) = reg32;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <cbmem.h>
|
|
||||||
|
|
||||||
void main(unsigned long bist)
|
void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int boot_mode = 0;
|
int boot_mode = 0;
|
||||||
|
int cbmem_was_initted;
|
||||||
|
|
||||||
if (bist == 0)
|
if (bist == 0)
|
||||||
enable_lapic();
|
enable_lapic();
|
||||||
|
@ -410,11 +410,13 @@ void main(unsigned long bist)
|
||||||
|
|
||||||
MCHBAR16(SSKPD) = 0xCAFE;
|
MCHBAR16(SSKPD) = 0xCAFE;
|
||||||
|
|
||||||
|
cbmem_was_initted = !cbmem_initialize();
|
||||||
|
|
||||||
#if CONFIG_HAVE_ACPI_RESUME
|
#if CONFIG_HAVE_ACPI_RESUME
|
||||||
/* If there is no high memory area, we didn't boot before, so
|
/* If there is no high memory area, we didn't boot before, so
|
||||||
* this is not a resume. In that case we just create the cbmem toc.
|
* this is not a resume. In that case we just create the cbmem toc.
|
||||||
*/
|
*/
|
||||||
if ((boot_mode == 2) && cbmem_reinit()) {
|
if ((boot_mode == 2) && cbmem_was_initted) {
|
||||||
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
||||||
|
|
||||||
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
||||||
|
|
|
@ -14,6 +14,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select HAVE_OPTION_TABLE
|
select HAVE_OPTION_TABLE
|
||||||
select HAVE_PIRQ_TABLE
|
select HAVE_PIRQ_TABLE
|
||||||
select HAVE_MP_TABLE
|
select HAVE_MP_TABLE
|
||||||
|
select EARLY_CBMEM_INIT
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select BOARD_ROMSIZE_KB_1024
|
select BOARD_ROMSIZE_KB_1024
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
#include <cpu/x86/lapic.h>
|
#include <cpu/x86/lapic.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
|
#include <cbmem.h>
|
||||||
#include <pc80/mc146818rtc.h>
|
#include <pc80/mc146818rtc.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/x86/bist.h>
|
#include <cpu/x86/bist.h>
|
||||||
|
@ -249,12 +250,11 @@ static void init_artec_dongle(void)
|
||||||
outb(0xf4, 0x88);
|
outb(0xf4, 0x88);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <cbmem.h>
|
|
||||||
|
|
||||||
void main(unsigned long bist)
|
void main(unsigned long bist)
|
||||||
{
|
{
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
int boot_mode = 0;
|
int boot_mode = 0;
|
||||||
|
int cbmem_was_initted;
|
||||||
|
|
||||||
if (bist == 0)
|
if (bist == 0)
|
||||||
enable_lapic();
|
enable_lapic();
|
||||||
|
@ -346,11 +346,13 @@ void main(unsigned long bist)
|
||||||
|
|
||||||
MCHBAR16(SSKPD) = 0xCAFE;
|
MCHBAR16(SSKPD) = 0xCAFE;
|
||||||
|
|
||||||
|
cbmem_was_initted = !cbmem_initialize();
|
||||||
|
|
||||||
#if CONFIG_HAVE_ACPI_RESUME
|
#if CONFIG_HAVE_ACPI_RESUME
|
||||||
/* If there is no high memory area, we didn't boot before, so
|
/* If there is no high memory area, we didn't boot before, so
|
||||||
* this is not a resume. In that case we just create the cbmem toc.
|
* this is not a resume. In that case we just create the cbmem toc.
|
||||||
*/
|
*/
|
||||||
if ((boot_mode == 2) && cbmem_reinit()) {
|
if ((boot_mode == 2) && cbmem_was_initted) {
|
||||||
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
void *resume_backup_memory = cbmem_find(CBMEM_ID_RESUME);
|
||||||
|
|
||||||
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
/* copy 1MB - 64K to high tables ram_base to prevent memory corruption
|
||||||
|
|
Loading…
Reference in New Issue