mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-10 23:03:29 +09:00
![Sughosh Ganu](/assets/img/avatar_default.png)
The patch adds basic board support for TI's OMAP-L138 based Hawkboard. This board is pretty similar to the da850 EVM. Support for nand and network access is added in this version. The following bootup procedure is used. At reset, the Rom Boot Loader(RBL), initialises the ddr and the nand controllers and copies the second stage bootloader(nand_spl) to RAM. The secondary bootloader then copies u-boot from a predefined location in the nand flash to the RAM, and passes control to the u-boot image. Three config options are supported * hawkboard_config - Used to create the u-boot.bin. Tftp the u-boot.bin image to the RAM from u-boot, and flash to the nand flash at address 0xe0000. * hawkboard_nand_config - Used to generate the secondary bootloader(nand_spl) image. This creates an elf file u-boot-spl under nand_spl/. Create an AIS signed image using this file, and flash it to the nand flash at address 0x20000. The ais file should fit in one block. * hawkboard_uart_config - This is same as the first image, but with the TEXT_BASE as expected by the RBL(0xc1080000). Create the AIS Signed-off-by: Sughosh Ganu <urwithsughosh@gmail.com> Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
98 lines
2.7 KiB
C
98 lines
2.7 KiB
C
/*
|
|
* Miscelaneous DaVinci functions.
|
|
*
|
|
* Copyright (C) 2009 Nick Thompson, GE Fanuc Ltd, <nick.thompson@gefanuc.com>
|
|
* Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
|
|
* Copyright (C) 2008 Lyrtech <www.lyrtech.com>
|
|
* Copyright (C) 2004 Texas Instruments.
|
|
*
|
|
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <i2c.h>
|
|
#include <net.h>
|
|
#include <asm/arch/hardware.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/davinci_misc.h>
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
int dram_init(void)
|
|
{
|
|
/* dram_init must store complete ramsize in gd->ram_size */
|
|
gd->ram_size = get_ram_size(
|
|
(volatile void *)CONFIG_SYS_SDRAM_BASE,
|
|
CONFIG_MAX_RAM_BANK_SIZE);
|
|
return 0;
|
|
}
|
|
|
|
void dram_init_banksize(void)
|
|
{
|
|
gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
|
|
gd->bd->bi_dram[0].size = gd->ram_size;
|
|
}
|
|
|
|
#ifdef CONFIG_DRIVER_TI_EMAC
|
|
|
|
/* Read ethernet MAC address from EEPROM for DVEVM compatible boards.
|
|
* Returns 1 if found, 0 otherwise.
|
|
*/
|
|
int dvevm_read_mac_address(uint8_t *buf)
|
|
{
|
|
#ifdef CONFIG_SYS_I2C_EEPROM_ADDR
|
|
/* Read MAC address. */
|
|
if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0x7F00, CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
|
|
(uint8_t *) &buf[0], 6))
|
|
goto i2cerr;
|
|
|
|
/* Check that MAC address is valid. */
|
|
if (!is_valid_ether_addr(buf))
|
|
goto err;
|
|
|
|
return 1; /* Found */
|
|
|
|
i2cerr:
|
|
printf("Read from EEPROM @ 0x%02x failed\n", CONFIG_SYS_I2C_EEPROM_ADDR);
|
|
err:
|
|
#endif /* CONFIG_SYS_I2C_EEPROM_ADDR */
|
|
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
* If there is no MAC address in the environment, then it will be initialized
|
|
* (silently) from the value in the EEPROM.
|
|
*/
|
|
void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr)
|
|
{
|
|
uint8_t env_enetaddr[6];
|
|
|
|
eth_getenv_enetaddr_by_index(0, env_enetaddr);
|
|
if (!memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) {
|
|
/* There is no MAC address in the environment, so we initialize
|
|
* it from the value in the EEPROM. */
|
|
debug("### Setting environment from EEPROM MAC address = "
|
|
"\"%pM\"\n",
|
|
env_enetaddr);
|
|
eth_setenv_enetaddr("ethaddr", rom_enetaddr);
|
|
}
|
|
}
|
|
|
|
#endif /* DAVINCI_EMAC */
|