diff --git a/Makefile b/Makefile index 74b64bec296141ec87aeaa3589885f94ddcd55ab..6730c54cf5d605de4535efece3c00e1ca3cc9001 100644 --- a/Makefile +++ b/Makefile @@ -3192,6 +3192,9 @@ smdkc100_config: unconfig a2f-lnx-evb_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm_cortexm3 a2f-lnx-evb emcraft NULL +a2f-actel-dev-brd_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm_cortexm3 a2f-actel-dev-brd actel NULL + ######################################################################### ## XScale Systems ######################################################################### diff --git a/board/actel/a2f-actel-dev-brd/Makefile b/board/actel/a2f-actel-dev-brd/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..92dad4e28735e5979976781e1016a20178f4dba2 --- /dev/null +++ b/board/actel/a2f-actel-dev-brd/Makefile @@ -0,0 +1,47 @@ +# +# (C) Copyright 2011 +# Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com +# +# 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., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS := board.o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) + +clean: + rm -f $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend diff --git a/board/actel/a2f-actel-dev-brd/board.c b/board/actel/a2f-actel-dev-brd/board.c new file mode 100644 index 0000000000000000000000000000000000000000..6ac7042a58f8b451634d4b06ec276d8a18e0a1b8 --- /dev/null +++ b/board/actel/a2f-actel-dev-brd/board.c @@ -0,0 +1,87 @@ +/* + * board/actel/a2f-actel-dev-brd/board.c + * + * Board specific code the the Actel SmartFusion development board + * + * Copyright (C) 2011 + * Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <netdev.h> + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + return 0; +} + +int checkboard(void) +{ + printf("Board: SmartFusion Development Board, %s, www.actel.com\n", + CONFIG_SYS_BOARD_REV_STR); + return 0; +} + +int dram_init (void) +{ +#if ( CONFIG_NR_DRAM_BANKS > 0 ) + /* + * External memory controller MUX configuration + * The EMC _SEL bit in the EMC_MUX_CR register is used + * to select either FPGA I/O or EMC I/O. + * 1 -> The multiplexed I/Os are allocated to the EMC. + */ + A2F_SYSREG->emc_mux_cr = CONFIG_SYS_EMCMUXCR; + + /* + * EMC timing parameters for chip select 0 + * where the external SRAM memory resides on A2F-LNX-EVB. + */ + A2F_SYSREG->emc_cs_0_cr = CONFIG_SYS_EMC0CS0CR; + + /* + * Fill in global info with description of SRAM configuration. + */ + gd->bd->bi_dram[0].start = CONFIG_SYS_RAM_BASE; + gd->bd->bi_dram[0].size = CONFIG_SYS_RAM_SIZE; + + /* + * EMC timing parameters for chip select 1 + * where the external Flash memory resides on A2F-LNX-EVB. + */ + A2F_SYSREG->emc_cs_1_cr = CONFIG_SYS_EMC0CS1CR; +#endif + + return 0; +} + +int misc_init_r(void) +{ + + return 0; +} + +#ifdef CONFIG_CORE10100 +int board_eth_init(bd_t *bis) +{ + core_eth_init(bis); + return 0; +} +#endif diff --git a/board/emcraft/a2f-lnx-evb/Makefile b/board/emcraft/a2f-lnx-evb/Makefile index e48a887d1f56e726fff50fa4621135d539160a5c..e9c9c096de8553543369c4fdbac421cec4b5ece0 100644 --- a/board/emcraft/a2f-lnx-evb/Makefile +++ b/board/emcraft/a2f-lnx-evb/Makefile @@ -1,6 +1,6 @@ # -# (C) Copyright 2000, 2001, 2002 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# (C) Copyright 2010, 2011 +# Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com # # See file CREDITS for list of people who contributed to this # project. diff --git a/include/configs/a2f-actel-dev-brd.h b/include/configs/a2f-actel-dev-brd.h new file mode 100644 index 0000000000000000000000000000000000000000..162bd81d6829c614dc7da2c4a021aa6db7f161a3 --- /dev/null +++ b/include/configs/a2f-actel-dev-brd.h @@ -0,0 +1,285 @@ +/* + * (C) Copyright 2011 Emcraft Systems + * + * Configuration settings for the Actel SmartFusion development board. + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * Disable debug messages + */ +#undef DEBUG + +/* + * This is an ARM Cortex-M3 CPU core + */ +#define CONFIG_SYS_ARMCORTEXM3 + +/* + * This is the Actel SmartFusion (aka A2F) device + */ +#define CONFIG_SYS_A2F + +/* + * This is a specific configuration of the board + * User configurable jumpers define which of the two + * sets of the memory devices (3.3V or 1.8 memories) + * are accessible at a time + */ +#define CONFIG_SYS_BOARD_REV 0x33 + +#if (CONFIG_SYS_BOARD_REV!=0x33 && CONFIG_SYS_BOARD_REV!=0x18) +#error CONFIG_SYS_BOARD_REV must be 33 or 18 +#endif + +/* + * Display CPU and Board information + */ +#define CONFIG_DISPLAY_CPUINFO 1 +#define CONFIG_DISPLAY_BOARDINFO 1 + +#if (CONFIG_SYS_BOARD_REV==0x33) +# define CONFIG_SYS_BOARD_REV_STR "3.3V Memory" +#else +# define CONFIG_SYS_BOARD_REV_STR "1.8V Memory" +#endif + +/* + * Monitor prompt + */ +#define CONFIG_SYS_PROMPT "Actel-DEV-BRD> " + +/* + * We want to call the CPU specific initialization + */ +#define CONFIG_ARCH_CPU_INIT + +/* + * System frequency (FCLK) and the other derivative clocks + * coming out from reset. These are defined by the Libero + * project programmed onto SmartFusion. + * It is possible to read these frequencies from SmartFusion + * at run-time, however for simplicity of configuration we define these + * clocks at build-time. + */ +#define CONFIG_SYS_CLK_FREQ 80000000uL +#define CONFIG_SYS_CLK_PCLK0 (CONFIG_SYS_CLK_FREQ / 4) +#define CONFIG_SYS_CLK_PCLK1 (CONFIG_SYS_CLK_FREQ / 4) +#define CONFIG_SYS_ACE_PCLK1 (CONFIG_SYS_CLK_FREQ / 2) +#define CONFIG_SYS_FPGA_PCLK1 (CONFIG_SYS_CLK_FREQ / 2) + +/* + * Number of clock ticks in 1 sec + */ +#define CONFIG_SYS_HZ 1000 + +/* + * Enable/disable h/w watchdog + */ +#undef CONFIG_HW_WATCHDOG + +/* + * No interrupts + */ +#undef CONFIG_USE_IRQ + +/* + * Configuration of the external memory + */ +#define CONFIG_NR_DRAM_BANKS 1 +#define CONFIG_SYS_RAM_BASE 0x70000000 +#if (CONFIG_SYS_BOARD_REV==0x33) +# define CONFIG_SYS_RAM_SIZE (4 * 1024 * 1024) +#else +# define CONFIG_SYS_RAM_SIZE (16 * 1024 * 1024) +#endif + + +/* + * Optimized timings for external SRAM + */ +#if (CONFIG_SYS_BOARD_REV==0x33) +# define CONFIG_SYS_EMC0CS0CR 0x00002225 +#else +# define CONFIG_SYS_EMC0CS0CR 0x00002225 +#endif + +/* + * Settings for the EMC MUX register + */ +#define CONFIG_SYS_EMCMUXCR 0x00000001 + +/* + * Configuration of the external Flash + */ +#define CONFIG_SYS_FLASH_BANK1_BASE 0x74000000 + +/* + * Timings for the external Flash + */ +#if (CONFIG_SYS_BOARD_REV==0x33) +# define CONFIG_SYS_EMC0CS1CR 0x0000393F +#else +# define CONFIG_SYS_EMC0CS1CR 0x0000393F +#endif + +/* + * Settings for the CFI Flash driver + */ +#define CONFIG_SYS_FLASH_CFI 1 +#define CONFIG_FLASH_CFI_DRIVER 1 +#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT +#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BANK1_BASE } +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 128 +#define CONFIG_SYS_FLASH_CFI_AMD_RESET 1 + +/* + * U-boot environment configruation + */ +#define CONFIG_ENV_IS_IN_FLASH 1 +#define CONFIG_ENV_ADDR CONFIG_SYS_FLASH_BANK1_BASE +#define CONFIG_ENV_SIZE 0x1000 +#define CONFIG_INFERNO 1 +#define CONFIG_ENV_OVERWRITE 1 + +/* + * Serial console configuration + */ +#define CONFIG_SYS_NS16550 1 +#undef CONFIG_NS16550_MIN_FUNCTIONS +#define CONFIG_SYS_NS16550_SERIAL 1 +#define CONFIG_SYS_NS16550_REG_SIZE (-4) +#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_CLK_PCLK0 +#define CONFIG_CONS_INDEX 1 +#define CONFIG_SYS_NS16550_COM1 0x40000000 +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +/* + * MALLOC_LEN can't be more than the specified size! + * Refer to u-boot.lds for further details. + */ +#define CONFIG_SYS_MALLOC_LEN (1024*8) + +/* + * Console I/O buffer size + */ +#define CONFIG_SYS_CBSIZE 256 + +/* + * Print buffer size + */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) + +/* + * Ethernet driver configuration + */ +#define CONFIG_NET_MULTI +#define CONFIG_CORE10100 1 + +/* + * Keep Rx & Tx buffers in internal RAM + */ +#define CONFIG_CORE10100_INTRAM_ADDRESS 0x20008000 +#define CONFIG_BITBANGMII 1 +#define CONFIG_BITBANGMII_MULTI 1 + +#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_RAM_BASE +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_RAM_BASE + \ + CONFIG_SYS_RAM_SIZE) + +/* + * Needed by "loadb" + */ +#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_RAM_BASE + +/* + * Monitor is actually in eNVM. In terms of U-Boot, it is neither "flash", + * not RAM, but CONFIG_SYS_MONITOR_BASE must be defined. + */ +#define CONFIG_SYS_MONITOR_BASE 0x0 + +/* + * Monitor is not in flash. Needs to define this to prevent + * U-Boot from running flash_protect() on the monitor code. + */ +#define CONFIG_MONITOR_IS_IN_RAM 1 + +/* + * Enable all those monitor commands that are needed + */ +#include <config_cmd_default.h> +#undef CONFIG_CMD_BOOTD +#undef CONFIG_CMD_CONSOLE +#undef CONFIG_CMD_ECHO +#undef CONFIG_CMD_EDITENV +#undef CONFIG_CMD_FPGA +#undef CONFIG_CMD_IMI +#undef CONFIG_CMD_ITEST +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_LOADS +#undef CONFIG_CMD_MISC +#define CONFIG_CMD_NET +#undef CONFIG_CMD_NFS +#undef CONFIG_CMD_SOURCE +#undef CONFIG_CMD_XIMG + +/* + * To save memory disable long help + */ +#undef CONFIG_SYS_LONGHELP + +/* + * Max number of command args + */ +#define CONFIG_SYS_MAXARGS 16 + +/* + * Auto-boot sequence configuration + */ +#define CONFIG_BOOTDELAY 3 +#define CONFIG_ZERO_BOOTDELAY_CHECK +#define CONFIG_HOSTNAME a2f-actel-dev-brd +#define CONFIG_BOOTARGS "console=ttyS0,115200 panic=10" +#define CONFIG_BOOTCOMMAND "run flashboot" + +/* + * Short-cuts to some useful commands (macros) + */ +#define CONFIG_EXTRA_ENV_SETTINGS \ + "loadaddr=70000000\0" \ + "addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off\0" \ + "flashaddr=74020000\0" \ + "flashboot=run addip;bootm ${flashaddr}\0" \ + "netboot=tftp ${image};run addip;bootm\0" \ + "image=a2f/uImage\0" + +/* + * Linux kernel boot parameters configuration + */ +#define CONFIG_SETUP_MEMORY_TAGS +#define CONFIG_CMDLINE_TAG + +#endif /* __CONFIG_H */