Merge branch 'master' of git://git.denx.de/u-boot-avr32
This commit is contained in:
commit
9ec84f103b
|
|
@ -35,6 +35,7 @@ endif
|
||||||
obj-$(CONFIG_SEMIHOSTING) += semihosting.o
|
obj-$(CONFIG_SEMIHOSTING) += semihosting.o
|
||||||
|
|
||||||
obj-y += sections.o
|
obj-y += sections.o
|
||||||
|
obj-y += stack.o
|
||||||
ifdef CONFIG_ARM64
|
ifdef CONFIG_ARM64
|
||||||
obj-y += gic_64.o
|
obj-y += gic_64.o
|
||||||
obj-y += interrupts_64.o
|
obj-y += interrupts_64.o
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015 Andreas Bießmann <andreas.devel@googlemail.com>
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011 The Chromium OS Authors.
|
||||||
|
* (C) Copyright 2002-2006
|
||||||
|
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
|
*
|
||||||
|
* (C) Copyright 2002
|
||||||
|
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
||||||
|
* Marius Groeger <mgroeger@sysgo.de>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
#include <common.h>
|
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
int arch_reserve_stacks(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_SPL_BUILD
|
||||||
|
gd->start_addr_sp -= 128; /* leave 32 words for abort-stack */
|
||||||
|
gd->irq_sp = gd->start_addr_sp;
|
||||||
|
#else
|
||||||
|
/* setup stack pointer for exceptions */
|
||||||
|
gd->irq_sp = gd->start_addr_sp;
|
||||||
|
|
||||||
|
# if !defined(CONFIG_ARM64)
|
||||||
|
# ifdef CONFIG_USE_IRQ
|
||||||
|
gd->start_addr_sp -= (CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ);
|
||||||
|
debug("Reserving %zu Bytes for IRQ stack at: %08lx\n",
|
||||||
|
CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
|
||||||
|
|
||||||
|
/* 8-byte alignment for ARM ABI compliance */
|
||||||
|
gd->start_addr_sp &= ~0x07;
|
||||||
|
# endif
|
||||||
|
/* leave 3 words for abort-stack, plus 1 for alignment */
|
||||||
|
gd->start_addr_sp -= 16;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,9 @@ ifeq ($(CROSS_COMPILE),)
|
||||||
CROSS_COMPILE := avr32-linux-
|
CROSS_COMPILE := avr32-linux-
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# avr32 has generic board support
|
||||||
|
__HAVE_ARCH_GENERIC_BOARD := y
|
||||||
|
|
||||||
CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
|
CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
|
||||||
|
|
||||||
PLATFORM_RELFLAGS += -ffixed-r5 -fPIC -mno-init-got -mrelax
|
PLATFORM_RELFLAGS += -ffixed-r5 -fPIC -mno-init-got -mrelax
|
||||||
|
|
|
||||||
|
|
@ -16,5 +16,6 @@ obj-y += cache.o
|
||||||
obj-y += interrupts.o
|
obj-y += interrupts.o
|
||||||
obj-$(CONFIG_PORTMUX_PIO) += portmux-pio.o
|
obj-$(CONFIG_PORTMUX_PIO) += portmux-pio.o
|
||||||
obj-$(CONFIG_PORTMUX_GPIO) += portmux-gpio.o
|
obj-$(CONFIG_PORTMUX_GPIO) += portmux-gpio.o
|
||||||
|
obj-y += mmc.o
|
||||||
|
|
||||||
obj-$(if $(filter at32ap700x,$(SOC)),y) += at32ap700x/
|
obj-$(if $(filter at32ap700x,$(SOC)),y) += at32ap700x/
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ void mmu_init_r(unsigned long dest_addr)
|
||||||
uintptr_t vmr_table_addr;
|
uintptr_t vmr_table_addr;
|
||||||
|
|
||||||
/* Round monitor address down to the nearest page boundary */
|
/* Round monitor address down to the nearest page boundary */
|
||||||
dest_addr &= PAGE_ADDR_MASK;
|
dest_addr &= MMU_PAGE_ADDR_MASK;
|
||||||
|
|
||||||
/* Initialize TLB entry 0 to cover the monitor, and lock it */
|
/* Initialize TLB entry 0 to cover the monitor, and lock it */
|
||||||
sysreg_write(TLBEHI, dest_addr | SYSREG_BIT(TLBEHI_V));
|
sysreg_write(TLBEHI, dest_addr | SYSREG_BIT(TLBEHI_V));
|
||||||
|
|
@ -36,7 +36,7 @@ int mmu_handle_tlb_miss(void)
|
||||||
unsigned int fault_pgno;
|
unsigned int fault_pgno;
|
||||||
int first, last;
|
int first, last;
|
||||||
|
|
||||||
fault_pgno = sysreg_read(TLBEAR) >> PAGE_SHIFT;
|
fault_pgno = sysreg_read(TLBEAR) >> MMU_PAGE_SHIFT;
|
||||||
vmr_table = (const struct mmu_vm_range *)sysreg_read(PTBR);
|
vmr_table = (const struct mmu_vm_range *)sysreg_read(PTBR);
|
||||||
|
|
||||||
/* Do a binary search through the VM ranges */
|
/* Do a binary search through the VM ranges */
|
||||||
|
|
@ -60,8 +60,8 @@ int mmu_handle_tlb_miss(void)
|
||||||
/* Got it; let's slam it into the TLB */
|
/* Got it; let's slam it into the TLB */
|
||||||
uint32_t tlbelo;
|
uint32_t tlbelo;
|
||||||
|
|
||||||
tlbelo = vmr->phys & ~PAGE_ADDR_MASK;
|
tlbelo = vmr->phys & ~MMU_PAGE_ADDR_MASK;
|
||||||
tlbelo |= fault_pgno << PAGE_SHIFT;
|
tlbelo |= fault_pgno << MMU_PAGE_SHIFT;
|
||||||
sysreg_write(TLBELO, tlbelo);
|
sysreg_write(TLBELO, tlbelo);
|
||||||
__builtin_tlbw();
|
__builtin_tlbw();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
int cpu_init(void)
|
int arch_cpu_init(void)
|
||||||
{
|
{
|
||||||
extern void _evba(void);
|
extern void _evba(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,11 +96,11 @@ void do_unknown_exception(unsigned int ecr, struct pt_regs *regs)
|
||||||
printf("CPU Mode: %s\n", cpu_modes[mode]);
|
printf("CPU Mode: %s\n", cpu_modes[mode]);
|
||||||
|
|
||||||
/* Avoid exception loops */
|
/* Avoid exception loops */
|
||||||
if (regs->sp < (gd->arch.stack_end - CONFIG_STACKSIZE)
|
if (regs->sp < (gd->start_addr_sp - CONFIG_STACKSIZE) ||
|
||||||
|| regs->sp >= gd->arch.stack_end)
|
regs->sp >= gd->start_addr_sp)
|
||||||
printf("\nStack pointer seems bogus, won't do stack dump\n");
|
printf("\nStack pointer seems bogus, won't do stack dump\n");
|
||||||
else
|
else
|
||||||
dump_mem("\nStack: ", regs->sp, gd->arch.stack_end);
|
dump_mem("\nStack: ", regs->sp, gd->start_addr_sp);
|
||||||
|
|
||||||
panic("Unhandled exception\n");
|
panic("Unhandled exception\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2006 Atmel Corporation
|
||||||
|
* Copyright (C) 2015 Andreas Bießmann <andreas.devel@googlmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
#include <common.h>
|
||||||
|
#include <atmel_mci.h>
|
||||||
|
#include <asm/arch/hardware.h>
|
||||||
|
|
||||||
|
/* provide cpu_mmc_init, to overwrite provide board_mmc_init */
|
||||||
|
int cpu_mmc_init(bd_t *bd)
|
||||||
|
{
|
||||||
|
/* This calls the atmel_mci_init in gen_atmel_mci.c */
|
||||||
|
return atmel_mci_init((void *)ATMEL_BASE_MMCI);
|
||||||
|
}
|
||||||
|
|
@ -48,9 +48,11 @@ SECTIONS
|
||||||
_edata = .;
|
_edata = .;
|
||||||
|
|
||||||
.bss (NOLOAD) : {
|
.bss (NOLOAD) : {
|
||||||
|
__bss_start = .;
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
}
|
}
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
__bss_end = .;
|
__bss_end = .;
|
||||||
|
__init_end = .;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@
|
||||||
|
|
||||||
#include <asm/sysreg.h>
|
#include <asm/sysreg.h>
|
||||||
|
|
||||||
#define PAGE_SHIFT 20
|
#define MMU_PAGE_SHIFT 20
|
||||||
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
#define MMU_PAGE_SIZE (1UL << MMU_PAGE_SHIFT)
|
||||||
#define PAGE_ADDR_MASK (~(PAGE_SIZE - 1))
|
#define MMU_PAGE_ADDR_MASK (~(MMU_PAGE_SIZE - 1))
|
||||||
|
|
||||||
#define MMU_VMR_CACHE_NONE \
|
#define MMU_VMR_CACHE_NONE \
|
||||||
(SYSREG_BF(AP, 3) | SYSREG_BF(SZ, 3) | SYSREG_BIT(TLBELO_D))
|
(SYSREG_BF(AP, 3) | SYSREG_BF(SZ, 3) | SYSREG_BIT(TLBELO_D))
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,6 @@
|
||||||
#define _ASM_CONFIG_H_
|
#define _ASM_CONFIG_H_
|
||||||
|
|
||||||
#define CONFIG_NEEDS_MANUAL_RELOC
|
#define CONFIG_NEEDS_MANUAL_RELOC
|
||||||
|
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,12 @@ enum dma_data_direction {
|
||||||
DMA_TO_DEVICE = 1,
|
DMA_TO_DEVICE = 1,
|
||||||
DMA_FROM_DEVICE = 2,
|
DMA_FROM_DEVICE = 2,
|
||||||
};
|
};
|
||||||
extern void *dma_alloc_coherent(size_t len, unsigned long *handle);
|
|
||||||
|
static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
|
||||||
|
{
|
||||||
|
*handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
|
||||||
|
return (void *)*handle;
|
||||||
|
}
|
||||||
|
|
||||||
static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
|
static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
|
||||||
enum dma_data_direction dir)
|
enum dma_data_direction dir)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
/* Architecture-specific global data */
|
/* Architecture-specific global data */
|
||||||
struct arch_global_data {
|
struct arch_global_data {
|
||||||
unsigned long stack_end; /* highest stack address */
|
|
||||||
unsigned long cpu_hz; /* cpu core clock frequency */
|
unsigned long cpu_hz; /* cpu core clock frequency */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,11 @@
|
||||||
#ifndef __ASM_U_BOOT_H__
|
#ifndef __ASM_U_BOOT_H__
|
||||||
#define __ASM_U_BOOT_H__ 1
|
#define __ASM_U_BOOT_H__ 1
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_GENERIC_BOARD
|
||||||
|
/* Use the generic board which requires a unified bd_info */
|
||||||
|
#include <asm-generic/u-boot.h>
|
||||||
|
#else
|
||||||
|
|
||||||
typedef struct bd_info {
|
typedef struct bd_info {
|
||||||
unsigned char bi_phy_id[4];
|
unsigned char bi_phy_id[4];
|
||||||
unsigned long bi_board_number;
|
unsigned long bi_board_number;
|
||||||
|
|
@ -22,7 +27,12 @@ typedef struct bd_info {
|
||||||
#define bi_memstart bi_dram[0].start
|
#define bi_memstart bi_dram[0].start
|
||||||
#define bi_memsize bi_dram[0].size
|
#define bi_memsize bi_dram[0].size
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* For image.h:image_check_target_arch() */
|
/* For image.h:image_check_target_arch() */
|
||||||
#define IH_ARCH_DEFAULT IH_ARCH_AVR32
|
#define IH_ARCH_DEFAULT IH_ARCH_AVR32
|
||||||
|
|
||||||
|
int arch_cpu_init(void);
|
||||||
|
int dram_init(void);
|
||||||
|
|
||||||
#endif /* __ASM_U_BOOT_H__ */
|
#endif /* __ASM_U_BOOT_H__ */
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y += memset.o
|
obj-y += memset.o
|
||||||
|
ifndef CONFIG_SYS_GENERIC_BOARD
|
||||||
obj-y += board.o
|
obj-y += board.o
|
||||||
|
endif
|
||||||
obj-$(CONFIG_CMD_BOOTM) += bootm.o
|
obj-$(CONFIG_CMD_BOOTM) += bootm.o
|
||||||
obj-y += interrupts.o
|
obj-y += interrupts.o
|
||||||
|
obj-y += dram_init.o
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@
|
||||||
#include <stdio_dev.h>
|
#include <stdio_dev.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <net.h>
|
#include <net.h>
|
||||||
#include <atmel_mci.h>
|
|
||||||
|
|
||||||
#ifdef CONFIG_BITBANGMII
|
#ifdef CONFIG_BITBANGMII
|
||||||
#include <miiphy.h>
|
#include <miiphy.h>
|
||||||
|
|
@ -30,6 +29,12 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
unsigned long monitor_flash_len;
|
unsigned long monitor_flash_len;
|
||||||
|
|
||||||
|
__weak void dram_init_banksize(void)
|
||||||
|
{
|
||||||
|
gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
|
||||||
|
gd->bd->bi_dram[0].size = gd->ram_size;
|
||||||
|
}
|
||||||
|
|
||||||
/* Weak aliases for optional board functions */
|
/* Weak aliases for optional board functions */
|
||||||
static int __do_nothing(void)
|
static int __do_nothing(void)
|
||||||
{
|
{
|
||||||
|
|
@ -38,57 +43,6 @@ static int __do_nothing(void)
|
||||||
int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
|
int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
|
||||||
int board_early_init_r(void) __attribute__((weak, alias("__do_nothing")));
|
int board_early_init_r(void) __attribute__((weak, alias("__do_nothing")));
|
||||||
|
|
||||||
/* provide cpu_mmc_init, to overwrite provide board_mmc_init */
|
|
||||||
int cpu_mmc_init(bd_t *bd)
|
|
||||||
{
|
|
||||||
/* This calls the atmel_mci_init in gen_atmel_mci.c */
|
|
||||||
return atmel_mci_init((void *)ATMEL_BASE_MMCI);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DMA_ALLOC_LEN
|
|
||||||
#include <asm/arch/cacheflush.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
|
|
||||||
static unsigned long dma_alloc_start;
|
|
||||||
static unsigned long dma_alloc_end;
|
|
||||||
static unsigned long dma_alloc_brk;
|
|
||||||
|
|
||||||
static void dma_alloc_init(void)
|
|
||||||
{
|
|
||||||
unsigned long monitor_addr;
|
|
||||||
|
|
||||||
monitor_addr = CONFIG_SYS_MONITOR_BASE + gd->reloc_off;
|
|
||||||
dma_alloc_end = monitor_addr - CONFIG_SYS_MALLOC_LEN;
|
|
||||||
dma_alloc_start = dma_alloc_end - CONFIG_SYS_DMA_ALLOC_LEN;
|
|
||||||
dma_alloc_brk = dma_alloc_start;
|
|
||||||
|
|
||||||
printf("DMA: Using memory from 0x%08lx to 0x%08lx\n",
|
|
||||||
dma_alloc_start, dma_alloc_end);
|
|
||||||
|
|
||||||
invalidate_dcache_range((unsigned long)cached(dma_alloc_start),
|
|
||||||
dma_alloc_end);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *dma_alloc_coherent(size_t len, unsigned long *handle)
|
|
||||||
{
|
|
||||||
unsigned long paddr = dma_alloc_brk;
|
|
||||||
|
|
||||||
if (dma_alloc_brk + len > dma_alloc_end)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
dma_alloc_brk = ((paddr + len + CONFIG_SYS_DCACHE_LINESZ - 1)
|
|
||||||
& ~(CONFIG_SYS_DCACHE_LINESZ - 1));
|
|
||||||
|
|
||||||
*handle = paddr;
|
|
||||||
return uncached(paddr);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void dma_alloc_init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int init_baudrate(void)
|
static int init_baudrate(void)
|
||||||
{
|
{
|
||||||
gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
|
gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
|
||||||
|
|
@ -134,7 +88,6 @@ void board_init_f(ulong board_type)
|
||||||
unsigned long monitor_len;
|
unsigned long monitor_len;
|
||||||
unsigned long monitor_addr;
|
unsigned long monitor_addr;
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
long sdram_size;
|
|
||||||
|
|
||||||
/* Initialize the global data pointer */
|
/* Initialize the global data pointer */
|
||||||
memset(&gd_data, 0, sizeof(gd_data));
|
memset(&gd_data, 0, sizeof(gd_data));
|
||||||
|
|
@ -142,17 +95,17 @@ void board_init_f(ulong board_type)
|
||||||
|
|
||||||
/* Perform initialization sequence */
|
/* Perform initialization sequence */
|
||||||
board_early_init_f();
|
board_early_init_f();
|
||||||
cpu_init();
|
arch_cpu_init();
|
||||||
board_postclk_init();
|
board_postclk_init();
|
||||||
env_init();
|
env_init();
|
||||||
init_baudrate();
|
init_baudrate();
|
||||||
serial_init();
|
serial_init();
|
||||||
console_init_f();
|
console_init_f();
|
||||||
display_banner();
|
display_banner();
|
||||||
sdram_size = initdram(board_type);
|
dram_init();
|
||||||
|
|
||||||
/* If we have no SDRAM, we can't go on */
|
/* If we have no SDRAM, we can't go on */
|
||||||
if (sdram_size <= 0)
|
if (gd->ram_size <= 0)
|
||||||
panic("No working SDRAM available\n");
|
panic("No working SDRAM available\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -166,7 +119,7 @@ void board_init_f(ulong board_type)
|
||||||
* - global data struct
|
* - global data struct
|
||||||
* - stack
|
* - stack
|
||||||
*/
|
*/
|
||||||
addr = CONFIG_SYS_SDRAM_BASE + sdram_size;
|
addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;
|
||||||
monitor_len = (char *)(&__bss_end) - _text;
|
monitor_len = (char *)(&__bss_end) - _text;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -180,12 +133,6 @@ void board_init_f(ulong board_type)
|
||||||
/* Reserve memory for malloc() */
|
/* Reserve memory for malloc() */
|
||||||
addr -= CONFIG_SYS_MALLOC_LEN;
|
addr -= CONFIG_SYS_MALLOC_LEN;
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DMA_ALLOC_LEN
|
|
||||||
/* Reserve DMA memory (must be cache aligned) */
|
|
||||||
addr &= ~(CONFIG_SYS_DCACHE_LINESZ - 1);
|
|
||||||
addr -= CONFIG_SYS_DMA_ALLOC_LEN;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_LCD
|
#ifdef CONFIG_LCD
|
||||||
#ifdef CONFIG_FB_ADDR
|
#ifdef CONFIG_FB_ADDR
|
||||||
printf("LCD: Frame buffer allocated at preset 0x%08x\n",
|
printf("LCD: Frame buffer allocated at preset 0x%08x\n",
|
||||||
|
|
@ -210,16 +157,11 @@ void board_init_f(ulong board_type)
|
||||||
|
|
||||||
/* And finally, a new, bigger stack. */
|
/* And finally, a new, bigger stack. */
|
||||||
new_sp = (unsigned long *)addr;
|
new_sp = (unsigned long *)addr;
|
||||||
gd->arch.stack_end = addr;
|
gd->start_addr_sp = addr;
|
||||||
*(--new_sp) = 0;
|
*(--new_sp) = 0;
|
||||||
*(--new_sp) = 0;
|
*(--new_sp) = 0;
|
||||||
|
|
||||||
/*
|
dram_init_banksize();
|
||||||
* Initialize the board information struct with the
|
|
||||||
* information we have.
|
|
||||||
*/
|
|
||||||
bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
|
|
||||||
bd->bi_dram[0].size = sdram_size;
|
|
||||||
|
|
||||||
memcpy(new_gd, gd, sizeof(gd_t));
|
memcpy(new_gd, gd, sizeof(gd_t));
|
||||||
|
|
||||||
|
|
@ -264,7 +206,6 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
|
||||||
/* The malloc area is right below the monitor image in RAM */
|
/* The malloc area is right below the monitor image in RAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
||||||
CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
|
CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
|
||||||
dma_alloc_init();
|
|
||||||
|
|
||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2015 Andreas Bießmann <andreas.devel@googlemail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
#include <common.h>
|
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
int dram_init(void)
|
||||||
|
{
|
||||||
|
/* check for the maximum amount of memory possible on AP7000 devices */
|
||||||
|
gd->ram_size = get_ram_size(
|
||||||
|
(void *)CONFIG_SYS_SDRAM_BASE,
|
||||||
|
(256<<20));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,11 @@
|
||||||
|
|
||||||
#include <asm/sysreg.h>
|
#include <asm/sysreg.h>
|
||||||
|
|
||||||
|
int interrupt_init(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void enable_interrupts(void)
|
void enable_interrupts(void)
|
||||||
{
|
{
|
||||||
asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET));
|
asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET));
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ obj-y += extable.o
|
||||||
obj-y += interrupts.o
|
obj-y += interrupts.o
|
||||||
obj-$(CONFIG_CMD_KGDB) += kgdb.o
|
obj-$(CONFIG_CMD_KGDB) += kgdb.o
|
||||||
obj-$(CONFIG_CMD_IDE) += ide.o
|
obj-$(CONFIG_CMD_IDE) += ide.o
|
||||||
|
obj-y += stack.o
|
||||||
obj-y += time.o
|
obj-y += time.o
|
||||||
|
|
||||||
# Don't include the MPC5xxx special memcpy into the
|
# Don't include the MPC5xxx special memcpy into the
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015 Andreas Bießmann <andreas.devel@googlemail.com>
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011 The Chromium OS Authors.
|
||||||
|
* (C) Copyright 2002-2006
|
||||||
|
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
|
*
|
||||||
|
* (C) Copyright 2002
|
||||||
|
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
||||||
|
* Marius Groeger <mgroeger@sysgo.de>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
#include <common.h>
|
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
int arch_reserve_stacks(void)
|
||||||
|
{
|
||||||
|
ulong *s;
|
||||||
|
|
||||||
|
/* setup stack pointer for exceptions */
|
||||||
|
gd->irq_sp = gd->start_addr_sp;
|
||||||
|
|
||||||
|
/* Clear initial stack frame */
|
||||||
|
s = (ulong *)gd->start_addr_sp;
|
||||||
|
*s = 0; /* Terminate back chain */
|
||||||
|
*++s = 0; /* NULL return address */
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -18,14 +18,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -52,6 +52,8 @@ int board_early_init_f(void)
|
||||||
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
||||||
|
|
||||||
portmux_enable_ebi(16, 23, 0, PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(16, 23, 0, PORTMUX_DRIVE_HIGH);
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
|
|
@ -68,24 +70,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x01;
|
gd->bd->bi_phy_id[0] = 0x01;
|
||||||
|
|
|
||||||
|
|
@ -23,21 +23,21 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
/* Atmel AT49BV640D 8 MiB x16 NOR flash on NCS0 */
|
/* Atmel AT49BV640D 8 MiB x16 NOR flash on NCS0 */
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
/* Micron MT29F2G16AAD 256 MiB x16 NAND flash on NCS3 */
|
/* Micron MT29F2G16AAD 256 MiB x16 NAND flash on NCS3 */
|
||||||
.virt_pgno = EBI_SRAM_CS3_BASE >> PAGE_SHIFT,
|
.virt_pgno = EBI_SRAM_CS3_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SRAM_CS3_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SRAM_CS3_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (EBI_SRAM_CS3_BASE >> PAGE_SHIFT)
|
.phys = (EBI_SRAM_CS3_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
/* 2x16-bit ISSI IS42S16320B 64 MiB SDRAM (128 MiB total) */
|
/* 2x16-bit ISSI IS42S16320B 64 MiB SDRAM (128 MiB total) */
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -69,6 +69,9 @@ int board_early_init_f(void)
|
||||||
portmux_select_gpio(PORTMUX_PORT_E, 1 << 23,
|
portmux_select_gpio(PORTMUX_PORT_E, 1 << 23,
|
||||||
PORTMUX_DIR_OUTPUT | PORTMUX_INIT_HIGH
|
PORTMUX_DIR_OUTPUT | PORTMUX_INIT_HIGH
|
||||||
| PORTMUX_DRIVE_MIN);
|
| PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
|
|
@ -85,24 +88,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x01;
|
gd->bd->bi_phy_id[0] = 0x01;
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -78,7 +78,10 @@ int board_early_init_f(void)
|
||||||
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
||||||
|
|
||||||
portmux_enable_ebi(sdram_config.data_bits, 23, 0, PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(sdram_config.data_bits, 23, 0, PORTMUX_DRIVE_HIGH);
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
|
portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
|
||||||
portmux_enable_macb1(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
|
portmux_enable_macb1(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
|
||||||
|
|
@ -90,24 +93,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x10;
|
gd->bd->bi_phy_id[0] = 0x10;
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -52,6 +52,9 @@ int board_early_init_f(void)
|
||||||
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
||||||
|
|
||||||
portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
|
||||||
|
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart3(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart3(PORTMUX_DRIVE_MIN);
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_HIGH);
|
portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_HIGH);
|
||||||
|
|
@ -63,24 +66,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x01;
|
gd->bd->bi_phy_id[0] = 0x01;
|
||||||
|
|
|
||||||
|
|
@ -18,14 +18,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -53,6 +53,8 @@ int board_early_init_f(void)
|
||||||
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
||||||
|
|
||||||
portmux_enable_ebi(SDRAM_DATA_32BIT, 23, 0, PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(SDRAM_DATA_32BIT, 23, 0, PORTMUX_DRIVE_HIGH);
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart0(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart0(PORTMUX_DRIVE_MIN);
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
|
|
@ -69,24 +71,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x00;
|
gd->bd->bi_phy_id[0] = 0x00;
|
||||||
|
|
|
||||||
|
|
@ -20,19 +20,19 @@
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = EBI_SRAM_CS2_BASE >> PAGE_SHIFT,
|
.virt_pgno = EBI_SRAM_CS2_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SRAM_CS2_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SRAM_CS2_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (EBI_SRAM_CS2_BASE >> PAGE_SHIFT)
|
.phys = (EBI_SRAM_CS2_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -91,6 +91,8 @@ int board_early_init_f(void)
|
||||||
|
|
||||||
/* Enable 26 address bits and NCS2 */
|
/* Enable 26 address bits and NCS2 */
|
||||||
portmux_enable_ebi(16, 26, PORTMUX_EBI_CS(2), PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(16, 26, PORTMUX_EBI_CS(2), PORTMUX_DRIVE_HIGH);
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
/* de-assert "force sys reset" pin */
|
/* de-assert "force sys reset" pin */
|
||||||
|
|
@ -151,24 +153,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x01;
|
gd->bd->bi_phy_id[0] = 0x01;
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,14 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
|
||||||
{
|
{
|
||||||
.virt_pgno = CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
|
.nr_pages = CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_NONE,
|
| MMU_VMR_CACHE_NONE,
|
||||||
}, {
|
}, {
|
||||||
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
|
.virt_pgno = CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
|
||||||
.nr_pages = EBI_SDRAM_SIZE >> PAGE_SHIFT,
|
.nr_pages = EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
|
||||||
.phys = (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
|
.phys = (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
|
||||||
| MMU_VMR_CACHE_WRBACK,
|
| MMU_VMR_CACHE_WRBACK,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -63,6 +63,8 @@ int board_early_init_f(void)
|
||||||
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
|
||||||
|
|
||||||
portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
|
portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
|
||||||
|
sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
|
||||||
|
|
||||||
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
portmux_enable_usart1(PORTMUX_DRIVE_MIN);
|
||||||
|
|
||||||
#if defined(CONFIG_MACB)
|
#if defined(CONFIG_MACB)
|
||||||
|
|
@ -74,24 +76,6 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_size_t initdram(int board_type)
|
|
||||||
{
|
|
||||||
unsigned long expected_size;
|
|
||||||
unsigned long actual_size;
|
|
||||||
void *sdram_base;
|
|
||||||
|
|
||||||
sdram_base = uncached(EBI_SDRAM_BASE);
|
|
||||||
|
|
||||||
expected_size = sdram_init(sdram_base, &sdram_config);
|
|
||||||
actual_size = get_ram_size(sdram_base, expected_size);
|
|
||||||
|
|
||||||
if (expected_size != actual_size)
|
|
||||||
printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
|
|
||||||
actual_size >> 20, expected_size >> 20);
|
|
||||||
|
|
||||||
return actual_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int board_early_init_r(void)
|
int board_early_init_r(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_phy_id[0] = 0x01;
|
gd->bd->bi_phy_id[0] = 0x01;
|
||||||
|
|
|
||||||
|
|
@ -573,48 +573,22 @@ static int reserve_fdt(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int arch_reserve_stacks(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int reserve_stacks(void)
|
static int reserve_stacks(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SPL_BUILD
|
/* make stack pointer 16-byte aligned */
|
||||||
# ifdef CONFIG_ARM
|
|
||||||
gd->start_addr_sp -= 128; /* leave 32 words for abort-stack */
|
|
||||||
gd->irq_sp = gd->start_addr_sp;
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# ifdef CONFIG_PPC
|
|
||||||
ulong *s;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* setup stack pointer for exceptions */
|
|
||||||
gd->start_addr_sp -= 16;
|
gd->start_addr_sp -= 16;
|
||||||
gd->start_addr_sp &= ~0xf;
|
gd->start_addr_sp &= ~0xf;
|
||||||
gd->irq_sp = gd->start_addr_sp;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle architecture-specific things here
|
* let the architecture specific code tailor gd->start_addr_sp and
|
||||||
* TODO(sjg@chromium.org): Perhaps create arch_reserve_stack()
|
* gd->irq_sp
|
||||||
* to handle this and put in arch/xxx/lib/stack.c
|
|
||||||
*/
|
*/
|
||||||
# if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
|
return arch_reserve_stacks();
|
||||||
# ifdef CONFIG_USE_IRQ
|
|
||||||
gd->start_addr_sp -= (CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ);
|
|
||||||
debug("Reserving %zu Bytes for IRQ stack at: %08lx\n",
|
|
||||||
CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
|
|
||||||
|
|
||||||
/* 8-byte alignment for ARM ABI compliance */
|
|
||||||
gd->start_addr_sp &= ~0x07;
|
|
||||||
# endif
|
|
||||||
/* leave 3 words for abort-stack, plus 1 for alignment */
|
|
||||||
gd->start_addr_sp -= 16;
|
|
||||||
# elif defined(CONFIG_PPC)
|
|
||||||
/* Clear initial stack frame */
|
|
||||||
s = (ulong *) gd->start_addr_sp;
|
|
||||||
*s = 0; /* Terminate back chain */
|
|
||||||
*++s = 0; /* NULL return address */
|
|
||||||
# endif /* Architecture specific code */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int display_new_sp(void)
|
static int display_new_sp(void)
|
||||||
|
|
@ -909,7 +883,7 @@ static init_fnc_t init_sequence_f[] = {
|
||||||
#endif
|
#endif
|
||||||
announce_dram_init,
|
announce_dram_init,
|
||||||
/* TODO: unify all these dram functions? */
|
/* TODO: unify all these dram functions? */
|
||||||
#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
|
#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE) || defined(CONFIG_AVR32)
|
||||||
dram_init, /* configure available RAM banks */
|
dram_init, /* configure available RAM banks */
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
|
#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,9 @@
|
||||||
#include <dm/root.h>
|
#include <dm/root.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
|
#ifdef CONFIG_AVR32
|
||||||
|
#include <asm/arch/mmu.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
|
@ -459,6 +462,18 @@ static int initr_env(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_BOOTPARAMS_LEN
|
||||||
|
static int initr_malloc_bootparams(void)
|
||||||
|
{
|
||||||
|
gd->bd->bi_boot_params = (ulong)malloc(CONFIG_SYS_BOOTPARAMS_LEN);
|
||||||
|
if (!gd->bd->bi_boot_params) {
|
||||||
|
puts("WARNING: Cannot allocate space for boot parameters\n");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SC3
|
#ifdef CONFIG_SC3
|
||||||
/* TODO: with new initcalls, move this into the driver */
|
/* TODO: with new initcalls, move this into the driver */
|
||||||
extern void sc3_read_eeprom(void);
|
extern void sc3_read_eeprom(void);
|
||||||
|
|
@ -486,7 +501,7 @@ static int initr_api(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* enable exceptions */
|
/* enable exceptions */
|
||||||
#ifdef CONFIG_ARM
|
#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
|
||||||
static int initr_enable_interrupts(void)
|
static int initr_enable_interrupts(void)
|
||||||
{
|
{
|
||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
|
|
@ -775,6 +790,9 @@ init_fnc_t init_sequence_r[] = {
|
||||||
initr_dataflash,
|
initr_dataflash,
|
||||||
#endif
|
#endif
|
||||||
initr_env,
|
initr_env,
|
||||||
|
#ifdef CONFIG_SYS_BOOTPARAMS_LEN
|
||||||
|
initr_malloc_bootparams,
|
||||||
|
#endif
|
||||||
INIT_FUNC_WATCHDOG_RESET
|
INIT_FUNC_WATCHDOG_RESET
|
||||||
initr_secondary_cpu,
|
initr_secondary_cpu,
|
||||||
#ifdef CONFIG_SC3
|
#ifdef CONFIG_SC3
|
||||||
|
|
@ -810,10 +828,10 @@ init_fnc_t init_sequence_r[] = {
|
||||||
initr_kgdb,
|
initr_kgdb,
|
||||||
#endif
|
#endif
|
||||||
interrupt_init,
|
interrupt_init,
|
||||||
#if defined(CONFIG_ARM)
|
#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
|
||||||
initr_enable_interrupts,
|
initr_enable_interrupts,
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
|
#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE) || defined(CONFIG_AVR32)
|
||||||
timer_init, /* initialize timer */
|
timer_init, /* initialize timer */
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
|
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
|
||||||
|
|
@ -878,6 +896,10 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
|
||||||
int i;
|
int i;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_AVR32
|
||||||
|
mmu_init_r(dest_addr);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
|
#if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
|
||||||
gd = new_gd;
|
gd = new_gd;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -345,8 +345,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
bd_t *bd = gd->bd;
|
bd_t *bd = gd->bd;
|
||||||
|
|
||||||
print_num("boot_params", (ulong)bd->bi_boot_params);
|
print_num("boot_params", (ulong)bd->bi_boot_params);
|
||||||
print_num("memstart", (ulong)bd->bi_memstart);
|
print_num("memstart", (ulong)bd->bi_dram[0].start);
|
||||||
print_lnum("memsize", (u64)bd->bi_memsize);
|
print_lnum("memsize", (u64)bd->bi_dram[0].size);
|
||||||
print_num("flashstart", (ulong)bd->bi_flashstart);
|
print_num("flashstart", (ulong)bd->bi_flashstart);
|
||||||
print_num("flashsize", (ulong)bd->bi_flashsize);
|
print_num("flashsize", (ulong)bd->bi_flashsize);
|
||||||
print_num("flashoffset", (ulong)bd->bi_flashoffset);
|
print_num("flashoffset", (ulong)bd->bi_flashoffset);
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,10 @@ typedef struct bd_info {
|
||||||
unsigned long bi_flashoffset; /* reserved area for startup monitor */
|
unsigned long bi_flashoffset; /* reserved area for startup monitor */
|
||||||
unsigned long bi_sramstart; /* start of SRAM memory */
|
unsigned long bi_sramstart; /* start of SRAM memory */
|
||||||
unsigned long bi_sramsize; /* size of SRAM memory */
|
unsigned long bi_sramsize; /* size of SRAM memory */
|
||||||
|
#ifdef CONFIG_AVR32
|
||||||
|
unsigned char bi_phy_id[4]; /* PHY address for ATAG_ETHERNET */
|
||||||
|
unsigned long bi_board_number;/* ATAG_BOARDINFO */
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ARM
|
#ifdef CONFIG_ARM
|
||||||
unsigned long bi_arm_freq; /* arm frequency */
|
unsigned long bi_arm_freq; /* arm frequency */
|
||||||
unsigned long bi_dsp_freq; /* dsp core frequency */
|
unsigned long bi_dsp_freq; /* dsp core frequency */
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,24 @@ static inline int print_cpuinfo(void)
|
||||||
int update_flash_size(int flash_size);
|
int update_flash_size(int flash_size);
|
||||||
int arch_early_init_r(void);
|
int arch_early_init_r(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reserve all necessary stacks
|
||||||
|
*
|
||||||
|
* This is used in generic board init sequence in common/board_f.c. Each
|
||||||
|
* architecture could provide this function to tailor the required stacks.
|
||||||
|
*
|
||||||
|
* On entry gd->start_addr_sp is pointing to the suggested top of the stack.
|
||||||
|
* The callee ensures gd->start_add_sp is 16-byte aligned, so architectures
|
||||||
|
* require only this can leave it untouched.
|
||||||
|
*
|
||||||
|
* On exit gd->start_addr_sp and gd->irq_sp should be set to the respective
|
||||||
|
* positions of the stack. The stack pointer(s) will be set to this later.
|
||||||
|
* gd->irq_sp is only required, if the architecture needs it.
|
||||||
|
*
|
||||||
|
* @return 0 if no error
|
||||||
|
*/
|
||||||
|
__weak int arch_reserve_stacks(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the DRAM size in a board-specific way
|
* Show the DRAM size in a board-specific way
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,10 @@
|
||||||
#define CONFIG_BOOTP_SUBNETMASK
|
#define CONFIG_BOOTP_SUBNETMASK
|
||||||
#define CONFIG_BOOTP_GATEWAY
|
#define CONFIG_BOOTP_GATEWAY
|
||||||
|
|
||||||
|
/* generic board */
|
||||||
|
#define CONFIG_SYS_GENERIC_BOARD
|
||||||
|
#define CONFIG_BOARD_EARLY_INIT_F
|
||||||
|
#define CONFIG_BOARD_EARLY_INIT_R
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Command line configuration.
|
* Command line configuration.
|
||||||
|
|
@ -158,7 +162,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@
|
||||||
#define CONFIG_USART_BASE ATMEL_BASE_USART1
|
#define CONFIG_USART_BASE ATMEL_BASE_USART1
|
||||||
#define CONFIG_USART_ID 1
|
#define CONFIG_USART_ID 1
|
||||||
|
|
||||||
|
#define CONFIG_SYS_GENERIC_BOARD
|
||||||
|
#define CONFIG_BOARD_EARLY_INIT_F
|
||||||
|
#define CONFIG_BOARD_EARLY_INIT_R
|
||||||
|
|
||||||
/* User serviceable stuff */
|
/* User serviceable stuff */
|
||||||
#define CONFIG_CMDLINE_TAG
|
#define CONFIG_CMDLINE_TAG
|
||||||
#define CONFIG_SETUP_MEMORY_TAGS
|
#define CONFIG_SETUP_MEMORY_TAGS
|
||||||
|
|
@ -151,7 +155,6 @@
|
||||||
CONFIG_SYS_INTRAM_SIZE)
|
CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,6 @@
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
#define CONFIG_SYS_MALLOC_LEN (256*1024)
|
||||||
|
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,6 @@
|
||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_MALLOC_LEN (1024*1024)
|
#define CONFIG_SYS_MALLOC_LEN (1024*1024)
|
||||||
#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
|
|
||||||
|
|
||||||
/* Allow 4MB for the kernel run-time image */
|
/* Allow 4MB for the kernel run-time image */
|
||||||
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
#define CONFIG_SYS_LOAD_ADDR (EBI_SDRAM_BASE + 0x00400000)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue