[U-Boot-Users] [PATCH 1/1] Add support for the hammerhead (AVR32) board

Haavard Skinnemoen haavard.skinnemoen at atmel.com
Mon Jun 23 15:00:47 CEST 2008


Julien May <mailinglist at miromico.ch> wrote:
> 
> Signed-off-by: Julien May <mailinglist at miromico.ch>

Could you add a few lines describing the Hammerhead board, perhaps with
a link to your site?

This looks pretty good to me. I have a few comments below, and I've
Cc'ed u-boot-users so that more people can comment on this. Please keep
them in the loop whenever you post a new version of this patch.

If you want, I can apply this to my tree as is, and you can send me
incremental patches fixing up the remaining issues. I'll fold
everything into a single patch before sending it upstream.

> ---
>  MAKEALL                                  |    1 +
>  Makefile                                 |    3 +
>  board/miromico/hammerhead/Makefile       |   40 +++++++
>  board/miromico/hammerhead/config.mk      |    3 +
>  board/miromico/hammerhead/eth.c          |   37 ++++++
>  board/miromico/hammerhead/hammerhead.c   |  105 +++++++++++++++++
>  board/miromico/hammerhead/u-boot.lds     |   73 ++++++++++++
>  cpu/at32ap/at32ap700x/gpio.c             |   11 ++
>  cpu/at32ap/at32ap700x/sm.h               |    2 +-
>  cpu/at32ap/cpu.c                         |    5 +
>  include/asm-avr32/arch-at32ap700x/clk.h  |    1 +
>  include/asm-avr32/arch-at32ap700x/gpio.h |    3 +
>  include/configs/hammerhead.h             |  179 ++++++++++++++++++++++++++++++
>  net/eth.c                                |    4 +
>  14 files changed, 466 insertions(+), 1 deletions(-)
>  create mode 100644 board/miromico/hammerhead/Makefile
>  create mode 100644 board/miromico/hammerhead/config.mk
>  create mode 100644 board/miromico/hammerhead/eth.c
>  create mode 100644 board/miromico/hammerhead/hammerhead.c
>  create mode 100644 board/miromico/hammerhead/u-boot.lds
>  create mode 100644 include/configs/hammerhead.h
> 
> diff --git a/MAKEALL b/MAKEALL
> index f40de23..89b68a5 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -699,6 +699,7 @@ LIST_avr32="		\
>  	atstk1004	\
>  	atstk1006	\
>  	atngw100	\
> +	hammerhead	\
>  "
>  
>  #########################################################################
> diff --git a/Makefile b/Makefile
> index 154e592..09bae45 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2885,6 +2885,9 @@ atstk1006_config	:	unconfig
>  atngw100_config	:	unconfig
>  	@$(MKCONFIG) $(@:_config=) avr32 at32ap atngw100 atmel at32ap700x
>  
> +hammerhead_config	:	unconfig
> +	@$(MKCONFIG) $(@:_config=) avr32 at32ap hammerhead miromico at32ap700x
> +
>  #########################################################################
>  #########################################################################
>  #########################################################################
> diff --git a/board/miromico/hammerhead/Makefile b/board/miromico/hammerhead/Makefile
> new file mode 100644
> index 0000000..c5fc67a
> --- /dev/null
> +++ b/board/miromico/hammerhead/Makefile
> @@ -0,0 +1,40 @@
> +#
> +# Copyright (C) 2008 Miromico AG
> +#
> +# See file CREDITS for list of people who contributed to this project.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License as
> +# published by the Free Software Foundation; either version 2 of
> +# the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB	:= $(obj)lib$(BOARD).a
> +
> +COBJS	:= $(BOARD).o eth.o
> +
> +SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS))
> +
> +$(LIB): $(obj).depend $(OBJS)
> +	$(AR) $(ARFLAGS) $@ $(OBJS)
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/miromico/hammerhead/config.mk b/board/miromico/hammerhead/config.mk
> new file mode 100644
> index 0000000..9a794e5
> --- /dev/null
> +++ b/board/miromico/hammerhead/config.mk
> @@ -0,0 +1,3 @@
> +TEXT_BASE		= 0x00000000
> +PLATFORM_RELFLAGS	+= -ffunction-sections -fdata-sections
> +PLATFORM_LDFLAGS	+= --gc-sections
> diff --git a/board/miromico/hammerhead/eth.c b/board/miromico/hammerhead/eth.c
> new file mode 100644
> index 0000000..969c48e
> --- /dev/null
> +++ b/board/miromico/hammerhead/eth.c
> @@ -0,0 +1,37 @@
> +/*
> + * Copyright (C) 2008 Miromico AG
> + *
> + * Ethernet initialization for the Miromico Hammerhead AVR32 board
> + *
> + * Mostly copied form Atmel ATNGW100 sources
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +#include <common.h>
> +
> +#include <asm/arch/memory-map.h>
> +
> +extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
> +
> +#ifdef CONFIG_CMD_NET
> +void board_eth_initialize(bd_t *bi)
> +{
> +	macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]);
> +}
> +#endif
> diff --git a/board/miromico/hammerhead/hammerhead.c b/board/miromico/hammerhead/hammerhead.c
> new file mode 100644
> index 0000000..69ff7fa
> --- /dev/null
> +++ b/board/miromico/hammerhead/hammerhead.c
> @@ -0,0 +1,105 @@
> +/*
> + * Copyright (C) 2008 Miromico AG
> + *
> + * Mostly copied form atmel ATNGW100 sources
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include "../cpu/at32ap/at32ap700x/sm.h"
> +
> +#include <common.h>
> +
> +#include <asm/io.h>
> +#include <asm/sdram.h>
> +#include <asm/arch/clk.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/hmatrix.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static const struct sdram_config sdram_config = {
> +	.data_bits	= SDRAM_DATA_32BIT,
> +	.row_bits	= 13,
> +	.col_bits	= 9,
> +	.bank_bits	= 2,
> +	.cas		= 3,
> +	.twr		= 2,
> +	.trc		= 7,
> +	.trp		= 2,
> +	.trcd		= 2,
> +	.tras		= 5,
> +	.txsr		= 5,
> +	/* 7.81 us */
> +	.refresh_period	= (781 * (SDRAMC_BUS_HZ / 1000)) / 100000,
> +};
> +
> +int board_early_init_f(void)
> +{
> +	/* Enable SDRAM in the EBI mux */
> +	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
> +
> +	gpio_enable_ebi();
> +	gpio_enable_usart1();
> +
> +#if defined(CONFIG_MACB)
> +	gpio_enable_macb0();
> +#endif
> +#if defined(CONFIG_MMC)
> +	gpio_enable_mmci();
> +#endif
> +
> +	/* Select GCLK3 peripheral function. We'll need it as clock output
> +	 * for ethernet PHY. */
> +	gpio_enable_gclk3();
> +	return 0;
> +}
> +
> +long int initdram(int board_type)
> +{
> +	unsigned long expected_size;
> +	unsigned long actual_size;
> +	void *sdram_base;
> +
> +	sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
> +
> +	expected_size = sdram_init(sdram_base, &sdram_config);
> +	actual_size = get_ram_size(sdram_base, expected_size);
> +
> +	unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
> +
> +	if (expected_size != actual_size)
> +		printf("Warning: Only %u of %u MiB SDRAM is working\n",
> +		       actual_size >> 20, expected_size >> 20);
> +
> +	return actual_size;
> +}
> +
> +void board_init_info(void)
> +{
> +	gd->bd->bi_phy_id[0] = 0x01;
> +}
> +
> +void gclk_init(void)

