]> git.sur5r.net Git - u-boot/commitdiff
avr32: Use board_postclk_init instead of gclk_init
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Sun, 31 Aug 2008 16:24:24 +0000 (18:24 +0200)
committerHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Mon, 1 Sep 2008 12:21:34 +0000 (14:21 +0200)
Replace the avr32-specific gclk_init() board hook with the standard
board_postclk_init() hook which is supposed to run at the same point
during initialization.

Provide a dummy weak alias for boards not implementing this hook. The
cost of this is:
  - 2 bytes for the dummy function (retal 0)
  - 2 bytes for each unnecessary function call (short rcall)

which is a pretty small price to pay for avoiding lots of #ifdef
clutter. In this particular case, all boards probably end up slightly
smaller because we avoid the conditional checking if the gclk_init
symbol is NULL.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
board/miromico/hammerhead/hammerhead.c
cpu/at32ap/cpu.c
include/asm-avr32/arch-at32ap700x/clk.h
lib_avr32/board.c

index bf432cba85a35db041a61161236659b424fba127..8670527891eda4e03f8e3f55170c7e2158e9c764 100644 (file)
@@ -100,9 +100,10 @@ void board_init_info(void)
        gd->bd->bi_phy_id[0] = 0x01;
 }
 
-void gclk_init(void)
+int board_postclk_init(void)
 {
        /* Hammerhead boards uses GCLK3 as 25MHz output to ethernet PHY */
        gclk_enable_output(3, PORTMUX_DRIVE_LOW);
        gclk_set_rate(3, GCLK_PARENT_OSC0, 25000000);
+       return 0;
 }
index 1a1370289d585d5f6a0dda663cd8b60a260f16ed..0ba836180e4396f61891f76f7dda42ac64717edf 100644 (file)
@@ -65,9 +65,6 @@ int cpu_init(void)
        sysreg_write(EVBA, (unsigned long)&_evba);
        asm volatile("csrf      %0" : : "i"(SYSREG_EM_OFFSET));
 
-       if(gclk_init)
-               gclk_init();
-
        return 0;
 }
 
index b2710a4ba8584f2a0a765177a75f4e04a9c58854..21545a3c1855cdb546db3172007734418407d674 100644 (file)
@@ -84,7 +84,6 @@ static inline unsigned long get_spi_clk_rate(unsigned int dev_id)
 #endif
 
 extern void clk_init(void);
-extern void gclk_init(void) __attribute__((weak));
 
 /* Board code may need the SDRAM base clock as a compile-time constant */
 #define SDRAMC_BUS_HZ  (MAIN_CLK_RATE >> CFG_CLKDIV_HSB)
index d6423d4f3f91b5316507a22e4735e7cb42781cbe..19d76d2cacc1b9a64a4733dd01d914f44ca6e17b 100644 (file)
@@ -47,6 +47,13 @@ static unsigned long mem_malloc_start = 0;
 static unsigned long mem_malloc_end = 0;
 static unsigned long mem_malloc_brk = 0;
 
+/* Weak aliases for optional board functions */
+static int __do_nothing(void)
+{
+       return 0;
+}
+int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
+
 /* The malloc area is right below the monitor image in RAM */
 static void mem_malloc_init(void)
 {
@@ -187,6 +194,7 @@ void board_init_f(ulong board_type)
        /* Perform initialization sequence */
        board_early_init_f();
        cpu_init();
+       board_postclk_init();
        env_init();
        init_baudrate();
        serial_init();