summaryrefslogtreecommitdiff
path: root/src/soc/ti/am335x
diff options
context:
space:
mode:
authorSam Lewis <sam.vr.lewis@gmail.com>2020-08-19 21:14:40 +1000
committerArthur Heymans <arthur@aheymans.xyz>2021-03-30 11:20:56 +0000
commitc25d54b97e0f6debf37e25841f53114b6318063d (patch)
tree838da2eda86b7d06ada7b66bc2819fe8407050e1 /src/soc/ti/am335x
parentdb3fbf22c2cfd9778092ccbb3d7a97ec872a5ad0 (diff)
mb/ti/beaglebone: Load romstage/ramstage from SD
Adds a "sd_media" boot_device to allow booting from the SD card. This assumes that the generated "MLO" file is placed at a 128KB offset from the start of the SD card, to allow for the MBR etc. to be at the start of the SD card. Placing the MLO file here allows the AM335x boot ROM to load and execute the bootblock stage as well, as 128KB is one of the offsets the boot ROM checks when looking for the next stage to execute. As part of this, a FMD for the Beaglebone has also been defined. It's sized at 32M somewhat arbitrarily, as SD cards could allow for much bigger payloads. TEST: Beaglebone boots from bootblock into romstage. Romstage to ramstage still doesn't work as it needs RAM initialization first. Change-Id: I5f6901217fb974808e84aeb679af2f47eeae30fd Signed-off-by: Sam Lewis <sam.vr.lewis@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44385 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/ti/am335x')
-rw-r--r--src/soc/ti/am335x/Makefile.inc8
-rw-r--r--src/soc/ti/am335x/bootblock_media.c12
-rw-r--r--src/soc/ti/am335x/header.c17
-rw-r--r--src/soc/ti/am335x/header.h17
-rw-r--r--src/soc/ti/am335x/memlayout.ld7
-rw-r--r--src/soc/ti/am335x/nand.c9
6 files changed, 26 insertions, 44 deletions
diff --git a/src/soc/ti/am335x/Makefile.inc b/src/soc/ti/am335x/Makefile.inc
index 60e00fbbcc..c9d82acab2 100644
--- a/src/soc/ti/am335x/Makefile.inc
+++ b/src/soc/ti/am335x/Makefile.inc
@@ -1,17 +1,17 @@
ifeq ($(CONFIG_SOC_TI_AM335X),y)
bootblock-y += bootblock.c
-bootblock-y += bootblock_media.c
bootblock-y += timer.c
bootblock-y += gpio.c
bootblock-y += pinmux.c
+bootblock-y += mmc.c
-romstage-y += nand.c
romstage-y += cbmem.c
romstage-y += timer.c
+romstage-y += mmc.c
ramstage-y += timer.c
-ramstage-y += nand.c
-ramstage-y += soc.c
+ramstage-y += soc.c
+ramstage-y += mmc.c
bootblock-y += uart.c
romstage-y += uart.c
diff --git a/src/soc/ti/am335x/bootblock_media.c b/src/soc/ti/am335x/bootblock_media.c
deleted file mode 100644
index b7e49a6c47..0000000000
--- a/src/soc/ti/am335x/bootblock_media.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#include <boot_device.h>
-#include <symbols.h>
-
-static const struct mem_region_device boot_dev =
- MEM_REGION_DEV_RO_INIT(_sram, CONFIG_ROM_SIZE);
-
-const struct region_device *boot_device_ro(void)
-{
- return &boot_dev.rdev;
-}
diff --git a/src/soc/ti/am335x/header.c b/src/soc/ti/am335x/header.c
index 66d7c2003e..7f42a388ee 100644
--- a/src/soc/ti/am335x/header.c
+++ b/src/soc/ti/am335x/header.c
@@ -6,23 +6,6 @@
#include "header.h"
-struct config_headers {
- // The table of contents.
- struct configuration_header_toc_item toc_chsettings;
- struct configuration_header_toc_item toc_end;
-
- // An inert instance of chsettings.
- struct configuration_header_settings chsettings;
-} __packed;
-
-struct omap_image_headers {
- union {
- struct config_headers config_headers;
- uint8_t bytes[512];
- };
- struct gp_device_header image_header;
-};
-
// A symbol which defines how much of the image the iROM should load.
extern char header_load_size;
diff --git a/src/soc/ti/am335x/header.h b/src/soc/ti/am335x/header.h
index a0a54ad0f3..84e09f38d5 100644
--- a/src/soc/ti/am335x/header.h
+++ b/src/soc/ti/am335x/header.h
@@ -47,4 +47,21 @@ struct gp_device_header {
uint32_t destination;
} __packed;
+struct config_headers {
+ // The table of contents.
+ struct configuration_header_toc_item toc_chsettings;
+ struct configuration_header_toc_item toc_end;
+
+ // An inert instance of chsettings.
+ struct configuration_header_settings chsettings;
+} __packed;
+
+struct omap_image_headers {
+ union {
+ struct config_headers config_headers;
+ uint8_t bytes[512];
+ };
+ struct gp_device_header image_header;
+};
+
#endif
diff --git a/src/soc/ti/am335x/memlayout.ld b/src/soc/ti/am335x/memlayout.ld
index 042febe7e5..8d1e8d68a6 100644
--- a/src/soc/ti/am335x/memlayout.ld
+++ b/src/soc/ti/am335x/memlayout.ld
@@ -13,11 +13,14 @@ SECTIONS
TTB(0x402F8000, 16K)
ROMSTAGE(0x402F8000+16K, 40K)
+ PRERAM_CBFS_CACHE(0x402F8000+16K+40K, 20K)
+
STACK(0x4030be00, 4K)
SRAM_END(0x40310000)
- DRAM_START(0x80000000)
- RAMSTAGE(0x80200000, 192K)
+ DRAM_START(0x80000000)
+ RAMSTAGE(0x80000000, 2M)
+ POSTRAM_CBFS_CACHE(0x80200000, 32M)
#ifdef OMAP_HEADER
.header : {
diff --git a/src/soc/ti/am335x/nand.c b/src/soc/ti/am335x/nand.c
deleted file mode 100644
index a7029a02d6..0000000000
--- a/src/soc/ti/am335x/nand.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#include <boot_device.h>
-
-const struct region_device *boot_device_ro(void)
-{
- /* FIXME: add support for reading coreboot from NAND */
- return NULL;
-}