Skip to content
Snippets Groups Projects
Commit b48b69ba authored by Tom Rini's avatar Tom Rini
Browse files
parents 08520bf5 1c0df9ef
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@
#include <common.h>
#include <netdev.h>
#include <asm/io.h>
#include <asm/pl310.h>
#include <asm/arch/cpu.h>
#include <asm/arch/soc.h>
......@@ -160,10 +161,17 @@ static void update_sdram_window_sizes(void)
}
#ifdef CONFIG_ARCH_CPU_INIT
static void set_cbar(u32 addr)
{
asm("mcr p15, 4, %0, c15, c0" : : "r" (addr));
}
int arch_cpu_init(void)
{
/* Linux expects the internal registers to be at 0xf1000000 */
writel(SOC_REGS_PHY_BASE, INTREG_BASE_ADDR_REG);
set_cbar(SOC_REGS_PHY_BASE + 0xC000);
/*
* We need to call mvebu_mbus_probe() before calling
......@@ -240,6 +248,13 @@ int cpu_eth_init(bd_t *bis)
#ifndef CONFIG_SYS_DCACHE_OFF
void enable_caches(void)
{
struct pl310_regs *const pl310 =
(struct pl310_regs *)CONFIG_SYS_PL310_BASE;
/* First disable L2 cache - may still be enable from BootROM */
if (mvebu_soc_family() == MVEBU_SOC_A38X)
clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
/* Avoid problem with e.g. neta ethernet driver */
invalidate_dcache_all();
......
......@@ -420,6 +420,18 @@ static size_t image_headersz_v1(struct image_tool_params *params,
*hasext = 1;
}
#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
if (headersz > CONFIG_SYS_SPI_U_BOOT_OFFS) {
fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
(int)headersz, CONFIG_SYS_SPI_U_BOOT_OFFS);
fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
return 0;
} else {
headersz = CONFIG_SYS_SPI_U_BOOT_OFFS;
}
#endif
/*
* The payload should be aligned on some reasonable
* boundary
......@@ -869,16 +881,6 @@ static int kwbimage_generate(struct image_tool_params *params,
sizeof(struct ext_hdr_v0);
} else {
alloc_len = image_headersz_v1(params, NULL);
#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
if (alloc_len > CONFIG_SYS_SPI_U_BOOT_OFFS) {
fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
alloc_len, CONFIG_SYS_SPI_U_BOOT_OFFS);
fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
} else {
alloc_len = CONFIG_SYS_SPI_U_BOOT_OFFS;
}
#endif
}
hdr = malloc(alloc_len);
......
......@@ -657,7 +657,7 @@ static void
kwboot_usage(FILE *stream, char *progname)
{
fprintf(stream,
"Usage: %s [-d | -a | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n",
"Usage: %s [-d | -a | -q <req-delay> | -s <resp-timeo> | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n",
progname);
fprintf(stream, "\n");
fprintf(stream,
......@@ -667,6 +667,8 @@ kwboot_usage(FILE *stream, char *progname)
" -D <image>: boot <image> without preamble (Dove)\n");
fprintf(stream, " -d: enter debug mode\n");
fprintf(stream, " -a: use timings for Armada XP\n");
fprintf(stream, " -q <req-delay>: use specific request-delay\n");
fprintf(stream, " -s <resp-timeo>: use specific response-timeout\n");
fprintf(stream, "\n");
fprintf(stream, " -t: mini terminal\n");
fprintf(stream, "\n");
......@@ -699,7 +701,7 @@ main(int argc, char **argv)
kwboot_verbose = isatty(STDOUT_FILENO);
do {
int c = getopt(argc, argv, "hb:ptaB:dD:");
int c = getopt(argc, argv, "hb:ptaB:dD:q:s:");
if (c < 0)
break;
......@@ -731,6 +733,14 @@ main(int argc, char **argv)
msg_rsp_timeo = KWBOOT_MSG_RSP_TIMEO_AXP;
break;
case 'q':
msg_req_delay = atoi(optarg);
break;
case 's':
msg_rsp_timeo = atoi(optarg);
break;
case 'B':
speed = kwboot_tty_speed(atoi(optarg));
if (speed == -1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment