Add support for U-BOOT SPL. NOR and RAM mode are supported. There are 3 images in NOR flash. u-boot.img, dtb and kernel. Signed-off-by: Michal Simek <michal.simek@xilinx.com>master
parent
22ff7f4d19
commit
9d24274509
@ -0,0 +1,55 @@ |
||||
/*
|
||||
* (C) Copyright 2013 - 2014 Xilinx, Inc |
||||
* |
||||
* Michal Simek <michal.simek@xilinx.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <image.h> |
||||
#include <spl.h> |
||||
#include <version.h> |
||||
#include <asm/io.h> |
||||
#include <asm/u-boot.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
bool boot_linux; |
||||
|
||||
u32 spl_boot_device(void) |
||||
{ |
||||
return BOOT_DEVICE_NOR; |
||||
} |
||||
|
||||
/* Board initialization after bss clearance */ |
||||
void spl_board_init(void) |
||||
{ |
||||
gd = (gd_t *)CONFIG_SPL_STACK_ADDR; |
||||
|
||||
/* enable console uart printing */ |
||||
preloader_console_init(); |
||||
} |
||||
|
||||
#ifdef CONFIG_SPL_OS_BOOT |
||||
void __noreturn jump_to_image_linux(void *arg) |
||||
{ |
||||
debug("Entering kernel arg pointer: 0x%p\n", arg); |
||||
typedef void (*image_entry_arg_t)(char *, ulong, ulong) |
||||
__attribute__ ((noreturn)); |
||||
image_entry_arg_t image_entry = |
||||
(image_entry_arg_t)spl_image.entry_point; |
||||
|
||||
image_entry(NULL, 0, (ulong)arg); |
||||
} |
||||
#endif /* CONFIG_SPL_OS_BOOT */ |
||||
|
||||
int spl_start_uboot(void) |
||||
{ |
||||
#ifdef CONFIG_SPL_OS_BOOT |
||||
if (boot_linux) |
||||
return 0; |
||||
#endif |
||||
|
||||
return 1; |
||||
} |
@ -0,0 +1,57 @@ |
||||
/* |
||||
* (C) Copyright 2013 - 2014 Xilinx, Inc |
||||
* |
||||
* Michal Simek <michal.simek@xilinx.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <asm-offsets.h> |
||||
|
||||
OUTPUT_ARCH(microblaze) |
||||
ENTRY(_start) |
||||
|
||||
SECTIONS |
||||
{ |
||||
.text ALIGN(0x4): |
||||
{ |
||||
__text_start = .; |
||||
arch/microblaze/cpu/start.o (.text) |
||||
*(.text) |
||||
*(.text.*) |
||||
__text_end = .; |
||||
} |
||||
|
||||
.rodata ALIGN(0x4): |
||||
{ |
||||
__rodata_start = .; |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
__rodata_end = .; |
||||
} |
||||
|
||||
.data ALIGN(0x4): |
||||
{ |
||||
__data_start = .; |
||||
*(.data) |
||||
*(.data.*) |
||||
__data_end = .; |
||||
} |
||||
|
||||
.bss ALIGN(0x4): |
||||
{ |
||||
__bss_start = .; |
||||
*(.sbss) |
||||
*(.scommon) |
||||
*(.bss) |
||||
*(.bss.*) |
||||
*(COMMON) |
||||
. = ALIGN(4); |
||||
__bss_end = .; |
||||
} |
||||
__end = . ; |
||||
} |
||||
|
||||
#if defined(CONFIG_SPL_MAX_FOOTPRINT) |
||||
ASSERT(__end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \ |
||||
"SPL image plus BSS too big"); |
||||
#endif |
@ -0,0 +1,16 @@ |
||||
/*
|
||||
* (C) Copyright 2013 - 2014 Xilinx, Inc |
||||
* |
||||
* Michal Simek <michal.simek@xilinx.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef _ASM_MICROBLAZE_SPL_H_ |
||||
#define _ASM_MICROBLAZE_SPL_H_ |
||||
|
||||
#define BOOT_DEVICE_RAM 1 |
||||
#define BOOT_DEVICE_NOR 2 |
||||
#define BOOT_DEVICE_SPI 3 |
||||
|
||||
#endif |
Loading…
Reference in new issue