From: Piotr Dymacz Date: Fri, 13 Nov 2015 02:01:44 +0000 (+0100) Subject: Some code cleans and formatting fixes X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f1b0554c129010319ee721d072a21ea3658eb5be;p=oweals%2Fu-boot_mod.git Some code cleans and formatting fixes Includes: - cleaning in ap121.c and db12x.c (remove unused code, formatting) - get rid of board related stuff in board.c, formating, minor changes - formating and minor changes in bootstrap_board.c - add some missing functions definitions in common.h header --- diff --git a/u-boot/board/ar7240/ap121/ap121.c b/u-boot/board/ar7240/ap121/ap121.c index 9ae5c40..12c213d 100644 --- a/u-boot/board/ar7240/ap121/ap121.c +++ b/u-boot/board/ar7240/ap121/ap121.c @@ -1,9 +1,9 @@ +#include #include #include #include #include -#include -#include + #include "ar7240_soc.h" #if !defined(COMPRESSED_UBOOT) @@ -15,7 +15,8 @@ extern void hornet_ddr_tap_init(void); #define SETBITVAL(val, pos, bit) do {ulong bitval = (bit) ? 0x1 : 0x0; (val) = ((val) & ~(0x1 << (pos))) | ( (bitval) << (pos));} while(0) -void led_toggle(void){ +void led_toggle(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR7240_GPIO_OUT); @@ -49,7 +50,8 @@ void led_toggle(void){ ar7240_reg_wr(AR7240_GPIO_OUT, gpio); } -void all_led_on(void){ +void all_led_on(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR7240_GPIO_OUT); @@ -106,7 +108,8 @@ void all_led_on(void){ ar7240_reg_wr(AR7240_GPIO_OUT, gpio); } -void all_led_off(void){ +void all_led_off(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR7240_GPIO_OUT); @@ -167,7 +170,8 @@ void all_led_off(void){ #ifndef GPIO_RST_BUTTON_BIT #error "GPIO_RST_BUTTON_BIT not defined!" #endif -int reset_button_status(void){ +int reset_button_status(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR7240_GPIO_IN); @@ -187,29 +191,30 @@ int reset_button_status(void){ } } -void gpio_config(void){ +int gpio_init(void) +{ #if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) - /* Disable clock obs - * clk_obs1(gpio13/bit8), clk_obs2(gpio14/bit9), clk_obs3(gpio15/bit10), - * clk_obs4(gpio16/bit11), clk_obs5(gpio17/bit12) - * clk_obs0(gpio1/bit19), 6(gpio11/bit20) - */ - ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) & ~((0x1f<<8)|(0x3<<19)))); + /* Disable clock obs + * clk_obs1(gpio13/bit8), clk_obs2(gpio14/bit9), clk_obs3(gpio15/bit10), + * clk_obs4(gpio16/bit11), clk_obs5(gpio17/bit12) + * clk_obs0(gpio1/bit19), 6(gpio11/bit20) + */ + ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) & ~((0x1f<<8)|(0x3<<19)))); - /* Enable eth Switch LEDs */ - ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) | (0x1f<<3))); + /* Enable eth Switch LEDs */ + ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) | (0x1f<<3))); - //Turn on status leds: - //set output enable - ar7240_reg_wr(AR7240_GPIO_OE, (ar7240_reg_rd(AR7240_GPIO_OE) |(1<<0))); + //Turn on status leds: + //set output enable + ar7240_reg_wr(AR7240_GPIO_OE, (ar7240_reg_rd(AR7240_GPIO_OE) |(1<<0))); - //set WLAN LED output to low (reverse polarity LED) - //ar7240_reg_wr(AR7240_GPIO_CLEAR, (1<<0)); + //set WLAN LED output to low (reverse polarity LED) + //ar7240_reg_wr(AR7240_GPIO_CLEAR, (1<<0)); - /* Clear AR7240_GPIO_FUNC BIT2 to ensure that software can control LED5(GPIO16) and LED6(GPIO17) */ - ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) & ~(0x1<<2))); + /* Clear AR7240_GPIO_FUNC BIT2 to ensure that software can control LED5(GPIO16) and LED6(GPIO17) */ + ar7240_reg_wr(AR7240_GPIO_FUNC, (ar7240_reg_rd(AR7240_GPIO_FUNC) & ~(0x1<<2))); #else /* Disable clock obs * clk_obs1(gpio13/bit8), clk_obs2(gpio14/bit9), clk_obs3(gpio15/bit10), @@ -415,9 +420,11 @@ void gpio_config(void){ #else #error "Custom GPIO config in gpio_config() not defined!" #endif + return 0; } -int ar7240_mem_config(void){ +int ar7240_mem_config(void) +{ #ifndef CONFIG_SKIP_LOWLEVEL_INIT #ifndef COMPRESSED_UBOOT hornet_ddr_init(); @@ -428,7 +435,6 @@ int ar7240_mem_config(void){ ar7240_reg_wr(AR7240_DDR_TAP_CONTROL1, CFG_DDR_TAP1_VAL); #endif - gpio_config(); all_led_off(); #ifndef CONFIG_SKIP_LOWLEVEL_INIT @@ -436,51 +442,10 @@ int ar7240_mem_config(void){ #endif // return memory size - return(ar7240_ddr_find_size()); + return ar7240_ddr_find_size(); } -long int initdram(){ - return((long int)ar7240_mem_config()); -} - -#ifndef COMPRESSED_UBOOT -int checkboard(void){ - printf(BOARD_CUSTOM_STRING"\n\n"); - return(0); -} -#endif - -/* - * Returns a string with memory type preceded by a space sign - */ -const char* print_mem_type(void){ -/* - * WR720N v3 (CH version) has wrong bootstrap configuration, - * so the memory type cannot be recognized automatically - */ -#if defined(CONFIG_FOR_TPLINK_WR720N_V3) - return " DDR 16-bit"; -#else - unsigned int reg_val; - - reg_val = (ar7240_reg_rd(HORNET_BOOTSTRAP_STATUS) & HORNET_BOOTSTRAP_MEM_TYPE_MASK) >> HORNET_BOOTSTRAP_MEM_TYPE_SHIFT; - - switch(reg_val){ - case 0: - return " SDRAM"; - break; - - case 1: - return " DDR 16-bit"; - break; - - case 2: - return " DDR2 16-bit"; - break; - - default: - return ""; - break; - } -#endif /* defined(CONFIG_FOR_TPLINK_WR720N_V3) */ +long int dram_init() +{ + return (long int)ar7240_mem_config(); } diff --git a/u-boot/board/ar7240/db12x/db12x.c b/u-boot/board/ar7240/db12x/db12x.c index 08d6234..6967bde 100644 --- a/u-boot/board/ar7240/db12x/db12x.c +++ b/u-boot/board/ar7240/db12x/db12x.c @@ -11,7 +11,8 @@ extern int ar7240_ddr_find_size(void); #define SETBITVAL(val, pos, bit) do {ulong bitval = (bit) ? 0x1 : 0x0; (val) = ((val) & ~(0x1 << (pos))) | ( (bitval) << (pos));} while(0) -void led_toggle(void){ +void led_toggle(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR934X_GPIO_OUT); @@ -29,7 +30,8 @@ void led_toggle(void){ ar7240_reg_wr(AR934X_GPIO_OUT, gpio); } -void all_led_on(void){ +void all_led_on(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR934X_GPIO_OUT); @@ -81,7 +83,8 @@ void all_led_on(void){ ar7240_reg_wr(AR934X_GPIO_OUT, gpio); } -void all_led_off(void){ +void all_led_off(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR934X_GPIO_OUT); @@ -137,27 +140,29 @@ void all_led_off(void){ #ifndef GPIO_RST_BUTTON_BIT #error "GPIO_RST_BUTTON_BIT not defined!" #endif -int reset_button_status(void){ +int reset_button_status(void) +{ unsigned int gpio; gpio = ar7240_reg_rd(AR934X_GPIO_IN); if(gpio & (1 << GPIO_RST_BUTTON_BIT)){ #if defined(GPIO_RST_BUTTON_IS_ACTIVE_LOW) - return(0); + return 0; #else - return(1); + return 1; #endif } else { #if defined(GPIO_RST_BUTTON_IS_ACTIVE_LOW) - return(1); + return 1; #else - return(0); + return 0; #endif } } -void ath_set_tuning_caps(void){ +void ath_set_tuning_caps(void) +{ typedef struct { u_int8_t pad[0x28]; u_int8_t params_for_tuning_caps[2]; @@ -189,7 +194,8 @@ void ath_set_tuning_caps(void){ return; } -int wasp_mem_config(void){ +int wasp_mem_config(void) +{ #ifndef CONFIG_SKIP_LOWLEVEL_INIT unsigned int reg32; @@ -212,47 +218,15 @@ int wasp_mem_config(void){ #endif // return memory size - return(ar7240_ddr_find_size()); + return ar7240_ddr_find_size(); } -long int initdram(){ - return((long int)wasp_mem_config()); +int gpio_init(void) +{ + return 0; } -#ifndef COMPRESSED_UBOOT -int checkboard(void){ - printf(BOARD_CUSTOM_STRING"\n\n"); - return(0); +long int dram_init() +{ + return (long int)wasp_mem_config(); } -#endif - -/* - * Returns a string with memory type preceded by a space sign - */ -const char* print_mem_type(void){ - unsigned int reg; - - reg = ar7240_reg_rd(WASP_BOOTSTRAP_REG); - - // if SDRAM is disabled -> we are using DDR - if(reg & WASP_BOOTSTRAP_SDRAM_DISABLE_MASK){ - - // 1 -> DDR1 - if(reg & WASP_BOOTSTRAP_DDR_SELECT_MASK){ - if(reg & WASP_BOOTSTRAP_DDR_WIDTH_MASK){ - return " DDR 32-bit"; - } else { - return " DDR 16-bit"; - } - } else { - if(reg & WASP_BOOTSTRAP_DDR_WIDTH_MASK){ - return " DDR2 32-bit"; - } else { - return " DDR2 16-bit"; - } - } - - } else { - return " SDRAM"; - } -} \ No newline at end of file diff --git a/u-boot/include/common.h b/u-boot/include/common.h index 06f1ffc..2274b04 100644 --- a/u-boot/include/common.h +++ b/u-boot/include/common.h @@ -164,8 +164,16 @@ typedef void (interrupt_handler_t)(void *); void hang(void) __attribute__ ((noreturn)); /* */ -long int initdram(void); -void print_size(ulong, const char *); +long int dram_init(void); +int timer_init(void); +int gpio_init(void); +void all_led_on(void); +void all_led_off(void); +void print_size(ulong, const char *); +void print_board_info(void); +void macaddr_init(unsigned char *); +void flash_print_name(void); +unsigned int main_cpu_clk(void); /* common/main.c */ void main_loop (void); diff --git a/u-boot/lib_bootstrap/bootstrap_board.c b/u-boot/lib_bootstrap/bootstrap_board.c index 25e160a..c39048d 100644 --- a/u-boot/lib_bootstrap/bootstrap_board.c +++ b/u-boot/lib_bootstrap/bootstrap_board.c @@ -31,14 +31,16 @@ #include #include "LzmaWrapper.h" -//#define DEBUG_ENABLE_BOOTSTRAP_PRINTF +/*#define DEBUG_ENABLE_BOOTSTRAP_PRINTF*/ DECLARE_GLOBAL_DATA_PTR; -#if (((CFG_ENV_ADDR+CFG_ENV_SIZE) < BOOTSTRAP_CFG_MONITOR_BASE) || (CFG_ENV_ADDR >= (BOOTSTRAP_CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || defined(CFG_ENV_IS_IN_NVRAM) -#define TOTAL_MALLOC_LEN (CFG_MALLOC_LEN + CFG_ENV_SIZE) +#if (((CFG_ENV_ADDR+CFG_ENV_SIZE) < BOOTSTRAP_CFG_MONITOR_BASE) || \ + (CFG_ENV_ADDR >= (BOOTSTRAP_CFG_MONITOR_BASE + CFG_MONITOR_LEN))) \ + || defined(CFG_ENV_IS_IN_NVRAM) + #define TOTAL_MALLOC_LEN (CFG_MALLOC_LEN + CFG_ENV_SIZE) #else -#define TOTAL_MALLOC_LEN CFG_MALLOC_LEN + #define TOTAL_MALLOC_LEN CFG_MALLOC_LEN #endif #undef DEBUG @@ -60,9 +62,9 @@ static ulong mem_malloc_brk; /* * The Malloc area is immediately below the monitor copy in DRAM */ -static void mem_malloc_init(ulong dest_addr){ -// ulong dest_addr = BOOTSTRAP_CFG_MONITOR_BASE + gd->reloc_off; - +static void mem_malloc_init(ulong dest_addr) +{ + /* ulong dest_addr = BOOTSTRAP_CFG_MONITOR_BASE + gd->reloc_off; */ mem_malloc_end = dest_addr; mem_malloc_start = dest_addr - TOTAL_MALLOC_LEN; mem_malloc_brk = mem_malloc_start; @@ -70,29 +72,32 @@ static void mem_malloc_init(ulong dest_addr){ memset((void *)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start); } -void *malloc(unsigned int size){ - if(size < (mem_malloc_end - mem_malloc_start)){ +void *malloc(unsigned int size) +{ + if (size < (mem_malloc_end - mem_malloc_start)) { mem_malloc_start += size; - - return((void *)(mem_malloc_start - size)); + return (void *)(mem_malloc_start - size); } - return(NULL); + return NULL; } -void *realloc(void *src, unsigned int size){ - return(NULL); +void *realloc(void *src, unsigned int size) +{ + return NULL; } -void free(void *src){ +void free(void *src) +{ return; } -static int init_func_ram(void){ - if((gd->ram_size = initdram()) > 0){ - return(0); - } - return(1); +static int init_func_ram(void) +{ + if ((gd->ram_size = dram_init()) > 0) + return 0; + + return 1; } /* @@ -118,53 +123,50 @@ static int init_func_ram(void){ typedef int(init_fnc_t)(void); init_fnc_t *init_sequence[] = { timer_init, - init_func_ram, - NULL, }; + init_func_ram, + NULL, }; -void bootstrap_board_init_f(ulong bootflag){ +void bootstrap_board_init_f(ulong bootflag) +{ gd_t gd_data, *id; bd_t *bd; init_fnc_t **init_fnc_ptr; ulong addr, addr_sp, len = (ulong)&uboot_end_bootstrap - BOOTSTRAP_CFG_MONITOR_BASE; ulong *s; - /* Pointer is writable since we allocated a register for it. - */ + /* Pointer is writable since we allocated a register for it */ gd = &gd_data; - /* compiler optimization barrier needed for GCC >= 3.4 */ + /* Compiler optimization barrier needed for GCC >= 3.4 */ __asm__ __volatile__("": : :"memory"); memset((void *)gd, 0, sizeof(gd_t)); - for(init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr){ - if((*init_fnc_ptr)() != 0){ + for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { + if ((*init_fnc_ptr)() != 0) hang(); - } } /* * Now that we have DRAM mapped and working, we can - * relocate the code and continue running from DRAM. + * relocate the code and continue running from DRAM */ addr = CFG_SDRAM_BASE + gd->ram_size; /* - * We can reserve some RAM "on top" here. - * round down to next 4 kB limit. + * We can reserve some RAM "on top" here, + * round down to next 4 kB limit */ addr &= ~(4096 - 1); /* - * Reserve memory for U-Boot code, data & bss + * Reserve memory for U-Boot code, data & bss, * round down to next 16 kB limit */ addr -= len; addr &= ~(16 * 1024 - 1); - /* - * Reserve memory for malloc() arena. - */ + /* Reserve memory for malloc() arena */ addr_sp = addr - TOTAL_MALLOC_LEN; /* @@ -178,17 +180,15 @@ void bootstrap_board_init_f(ulong bootflag){ addr_sp -= sizeof(gd_t); id = (gd_t *)addr_sp; - /* - * Reserve memory for boot params. - */ + /* Reserve memory for boot params */ addr_sp -= CFG_BOOTPARAMS_LEN; bd->bi_boot_params = addr_sp; /* - * Finally, we set up a new (bigger) stack. + * Finally, we set up a new (bigger) stack * - * Leave some safety gap for SP, force alignment on 16 byte boundary - * Clear initial stack frame + * Leave some safety gap for SP, force alignment on 16 byte boundary, + * clear initial stack frame */ addr_sp -= 16; addr_sp &= ~0xF; @@ -198,15 +198,16 @@ void bootstrap_board_init_f(ulong bootflag){ addr_sp = (ulong)s; /* - * Save local variables to board info struct + * Save local variables to board info struct: + * - start of DRAM memory + * - size of DRAM memory in bytes */ - bd->bi_memstart = CFG_SDRAM_BASE; /* start of DRAM memory */ - bd->bi_memsize = gd->ram_size; /* size of DRAM memory in bytes */ + bd->bi_memstart = CFG_SDRAM_BASE; + bd->bi_memsize = gd->ram_size; memcpy(id, (void *)gd, sizeof(gd_t)); bootstrap_relocate_code(addr_sp, id, addr); - /* NOTREACHED - relocate_code() does not return */ } @@ -219,7 +220,8 @@ void bootstrap_board_init_f(ulong bootflag){ * ************************************************************************ */ -void bootstrap_board_init_r(gd_t *id, ulong dest_addr){ +void bootstrap_board_init_r(gd_t *id, ulong dest_addr) +{ int i; ulong addr; ulong data, len, checksum; @@ -228,15 +230,14 @@ void bootstrap_board_init_r(gd_t *id, ulong dest_addr){ unsigned int destLen; int (*fn)(int); - /* initialize malloc() area */ + /* Initialize malloc() area */ mem_malloc_init(dest_addr); addr = (ulong)((char *)(BOOTSTRAP_CFG_MONITOR_BASE + ((ulong)&uboot_end_data_bootstrap - dest_addr))); memmove(&header, (char *)addr, sizeof(image_header_t)); - if(ntohl(hdr->ih_magic) != IH_MAGIC){ + if (ntohl(hdr->ih_magic) != IH_MAGIC) return; - } data = (ulong)&header; len = sizeof(image_header_t); @@ -244,9 +245,8 @@ void bootstrap_board_init_r(gd_t *id, ulong dest_addr){ checksum = ntohl(hdr->ih_hcrc); hdr->ih_hcrc = 0; - if(tinf_crc32((unsigned char *)data, len) != checksum){ + if (tinf_crc32((unsigned char *)data, len) != checksum) return; - } data = addr + sizeof(image_header_t); len = ntohl(hdr->ih_size); @@ -261,10 +261,8 @@ void bootstrap_board_init_r(gd_t *id, ulong dest_addr){ #ifdef CONFIG_LZMA i = lzma_inflate((unsigned char *)data, len, (unsigned char*)ntohl(hdr->ih_load), (int *)&destLen); - if(i != LZMA_RESULT_OK){ - //do_reset(cmdtp, flag, argc, argv); + if (i != LZMA_RESULT_OK) return; - } #endif fn = (void *)ntohl(hdr->ih_load); @@ -274,6 +272,8 @@ void bootstrap_board_init_r(gd_t *id, ulong dest_addr){ hang(); } -void hang(void){ - for(;;); +void hang(void) +{ + for (;;) + ; } diff --git a/u-boot/lib_mips/board.c b/u-boot/lib_mips/board.c index 5577459..1350239 100644 --- a/u-boot/lib_mips/board.c +++ b/u-boot/lib_mips/board.c @@ -30,46 +30,34 @@ #include #include #include -#include "ar7240_soc.h" -#include "../board/ar7240/common/ar7240_flash.h" DECLARE_GLOBAL_DATA_PTR; -//#define BOARD_DEBUG +/*#define BOARD_DEBUG*/ -#if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || (CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || defined(CFG_ENV_IS_IN_NVRAM) -#define TOTAL_MALLOC_LEN (CFG_MALLOC_LEN + CFG_ENV_SIZE) +#if (((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ + (CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN))) \ + || defined(CFG_ENV_IS_IN_NVRAM) + #define TOTAL_MALLOC_LEN (CFG_MALLOC_LEN + CFG_ENV_SIZE) #else -#define TOTAL_MALLOC_LEN CFG_MALLOC_LEN + #define TOTAL_MALLOC_LEN CFG_MALLOC_LEN #endif -#define CHECK_BIT(var,pos) ((var) & (1<<(pos))) - extern ulong uboot_end_data; extern ulong uboot_end; -extern int timer_init(void); - -extern void all_led_on(void); -extern void all_led_off(void); -extern const char* print_mem_type(void); -#ifdef CONFIG_WASP -extern void ar7240_sys_frequency(u32 *cpu_freq, u32 *ddr_freq, u32 *ahb_freq); -#else -extern void ar933x_sys_frequency(u32 *cpu_freq, u32 *ddr_freq, u32 *ahb_freq); -#endif - ulong monitor_flash_len; -const char version_string[] = U_BOOT_VERSION" (" __DATE__ ", " __TIME__ ")"; +const char version_string[] = U_BOOT_VERSION; -// Begin and End of memory area for malloc(), and current "brk" +/* Begin and end of memory area for malloc(), and current "brk" */ static ulong mem_malloc_start; static ulong mem_malloc_end; static ulong mem_malloc_brk; -// The Malloc area is immediately below the monitor copy in DRAM -static void mem_malloc_init(void){ +/* The Malloc area is immediately below the monitor copy in DRAM */ +static void mem_malloc_init(void) +{ ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off; mem_malloc_end = dest_addr; @@ -79,60 +67,64 @@ static void mem_malloc_init(void){ memset((void *)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start); } -void *sbrk(ptrdiff_t increment){ +void *sbrk(ptrdiff_t increment) +{ ulong old = mem_malloc_brk; ulong new = old + increment; - if((new < mem_malloc_start) || (new > mem_malloc_end)){ + if ((new < mem_malloc_start) || (new > mem_malloc_end)) { printf("## Error: sbrk: out of memory (%d requested > %d available)\n", - increment, mem_malloc_end - old); - return((void*)MORECORE_FAILURE); + increment, mem_malloc_end - old); + + return (void*)MORECORE_FAILURE; } + mem_malloc_brk = new; - return((void *)old); + + return (void *)old; } -static int display_banner(void){ -#ifndef CONFIG_SKIP_LOWLEVEL_INIT - printf("\n\n*********************************************\n* %s *\n*********************************************\n\n", version_string); -#else - printf("\n\n*********************************************\n"); - printf("* *\n"); - printf("* RAM VERSION *\n"); - printf("* *\n"); - printf("*********************************************\n* %s *\n*********************************************\n\n", version_string); +static int display_banner(void) +{ + puts("\n"); + +#ifdef CONFIG_SKIP_LOWLEVEL_INIT + puts("\n***************************************" + "\n* *" + "\n* RAM VERSION *" + "\n* *"); #endif - return(0); + + printf("\n***************************************" + "\n* %s *" + "\n* " __DATE__ ", " __TIME__ " *" + "\n***************************************\n\n", + version_string); + + return 0; } -static int init_baudrate(void){ +static int baudrate_init(void) +{ char *s; - if((s = getenv("baudrate")) != NULL){ + if ((s = getenv("baudrate")) != NULL) { gd->baudrate = simple_strtoul(s, NULL, 10); } else { gd->baudrate = CONFIG_BAUDRATE; } - return(0); + + return 0; } #ifndef COMPRESSED_UBOOT -static int init_func_ram(void){ - puts("DRAM: "); - - if((gd->ram_size = initdram()) > 0){ -#ifndef CONFIG_SKIP_LOWLEVEL_INIT - print_size(gd->ram_size, print_mem_type()); -#else - // TODO: fix me! - print_size(gd->ram_size + 1024*1024, print_mem_type()); -#endif - puts("\n"); - return(0); - } +static int init_func_ram(void) +{ + if ((gd->ram_size = dram_init()) > 0) + return 0; puts("## Error on RAM initialization!\n"); - return(1); + return 1; } #endif @@ -160,21 +152,22 @@ typedef int(init_fnc_t)(void); #ifndef COMPRESSED_UBOOT init_fnc_t *init_sequence[] = { timer_init, - env_init, /* initialize environment */ - init_baudrate, /* initialze baudrate settings */ - serial_init, /* serial communications setup */ - console_init_f, - display_banner, /* say that we are here */ - checkboard, - init_func_ram, - NULL, }; + env_init, + baudrate_init, + gpio_init, + serial_init, + console_init_f, + display_banner, + init_func_ram, + NULL, }; #else -init_fnc_t *init_sequence[] = { env_init, /* initialize environment */ - init_baudrate, /* initialze baudrate settings */ - serial_init, /* serial communications setup */ - console_init_f, /* initialize console */ - display_banner, /* say that we are here -> print baner */ - NULL, }; +init_fnc_t *init_sequence[] = { env_init, + baudrate_init, + gpio_init, + serial_init, + console_init_f, + display_banner, + NULL, }; #endif /* @@ -182,51 +175,41 @@ init_fnc_t *init_sequence[] = { env_init, /* initialize environment */ * BOARD INITIALIZATION * */ -void board_init_f(ulong bootflag){ +void board_init_f(ulong bootflag) +{ gd_t gd_data, *id; bd_t *bd; init_fnc_t **init_fnc_ptr; ulong addr, addr_sp, len = (ulong)&uboot_end - CFG_MONITOR_BASE; ulong *s; - // Pointer is writable since we allocated a register for it. + /* Pointer is writable since we allocated a register for it */ gd = &gd_data; - /* compiler optimization barrier needed for GCC >= 3.4 */ + /* Compiler optimization barrier needed for GCC >= 3.4 */ __asm__ __volatile__("": : :"memory"); memset((void *)gd, 0, sizeof(gd_t)); - // loop trough init_sequence - for(init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr){ - if((*init_fnc_ptr)() != 0){ + /* Loop trough init_sequence */ + for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { + if ((*init_fnc_ptr)() != 0) hang(); - } } #ifdef COMPRESSED_UBOOT - // print BOARD_CUSTOM_STRING - puts(BOARD_CUSTOM_STRING"\n\n"); - - // count ram size and print it gd->ram_size = bootflag; - puts("DRAM: "); - print_size(gd->ram_size, print_mem_type()); - puts("\n"); #endif /* * Now that we have DRAM mapped and working, we can - * relocate the code and continue running from DRAM. + * relocate the code and continue running from DRAM */ addr = CFG_SDRAM_BASE + gd->ram_size; /* - * We can reserve some RAM "on top" here. - */ - - /* - * round down to next 4 kB limit. + * We can reserve some RAM "on top" here, + * round down to next 4 kB limit */ addr &= ~(4096 - 1); @@ -235,7 +218,7 @@ void board_init_f(ulong bootflag){ #endif /* - * Reserve memory for U-Boot code, data & bss + * Reserve memory for U-Boot code, data & bss, * round down to next 16 kB limit */ addr -= len; @@ -245,9 +228,7 @@ void board_init_f(ulong bootflag){ printf("Reserving %ldk for U-Boot at: %08lX\n", len >> 10, addr); #endif - /* - * Reserve memory for malloc() arena. - */ + /* Reserve memory for malloc() arena */ addr_sp = addr - TOTAL_MALLOC_LEN; #ifdef BOARD_DEBUG @@ -273,8 +254,7 @@ void board_init_f(ulong bootflag){ printf("Reserving %d Bytes for Global Data at: %08lX\n", sizeof(gd_t), addr_sp); #endif - /* Reserve memory for boot params. - */ + /* Reserve memory for boot params */ addr_sp -= CFG_BOOTPARAMS_LEN; bd->bi_boot_params = addr_sp; @@ -283,10 +263,10 @@ void board_init_f(ulong bootflag){ #endif /* - * Finally, we set up a new (bigger) stack. + * Finally, we set up a new (bigger) stack * - * Leave some safety gap for SP, force alignment on 16 byte boundary - * Clear initial stack frame + * Leave some safety gap for SP, force alignment on 16 byte boundary, + * clear initial stack frame */ addr_sp -= 16; addr_sp &= ~0xF; @@ -300,11 +280,14 @@ void board_init_f(ulong bootflag){ #endif /* - * Save local variables to board info struct + * Save local variables to board info struct: + * - start of DRAM memory + * - size of DRAM memory in bytes + * - console baudrate */ - bd->bi_memstart = CFG_SDRAM_BASE; /* start of DRAM memory */ - bd->bi_memsize = gd->ram_size; /* size of DRAM memory in bytes */ - bd->bi_baudrate = gd->baudrate; /* Console Baudrate */ + bd->bi_memstart = CFG_SDRAM_BASE; + bd->bi_memsize = gd->ram_size; + bd->bi_baudrate = gd->baudrate; memcpy(id, (void *)gd, sizeof(gd_t)); @@ -321,48 +304,37 @@ void board_init_f(ulong bootflag){ * ************************************************************************ */ -void board_init_r(gd_t *id, ulong dest_addr){ +void board_init_r(gd_t *id, ulong dest_addr) +{ cmd_tbl_t *cmdtp; - ulong size; extern void malloc_bin_reloc(void); #ifndef CFG_ENV_IS_NOWHERE - extern char * env_name_spec; + extern char *env_name_spec; #endif bd_t *bd; char *s; -#if defined(OFFSET_MAC_ADDRESS) - unsigned char buffer[6]; -#endif - unsigned int ahb_freq, ddr_freq, cpu_freq, spi_freq; gd = id; - gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ + + /* Tell others: relocation done */ + gd->flags |= GD_FLG_RELOC; /* bd -> board data */ bd = gd->bd; - /* get CPU/RAM/AHB clocks */ -#ifdef CONFIG_WASP - ar7240_sys_frequency(&cpu_freq, &ddr_freq, &ahb_freq); -#else - ar933x_sys_frequency(&cpu_freq, &ddr_freq, &ahb_freq); -#endif - - /* set bi_cfg_hz */ - bd->bi_cfg_hz = (unsigned long)(cpu_freq >> 1); - #ifdef BOARD_DEBUG printf("Now running in RAM - U-Boot at: %08lX\n", dest_addr); #endif + /* We need (half of the) main CPU clock for udelay */ + bd->bi_cfg_hz = (u32)(main_cpu_clk() >> 1); + gd->reloc_off = dest_addr - CFG_MONITOR_BASE; monitor_flash_len = (ulong)&uboot_end_data - dest_addr; - /* - * We have to relocate the command table manually - */ - for(cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++){ + /* We have to relocate the command table manually */ + for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) { ulong addr; addr = (ulong)(cmdtp->cmd) + gd->reloc_off; @@ -372,101 +344,51 @@ void board_init_r(gd_t *id, ulong dest_addr){ addr = (ulong)(cmdtp->name) + gd->reloc_off; cmdtp->name = (char *)addr; - if(cmdtp->usage){ + if (cmdtp->usage) { addr = (ulong)(cmdtp->usage) + gd->reloc_off; cmdtp->usage = (char *)addr; } + #ifdef CFG_LONGHELP - if(cmdtp->help){ + if (cmdtp->help) { addr = (ulong)(cmdtp->help) + gd->reloc_off; cmdtp->help = (char *)addr; } #endif } - /* there are some other pointer constants we must deal with */ + /* There are some other pointer constants we must deal with */ #ifndef CFG_ENV_IS_NOWHERE env_name_spec += gd->reloc_off; #endif - /* configure available FLASH banks */ - size = flash_init(); - + /* Configure available FLASH banks */ bd->bi_flashstart = CFG_FLASH_BASE; - bd->bi_flashsize = size; - - // calculate SPI clock (we need to set bit 0 to 1 in SPI_FUNC_SELECT to access SPI registers) - ar7240_reg_wr(AR7240_SPI_FS, 0x01); - spi_freq = ahb_freq / (((ar7240_reg_rd(AR7240_SPI_CLOCK) & 0x3F) + 1) * 2); - ar7240_reg_wr(AR7240_SPI_FS, 0x0); - - // make MHz from Hz - cpu_freq /= 1000000; - ddr_freq /= 1000000; - ahb_freq /= 1000000; - spi_freq /= 1000000; - - printf("CLOCKS: %d/%d/%d/%d MHz (CPU/RAM/AHB/SPI)\n", cpu_freq, ddr_freq, ahb_freq, spi_freq); - puts("\n"); + bd->bi_flashsize = flash_init(); #if CFG_MONITOR_BASE == CFG_FLASH_BASE - bd->bi_flashoffset = monitor_flash_len; /* reserved area for U-Boot */ + /* Reserved area for U-Boot */ + bd->bi_flashoffset = monitor_flash_len; #else bd->bi_flashoffset = 0; #endif - /* initialize malloc() area */ + /* Initialize malloc() area */ mem_malloc_init(); malloc_bin_reloc(); - /* relocate environment function pointers etc. */ + /* Relocate environment function pointers etc. */ env_relocate(); - /* board MAC address */ -#if defined(OFFSET_MAC_ADDRESS) - memcpy(buffer, (void *)(CFG_FLASH_BASE + OFFSET_MAC_DATA_BLOCK + OFFSET_MAC_ADDRESS), 6); - - /* - * check first LSBit (I/G bit) and second LSBit (U/L bit) in MSByte of vendor part - * both of them should be 0: - * I/G bit == 0 -> Individual MAC address (unicast address) - * U/L bit == 0 -> Burned-In-Address (BIA) MAC address - */ - if(CHECK_BIT((buffer[0] & 0xFF), 0) != 0 || CHECK_BIT((buffer[0] & 0xFF), 1) != 0){ - // 00-03-7F (Atheros Communications, Inc.) - bd->bi_enetaddr[0] = 0x00; - bd->bi_enetaddr[1] = 0x03; - bd->bi_enetaddr[2] = 0x7f; - bd->bi_enetaddr[3] = 0x09; - bd->bi_enetaddr[4] = 0x0b; - bd->bi_enetaddr[5] = 0xad; - - printf("## Error: MAC is invalid, using fixed!\n\n"); - } -#else - // fake MAC - // 00-03-7F (Atheros Communications, Inc.) - bd->bi_enetaddr[0] = 0x00; - bd->bi_enetaddr[1] = 0x03; - bd->bi_enetaddr[2] = 0x7f; - bd->bi_enetaddr[3] = 0x09; - bd->bi_enetaddr[4] = 0x0b; - bd->bi_enetaddr[5] = 0xad; - - printf("** Warning: using fixed MAC address!\n\n"); -#endif - - /* IP Address */ + /* Local device IP address */ bd->bi_ip_addr = getenv_IPaddr("ipaddr"); #if defined(CONFIG_PCI) - /* - * Do pci configuration - */ + /* Do pci configuration */ pci_init(); #endif - /** leave this here (after malloc(), environment and PCI are working) **/ + /* Leave this here (after malloc(), environment and PCI are working) */ /* Initialize devices */ devices_init(); @@ -474,38 +396,39 @@ void board_init_r(gd_t *id, ulong dest_addr){ /* Initialize the console (after the relocation and devices init) */ console_init_r(); - /** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/ /* Initialize from environment */ - if((s = getenv("loadaddr")) != NULL){ + if ((s = getenv("loadaddr")) != NULL) load_addr = simple_strtoul(s, NULL, 16); - } #if (CONFIG_COMMANDS & CFG_CMD_NET) - if((s = getenv("bootfile")) != NULL){ + if ((s = getenv("bootfile")) != NULL) copy_filename(BootFile, s, sizeof(BootFile)); - } -#endif /* CFG_CMD_NET */ +#endif - /* blink all available LEDs */ - printf("LED on during eth initialization...\n\n"); - all_led_on(); + /* Init MAC address in board data info */ + macaddr_init(bd->bi_enetaddr); + + /* Print some information about board */ + print_board_info(); #if (CONFIG_COMMANDS & CFG_CMD_NET) + all_led_on(); eth_initialize(gd->bd); -#endif - all_led_off(); +#endif - /* main_loop() can return to retry autoboot, if so just run it again. */ - for(;;){ + /* main_loop() can return to retry autoboot, if so just run it again */ + for (;;) main_loop(); - } /* NOTREACHED - no way out of command loop except booting */ } -void hang(void){ +void hang(void) +{ puts("## ERROR ##\n"); - for(;;); + + for (;;) + ; }