diff options
Diffstat (limited to 'board/altera')
| -rw-r--r-- | board/altera/nios2-generic/Makefile | 59 | ||||
| -rw-r--r-- | board/altera/nios2-generic/config.mk | 34 | ||||
| -rw-r--r-- | board/altera/nios2-generic/custom_fpga.h | 66 | ||||
| -rw-r--r-- | board/altera/nios2-generic/nios2-generic.c | 68 | ||||
| -rw-r--r-- | board/altera/nios2-generic/text_base.S | 21 | ||||
| -rw-r--r-- | board/altera/nios2-generic/u-boot.lds | 136 | 
6 files changed, 384 insertions, 0 deletions
| diff --git a/board/altera/nios2-generic/Makefile b/board/altera/nios2-generic/Makefile new file mode 100644 index 000000000..678087250 --- /dev/null +++ b/board/altera/nios2-generic/Makefile @@ -0,0 +1,59 @@ +# +# (C) Copyright 2001-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw> +# +# 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 +ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common) +endif + +LIB	= $(obj)lib$(BOARD).a + +COBJS-y	:= $(BOARD).o +COBJS-$(CONFIG_CMD_IDE) += ../common/cfide.o +COBJS-$(CONFIG_EPLED) += ../common/epled.o +COBJS-$(CONFIG_SEVENSEG) += ../common/sevenseg.o + +SOBJS-y	:= text_base.o + +SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS	:= $(addprefix $(obj),$(COBJS-y)) +SOBJS	:= $(addprefix $(obj),$(SOBJS-y)) + +$(LIB):	$(obj).depend $(OBJS) $(SOBJS) +	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: +	rm -f $(SOBJS) $(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/altera/nios2-generic/config.mk b/board/altera/nios2-generic/config.mk new file mode 100644 index 000000000..d500133ea --- /dev/null +++ b/board/altera/nios2-generic/config.mk @@ -0,0 +1,34 @@ +# +# (C) Copyright 2005, Psyent Corporation <www.psyent.com> +# Scott McNutt <smcnutt@psyent.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 +# + +# we get text_base from board config header, so do not use this +#TEXT_BASE = do-not-use-me + +PLATFORM_CPPFLAGS += -mno-hw-div -mno-hw-mul +PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/$(VENDOR)/include + +ifeq ($(debug),1) +PLATFORM_CPPFLAGS += -DDEBUG +endif + +LDSCRIPT := $(SRCTREE)/board/$(VENDOR)/$(BOARD)/u-boot.lds diff --git a/board/altera/nios2-generic/custom_fpga.h b/board/altera/nios2-generic/custom_fpga.h new file mode 100644 index 000000000..761f605a4 --- /dev/null +++ b/board/altera/nios2-generic/custom_fpga.h @@ -0,0 +1,66 @@ +/* + * (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This file is generated by sopc-create-config-files. + */ +#ifndef _CUSTOM_FPGA_H_ +#define _CUSTOM_FPGA_H_ + +/* generated from std_1c20.sopc */ + +/* cpu.data_master is a altera_nios2 */ +#define CONFIG_SYS_CLK_FREQ 50000000 +#define CONFIG_SYS_RESET_ADDR 0x00000000 +#define CONFIG_SYS_EXCEPTION_ADDR 0x01000020 +#define CONFIG_SYS_ICACHE_SIZE 4096 +#define CONFIG_SYS_ICACHELINE_SIZE 32 +#define CONFIG_SYS_DCACHE_SIZE 2048 +#define CONFIG_SYS_DCACHELINE_SIZE 4 + +/* sdram.s1 is a altera_avalon_new_sdram_controller */ +#define CONFIG_SYS_SDRAM_BASE 0x01000000 +#define CONFIG_SYS_SDRAM_SIZE 0x01000000 + +/* uart1.s1 is a altera_avalon_uart */ +#define CONFIG_SYS_UART_BASE 0x82120840 +#define CONFIG_SYS_UART_FREQ 50000000 +#define CONFIG_SYS_UART_BAUD 115200 + +/* lan91c111.s1 is a altera_avalon_lan91c111 */ +#define CONFIG_SMC91111_BASE 0x82110300 +#define CONFIG_SMC91111 +#define CONFIG_SMC_USE_32_BIT + +/* jtag_uart.avalon_jtag_slave is a altera_avalon_jtag_uart */ +#define CONFIG_SYS_JTAG_UART_BASE 0x821208b0 + +/* led_pio.s1 is a altera_avalon_pio */ +#define LED_PIO_BASE 0x82120870 + +/* high_res_timer.s1 is a altera_avalon_timer */ +#define CONFIG_SYS_TIMER_BASE 0x82120820 +#define CONFIG_SYS_TIMER_IRQ 3 +#define CONFIG_SYS_TIMER_FREQ 50000000 + +/* ext_flash.s1 is a altera_avalon_cfi_flash */ +#define CONFIG_SYS_FLASH_BASE 0x80000000 +#define CONFIG_FLASH_CFI_DRIVER +#define CONFIG_SYS_CFI_FLASH_STATUS_POLL /* fix amd flash issue */ +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE +#define CONFIG_SYS_FLASH_PROTECTION +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 1024 + +/* ext_ram.s1 is a altera_nios_dev_kit_stratix_edition_sram2 */ +#define CONFIG_SYS_SRAM_BASE 0x02000000 +#define CONFIG_SYS_SRAM_SIZE 0x00100000 + +/* sysid.control_slave is a altera_avalon_sysid */ +#define CONFIG_SYS_SYSID_BASE 0x821208b8 + +#endif /* _CUSTOM_FPGA_H_ */ diff --git a/board/altera/nios2-generic/nios2-generic.c b/board/altera/nios2-generic/nios2-generic.c new file mode 100644 index 000000000..89848cf04 --- /dev/null +++ b/board/altera/nios2-generic/nios2-generic.c @@ -0,0 +1,68 @@ +/* + * (C) Copyright 2005, Psyent Corporation <www.psyent.com> + * Scott McNutt <smcnutt@psyent.com> + * (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw> + * + * 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 <common.h> +#include <netdev.h> + +void text_base_hook(void); /* nop hook for text_base.S */ + +int board_early_init_f(void) +{ +	text_base_hook(); +	return 0; +} + +int checkboard(void) +{ +	printf("BOARD : %s\n", CONFIG_BOARD_NAME); +	return 0; +} + +phys_size_t initdram(int board_type) +{ +	return 0; +} + +#ifdef CONFIG_CMD_NET +int board_eth_init(bd_t *bis) +{ +	int rc = 0; +#ifdef CONFIG_SMC91111 +	rc += smc91111_initialize(0, CONFIG_SMC91111_BASE); +#endif +#ifdef CONFIG_DRIVER_DM9000 +	rc += dm9000_initialize(bis); +#endif +#ifdef CONFIG_ALTERA_TSE +	rc += altera_tse_initialize(0, +				    CONFIG_SYS_ALTERA_TSE_MAC_BASE, +				    CONFIG_SYS_ALTERA_TSE_SGDMA_RX_BASE, +				    CONFIG_SYS_ALTERA_TSE_SGDMA_TX_BASE); +#endif +#ifdef CONFIG_ETHOC +	rc += ethoc_initialize(0, CONFIG_SYS_ETHOC_BASE); +#endif +	return rc; +} +#endif diff --git a/board/altera/nios2-generic/text_base.S b/board/altera/nios2-generic/text_base.S new file mode 100644 index 000000000..f236db13e --- /dev/null +++ b/board/altera/nios2-generic/text_base.S @@ -0,0 +1,21 @@ +/* + * text_base + * + * (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include <config.h> + +#ifdef CONFIG_SYS_MONITOR_BASE +	.text +	/* text base used in link script u-boot.lds */ +	.global text_base +	.equ text_base,CONFIG_SYS_MONITOR_BASE +	/* dummy func to let linker include this file */ +	.global text_base_hook +text_base_hook: +	ret +#endif diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds new file mode 100644 index 000000000..d4be077bb --- /dev/null +++ b/board/altera/nios2-generic/u-boot.lds @@ -0,0 +1,136 @@ +/* + * (C) Copyright 2004, Psyent Corporation <www.psyent.com> + * Scott McNutt <smcnutt@psyent.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 + */ + + +OUTPUT_FORMAT("elf32-littlenios2") +OUTPUT_ARCH(nios2) +ENTRY(_start) + +SECTIONS +{ +	. = text_base; +	.text : +	{ +	  arch/nios2/cpu/start.o (.text) +	  *(.text) +	  *(.text.*) +	  *(.gnu.linkonce.t*) +	  *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) +	  *(.gnu.linkonce.r*) +	} +	. = ALIGN (4); +	_etext = .; +	PROVIDE (etext = .); + +	/* CMD TABLE - sandwich this in between text and data so +	 * the initialization code relocates the command table as +	 * well -- admittedly, this is just pure laziness ;-) +	 */ +	__u_boot_cmd_start = .; +	.u_boot_cmd : +	{ +	  *(.u_boot_cmd) +	} +	. = ALIGN(4); +	__u_boot_cmd_end = .; + +	/* INIT DATA sections - "Small" data (see the gcc -G option) +	 * is always gp-relative. Here we make all init data sections +	 * adjacent to simplify the startup code -- and provide +	 * the global pointer for gp-relative access. +	 */ +	_data = .; +	.data : +	{ +	  *(.data) +	  *(.data.*) +	  *(.gnu.linkonce.d*) +	} + +	. = ALIGN(16); +	_gp = .;			/* Global pointer addr */ +	PROVIDE (gp = .); + +	.sdata : +	{ +	  *(.sdata) +	  *(.sdata.*) +	  *(.gnu.linkonce.s.*) +	} +	. = ALIGN(4); + +	_edata = .; +	PROVIDE (edata = .); + +	/* UNINIT DATA - Small uninitialized data is first so it's +	 * adjacent to sdata and can be referenced via gp. The normal +	 * bss follows. We keep it adjacent to simplify init code. +	 */ +	__bss_start = .; +	.sbss (NOLOAD) : +	{ +	  *(.sbss) +	  *(.sbss.*) +	  *(.gnu.linkonce.sb.*) +	  *(.scommon) +	} +	. = ALIGN(4); +	.bss (NOLOAD) : +	{ +	  *(.bss) +	  *(.bss.*) +	  *(.dynbss) +	  *(COMMON) +	  *(.scommon) +	} +	. = ALIGN(4); +	_end = .; +	PROVIDE (end = .); + +	/* DEBUG -- symbol table, string table, etc. etc. +	 */ +	.stab 0 : { *(.stab) } +	.stabstr 0 : { *(.stabstr) } +	.stab.excl 0 : { *(.stab.excl) } +	.stab.exclstr 0 : { *(.stab.exclstr) } +	.stab.index 0 : { *(.stab.index) } +	.stab.indexstr 0 : { *(.stab.indexstr) } +	.comment 0 : { *(.comment) } +	.debug		0 : { *(.debug) } +	.line		0 : { *(.line) } +	.debug_srcinfo	0 : { *(.debug_srcinfo) } +	.debug_sfnames	0 : { *(.debug_sfnames) } +	.debug_aranges	0 : { *(.debug_aranges) } +	.debug_pubnames 0 : { *(.debug_pubnames) } +	.debug_info	0 : { *(.debug_info) } +	.debug_abbrev	0 : { *(.debug_abbrev) } +	.debug_line	0 : { *(.debug_line) } +	.debug_frame	0 : { *(.debug_frame) } +	.debug_str	0 : { *(.debug_str) } +	.debug_loc	0 : { *(.debug_loc) } +	.debug_macinfo	0 : { *(.debug_macinfo) } +	.debug_weaknames 0 : { *(.debug_weaknames) } +	.debug_funcnames 0 : { *(.debug_funcnames) } +	.debug_typenames 0 : { *(.debug_typenames) } +	.debug_varnames	 0 : { *(.debug_varnames) } +} |