blob: 648520c038631edcd024668aa370cdbe838bf9f7 [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Arthur Heymansbf53acc2019-11-11 21:14:39 +01002
Arthur Heymansbf53acc2019-11-11 21:14:39 +01003#include <console/console.h>
4#include <southbridge/intel/common/pmclib.h>
Arthur Heymansbf53acc2019-11-11 21:14:39 +01005#include <arch/romstage.h>
6
7#if CONFIG(SOUTHBRIDGE_INTEL_I82801JX)
8#include <southbridge/intel/i82801jx/i82801jx.h>
9#elif CONFIG(SOUTHBRIDGE_INTEL_I82801GX)
10#include <southbridge/intel/i82801gx/i82801gx.h>
11#endif
12
Angel Pons41e66ac2020-09-15 13:17:23 +020013#include "raminit.h"
14#include "x4x.h"
15
Arthur Heymansbf53acc2019-11-11 21:14:39 +010016__weak void mb_pre_raminit_setup(int s3_resume)
17{
18}
19
20void mainboard_romstage_entry(void)
21{
22 u8 spd_addr_map[4] = {};
23 u8 boot_path = 0;
24 u8 s3_resume;
25
Arthur Heymansbf53acc2019-11-11 21:14:39 +010026#if CONFIG(SOUTHBRIDGE_INTEL_I82801JX)
27 i82801jx_early_init();
28#elif CONFIG(SOUTHBRIDGE_INTEL_I82801GX)
29 i82801gx_early_init();
30#endif
31
32 x4x_early_init();
33
34 s3_resume = southbridge_detect_s3_resume();
35 mb_pre_raminit_setup(s3_resume);
36
37 if (s3_resume)
38 boot_path = BOOT_PATH_RESUME;
39 if (MCHBAR32(PMSTS_MCHBAR) & PMSTS_WARM_RESET)
40 boot_path = BOOT_PATH_WARM_RESET;
41
42 mb_get_spd_map(spd_addr_map);
43 sdram_initialize(boot_path, spd_addr_map);
44
45 x4x_late_init(s3_resume);
46
47 printk(BIOS_DEBUG, "x4x late init complete\n");
48}