Hmm...I'm not crazy about adding another board init hook here. Can you
move this stuff into board_early_init_f()?

No, I suppose it needs to go after cpu_init()...

<looks at the stinking pile of crap called common.h>

<cringes at the number of #ifdefs in most arches' init sequence>

Not a single arch seems to implement all the board-specific initcalls.
Help, please?

> +{
> +	/* Hammerhead boards uses GCLK3 as 25MHz output to ethernet PHY */
> +
> +	/* Enable GCLK3 with no input divider, from OSC0 (crystal) */
> +	sm_writel( PM_GCCTRL(3), SM_BIT(CEN) );

In any case, please drop the extra spaces after '(' and before ')'.

> +}

> diff --git a/board/miromico/hammerhead/u-boot.lds b/board/miromico/hammerhead/u-boot.lds
> new file mode 100644
> index 0000000..e736adf
> --- /dev/null
> +++ b/board/miromico/hammerhead/u-boot.lds
> @@ -0,0 +1,73 @@
> +/* -*- Fundamental -*-
> + *
> + * Copyright (C) 2005-2006 Atmel Corporation
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
> +OUTPUT_ARCH(avr32)
> +ENTRY(_start)
> +
> +SECTIONS
> +{
> +	. = 0;
> +	_text = .;
> +	.text : {
> +		*(.exception.text)
> +		*(.text)
> +		*(.text.*)
> +	}
> +	_etext = .;
> +
> +	.rodata : {
> +		*(.rodata)
> +		*(.rodata.*)
> +	}
> +
> +	. = ALIGN(8);
> +	_data = .;
> +	.data : {
> +		*(.data)
> +		*(.data.*)
> +	}
> +
> +	. = ALIGN(4);
> +	__u_boot_cmd_start = .;
> +	.u_boot_cmd : {
> +		KEEP(*(.u_boot_cmd))
> +	}
> +	__u_boot_cmd_end = .;
> +
> +	. = ALIGN(4);
> +	_got = .;
> +	.got : {
> +		*(.got)
> +	}
> +	_egot = .;
> +
> +	. = ALIGN(8);
> +	_edata = .;
> +
> +	.bss : {
> +		*(.bss)
> +		*(.bss.*)
> +	}
> +	. = ALIGN(8);
> +	_end = .;
> +}
> diff --git a/cpu/at32ap/at32ap700x/gpio.c b/cpu/at32ap/at32ap700x/gpio.c
> index 859124a..2b7717f 100644
> --- a/cpu/at32ap/at32ap700x/gpio.c
> +++ b/cpu/at32ap/at32ap700x/gpio.c
> @@ -142,3 +142,14 @@ void gpio_enable_mmci(void)
>  	gpio_select_periph_A(GPIO_PIN_PA15, 0);	/* DATA3 */
>  }
>  #endif
> +
> +/*
> + * Hammerhead board uses GCLK3 (Periph A on PB29) as 25MHz clock output
> + * for ethernet PHY.
> + */
> +void __gpio_enable_gclk3(void)
> +{
> +	gpio_select_periph_A(GPIO_PIN_PB29, 0); /* GCLK3         */
> +}
> +
> +void gpio_enable_gclk3(void) __attribute__((weak, alias("__gpio_enable_gclk3")));

