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

Julien May mailinglist at miromico.ch
Wed Jul 23 16:50:30 CEST 2008


Hi & welcome back from holiday :)

According to your request...

- Julien

>From c720b04110b8bd39be704d92c1073302003b321a Mon Sep 17 00:00:00 2001
From: Julien May <julien.may at miromico.ch>
Date: Mon, 23 Jun 2008 16:44:44 +0200
Subject: [PATCH 1/1] Add support for the hammerhead (AVR32) board.

The Hammerhead platform is built around a AVR32 32-bit microcontroller from Atmel.
It offers versatile peripherals, such as ethernet, usb device, usb host etc.

The board also incooperates a power supply and is a Power over Ethernet (PoE) Powered Device (PD).

Additonally, a Cyclone III FPGA from Altera is integrated on the board. The FPGA is mapped into the
32-bit AVR memory bus. The FPGA offers two DDR2 SDRAM interfaces, which will cover even the most
exceptional need of memory bandwidth. Together with the onboard video decoder the board is ready
for video processing.

For more information see: http:///www.miromico.com/hammerhead

Signed-off-by: Julien May <mailinglist at miromico.ch>
---
 MAINTAINERS                              |    5 +++++
 board/miromico/hammerhead/eth.c          |    2 +-
 board/miromico/hammerhead/hammerhead.c   |    9 ++++-----
 cpu/at32ap/at32ap700x/gpio.c             |   11 -----------
 cpu/at32ap/cpu.c                         |    2 --
 include/asm-avr32/arch-at32ap700x/gpio.h |    3 ---
 include/configs/hammerhead.h             |   14 +++-----------
 net/eth.c                                |    4 ++--
 8 files changed, 15 insertions(+), 35 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 2d8fd58..fd39b26 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -698,6 +698,11 @@ Haavard Skinnemoen <hskinnemoen at atmel.com>
 	ATSTK1006		AT32AP7000
 	ATNGW100		AT32AP7000
 
+Alex Raimondi <alex.raimondi at miromico.ch>
+Julien May <julien.may at miromico.ch>
+
+	HAMMERHEAD		AT32AP7000
+
 #########################################################################
 # SuperH Systems:							#
 #									#
diff --git a/board/miromico/hammerhead/eth.c b/board/miromico/hammerhead/eth.c
index 969c48e..056e9ca 100644
--- a/board/miromico/hammerhead/eth.c
+++ b/board/miromico/hammerhead/eth.c
@@ -30,7 +30,7 @@
 extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
 
 #ifdef CONFIG_CMD_NET
-void board_eth_initialize(bd_t *bi)
+void board_eth_init(bd_t *bi)
 {
 	macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]);
 }
diff --git a/board/miromico/hammerhead/hammerhead.c b/board/miromico/hammerhead/hammerhead.c
index 69ff7fa..26d1182 100644
--- a/board/miromico/hammerhead/hammerhead.c
+++ b/board/miromico/hammerhead/hammerhead.c
@@ -64,10 +64,6 @@ int board_early_init_f(void)
 #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;
 }
 
@@ -100,6 +96,9 @@ void gclk_init(void)
 {
 	/* Hammerhead boards uses GCLK3 as 25MHz output to ethernet PHY */
 
+	/* Select GCLK3 peripheral function */
+	gpio_select_periph_A(GPIO_PIN_PB29, 0);
+
 	/* Enable GCLK3 with no input divider, from OSC0 (crystal) */
-	sm_writel( PM_GCCTRL(3), SM_BIT(CEN) );
+	sm_writel(PM_GCCTRL(3), SM_BIT(CEN));
 }
