avr32: add generic board support
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
This commit is contained in:
parent
c722f0b026
commit
a752a8b4c4
|
@ -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
|
||||||
|
|
|
@ -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 = .;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,6 +27,8 @@ 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
|
||||||
|
|
||||||
|
|
|
@ -8,7 +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
|
obj-y += dram_init.o
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -883,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;
|
||||||
|
|
||||||
|
@ -498,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();
|
||||||
|
@ -825,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)
|
||||||
|
@ -893,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 */
|
||||||
|
|
Loading…
Reference in New Issue