1*d47ab0ecSGraeme Russ /* 2*d47ab0ecSGraeme Russ * (C) Copyright 2011 3*d47ab0ecSGraeme Russ * Graeme Russ, <graeme.russ@gmail.com> 4*d47ab0ecSGraeme Russ * 5*d47ab0ecSGraeme Russ * See file CREDITS for list of people who contributed to this 6*d47ab0ecSGraeme Russ * project. 7*d47ab0ecSGraeme Russ * 8*d47ab0ecSGraeme Russ * This program is free software; you can redistribute it and/or 9*d47ab0ecSGraeme Russ * modify it under the terms of the GNU General Public License as 10*d47ab0ecSGraeme Russ * published by the Free Software Foundation; either version 2 of 11*d47ab0ecSGraeme Russ * the License, or (at your option) any later version. 12*d47ab0ecSGraeme Russ * 13*d47ab0ecSGraeme Russ * This program is distributed in the hope that it will be useful, 14*d47ab0ecSGraeme Russ * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*d47ab0ecSGraeme Russ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*d47ab0ecSGraeme Russ * GNU General Public License for more details. 17*d47ab0ecSGraeme Russ * 18*d47ab0ecSGraeme Russ * You should have received a copy of the GNU General Public License 19*d47ab0ecSGraeme Russ * along with this program; if not, write to the Free Software 20*d47ab0ecSGraeme Russ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*d47ab0ecSGraeme Russ * MA 02111-1307 USA 22*d47ab0ecSGraeme Russ */ 23*d47ab0ecSGraeme Russ #include <common.h> 24*d47ab0ecSGraeme Russ #include <command.h> 25*d47ab0ecSGraeme Russ #include <stdio_dev.h> 26*d47ab0ecSGraeme Russ #include <version.h> 27*d47ab0ecSGraeme Russ #include <malloc.h> 28*d47ab0ecSGraeme Russ #include <net.h> 29*d47ab0ecSGraeme Russ #include <ide.h> 30*d47ab0ecSGraeme Russ #include <serial.h> 31*d47ab0ecSGraeme Russ #include <status_led.h> 32*d47ab0ecSGraeme Russ #include <asm/u-boot-x86.h> 33*d47ab0ecSGraeme Russ 34*d47ab0ecSGraeme Russ #include <asm/init_helpers.h> 35*d47ab0ecSGraeme Russ 36*d47ab0ecSGraeme Russ DECLARE_GLOBAL_DATA_PTR; 37*d47ab0ecSGraeme Russ 38*d47ab0ecSGraeme Russ /************************************************************************ 39*d47ab0ecSGraeme Russ * Init Utilities * 40*d47ab0ecSGraeme Russ ************************************************************************ 41*d47ab0ecSGraeme Russ * Some of this code should be moved into the core functions, 42*d47ab0ecSGraeme Russ * or dropped completely, 43*d47ab0ecSGraeme Russ * but let's get it working (again) first... 44*d47ab0ecSGraeme Russ */ 45*d47ab0ecSGraeme Russ 46*d47ab0ecSGraeme Russ int display_banner(void) 47*d47ab0ecSGraeme Russ { 48*d47ab0ecSGraeme Russ printf("\n\n%s\n\n", version_string); 49*d47ab0ecSGraeme Russ 50*d47ab0ecSGraeme Russ return 0; 51*d47ab0ecSGraeme Russ } 52*d47ab0ecSGraeme Russ 53*d47ab0ecSGraeme Russ int display_dram_config(void) 54*d47ab0ecSGraeme Russ { 55*d47ab0ecSGraeme Russ int i; 56*d47ab0ecSGraeme Russ 57*d47ab0ecSGraeme Russ puts("DRAM Configuration:\n"); 58*d47ab0ecSGraeme Russ 59*d47ab0ecSGraeme Russ for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { 60*d47ab0ecSGraeme Russ printf("Bank #%d: %08lx ", i, gd->bd->bi_dram[i].start); 61*d47ab0ecSGraeme Russ print_size(gd->bd->bi_dram[i].size, "\n"); 62*d47ab0ecSGraeme Russ } 63*d47ab0ecSGraeme Russ 64*d47ab0ecSGraeme Russ return 0; 65*d47ab0ecSGraeme Russ } 66*d47ab0ecSGraeme Russ 67*d47ab0ecSGraeme Russ int init_baudrate_f(void) 68*d47ab0ecSGraeme Russ { 69*d47ab0ecSGraeme Russ gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE); 70*d47ab0ecSGraeme Russ return 0; 71*d47ab0ecSGraeme Russ } 72*d47ab0ecSGraeme Russ 73*d47ab0ecSGraeme Russ int mem_malloc_init_r(void) 74*d47ab0ecSGraeme Russ { 75*d47ab0ecSGraeme Russ mem_malloc_init(((gd->relocaddr - CONFIG_SYS_MALLOC_LEN)+3)&~3, 76*d47ab0ecSGraeme Russ CONFIG_SYS_MALLOC_LEN); 77*d47ab0ecSGraeme Russ 78*d47ab0ecSGraeme Russ return 0; 79*d47ab0ecSGraeme Russ } 80*d47ab0ecSGraeme Russ 81*d47ab0ecSGraeme Russ bd_t bd_data; 82*d47ab0ecSGraeme Russ 83*d47ab0ecSGraeme Russ int init_bd_struct_r(void) 84*d47ab0ecSGraeme Russ { 85*d47ab0ecSGraeme Russ gd->bd = &bd_data; 86*d47ab0ecSGraeme Russ memset(gd->bd, 0, sizeof(bd_t)); 87*d47ab0ecSGraeme Russ 88*d47ab0ecSGraeme Russ return 0; 89*d47ab0ecSGraeme Russ } 90*d47ab0ecSGraeme Russ 91*d47ab0ecSGraeme Russ #ifndef CONFIG_SYS_NO_FLASH 92*d47ab0ecSGraeme Russ int flash_init_r(void) 93*d47ab0ecSGraeme Russ { 94*d47ab0ecSGraeme Russ ulong size; 95*d47ab0ecSGraeme Russ 96*d47ab0ecSGraeme Russ puts("Flash: "); 97*d47ab0ecSGraeme Russ 98*d47ab0ecSGraeme Russ /* configure available FLASH banks */ 99*d47ab0ecSGraeme Russ size = flash_init(); 100*d47ab0ecSGraeme Russ 101*d47ab0ecSGraeme Russ print_size(size, "\n"); 102*d47ab0ecSGraeme Russ 103*d47ab0ecSGraeme Russ return 0; 104*d47ab0ecSGraeme Russ } 105*d47ab0ecSGraeme Russ #endif 106*d47ab0ecSGraeme Russ 107*d47ab0ecSGraeme Russ int init_ip_address_r(void) 108*d47ab0ecSGraeme Russ { 109*d47ab0ecSGraeme Russ /* IP Address */ 110*d47ab0ecSGraeme Russ bd_data.bi_ip_addr = getenv_IPaddr("ipaddr"); 111*d47ab0ecSGraeme Russ 112*d47ab0ecSGraeme Russ return 0; 113*d47ab0ecSGraeme Russ } 114*d47ab0ecSGraeme Russ 115*d47ab0ecSGraeme Russ #ifdef CONFIG_STATUS_LED 116*d47ab0ecSGraeme Russ int status_led_set_r(void) 117*d47ab0ecSGraeme Russ { 118*d47ab0ecSGraeme Russ status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING); 119*d47ab0ecSGraeme Russ 120*d47ab0ecSGraeme Russ return 0; 121*d47ab0ecSGraeme Russ } 122*d47ab0ecSGraeme Russ #endif 123*d47ab0ecSGraeme Russ 124*d47ab0ecSGraeme Russ int set_bootfile_r(void) 125*d47ab0ecSGraeme Russ { 126*d47ab0ecSGraeme Russ char *s; 127*d47ab0ecSGraeme Russ 128*d47ab0ecSGraeme Russ s = getenv("bootfile"); 129*d47ab0ecSGraeme Russ 130*d47ab0ecSGraeme Russ if (s != NULL) 131*d47ab0ecSGraeme Russ copy_filename(BootFile, s, sizeof(BootFile)); 132*d47ab0ecSGraeme Russ 133*d47ab0ecSGraeme Russ return 0; 134*d47ab0ecSGraeme Russ } 135*d47ab0ecSGraeme Russ 136*d47ab0ecSGraeme Russ int set_load_addr_r(void) 137*d47ab0ecSGraeme Russ { 138*d47ab0ecSGraeme Russ /* Initialize from environment */ 139*d47ab0ecSGraeme Russ load_addr = getenv_ulong("loadaddr", 16, load_addr); 140*d47ab0ecSGraeme Russ 141*d47ab0ecSGraeme Russ return 0; 142*d47ab0ecSGraeme Russ } 143