Hmm...what's the point here? I don't think there are that many ways to
enable gclk3...?

In fact, I'm sort of thinking it might be better to just open-code this
in the board file. It's only a single line of code...

> diff --git a/cpu/at32ap/at32ap700x/sm.h b/cpu/at32ap/at32ap700x/sm.h
> index 6492c8e..b6e4409 100644
> --- a/cpu/at32ap/at32ap700x/sm.h
> +++ b/cpu/at32ap/at32ap700x/sm.h
> @@ -21,7 +21,7 @@
>  #define SM_PM_IMR				0x0048
>  #define SM_PM_ISR				0x004c
>  #define SM_PM_ICR				0x0050
> -#define SM_PM_GCCTRL				0x0060
> +#define SM_PM_GCCTRL(x)				(0x0060 + 4 * x)
>  #define SM_RTC_CTRL				0x0080
>  #define SM_RTC_VAL				0x0084
>  #define SM_RTC_TOP				0x0088
> diff --git a/cpu/at32ap/cpu.c b/cpu/at32ap/cpu.c
> index 0ba8361..4a92aab 100644
> --- a/cpu/at32ap/cpu.c
> +++ b/cpu/at32ap/cpu.c
> @@ -65,6 +65,11 @@ int cpu_init(void)
>  	sysreg_write(EVBA, (unsigned long)&_evba);
>  	asm volatile("csrf	%0" : : "i"(SYSREG_EM_OFFSET));
>  
> +	if(gclk_init)
> +	{
> +		gclk_init();
> +	}
> +

Please remove the superfluous braces.

>  	return 0;
>  }
>  
> diff --git a/include/asm-avr32/arch-at32ap700x/clk.h b/include/asm-avr32/arch-at32ap700x/clk.h
> index 4a1dd33..63671db 100644
> --- a/include/asm-avr32/arch-at32ap700x/clk.h
> +++ b/include/asm-avr32/arch-at32ap700x/clk.h
> @@ -76,6 +76,7 @@ static inline unsigned long get_mci_clk_rate(void)
>  #endif
>  
>  extern void clk_init(void);
> +extern void gclk_init(void) __attribute__((weak));

Hmmm...right. An undefined weak symbol evaluates to zero...

>  /* Board code may need the SDRAM base clock as a compile-time constant */
>  #define SDRAMC_BUS_HZ	(MAIN_CLK_RATE >> CFG_CLKDIV_HSB)
> diff --git a/include/asm-avr32/arch-at32ap700x/gpio.h b/include/asm-avr32/arch-at32ap700x/gpio.h
> index b10a3e4..c350d54 100644
> --- a/include/asm-avr32/arch-at32ap700x/gpio.h
> +++ b/include/asm-avr32/arch-at32ap700x/gpio.h
> @@ -216,5 +216,8 @@ void gpio_enable_macb1(void);
>  #ifdef AT32AP700x_CHIP_HAS_MMCI
>  void gpio_enable_mmci(void);
>  #endif
> +#ifdef CONFIG_HAMMERHEAD
> +void gpio_enable_gclk3(void);
> +#endif

Please remove the #ifdef.

>  #endif /* __ASM_AVR32_ARCH_GPIO_H__ */
> diff --git a/include/configs/hammerhead.h b/include/configs/hammerhead.h
> new file mode 100644
> index 0000000..6699aea
> --- /dev/null
> +++ b/include/configs/hammerhead.h
> @@ -0,0 +1,179 @@
> +/*
> + * Copyright (C) 2008 Miromico AG
> + *
> + * Configuration settings for the Miromico Hammerhead AVR32 board
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +#define CONFIG_AVR32			1
> +#define CONFIG_AT32AP			1
> +#define CONFIG_AT32AP7000		1
> +#define CONFIG_HAMMERHEAD		1
> +
> +#define CFG_HZ				1000
> +
> +/*
> + * Set up the PLL to run at 140 MHz, the CPU to run at the PLL
> + * frequency, the HSB and PBB busses to run at 1/2 the PLL frequency
> + * and the PBA bus to run at 1/4 the PLL frequency.
> + */
> +#define CONFIG_PLL			1
> +#define CFG_POWER_MANAGER		1
> +#define CFG_OSC0_HZ			25000000  /* 25MHz crystal */
> +#define CFG_PLL0_DIV			1
> +#define CFG_PLL0_MUL			5

This gives (25000000 / 1) * 5 = 125 MHz. Please update the comment.

Sure you don't wanna crank it up to 150 MHz, btw? ;-)

> +#define CFG_PLL0_SUPPRESS_CYCLES	16
> +#define CFG_CLKDIV_CPU			0
> +#define CFG_CLKDIV_HSB			1
> +#define CFG_CLKDIV_PBA			2
> +#define CFG_CLKDIV_PBB			1
> +
> +/*
> + * The PLLOPT register controls the PLL like this:
> + *   icp = PLLOPT<2>
> + *   ivco = PLLOPT<1:0>
> + *
> + * We want icp=1 (default) and ivco=0 (80-160 MHz) or ivco=2 (150-240MHz).
> + */
> +#define CFG_PLL0_OPT			0x04
> +
> +#define CONFIG_USART1			1
> +
> +#define CONFIG_HOSTNAME			hammerhead
> +
> +/* User serviceable stuff */
> +#define CONFIG_DOS_PARTITION		1
> +
> +#define CONFIG_CMDLINE_TAG		1
> +#define CONFIG_SETUP_MEMORY_TAGS	1
> +#define CONFIG_INITRD_TAG		1
> +
> +#define CONFIG_STACKSIZE		(2048)
> +
> +#define CONFIG_BAUDRATE			115200
> +#define CONFIG_BOOTARGS							\
> +	"console=ttyS0 root=/dev/mtdblock1 rootfstype=jffs2"

It turns out that you can use "console=ttyS0 root=mtd1
rootfstype=jffs2". That's shorter and makes it possible to boot a
kernel without Block Device support.

> +#define CONFIG_BOOTCOMMAND						\
> +	"fsload; bootm"
> +
> +/*
> + * Only interrupt autoboot if <space> is pressed. Otherwise, garbage
> + * data on the serial line may interrupt the boot sequence.
> + */
> +#define CONFIG_BOOTDELAY		1
> +#define CONFIG_AUTOBOOT			1
> +#define CONFIG_AUTOBOOT_KEYED		1
> +#define CONFIG_AUTOBOOT_PROMPT				\
> +	"Press SPACE to abort autoboot in %d seconds\n"
> +#define CONFIG_AUTOBOOT_DELAY_STR	"d"
> +#define CONFIG_AUTOBOOT_STOP_STR	" "
> +
> +/*
> + * After booting the board for the first time, new ethernet address
> + * should be generated and assigned to the environment variables
> + * "ethaddr". This is normally done during production.
> + */
> +#define CONFIG_OVERWRITE_ETHADDR_ONCE	1
> +#define CONFIG_NET_MULTI		1
> +
> +/*
> + * BOOTP/DHCP options
> + */
> +#define CONFIG_BOOTP_SUBNETMASK
> +#define CONFIG_BOOTP_GATEWAY
> +
> +#define CONFIG_DOS_PARTITION		1

You've defined this before.

