[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