aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2022-04-06 22:25:50 +0200
committerFelix Held <felix-coreboot@felixheld.de>2022-07-20 20:28:39 +0000
commit3e914d372661ba68ca92d476708bd68af2593b10 (patch)
treed387bc1342a0653b7fcbf53bb8c2b3034d630fc3 /src
parenta91821b677b0162e07f0f4e31b738d46992dccaf (diff)
arch/arm64,arm: Prepare for !SEPARATE_ROMSTAGE
Prepare platforms for linking romstage code in the bootblock. Change-Id: Ic20799b4d6e3f62cd05791a2bd275000a12cc83c Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/63420 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/arch/arm64/romstage.c6
-rw-r--r--src/mainboard/emulation/qemu-armv7/romstage.c6
-rw-r--r--src/mainboard/google/daisy/romstage.c21
-rw-r--r--src/mainboard/google/peach_pit/romstage.c17
-rw-r--r--src/mainboard/google/veyron/romstage.c11
-rw-r--r--src/mainboard/google/veyron_mickey/romstage.c11
-rw-r--r--src/mainboard/google/veyron_rialto/romstage.c13
-rw-r--r--src/mainboard/ti/beaglebone/romstage.c5
-rw-r--r--src/soc/nvidia/tegra210/romstage.c10
9 files changed, 82 insertions, 18 deletions
diff --git a/src/arch/arm64/romstage.c b/src/arch/arm64/romstage.c
index b144f9320f..654ba5a289 100644
--- a/src/arch/arm64/romstage.c
+++ b/src/arch/arm64/romstage.c
@@ -5,6 +5,7 @@
#include <cbmem.h>
#include <console/console.h>
#include <program_loading.h>
+#include <romstage_common.h>
#include <timestamp.h>
__weak void platform_romstage_main(void) { /* no-op, for bring-up */ }
@@ -15,8 +16,13 @@ void main(void)
timestamp_add_now(TS_ROMSTAGE_START);
console_init();
+
exception_init();
+ romstage_main();
+}
+void __noreturn romstage_main(void)
+{
platform_romstage_main();
cbmem_initialize_empty();
platform_romstage_postram();
diff --git a/src/mainboard/emulation/qemu-armv7/romstage.c b/src/mainboard/emulation/qemu-armv7/romstage.c
index 8dbe1a59de..598ddde10c 100644
--- a/src/mainboard/emulation/qemu-armv7/romstage.c
+++ b/src/mainboard/emulation/qemu-armv7/romstage.c
@@ -3,12 +3,16 @@
#include <cbmem.h>
#include <console/console.h>
#include <program_loading.h>
+#include <romstage_common.h>
void main(void)
{
console_init();
+ romstage_main();
+}
+void __noreturn romstage_main(void)
+{
cbmem_initialize_empty();
-
run_ramstage();
}
diff --git a/src/mainboard/google/daisy/romstage.c b/src/mainboard/google/daisy/romstage.c
index dd3bc72000..d9ae00cced 100644
--- a/src/mainboard/google/daisy/romstage.c
+++ b/src/mainboard/google/daisy/romstage.c
@@ -4,17 +4,18 @@
#include <armv7.h>
#include <cbmem.h>
#include <console/console.h>
-#include <program_loading.h>
#include <device/i2c_simple.h>
#include <drivers/maxim/max77686/max77686.h>
+#include <program_loading.h>
+#include <romstage_common.h>
#include <soc/clk.h>
#include <soc/cpu.h>
#include <soc/dmc.h>
#include <soc/gpio.h>
#include <soc/i2c.h>
-#include <soc/setup.h>
#include <soc/periph.h>
#include <soc/power.h>
+#include <soc/setup.h>
#include <soc/trustzone.h>
#include <soc/wakeup.h>
#include <timestamp.h>
@@ -119,12 +120,22 @@ static struct mem_timings *setup_clock(void)
void main(void)
{
- struct mem_timings *mem;
- int is_resume = (get_wakeup_state() != IS_NOT_WAKEUP);
-
timestamp_init(timestamp_get());
timestamp_add_now(TS_ROMSTAGE_START);
+ /*
+ * From the clocks comment below it looks like serial console won't
+ * work in the bootblock so keep in the romstage_main flow even with
+ * !CONFIG SEPARATE_ROMSTAGE.
+ */
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
+ struct mem_timings *mem;
+ int is_resume = (get_wakeup_state() != IS_NOT_WAKEUP);
+
/* Clock must be initialized before console_init, otherwise you may need
* to re-initialize serial console drivers again. */
mem = setup_clock();
diff --git a/src/mainboard/google/peach_pit/romstage.c b/src/mainboard/google/peach_pit/romstage.c
index 3509a45777..91487807cc 100644
--- a/src/mainboard/google/peach_pit/romstage.c
+++ b/src/mainboard/google/peach_pit/romstage.c
@@ -9,6 +9,7 @@
#include <device/i2c_simple.h>
#include <drivers/maxim/max77802/max77802.h>
#include <program_loading.h>
+#include <romstage_common.h>
#include <soc/clk.h>
#include <soc/cpu.h>
#include <soc/dmc.h>
@@ -203,6 +204,19 @@ static void simple_spi_test(void)
void main(void)
{
+ timestamp_init(timestamp_get());
+ timestamp_add_now(TS_ROMSTAGE_START);
+
+ /*
+ * From the clocks comment below it looks like serial console won't
+ * work in the bootblock so keep in the romstage_main flow even with
+ * !CONFIG SEPARATE_ROMSTAGE.
+ */
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
extern struct mem_timings mem_timings;
int is_resume = (get_wakeup_state() != IS_NOT_WAKEUP);
@@ -211,9 +225,6 @@ void main(void)
exynos5420_config_smp();
power_init_failed = setup_power(is_resume);
- timestamp_init(timestamp_get());
- timestamp_add_now(TS_ROMSTAGE_START);
-
/* Clock must be initialized before console_init, otherwise you may need
* to re-initialize serial console drivers again. */
system_clock_init();
diff --git a/src/mainboard/google/veyron/romstage.c b/src/mainboard/google/veyron/romstage.c
index de4617c24e..488f581a76 100644
--- a/src/mainboard/google/veyron/romstage.c
+++ b/src/mainboard/google/veyron/romstage.c
@@ -8,11 +8,12 @@
#include <console/console.h>
#include <device/mmio.h>
#include <program_loading.h>
-#include <soc/sdram.h>
+#include <romstage_common.h>
#include <soc/clock.h>
-#include <soc/pwm.h>
#include <soc/grf.h>
+#include <soc/pwm.h>
#include <soc/rk808.h>
+#include <soc/sdram.h>
#include <soc/tsadc.h>
#include <symbols.h>
#include <timestamp.h>
@@ -68,6 +69,12 @@ void main(void)
console_init();
exception_init();
+
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
configure_l2ctlr();
tsadc_init();
diff --git a/src/mainboard/google/veyron_mickey/romstage.c b/src/mainboard/google/veyron_mickey/romstage.c
index fb0230a7d2..c718ed7966 100644
--- a/src/mainboard/google/veyron_mickey/romstage.c
+++ b/src/mainboard/google/veyron_mickey/romstage.c
@@ -8,11 +8,12 @@
#include <console/console.h>
#include <device/mmio.h>
#include <program_loading.h>
-#include <soc/sdram.h>
+#include <romstage_common.h>
#include <soc/clock.h>
-#include <soc/pwm.h>
#include <soc/grf.h>
+#include <soc/pwm.h>
#include <soc/rk808.h>
+#include <soc/sdram.h>
#include <soc/tsadc.h>
#include <symbols.h>
#include <timestamp.h>
@@ -62,6 +63,12 @@ void main(void)
console_init();
exception_init();
+
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
configure_l2ctlr();
tsadc_init();
diff --git a/src/mainboard/google/veyron_rialto/romstage.c b/src/mainboard/google/veyron_rialto/romstage.c
index db2e343280..488f581a76 100644
--- a/src/mainboard/google/veyron_rialto/romstage.c
+++ b/src/mainboard/google/veyron_rialto/romstage.c
@@ -2,17 +2,18 @@
#include <arch/cache.h>
#include <arch/exception.h>
-#include <device/mmio.h>
#include <armv7.h>
#include <assert.h>
#include <cbmem.h>
#include <console/console.h>
+#include <device/mmio.h>
#include <program_loading.h>
-#include <soc/sdram.h>
+#include <romstage_common.h>
#include <soc/clock.h>
-#include <soc/pwm.h>
#include <soc/grf.h>
+#include <soc/pwm.h>
#include <soc/rk808.h>
+#include <soc/sdram.h>
#include <soc/tsadc.h>
#include <symbols.h>
#include <timestamp.h>
@@ -68,6 +69,12 @@ void main(void)
console_init();
exception_init();
+
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
configure_l2ctlr();
tsadc_init();
diff --git a/src/mainboard/ti/beaglebone/romstage.c b/src/mainboard/ti/beaglebone/romstage.c
index 4d43be6023..da6a182fa5 100644
--- a/src/mainboard/ti/beaglebone/romstage.c
+++ b/src/mainboard/ti/beaglebone/romstage.c
@@ -3,6 +3,7 @@
#include <program_loading.h>
#include <console/console.h>
#include <cbmem.h>
+#include <romstage_common.h>
#include <soc/ti/am335x/sdram.h>
#include "ddr3.h"
@@ -48,7 +49,11 @@ void main(void)
{
console_init();
printk(BIOS_INFO, "Hello from romstage.\n");
+ romstage_main();
+}
+void __noreturn romstage_main(void)
+{
config_ddr(400, &ioregs_bonelt, &ddr3_beagleblack_data, &ddr3_beagleblack_cmd_ctrl_data,
&ddr3_beagleblack_emif_reg_data, 0);
diff --git a/src/soc/nvidia/tegra210/romstage.c b/src/soc/nvidia/tegra210/romstage.c
index 12cf297d1c..801e96336b 100644
--- a/src/soc/nvidia/tegra210/romstage.c
+++ b/src/soc/nvidia/tegra210/romstage.c
@@ -6,13 +6,14 @@
#include <console/console.h>
#include <lib.h>
#include <program_loading.h>
+#include <romstage_common.h>
#include <soc/addressmap.h>
#include <soc/ccplex.h>
#include <soc/clock.h>
+#include <soc/nvidia/tegra/apbmisc.h>
+#include <soc/romstage.h>
#include <soc/sdram.h>
#include <soc/sdram_configs.h>
-#include <soc/romstage.h>
-#include <soc/nvidia/tegra/apbmisc.h>
#include <symbols.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -26,6 +27,11 @@ void romstage(void)
console_init();
exception_init();
+ romstage_main();
+}
+
+void __noreturn romstage_main(void)
+{
printk(BIOS_INFO, "T210: romstage here\n");
#if CONFIG(BOOTROM_SDRAM_INIT)