> +/*
> + * Command line configuration.
> + */
> +#include <config_cmd_default.h>
> +
> +#define CONFIG_CMD_ASKENV
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_EXT2
> +#define CONFIG_CMD_FAT
> +#define CONFIG_CMD_JFFS2
> +#define CONFIG_CMD_MMC
> +#undef CONFIG_CMD_FPGA
> +#undef CONFIG_CMD_SETGETDCR
> +
> +#define CONFIG_ATMEL_USART		1
> +#define CONFIG_MACB			1
> +#define CONFIG_PIO2			1
> +#define CFG_NR_PIOS			5
> +#define CFG_HSDRAMC			1
> +#define CONFIG_MMC			1
> +
> +#define CFG_DCACHE_LINESZ		32
> +#define CFG_ICACHE_LINESZ		32
> +
> +#define CONFIG_NR_DRAM_BANKS		1
> +
> +#define CFG_FLASH_CFI			1
> +#define CFG_FLASH_CFI_DRIVER		1
> +
> +#define CFG_FLASH_BASE			0x00000000
> +#define CFG_FLASH_SIZE			0x800000
> +#define CFG_MAX_FLASH_BANKS		1
> +#define CFG_MAX_FLASH_SECT		135
> +
> +#define CFG_MONITOR_BASE		CFG_FLASH_BASE
> +
> +#define CFG_INTRAM_BASE			0x24000000
> +#define CFG_INTRAM_SIZE			0x8000
> +
> +#define CFG_SDRAM_BASE			0x10000000
> +
> +#define CFG_ENV_IS_IN_FLASH		1
> +#define CFG_ENV_SIZE			65536
> +#define CFG_ENV_ADDR			(CFG_FLASH_BASE + CFG_FLASH_SIZE - CFG_ENV_SIZE)
> +
> +#define CFG_INIT_SP_ADDR		(CFG_INTRAM_BASE + CFG_INTRAM_SIZE)
> +
> +#define CFG_MALLOC_LEN			(256*1024)
> +#define CFG_MALLOC_END							\
> +	({								\
> +		DECLARE_GLOBAL_DATA_PTR;				\
> +		CFG_SDRAM_BASE + gd->sdram_size;			\
> +	})
> +#define CFG_MALLOC_START		(CFG_MALLOC_END - CFG_MALLOC_LEN)

I don't think CFG_MALLOC_END and CFG_MALLOC_START is used anywhere.
Please remove them.

> +
> +#define CFG_DMA_ALLOC_LEN		(16384)
> +
> +/* Allow 4MB for the kernel run-time image */
> +#define CFG_LOAD_ADDR			(CFG_SDRAM_BASE + 0x00400000)
> +#define CFG_BOOTPARAMS_LEN		(16 * 1024)
> +
> +/* Other configuration settings that shouldn't have to change all that often */
> +#define CFG_PROMPT			"Uboot> "

Some people think "U-Boot> " looks nicer. Or you can make it something
custom, e.g. "Hammerhead> ". It's up to you, really.

> +#define CFG_CBSIZE			256
> +#define CFG_MAXARGS			16
> +#define CFG_PBSIZE			(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
> +#define CFG_LONGHELP			1
> +
> +#define CFG_MEMTEST_START		CFG_SDRAM_BASE
> +#define CFG_MEMTEST_END			(CFG_MEMTEST_START + 0x1f00000)
> +
> +#define CFG_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
> +
> +#endif /* __CONFIG_H */
> diff --git a/net/eth.c b/net/eth.c
> index c4f24c6..054a9fd 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -65,6 +65,7 @@ extern int atngw100_eth_initialize(bd_t *);
>  extern int mcffec_initialize(bd_t*);
>  extern int mcdmafec_initialize(bd_t*);
>  extern int at91sam9_eth_initialize(bd_t *);
> +extern int board_eth_initialize(bd_t *);
>  
>  #ifdef CONFIG_API
>  extern void (*push_packet)(volatile void *, int);
> @@ -291,6 +292,9 @@ int eth_initialize(bd_t *bis)
>  #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260)
>  	at91sam9_eth_initialize(bis);
>  #endif
> +#if defined(CONFIG_HAMMERHEAD)
> +	board_eth_initialize(bis);
> +#endif

Hmm...this needs to be coordinated with Ben Warren's ethernet init
patches somehow.

If you call it "board_eth_init()" instead, we can simply chop off this
hunk when Ben's patches are in, and it will all Just Work. Hopefully.

>  
>  	if (!eth_devices) {
>  		puts ("No ethernet found.\n");

Haavard




More information about the U-Boot mailing list