Hi Andreas, On 6 February 2015 at 15:06, Andreas Bießmann <andreas.de...@googlemail.com> wrote: > Signed-off-by: Andreas Bießmann <andreas.de...@googlemail.com> > --- > This version still has the mmu_init_r() in common/board_r. Removing this now > is > not that easy ... I'd love to get it in as is and change it later to the > board_init_f_r() sequence. > > Changes in v3: > - remove unnecessary stack implementation for avr32 > - fix bdinfo output > > Changes in v2: > - remove bootparams allocation, provide as extra patch > - use the else path in setup_mon_len() > - provide arch_reserve_stacks() for avr32 > - use the newly introduced dram_init() > > Changes in v1: > - add timer_init in board_r > - remove extern declaration of mmu_init_r() > > arch/avr32/config.mk | 3 +++ > arch/avr32/cpu/u-boot.lds | 2 ++ > arch/avr32/include/asm/config.h | 1 + > arch/avr32/include/asm/u-boot.h | 7 +++++++ > arch/avr32/lib/Makefile | 2 ++ > arch/avr32/lib/interrupts.c | 5 +++++ > common/board_f.c | 2 +- > common/board_r.c | 13 ++++++++++--- > common/cmd_bdinfo.c | 4 ++-- > include/asm-generic/u-boot.h | 4 ++++ > 10 files changed, 37 insertions(+), 6 deletions(-) > > diff --git a/arch/avr32/config.mk b/arch/avr32/config.mk > index 469185e..8252f59 100644 > --- a/arch/avr32/config.mk > +++ b/arch/avr32/config.mk > @@ -9,6 +9,9 @@ ifeq ($(CROSS_COMPILE),) > CROSS_COMPILE := avr32-linux- > endif > > +# avr32 has generic board support > +__HAVE_ARCH_GENERIC_BOARD := y > + > CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000 > > PLATFORM_RELFLAGS += -ffixed-r5 -fPIC -mno-init-got -mrelax > diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds > index cb29a22..b0180e3 100644 > --- a/arch/avr32/cpu/u-boot.lds > +++ b/arch/avr32/cpu/u-boot.lds > @@ -48,9 +48,11 @@ SECTIONS > _edata = .; > > .bss (NOLOAD) : { > + __bss_start = .; > *(.bss) > *(.bss.*) > } > . = ALIGN(8); > __bss_end = .; > + __init_end = .; > } > diff --git a/arch/avr32/include/asm/config.h b/arch/avr32/include/asm/config.h > index 63056a4..529fe22 100644 > --- a/arch/avr32/include/asm/config.h > +++ b/arch/avr32/include/asm/config.h > @@ -8,5 +8,6 @@ > #define _ASM_CONFIG_H_ > > #define CONFIG_NEEDS_MANUAL_RELOC > +#define CONFIG_SYS_GENERIC_GLOBAL_DATA > > #endif > diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h > index 232350e..8b047ec 100644 > --- a/arch/avr32/include/asm/u-boot.h > +++ b/arch/avr32/include/asm/u-boot.h > @@ -6,6 +6,11 @@ > #ifndef __ASM_U_BOOT_H__ > #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 { > unsigned char bi_phy_id[4]; > unsigned long bi_board_number; > @@ -22,6 +27,8 @@ typedef struct bd_info { > #define bi_memstart bi_dram[0].start > #define bi_memsize bi_dram[0].size > > +#endif > + > /* For image.h:image_check_target_arch() */ > #define IH_ARCH_DEFAULT IH_ARCH_AVR32 > > diff --git a/arch/avr32/lib/Makefile b/arch/avr32/lib/Makefile > index 5f2d97b..6750913 100644 > --- a/arch/avr32/lib/Makefile > +++ b/arch/avr32/lib/Makefile > @@ -8,7 +8,9 @@ > # > > obj-y += memset.o > +ifndef CONFIG_SYS_GENERIC_BOARD > obj-y += board.o > +endif > obj-$(CONFIG_CMD_BOOTM) += bootm.o > obj-y += interrupts.o > obj-y += dram_init.o > diff --git a/arch/avr32/lib/interrupts.c b/arch/avr32/lib/interrupts.c > index bacb2d1..5f3a49e 100644 > --- a/arch/avr32/lib/interrupts.c > +++ b/arch/avr32/lib/interrupts.c > @@ -7,6 +7,11 @@ > > #include <asm/sysreg.h> > > +int interrupt_init(void) > +{ > + return 0; > +} > + > void enable_interrupts(void) > { > asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET)); > diff --git a/common/board_f.c b/common/board_f.c > index b5e1071..afa3c02 100644 > --- a/common/board_f.c > +++ b/common/board_f.c > @@ -883,7 +883,7 @@ static init_fnc_t init_sequence_f[] = { > #endif > announce_dram_init, > /* TODO: unify all these dram functions? */ > -#if defined(CONFIG_ARM) || defined(CONFIG_X86) > +#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_AVR32) > dram_init, /* configure available RAM banks */ > #endif > #if defined(CONFIG_MIPS) || defined(CONFIG_PPC) > diff --git a/common/board_r.c b/common/board_r.c > index 8e1e9e0..550d863 100644 > --- a/common/board_r.c > +++ b/common/board_r.c > @@ -55,6 +55,9 @@ > #include <dm/root.h> > #include <linux/compiler.h> > #include <linux/err.h> > +#ifdef CONFIG_AVR32 > +#include <asm/arch/mmu.h> > +#endif > > DECLARE_GLOBAL_DATA_PTR; > > @@ -498,7 +501,7 @@ static int initr_api(void) > #endif > > /* enable exceptions */ > -#ifdef CONFIG_ARM > +#if defined(CONFIG_ARM) || defined(CONFIG_AVR32) > static int initr_enable_interrupts(void) > { > enable_interrupts(); > @@ -825,10 +828,10 @@ init_fnc_t init_sequence_r[] = { > initr_kgdb, > #endif > interrupt_init, > -#if defined(CONFIG_ARM) > +#if defined(CONFIG_ARM) || defined(CONFIG_AVR32) > initr_enable_interrupts, > #endif > -#ifdef CONFIG_X86 > +#if defined(CONFIG_X86) || defined(CONFIG_AVR32) > timer_init, /* initialize timer */ > #endif > #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; > #endif > > +#ifdef CONFIG_AVR32 > + mmu_init_r(dest_addr); > +#endif > + > #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) > gd = new_gd; > #endif > diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c > index e6d8a7a..999d026 100644 > --- a/common/cmd_bdinfo.c > +++ b/common/cmd_bdinfo.c > @@ -333,8 +333,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char > * const argv[]) > bd_t *bd = gd->bd; > > print_num("boot_params", (ulong)bd->bi_boot_params); > - print_num("memstart", (ulong)bd->bi_memstart); > - print_lnum("memsize", (u64)bd->bi_memsize); > + print_num("memstart", (ulong)bd->bi_dram[0].start); > + print_lnum("memsize", (u64)bd->bi_dram[0].size);
Can you explain this change please? I'm not sure what is happening here. > print_num("flashstart", (ulong)bd->bi_flashstart); > print_num("flashsize", (ulong)bd->bi_flashsize); > print_num("flashoffset", (ulong)bd->bi_flashoffset); > diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h > index aef39d7..a63a87a 100644 > --- a/include/asm-generic/u-boot.h > +++ b/include/asm-generic/u-boot.h > @@ -32,6 +32,10 @@ typedef struct bd_info { > unsigned long bi_flashoffset; /* reserved area for startup monitor > */ > unsigned long bi_sramstart; /* start 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 > unsigned long bi_arm_freq; /* arm frequency */ > unsigned long bi_dsp_freq; /* dsp core frequency */ > -- > 1.7.10.4 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot