mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
Blackfin: new spibootldr command
Newer Blackfin parts can an on-chip ROM that can boot LDRs over SPI flashes, so add a new 'spibootldr' command to take advantage of it. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
67c2829b64
commit
dd14af7640
4 changed files with 65 additions and 0 deletions
|
@ -133,6 +133,7 @@ COBJS-$(CONFIG_CMD_SF) += cmd_sf.o
|
|||
COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
|
||||
COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.o
|
||||
COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o
|
||||
COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o
|
||||
COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
|
||||
COBJS-$(CONFIG_CMD_TERMINAL) += cmd_terminal.o
|
||||
COBJS-$(CONFIG_CMD_UBI) += cmd_ubi.o
|
||||
|
|
36
common/cmd_spibootldr.c
Normal file
36
common/cmd_spibootldr.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* U-boot - spibootldr.c
|
||||
*
|
||||
* Copyright (c) 2005-2008 Analog Devices Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
|
||||
#include <asm/blackfin.h>
|
||||
#include <asm/mach-common/bits/bootrom.h>
|
||||
|
||||
int do_spibootldr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
s32 addr;
|
||||
|
||||
/* Get the address */
|
||||
if (argc < 2)
|
||||
addr = 0;
|
||||
else
|
||||
addr = simple_strtoul(argv[1], NULL, 16);
|
||||
|
||||
printf("## Booting ldr image at SPI offset 0x%x ...\n", addr);
|
||||
|
||||
return bfrom_SpiBoot(addr, BFLAG_PERIPHERAL | 4, 0, NULL);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(spibootldr, 2, 0, do_spibootldr,
|
||||
"boot ldr image from spi",
|
||||
"[offset]\n"
|
||||
" - boot ldr image stored at offset into spi\n");
|
|
@ -200,6 +200,33 @@ typedef struct ADI_BOOT_DATA {
|
|||
int32_t dLogByteCount;
|
||||
} ADI_BOOT_DATA;
|
||||
|
||||
typedef void ADI_BOOT_HOOK_FUNC (ADI_BOOT_DATA *);
|
||||
|
||||
#ifndef _BOOTROM_MEMBOOT
|
||||
#define _BOOTROM_MEMBOOT 0
|
||||
#endif
|
||||
static uint32_t (* const bfrom_MemBoot)(void *pBootStream, int32_t dFlags, int32_t dBlockCount, ADI_BOOT_HOOK_FUNC *pCallHook) = (void *)_BOOTROM_MEMBOOT;
|
||||
|
||||
#ifndef _BOOTROM_TWIBOOT
|
||||
#define _BOOTROM_TWIBOOT 0
|
||||
#endif
|
||||
static uint32_t (* const bfrom_TwiBoot)(int32_t dTwiAddress, int32_t dFlags, int32_t dBlockCount, ADI_BOOT_HOOK_FUNC *pCallHook) = (void *)_BOOTROM_TWIBOOT;
|
||||
|
||||
#ifndef _BOOTROM_SPIBOOT
|
||||
#define _BOOTROM_SPIBOOT 0
|
||||
#endif
|
||||
static uint32_t (* const bfrom_SpiBoot)(int32_t dSpiAddress, int32_t dFlags, int32_t dBlockCount, ADI_BOOT_HOOK_FUNC *pCallHook) = (void *)_BOOTROM_SPIBOOT;
|
||||
|
||||
#ifndef _BOOTROM_OTPBOOT
|
||||
#define _BOOTROM_OTPBOOT 0
|
||||
#endif
|
||||
static uint32_t (* const bfrom_OtpBoot)(int32_t dOtpAddress, int32_t dFlags, int32_t dBlockCount, ADI_BOOT_HOOK_FUNC *pCallHook) = (void *)_BOOTROM_OTPBOOT;
|
||||
|
||||
#ifndef _BOOTROM_NANDBOOT
|
||||
#define _BOOTROM_NANDBOOT 0
|
||||
#endif
|
||||
static uint32_t (* const bfrom_NandBoot)(int32_t dNandAddress, int32_t dFlags, int32_t dBlockCount, ADI_BOOT_HOOK_FUNC *pCallHook) = (void *)_BOOTROM_NANDBOOT;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/* Bit defines for ADI_BOOT_DATA->dFlags */
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
# define CONFIG_CMD_STRINGS
|
||||
# if defined(__ADSPBF51x__) || defined(__ADSPBF52x__) || defined(__ADSPBF54x__)
|
||||
# define CONFIG_CMD_OTP
|
||||
# define CONFIG_CMD_SPIBOOTLDR
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue