diff options
Diffstat (limited to 'qemu/roms/u-boot/board/dnp5370')
-rw-r--r-- | qemu/roms/u-boot/board/dnp5370/Makefile | 12 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/dnp5370/README | 67 | ||||
-rw-r--r-- | qemu/roms/u-boot/board/dnp5370/dnp5370.c | 87 |
3 files changed, 166 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/board/dnp5370/Makefile b/qemu/roms/u-boot/board/dnp5370/Makefile new file mode 100644 index 000000000..865522fd6 --- /dev/null +++ b/qemu/roms/u-boot/board/dnp5370/Makefile @@ -0,0 +1,12 @@ +# +# U-boot - Makefile +# +# Copyright (c) 2005-2007 Analog Device Inc. +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := dnp5370.o diff --git a/qemu/roms/u-boot/board/dnp5370/README b/qemu/roms/u-boot/board/dnp5370/README new file mode 100644 index 000000000..0172698e9 --- /dev/null +++ b/qemu/roms/u-boot/board/dnp5370/README @@ -0,0 +1,67 @@ +This document describes the board support for +Dil/NetPC DNP/5370 (http://www.dilnetpc.com/dnp0086.htm) module. +The distributor is SSV (http://www.ssv-embedded.de), + +The module used to develop the support files contains: + +* Processor: Blackfin BF537 Rev 0.3 (600 MHz core / 120MHz RAM) + +* RAM: 32 MB SDRAM + Hynix HY57V561620FTP-H 810EA + Connected to Blackfin via "Expansion Bus" + Address range 0x0000.0000 - 0x1fff.ffff + +* NOR flash: 32 MBit (4 MByte) + Exel Semiconductor ES29LVS320EB + Connected to Blackfin via "Expansion Bus", + Chip Selects 0, 1 and 2, each is connected + to a 1 MB memory bank at Blackfin, therefore + only 3 MB accessible. + Address range 0x2000.0000 - 0x202f.ffff + CFI compatible + + Exel Semiconductor was bought by Rohm Semiconductor (www.rohm.com). + +* NAND flash: 64 MBit (8 MByte) + Atmel 45DB642D-CNU + Connected to Blackfin via SPI + CFI compatible + +* Davicom DM9161EP Ethernet PHY + +* A SD card reader, connected via SPI + +* Hardware watchdog MAX823 or TPS3823 + +(other devices not listed here) + +To run it, the module must be inserted in a 64 pin DIL socket +on another board, e.g. DNP/EVA13 (together: SSV SK28). + +The Blackfin is booted from NOR flash. The NOR flash data begins +with the U-Boot code and is then followed by the Linux code. +Finally, the MAC is stored in the last sector. +You may need to adjust these settings to your needs. +The memory map used to develop the board support is: + +Memory map: +0x00000000 .. 0x01ffffff SDRAM +0x20000000 .. 0x202fffff NOR flash + +RAM use: +0x01f9bffc .. 0x01fbbffb U-Boot stack +0x01f9c000 .. 0x01f9ffff U-Boot global data +0x01fa0000 .. 0x01fbffff U-Boot malloc() RAM +0x01fc0000 .. 0x01ffffff U-Boot execution RAM + +NOR flash use: +0x20000000 .. 0x0002ffff U-Boot +0x20004000 .. 0x20005fff U-Boot environment +0x20030000 .. 0x202effff Linux kernel image +0x202f0000 .. 0x202fffff MAC address sector + +NOR flash is 0x00300000 (3145728) bytes large (3 MB). +Max space for compressed kernel in flash is 0x002c0000 (2883584) bytes (2.75 MB) +Max space for u-boot in flash is 0x00030000 (196608) bytes (192 KB) + +The module is hardwired to BYPASS boot mode. diff --git a/qemu/roms/u-boot/board/dnp5370/dnp5370.c b/qemu/roms/u-boot/board/dnp5370/dnp5370.c new file mode 100644 index 000000000..df721c994 --- /dev/null +++ b/qemu/roms/u-boot/board/dnp5370/dnp5370.c @@ -0,0 +1,87 @@ +/* + * U-boot - main board file + * + * (C) Copyright 2010 3ality Digital Systems + * + * Copyright (c) 2005-2008 Analog Devices Inc. + * + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <config.h> +#include <asm/blackfin.h> +#include <net.h> +#include <netdev.h> +#include <asm/gpio.h> + +static void disable_external_watchdog(void) +{ +#ifdef CONFIG_DNP5370_EXT_WD_DISABLE + /* disable external HW watchdog with PH13 = WD1 = 1 */ + gpio_request(GPIO_PH13, "ext_wd"); + gpio_direction_output(GPIO_PH13, 1); +#endif +} + +int checkboard(void) +{ + printf("Board: SSV DilNet DNP5370\n"); + return 0; +} + +#ifdef CONFIG_BFIN_MAC +static void board_init_enetaddr(uchar *mac_addr) +{ +#ifdef CONFIG_SYS_NO_FLASH +# define USE_MAC_IN_FLASH 0 +#else +# define USE_MAC_IN_FLASH 1 +#endif + bool valid_mac = false; + + if (USE_MAC_IN_FLASH) { + /* we cram the MAC in the last flash sector */ + uchar *board_mac_addr = (uchar *)0x202F0000; + if (is_valid_ether_addr(board_mac_addr)) { + memcpy(mac_addr, board_mac_addr, 6); + valid_mac = true; + } + } + + if (!valid_mac) { + puts("Warning: Generating 'random' MAC address\n"); + eth_random_addr(mac_addr); + } + + eth_setenv_enetaddr("ethaddr", mac_addr); +} + +int board_eth_init(bd_t *bis) +{ + return bfin_EMAC_initialize(bis); +} +#endif + +/* miscellaneous platform dependent initialisations */ +int misc_init_r(void) +{ + disable_external_watchdog(); + +#ifdef CONFIG_BFIN_MAC + uchar enetaddr[6]; + if (!eth_getenv_enetaddr("ethaddr", enetaddr)) + board_init_enetaddr(enetaddr); +#endif + +#ifndef CONFIG_SYS_NO_FLASH + /* we use the last sector for the MAC address / POST LDR */ + extern flash_info_t flash_info[]; + flash_protect(FLAG_PROTECT_SET, 0x202F0000, 0x202FFFFF, &flash_info[0]); +#endif + + return 0; +} |