[U-Boot] [PATCH 04/10] nds32: add nds32 board with ag101 support

Macpaul Lin macpaul at andestech.com
Fri Jun 11 11:34:38 CEST 2010


	Add nds32 based board adp-ag101 support.

Signed-off-by: Macpaul Lin <macpaul at andestech.com>
---
 board/AndesTech/adp-ag101/Makefile    |   60 ++++++++++++++
 board/AndesTech/adp-ag101/adp-ag101.c |  144 +++++++++++++++++++++++++++++++++
 board/AndesTech/adp-ag101/config.mk   |   46 +++++++++++
 3 files changed, 250 insertions(+), 0 deletions(-)
 create mode 100644 board/AndesTech/adp-ag101/Makefile
 create mode 100644 board/AndesTech/adp-ag101/adp-ag101.c
 create mode 100644 board/AndesTech/adp-ag101/config.mk

diff --git a/board/AndesTech/adp-ag101/Makefile b/board/AndesTech/adp-ag101/Makefile
new file mode 100644
index 0000000..53d8592
--- /dev/null
+++ b/board/AndesTech/adp-ag101/Makefile
@@ -0,0 +1,60 @@
+#
+# (C) Copyright 2002
+# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+# Marius Groeger <mgroeger at sysgo.de>
+#
+# Copyright (C) 2006 Andes Technology Corporation
+# Shawn Lin, Andes Tech Crop. <nobuhiro at andestech.com>
+# Macpaul Lin, Andes Technology Corporation <macpaul at andestech.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
+
+OBJS-y += adp-ag101.o ../common/serial.o ../common/flib_serial.o \
+	../common/flash.o ../common/flib_flash.o ../common/env.o
+OBJS-$(CONFIG_DRIVER_FTMAC100) += ../common/ftmac100.o
+OBJS-$(CONFIG_DRIVER_FTPCI100) += ../common/ftpci100.o
+OBJS-$(CONFIG_DRIVER_FOTG2xx) += ../common/fotg2xx.o
+
+SOBJS	:=
+OBJS	:= $(OBJS-y)
+
+all:	$(LIB)
+
+$(LIB):	$(OBJS) $(SOBJS)
+	$(AR) crv $@ $^
+
+clean:
+	rm -f $(SOBJS) $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/AndesTech/adp-ag101/adp-ag101.c b/board/AndesTech/adp-ag101/adp-ag101.c
new file mode 100644
index 0000000..8e56999
--- /dev/null
+++ b/board/AndesTech/adp-ag101/adp-ag101.c
@@ -0,0 +1,144 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger at sysgo.de>
+ *
+ * Copyright (C) 2006 Andes Technology Corporation
+ * Shawn Lin, Andes Technology Corporation <nobuhiro at andestech.com>
+ * Macpaul Lin, Andes Technology Corporation <macpaul at andestech.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 <asm/andesboot.h>
+//#include <porting.h>
+#include "../include/porting.h"
+
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init(bd_t *bd)
+{
+#ifdef not_complete_yet
+	/* Activate LED flasher */
+	IO_LEDFLSH = 0x40;
+#endif /* end_of_not */
+
+	/* arch number MACH_TYPE_EDB7312 */
+	bd->bi_arch_number = 91;
+
+	/* location of boot parameters */
+	bd->bi_boot_params = 0x400;
+
+	return 1;
+}
+
+/*
+ *	bank_num ==> setting the config of which bank (0, 1st, 2nd, ..)
+ *	data_width ==> the width of the SDRAM module on the bank
+ *	sdram_size ==> the size of each module
+ *	bus_width ==> the width of data bus
+ *	bank_size ==> the total memory size of the bank (should be equal as "sdram_size * how many modules")
+ */
+#define SDRAM_MODULE_WIDTH_4			0
+#define SDRAM_MODULE_WIDTH_8			(1<<12)
+#define SDRAM_MODULE_WIDTH_16			(2<<12)
+#define SDRAM_MODULE_WIDTH_32			(3<<12)
+
+
+// 16M bit, 64M bit,...
+#define SDRAM_MODULE_SIZE_16M			0
+#define SDRAM_MODULE_SIZE_64M			(1<<8)
+#define SDRAM_MODULE_SIZE_128M			(2<<8)
+#define SDRAM_MODULE_SIZE_256M			(3<<8)
+
+#define SDRAM_BUS_WIDTH_8			0
+#define SDRAM_BUS_WIDTH_16			(1<<4)
+#define SDRAM_BUS_WIDTH_32			(2<<4)
+
+// 1M byte, 2M byte,...
+#define SDRAM_BANK_SIZE_1M			0
+#define SDRAM_BANK_SIZE_2M			1
+#define SDRAM_BANK_SIZE_4M			2
+#define SDRAM_BANK_SIZE_8M			3
+#define SDRAM_BANK_SIZE_16M			4
+#define SDRAM_BANK_SIZE_32M			5
+#define SDRAM_BANK_SIZE_64M			6
+#define SDRAM_BANK_SIZE_128M			7
+#define SDRAM_BANK_SIZE_256M			8
+
+
+#define NDS32_COMMON_BANK_REG_BASE 			0x0c
+
+void sdram_config(int bank_num, u32 bank_base, int data_width, int sdram_size, int bus_width, int bank_size)
+{
+	u32 config_reg_val;
+
+	config_reg_val = (1UL<<28) | (bank_base>>4)&0x0fff0000 | data_width | sdram_size | bus_width | bank_size;
+
+	cpe_outl( NDS32_COMMON_SDRAMC_BASE + NDS32_COMMON_BANK_REG_BASE + bank_num*4, config_reg_val);
+}
+
+int dram_init(bd_t *bd)
+{
+#ifdef not_complete_yet
+	// initialize the base address of SDRAM
+	sdram_config( 0, 0x0,		SDRAM_MODULE_WIDTH_8, SDRAM_MODULE_SIZE_64M, SDRAM_BUS_WIDTH_32, SDRAM_BANK_SIZE_32M);
+	sdram_config( 1, 0x02000000,	SDRAM_MODULE_WIDTH_8, SDRAM_MODULE_SIZE_64M, SDRAM_BUS_WIDTH_32, SDRAM_BANK_SIZE_32M);
+	sdram_config( 2, 0x04000000,	SDRAM_MODULE_WIDTH_8, SDRAM_MODULE_SIZE_64M, SDRAM_BUS_WIDTH_32, SDRAM_BANK_SIZE_32M);
+	sdram_config( 3, 0x06000000,	SDRAM_MODULE_WIDTH_8, SDRAM_MODULE_SIZE_64M, SDRAM_BUS_WIDTH_32, SDRAM_BANK_SIZE_32M);
+#endif /* end_of_not */
+
+	int i;
+	u32 config_reg_ptr;
+	u32 config_reg_val;
+	u32 phys_sdram_size = 0;
+
+	/* for convinence, we assume there is only one bank in total.
+	 * (boot_ini will put all sdram at the continues address with the beginning is 0)
+	 */
+	for (i=0; i<8; ++i)
+	{
+		config_reg_ptr = NDS32_COMMON_SDRAMC_BASE + NDS32_COMMON_BANK_REG_BASE + i*4;
+		config_reg_val = cpe_inl(config_reg_ptr);
+
+		if ( (config_reg_val & 0x10000000) == 0)
+		{
+			continue;
+		}
+
+		switch (config_reg_val & 0x0f)
+		{
+			case SDRAM_BANK_SIZE_1M:	phys_sdram_size += 0x100000;		break;
+			case SDRAM_BANK_SIZE_2M:	phys_sdram_size += 0x200000;		break;
+			case SDRAM_BANK_SIZE_4M:	phys_sdram_size += 0x400000;		break;
+			case SDRAM_BANK_SIZE_8M:	phys_sdram_size += 0x800000;		break;
+			case SDRAM_BANK_SIZE_16M:	phys_sdram_size += 0x1000000;		break;
+			case SDRAM_BANK_SIZE_32M:	phys_sdram_size += 0x2000000;		break;
+			case SDRAM_BANK_SIZE_64M:	phys_sdram_size += 0x4000000;		break;
+			case SDRAM_BANK_SIZE_128M:	phys_sdram_size += 0x8000000;		break;
+			case SDRAM_BANK_SIZE_256M:	phys_sdram_size += 0x10000000;		break;
+		}
+	}
+	bd->bi_dram[0].start = PHYS_SDRAM_0;
+	bd->bi_dram[0].size  = phys_sdram_size;
+
+	return phys_sdram_size;
+}
diff --git a/board/AndesTech/adp-ag101/config.mk b/board/AndesTech/adp-ag101/config.mk
new file mode 100644
index 0000000..16bf578
--- /dev/null
+++ b/board/AndesTech/adp-ag101/config.mk
@@ -0,0 +1,46 @@
+#
+# (C) Copyright 2002
+# Gary Jennejohn, DENX Software Engineering, <gj at denx.de>
+# David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
+#
+# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
+#
+# see http://www.samsung.com/ for more information on SAMSUNG
+#
+# Copyright (C) 2006 Andes Technology Corporation
+# Shawn Lin, Andes Technology Corporation <nobuhiro at andestech.com>
+# Macpaul Lin, Andes Technology Corporation <macpaul at andestech.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
+
+# SMDK2410 has 1 bank of 32 MB DRAM
+#
+# 3000'0000 to 3200'0000
+#
+# Linux-Kernel is expected to be at 3000'0000, entry 3000'0000
+# optionally with a ramdisk at 3080'0000
+#
+# we load ourself to 31F0'0000
+#
+# download areas is 3100'0000
+
+PLATFORM_RELFLAGS += -gdwarf-2
+TEXT_BASE = 0x03200000
+LDSCRIPT := $(SRCTREE)/arch/$(ARCH)/cpu/$(CPU)/u-boot.lds
+EXTERN_LIB += $(shell $(CC) -print-file-name=include)/../static/el/libgcc.a
-- 
1.7.1



More information about the U-Boot mailing list