diff --git a/cpu/at32ap/at32ap700x/gpio.c b/cpu/at32ap/at32ap700x/gpio.c
index 2b7717f..859124a 100644
--- a/cpu/at32ap/at32ap700x/gpio.c
+++ b/cpu/at32ap/at32ap700x/gpio.c
@@ -142,14 +142,3 @@ 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")));
diff --git a/cpu/at32ap/cpu.c b/cpu/at32ap/cpu.c
index 4a92aab..1a13702 100644
--- a/cpu/at32ap/cpu.c
+++ b/cpu/at32ap/cpu.c
@@ -66,9 +66,7 @@ int cpu_init(void)
 	asm volatile("csrf	%0" : : "i"(SYSREG_EM_OFFSET));
 
 	if(gclk_init)
-	{
 		gclk_init();
-	}
 
 	return 0;
 }
diff --git a/include/asm-avr32/arch-at32ap700x/gpio.h b/include/asm-avr32/arch-at32ap700x/gpio.h
index c350d54..b10a3e4 100644
--- a/include/asm-avr32/arch-at32ap700x/gpio.h
+++ b/include/asm-avr32/arch-at32ap700x/gpio.h
@@ -216,8 +216,5 @@ 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
 
 #endif /* __ASM_AVR32_ARCH_GPIO_H__ */
diff --git a/include/configs/hammerhead.h b/include/configs/hammerhead.h
index 6699aea..70123f7 100644
--- a/include/configs/hammerhead.h
+++ b/include/configs/hammerhead.h
@@ -38,7 +38,7 @@
  */
 #define CONFIG_PLL			1
 #define CFG_POWER_MANAGER		1
-#define CFG_OSC0_HZ			25000000  /* 25MHz crystal */
+#define CFG_OSC0_HZ			25000000  /* 25MHz crystal -> 125MHz clock */
 #define CFG_PLL0_DIV			1
 #define CFG_PLL0_MUL			5
 #define CFG_PLL0_SUPPRESS_CYCLES	16
@@ -71,7 +71,7 @@
 
 #define CONFIG_BAUDRATE			115200
 #define CONFIG_BOOTARGS							\
-	"console=ttyS0 root=/dev/mtdblock1 rootfstype=jffs2"
+	"console=ttyS0 root=mtd1 rootfstype=jffs2"
 #define CONFIG_BOOTCOMMAND						\
 	"fsload; bootm"
 
@@ -101,8 +101,6 @@
 #define CONFIG_BOOTP_SUBNETMASK
 #define CONFIG_BOOTP_GATEWAY
 
-#define CONFIG_DOS_PARTITION		1
-
 /*
  * Command line configuration.
  */
@@ -151,12 +149,6 @@
 #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)
 
 #define CFG_DMA_ALLOC_LEN		(16384)
 
@@ -165,7 +157,7 @@
 #define CFG_BOOTPARAMS_LEN		(16 * 1024)
 
 /* Other configuration settings that shouldn't have to change all that often */
-#define CFG_PROMPT			"Uboot> "
+#define CFG_PROMPT			"Hammerhead> "
 #define CFG_CBSIZE			256
 #define CFG_MAXARGS			16
 #define CFG_PBSIZE			(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
diff --git a/net/eth.c b/net/eth.c
index 054a9fd..2d6f15f 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -65,7 +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 *);
+extern int board_eth_init(bd_t *);
 
 #ifdef CONFIG_API
 extern void (*push_packet)(volatile void *, int);
@@ -293,7 +293,7 @@ int eth_initialize(bd_t *bis)
 	at91sam9_eth_initialize(bis);
 #endif
 #if defined(CONFIG_HAMMERHEAD)
-	board_eth_initialize(bis);
+	board_eth_init(bis);
 #endif
 
 	if (!eth_devices) {
-- 
1.5.5.GIT


On Wed, 23 Jul 2008, Haavard Skinnemoen wrote:

> Julien May <mailinglist at miromico.ch> wrote:
> >  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 +
> 
> I was just going to rebase and fold the hammerhead patch to prepare it
> for the next merge window when I noticed that MAINTAINERS isn't updated.
> 
> Can you send me a patch adding yourself to MAINTAINERS, assuming you're
> the one that will be maintaining this board?
> 
> Haavard
> 




More information about the U-Boot mailing list