ARM: remove broken "at91rm9200dk" board
Signed-off-by: Wolfgang Denk <wd@denx.de>
This commit is contained in:
		
							parent
							
								
									b1a2bd4bb3
								
							
						
					
					
						commit
						1c85752258
					
				| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# (C) Copyright 2003-2006
 | 
					 | 
				
			||||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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).o
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
COBJS-y += $(BOARD).o
 | 
					 | 
				
			||||||
COBJS-y += flash.o
 | 
					 | 
				
			||||||
COBJS-y += led.o
 | 
					 | 
				
			||||||
ifdef CONFIG_HAS_DATAFLASH
 | 
					 | 
				
			||||||
COBJS-$(CONFIG_DATAFLASH_MMC_SELECT) += mux.o
 | 
					 | 
				
			||||||
COBJS-y += partition.o
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SRCS	:= $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
 | 
					 | 
				
			||||||
OBJS	:= $(addprefix $(obj),$(COBJS-y))
 | 
					 | 
				
			||||||
SOBJS	:= $(addprefix $(obj),$(SOBJS))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 | 
					 | 
				
			||||||
	$(call cmd_link_o_target, $(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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#########################################################################
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,167 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * (C) Copyright 2002
 | 
					 | 
				
			||||||
 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 | 
					 | 
				
			||||||
 * Marius Groeger <mgroeger@sysgo.de>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * 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 <exports.h>
 | 
					 | 
				
			||||||
#include <netdev.h>
 | 
					 | 
				
			||||||
#include <asm/arch/AT91RM9200.h>
 | 
					 | 
				
			||||||
#include <asm/io.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(CONFIG_DRIVER_ETHER)
 | 
					 | 
				
			||||||
#include <at91rm9200_net.h>
 | 
					 | 
				
			||||||
#include <dm9161.h>
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DECLARE_GLOBAL_DATA_PTR;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ------------------------------------------------------------------------- */
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Miscelaneous platform dependent initialisations
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int board_init (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/* Enable Ctrlc */
 | 
					 | 
				
			||||||
	console_init_f ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Correct IRDA resistor problem */
 | 
					 | 
				
			||||||
	/* Set PA23_TXD in Output */
 | 
					 | 
				
			||||||
	((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER = AT91C_PA23_TXD2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* memory and cpu-speed are setup before relocation */
 | 
					 | 
				
			||||||
	/* so we do _nothing_ here */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* arch number of AT91RM9200DK-Board */
 | 
					 | 
				
			||||||
	gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200DK;
 | 
					 | 
				
			||||||
	/* adress of boot parameters */
 | 
					 | 
				
			||||||
	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void board_reset (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO pio = AT91C_BASE_PIOA;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Clear PA19 to trigger the hard reset */
 | 
					 | 
				
			||||||
	writel(0x00080000, pio->PIO_CODR);
 | 
					 | 
				
			||||||
	writel(0x00080000, pio->PIO_OER);
 | 
					 | 
				
			||||||
	writel(0x00080000, pio->PIO_PER);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int dram_init (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	gd->bd->bi_dram[0].start = PHYS_SDRAM;
 | 
					 | 
				
			||||||
	gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_DRIVER_ETHER
 | 
					 | 
				
			||||||
#if defined(CONFIG_CMD_NET)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Name:
 | 
					 | 
				
			||||||
 *	at91rm9200_GetPhyInterface
 | 
					 | 
				
			||||||
 * Description:
 | 
					 | 
				
			||||||
 *	Initialise the interface functions to the PHY
 | 
					 | 
				
			||||||
 * Arguments:
 | 
					 | 
				
			||||||
 *	None
 | 
					 | 
				
			||||||
 * Return value:
 | 
					 | 
				
			||||||
 *	None
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	p_phyops->Init = dm9161_InitPhy;
 | 
					 | 
				
			||||||
	p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
 | 
					 | 
				
			||||||
	p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
 | 
					 | 
				
			||||||
	p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif	/* CONFIG_DRIVER_ETHER */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_DRIVER_AT91EMAC
 | 
					 | 
				
			||||||
int board_eth_init(bd_t *bis)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int rc = 0;
 | 
					 | 
				
			||||||
	rc = at91emac_register(bis, 0);
 | 
					 | 
				
			||||||
	return rc;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Disk On Chip (NAND) Millenium initialization.
 | 
					 | 
				
			||||||
 * The NAND lives in the CS2* space
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#if defined(CONFIG_CMD_NAND)
 | 
					 | 
				
			||||||
extern ulong nand_probe (ulong physadr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define AT91_SMARTMEDIA_BASE 0x40000000	/* physical address to access memory on NCS3 */
 | 
					 | 
				
			||||||
void nand_init (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/* Setup Smart Media, fitst enable the address range of CS3 */
 | 
					 | 
				
			||||||
	*AT91C_EBI_CSA |= AT91C_EBI_CS3A_SMC_SmartMedia;
 | 
					 | 
				
			||||||
	/* set the bus interface characteristics based on
 | 
					 | 
				
			||||||
	   tDS Data Set up Time 30 - ns
 | 
					 | 
				
			||||||
	   tDH Data Hold Time 20 - ns
 | 
					 | 
				
			||||||
	   tALS ALE Set up Time 20 - ns
 | 
					 | 
				
			||||||
	   16ns at 60 MHz ~= 3  */
 | 
					 | 
				
			||||||
/*memory mapping structures */
 | 
					 | 
				
			||||||
#define SM_ID_RWH	(5 << 28)
 | 
					 | 
				
			||||||
#define SM_RWH		(1 << 28)
 | 
					 | 
				
			||||||
#define SM_RWS		(0 << 24)
 | 
					 | 
				
			||||||
#define SM_TDF		(1 << 8)
 | 
					 | 
				
			||||||
#define SM_NWS		(3)
 | 
					 | 
				
			||||||
	AT91C_BASE_SMC2->SMC2_CSR[3] = (SM_RWH | SM_RWS |
 | 
					 | 
				
			||||||
		AT91C_SMC2_ACSS_STANDARD | AT91C_SMC2_DBW_8 |
 | 
					 | 
				
			||||||
		SM_TDF | AT91C_SMC2_WSEN | SM_NWS);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* enable the SMOE line PC0=SMCE, A21=CLE, A22=ALE */
 | 
					 | 
				
			||||||
	*AT91C_PIOC_ASR = AT91C_PC0_BFCK | AT91C_PC1_BFRDY_SMOE |
 | 
					 | 
				
			||||||
		AT91C_PC3_BFBAA_SMWE;
 | 
					 | 
				
			||||||
	*AT91C_PIOC_PDR = AT91C_PC0_BFCK | AT91C_PC1_BFRDY_SMOE |
 | 
					 | 
				
			||||||
		AT91C_PC3_BFBAA_SMWE;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Configure PC2 as input (signal READY of the SmartMedia) */
 | 
					 | 
				
			||||||
	*AT91C_PIOC_PER = AT91C_PC2_BFAVD;	/* enable direct output enable */
 | 
					 | 
				
			||||||
	*AT91C_PIOC_ODR = AT91C_PC2_BFAVD;	/* disable output */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Configure PB1 as input (signal Card Detect of the SmartMedia) */
 | 
					 | 
				
			||||||
	*AT91C_PIOB_PER = AT91C_PIO_PB1;	/* enable direct output enable */
 | 
					 | 
				
			||||||
	*AT91C_PIOB_ODR = AT91C_PIO_PB1;	/* disable output */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* PIOB and PIOC clock enabling */
 | 
					 | 
				
			||||||
	*AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
 | 
					 | 
				
			||||||
	*AT91C_PMC_PCER = 1 << AT91C_ID_PIOC;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (*AT91C_PIOB_PDSR & AT91C_PIO_PB1)
 | 
					 | 
				
			||||||
		printf ("  No SmartMedia card inserted\n");
 | 
					 | 
				
			||||||
#ifdef DEBUG
 | 
					 | 
				
			||||||
	printf ("  SmartMedia card inserted\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	printf ("Probing at 0x%.8x\n", AT91_SMARTMEDIA_BASE);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	printf ("%4lu MB\n", nand_probe(AT91_SMARTMEDIA_BASE) >> 20);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
CONFIG_SYS_TEXT_BASE = 0x21f00000
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,504 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * (C) Copyright 2002
 | 
					 | 
				
			||||||
 * Lineo, Inc. <www.lineo.com>
 | 
					 | 
				
			||||||
 * Bernhard Kuhn <bkuhn@lineo.com>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * (C) Copyright 2002
 | 
					 | 
				
			||||||
 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 | 
					 | 
				
			||||||
 * Alex Zuepke <azu@sysgo.de>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * 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>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ulong myflush(void);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Flash Organization Structure */
 | 
					 | 
				
			||||||
typedef struct OrgDef
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	unsigned int sector_number;
 | 
					 | 
				
			||||||
	unsigned int sector_size;
 | 
					 | 
				
			||||||
} OrgDef;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Flash Organizations */
 | 
					 | 
				
			||||||
OrgDef OrgAT49BV16x4[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	{  8,  8*1024 },	/*   8 *  8 kBytes sectors */
 | 
					 | 
				
			||||||
	{  2, 32*1024 },	/*   2 * 32 kBytes sectors */
 | 
					 | 
				
			||||||
	{ 30, 64*1024 },	/*  30 * 64 kBytes sectors */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
OrgDef OrgAT49BV16x4A[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	{  8,  8*1024 },	/*   8 *  8 kBytes sectors */
 | 
					 | 
				
			||||||
	{ 31, 64*1024 },	/*  31 * 64 kBytes sectors */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
OrgDef OrgAT49BV6416[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	{   8,  8*1024 },	/*   8 *  8 kBytes sectors */
 | 
					 | 
				
			||||||
	{ 127, 64*1024 },	/* 127 * 64 kBytes sectors */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
flash_info_t    flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* AT49BV1614A Codes */
 | 
					 | 
				
			||||||
#define FLASH_CODE1		0xAA
 | 
					 | 
				
			||||||
#define FLASH_CODE2		0x55
 | 
					 | 
				
			||||||
#define ID_IN_CODE		0x90
 | 
					 | 
				
			||||||
#define ID_OUT_CODE		0xF0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CMD_READ_ARRAY		0x00F0
 | 
					 | 
				
			||||||
#define CMD_UNLOCK1		0x00AA
 | 
					 | 
				
			||||||
#define CMD_UNLOCK2		0x0055
 | 
					 | 
				
			||||||
#define CMD_ERASE_SETUP		0x0080
 | 
					 | 
				
			||||||
#define CMD_ERASE_CONFIRM	0x0030
 | 
					 | 
				
			||||||
#define CMD_PROGRAM		0x00A0
 | 
					 | 
				
			||||||
#define CMD_UNLOCK_BYPASS	0x0020
 | 
					 | 
				
			||||||
#define CMD_SECTOR_UNLOCK	0x0070
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MEM_FLASH_ADDR1		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x00005555<<1)))
 | 
					 | 
				
			||||||
#define MEM_FLASH_ADDR2		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x00002AAA<<1)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BIT_ERASE_DONE		0x0080
 | 
					 | 
				
			||||||
#define BIT_RDY_MASK		0x0080
 | 
					 | 
				
			||||||
#define BIT_PROGRAM_ERROR	0x0020
 | 
					 | 
				
			||||||
#define BIT_TIMEOUT		0x80000000 /* our flag */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define READY 1
 | 
					 | 
				
			||||||
#define ERR   2
 | 
					 | 
				
			||||||
#define TMO   4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*-----------------------------------------------------------------------
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void flash_identification (flash_info_t * info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	volatile u16 manuf_code, device_code, add_device_code;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = FLASH_CODE1;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR2 = FLASH_CODE2;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = ID_IN_CODE;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	manuf_code = *(volatile u16 *) CONFIG_SYS_FLASH_BASE;
 | 
					 | 
				
			||||||
	device_code = *(volatile u16 *) (CONFIG_SYS_FLASH_BASE + 2);
 | 
					 | 
				
			||||||
	add_device_code = *(volatile u16 *) (CONFIG_SYS_FLASH_BASE + (3 << 1));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = FLASH_CODE1;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR2 = FLASH_CODE2;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = ID_OUT_CODE;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Vendor type */
 | 
					 | 
				
			||||||
	info->flash_id = ATM_MANUFACT & FLASH_VENDMASK;
 | 
					 | 
				
			||||||
	printf ("Atmel: ");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV1614 & FLASH_TYPEMASK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if ((add_device_code & FLASH_TYPEMASK) ==
 | 
					 | 
				
			||||||
			(ATM_ID_BV1614A & FLASH_TYPEMASK)) {
 | 
					 | 
				
			||||||
			info->flash_id |= ATM_ID_BV1614A & FLASH_TYPEMASK;
 | 
					 | 
				
			||||||
			printf ("AT49BV1614A (16Mbit)\n");
 | 
					 | 
				
			||||||
		} else {				/* AT49BV1614 Flash */
 | 
					 | 
				
			||||||
			info->flash_id |= ATM_ID_BV1614 & FLASH_TYPEMASK;
 | 
					 | 
				
			||||||
			printf ("AT49BV1614 (16Mbit)\n");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV6416 & FLASH_TYPEMASK)) {
 | 
					 | 
				
			||||||
		info->flash_id |= ATM_ID_BV6416 & FLASH_TYPEMASK;
 | 
					 | 
				
			||||||
		printf ("AT49BV6416 (64Mbit)\n");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ushort flash_number_sector(OrgDef *pOrgDef, unsigned int nb_blocks)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i, nb_sectors = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (i=0; i<nb_blocks; i++){
 | 
					 | 
				
			||||||
		nb_sectors += pOrgDef[i].sector_number;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nb_sectors;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void flash_unlock_sector(flash_info_t * info, unsigned int sector)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	volatile u16 *addr = (volatile u16 *) (info->start[sector]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = CMD_UNLOCK1;
 | 
					 | 
				
			||||||
	*addr = CMD_SECTOR_UNLOCK;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ulong flash_init (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i, j, k;
 | 
					 | 
				
			||||||
	unsigned int flash_nb_blocks, sector;
 | 
					 | 
				
			||||||
	unsigned int start_address;
 | 
					 | 
				
			||||||
	OrgDef *pOrgDef;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ulong size = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
 | 
					 | 
				
			||||||
		ulong flashbase = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		flash_identification (&flash_info[i]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
 | 
					 | 
				
			||||||
			(ATM_ID_BV1614 & FLASH_TYPEMASK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			pOrgDef = OrgAT49BV16x4;
 | 
					 | 
				
			||||||
			flash_nb_blocks = sizeof (OrgAT49BV16x4) / sizeof (OrgDef);
 | 
					 | 
				
			||||||
		} else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
 | 
					 | 
				
			||||||
			(ATM_ID_BV1614A & FLASH_TYPEMASK)){	/* AT49BV1614A Flash */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			pOrgDef = OrgAT49BV16x4A;
 | 
					 | 
				
			||||||
			flash_nb_blocks = sizeof (OrgAT49BV16x4A) / sizeof (OrgDef);
 | 
					 | 
				
			||||||
		} else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
 | 
					 | 
				
			||||||
			(ATM_ID_BV6416 & FLASH_TYPEMASK)){	/* AT49BV6416 Flash */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			pOrgDef = OrgAT49BV6416;
 | 
					 | 
				
			||||||
			flash_nb_blocks = sizeof (OrgAT49BV6416) / sizeof (OrgDef);
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			flash_nb_blocks = 0;
 | 
					 | 
				
			||||||
			pOrgDef = OrgAT49BV16x4;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		flash_info[i].sector_count = flash_number_sector(pOrgDef, flash_nb_blocks);
 | 
					 | 
				
			||||||
		memset (flash_info[i].protect, 0, flash_info[i].sector_count);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (i == 0)
 | 
					 | 
				
			||||||
			flashbase = PHYS_FLASH_1;
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			panic ("configured too many flash banks!\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		sector = 0;
 | 
					 | 
				
			||||||
		start_address = flashbase;
 | 
					 | 
				
			||||||
		flash_info[i].size = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		for (j = 0; j < flash_nb_blocks; j++) {
 | 
					 | 
				
			||||||
			for (k = 0; k < pOrgDef[j].sector_number; k++) {
 | 
					 | 
				
			||||||
				flash_info[i].start[sector++] = start_address;
 | 
					 | 
				
			||||||
				start_address += pOrgDef[j].sector_size;
 | 
					 | 
				
			||||||
				flash_info[i].size += pOrgDef[j].sector_size;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		size += flash_info[i].size;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
 | 
					 | 
				
			||||||
			(ATM_ID_BV6416 & FLASH_TYPEMASK)){	/* AT49BV6416 Flash */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/* Unlock all sectors at reset */
 | 
					 | 
				
			||||||
			for (j=0; j<flash_info[i].sector_count; j++){
 | 
					 | 
				
			||||||
				flash_unlock_sector(&flash_info[i], j);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Protect binary boot image */
 | 
					 | 
				
			||||||
	flash_protect (FLAG_PROTECT_SET,
 | 
					 | 
				
			||||||
		       CONFIG_SYS_FLASH_BASE,
 | 
					 | 
				
			||||||
		       CONFIG_SYS_FLASH_BASE + CONFIG_SYS_BOOT_SIZE - 1, &flash_info[0]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Protect environment variables */
 | 
					 | 
				
			||||||
	flash_protect (FLAG_PROTECT_SET,
 | 
					 | 
				
			||||||
		       CONFIG_ENV_ADDR,
 | 
					 | 
				
			||||||
		       CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Protect U-Boot gzipped image */
 | 
					 | 
				
			||||||
	flash_protect (FLAG_PROTECT_SET,
 | 
					 | 
				
			||||||
		       CONFIG_SYS_U_BOOT_BASE,
 | 
					 | 
				
			||||||
		       CONFIG_SYS_U_BOOT_BASE + CONFIG_SYS_U_BOOT_SIZE - 1, &flash_info[0]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return size;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*-----------------------------------------------------------------------
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void flash_print_info (flash_info_t * info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	switch (info->flash_id & FLASH_VENDMASK) {
 | 
					 | 
				
			||||||
	case (ATM_MANUFACT & FLASH_VENDMASK):
 | 
					 | 
				
			||||||
		printf ("Atmel: ");
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	default:
 | 
					 | 
				
			||||||
		printf ("Unknown Vendor ");
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	switch (info->flash_id & FLASH_TYPEMASK) {
 | 
					 | 
				
			||||||
	case (ATM_ID_BV1614 & FLASH_TYPEMASK):
 | 
					 | 
				
			||||||
		printf ("AT49BV1614 (16Mbit)\n");
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	case (ATM_ID_BV1614A & FLASH_TYPEMASK):
 | 
					 | 
				
			||||||
		printf ("AT49BV1614A (16Mbit)\n");
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	case (ATM_ID_BV6416 & FLASH_TYPEMASK):
 | 
					 | 
				
			||||||
		printf ("AT49BV6416 (64Mbit)\n");
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	default:
 | 
					 | 
				
			||||||
		printf ("Unknown Chip Type\n");
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	printf ("  Size: %ld MB in %d Sectors\n",
 | 
					 | 
				
			||||||
		info->size >> 20, info->sector_count);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	printf ("  Sector Start Addresses:");
 | 
					 | 
				
			||||||
	for (i = 0; i < info->sector_count; i++) {
 | 
					 | 
				
			||||||
		if ((i % 5) == 0) {
 | 
					 | 
				
			||||||
			printf ("\n   ");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		printf (" %08lX%s", info->start[i],
 | 
					 | 
				
			||||||
			info->protect[i] ? " (RO)" : "     ");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	printf ("\n");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*-----------------------------------------------------------------------
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int flash_erase (flash_info_t * info, int s_first, int s_last)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	ulong result;
 | 
					 | 
				
			||||||
	int iflag, cflag, prot, sect;
 | 
					 | 
				
			||||||
	int rc = ERR_OK;
 | 
					 | 
				
			||||||
	int chip1;
 | 
					 | 
				
			||||||
	ulong start;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* first look for protection bits */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (info->flash_id == FLASH_UNKNOWN)
 | 
					 | 
				
			||||||
		return ERR_UNKNOWN_FLASH_TYPE;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((s_first < 0) || (s_first > s_last)) {
 | 
					 | 
				
			||||||
		return ERR_INVAL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((info->flash_id & FLASH_VENDMASK) !=
 | 
					 | 
				
			||||||
		(ATM_MANUFACT & FLASH_VENDMASK)) {
 | 
					 | 
				
			||||||
		return ERR_UNKNOWN_FLASH_VENDOR;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	prot = 0;
 | 
					 | 
				
			||||||
	for (sect = s_first; sect <= s_last; ++sect) {
 | 
					 | 
				
			||||||
		if (info->protect[sect]) {
 | 
					 | 
				
			||||||
			prot++;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if (prot)
 | 
					 | 
				
			||||||
		return ERR_PROTECTED;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * Disable interrupts which might cause a timeout
 | 
					 | 
				
			||||||
	 * here. Remember that our exception vectors are
 | 
					 | 
				
			||||||
	 * at address 0 in the flash, and we don't want a
 | 
					 | 
				
			||||||
	 * (ticker) exception to happen while the flash
 | 
					 | 
				
			||||||
	 * chip is in programming mode.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	cflag = icache_status ();
 | 
					 | 
				
			||||||
	icache_disable ();
 | 
					 | 
				
			||||||
	iflag = disable_interrupts ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Start erase on unprotected sectors */
 | 
					 | 
				
			||||||
	for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
 | 
					 | 
				
			||||||
		printf ("Erasing sector %2d ... ", sect);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* arm simple, non interrupt dependent timer */
 | 
					 | 
				
			||||||
		start = get_timer(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (info->protect[sect] == 0) {	/* not protected */
 | 
					 | 
				
			||||||
			volatile u16 *addr = (volatile u16 *) (info->start[sect]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
 | 
					 | 
				
			||||||
			*addr = CMD_ERASE_CONFIRM;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/* wait until flash is ready */
 | 
					 | 
				
			||||||
			chip1 = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			do {
 | 
					 | 
				
			||||||
				result = *addr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				/* check timeout */
 | 
					 | 
				
			||||||
				if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
 | 
					 | 
				
			||||||
					MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
 | 
					 | 
				
			||||||
					chip1 = TMO;
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE)
 | 
					 | 
				
			||||||
					chip1 = READY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			} while (!chip1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (chip1 == ERR) {
 | 
					 | 
				
			||||||
				rc = ERR_PROG_ERROR;
 | 
					 | 
				
			||||||
				goto outahere;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if (chip1 == TMO) {
 | 
					 | 
				
			||||||
				rc = ERR_TIMOUT;
 | 
					 | 
				
			||||||
				goto outahere;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			printf ("ok.\n");
 | 
					 | 
				
			||||||
		} else {			/* it was protected */
 | 
					 | 
				
			||||||
			printf ("protected!\n");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (ctrlc ())
 | 
					 | 
				
			||||||
		printf ("User Interrupt!\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
outahere:
 | 
					 | 
				
			||||||
	/* allow flash to settle - wait 10 ms */
 | 
					 | 
				
			||||||
	udelay_masked (10000);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (iflag)
 | 
					 | 
				
			||||||
		enable_interrupts ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (cflag)
 | 
					 | 
				
			||||||
		icache_enable ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return rc;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*-----------------------------------------------------------------------
 | 
					 | 
				
			||||||
 * Copy memory to flash
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int write_word (flash_info_t * info, ulong dest, ulong data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	volatile u16 *addr = (volatile u16 *) dest;
 | 
					 | 
				
			||||||
	ulong result;
 | 
					 | 
				
			||||||
	int rc = ERR_OK;
 | 
					 | 
				
			||||||
	int cflag, iflag;
 | 
					 | 
				
			||||||
	int chip1;
 | 
					 | 
				
			||||||
	ulong start;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * Check if Flash is (sufficiently) erased
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	result = *addr;
 | 
					 | 
				
			||||||
	if ((result & data) != data)
 | 
					 | 
				
			||||||
		return ERR_NOT_ERASED;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * Disable interrupts which might cause a timeout
 | 
					 | 
				
			||||||
	 * here. Remember that our exception vectors are
 | 
					 | 
				
			||||||
	 * at address 0 in the flash, and we don't want a
 | 
					 | 
				
			||||||
	 * (ticker) exception to happen while the flash
 | 
					 | 
				
			||||||
	 * chip is in programming mode.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	cflag = icache_status ();
 | 
					 | 
				
			||||||
	icache_disable ();
 | 
					 | 
				
			||||||
	iflag = disable_interrupts ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = CMD_UNLOCK1;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR2 = CMD_UNLOCK2;
 | 
					 | 
				
			||||||
	MEM_FLASH_ADDR1 = CMD_PROGRAM;
 | 
					 | 
				
			||||||
	*addr = data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* arm simple, non interrupt dependent timer */
 | 
					 | 
				
			||||||
	start = get_timer(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* wait until flash is ready */
 | 
					 | 
				
			||||||
	chip1 = 0;
 | 
					 | 
				
			||||||
	do {
 | 
					 | 
				
			||||||
		result = *addr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* check timeout */
 | 
					 | 
				
			||||||
		if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
 | 
					 | 
				
			||||||
			chip1 = ERR | TMO;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if (!chip1 && ((result & 0x80) == (data & 0x80)))
 | 
					 | 
				
			||||||
			chip1 = READY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} while (!chip1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	*addr = CMD_READ_ARRAY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (chip1 == ERR || *addr != data)
 | 
					 | 
				
			||||||
		rc = ERR_PROG_ERROR;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (iflag)
 | 
					 | 
				
			||||||
		enable_interrupts ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (cflag)
 | 
					 | 
				
			||||||
		icache_enable ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return rc;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*-----------------------------------------------------------------------
 | 
					 | 
				
			||||||
 * Copy memory to flash.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	ulong wp, data;
 | 
					 | 
				
			||||||
	int rc;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (addr & 1) {
 | 
					 | 
				
			||||||
		printf ("unaligned destination not supported\n");
 | 
					 | 
				
			||||||
		return ERR_ALIGN;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((int) src & 1) {
 | 
					 | 
				
			||||||
		printf ("unaligned source not supported\n");
 | 
					 | 
				
			||||||
		return ERR_ALIGN;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	wp = addr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	while (cnt >= 2) {
 | 
					 | 
				
			||||||
		data = *((volatile u16 *) src);
 | 
					 | 
				
			||||||
		if ((rc = write_word (info, wp, data)) != 0) {
 | 
					 | 
				
			||||||
			return (rc);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		src += 2;
 | 
					 | 
				
			||||||
		wp += 2;
 | 
					 | 
				
			||||||
		cnt -= 2;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (cnt == 1) {
 | 
					 | 
				
			||||||
		data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) <<
 | 
					 | 
				
			||||||
										   8);
 | 
					 | 
				
			||||||
		if ((rc = write_word (info, wp, data)) != 0) {
 | 
					 | 
				
			||||||
			return (rc);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		src += 1;
 | 
					 | 
				
			||||||
		wp += 1;
 | 
					 | 
				
			||||||
		cnt -= 1;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return ERR_OK;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,80 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * (C) Copyright 2006
 | 
					 | 
				
			||||||
 * Atmel Nordic AB <www.atmel.com>
 | 
					 | 
				
			||||||
 * Ulf Samuelsson <ulf@atmel.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 <common.h>
 | 
					 | 
				
			||||||
#include <asm/arch/AT91RM9200.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define	GREEN_LED	AT91C_PIO_PB0
 | 
					 | 
				
			||||||
#define	YELLOW_LED	AT91C_PIO_PB1
 | 
					 | 
				
			||||||
#define	RED_LED	AT91C_PIO_PB2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	green_LED_on(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_CODR		= GREEN_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	 yellow_LED_on(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_CODR		= YELLOW_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	 red_LED_on(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_CODR		= RED_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	green_LED_off(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_SODR		= GREEN_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	yellow_LED_off(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_SODR		= YELLOW_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void	red_LED_off(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	PIOB->PIO_SODR		= RED_LED;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void coloured_LED_init (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	AT91PS_PIO	PIOB	= AT91C_BASE_PIOB;
 | 
					 | 
				
			||||||
	AT91PS_PMC	PMC	= AT91C_BASE_PMC;
 | 
					 | 
				
			||||||
	PMC->PMC_PCER		= (1 << AT91C_ID_PIOB);	/* Enable PIOB clock */
 | 
					 | 
				
			||||||
	/* Disable peripherals on LEDs */
 | 
					 | 
				
			||||||
	PIOB->PIO_PER		= AT91C_PIO_PB2 | AT91C_PIO_PB1 | AT91C_PIO_PB0;
 | 
					 | 
				
			||||||
	/* Enable pins as outputs */
 | 
					 | 
				
			||||||
	PIOB->PIO_OER		= AT91C_PIO_PB2 | AT91C_PIO_PB1 | AT91C_PIO_PB0;
 | 
					 | 
				
			||||||
	/* Turn all LEDs OFF */
 | 
					 | 
				
			||||||
	PIOB->PIO_SODR		= AT91C_PIO_PB2 | AT91C_PIO_PB1 | AT91C_PIO_PB0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,29 +0,0 @@
 | 
				
			||||||
#include <config.h>
 | 
					 | 
				
			||||||
#include <common.h>
 | 
					 | 
				
			||||||
#include <asm/hardware.h>
 | 
					 | 
				
			||||||
#include <dataflash.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int AT91F_GetMuxStatus(void) {
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_PER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Set in PIO mode */
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_OER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Configure in output */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(AT91C_BASE_PIOB->PIO_ODSR & CONFIG_SYS_DATAFLASH_MMC_PIO)
 | 
					 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AT91F_SelectMMC(void) {
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_PER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Set in PIO mode */
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_OER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Configure in output */
 | 
					 | 
				
			||||||
	/* Set Output */
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_SODR = CONFIG_SYS_DATAFLASH_MMC_PIO;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AT91F_SelectSPI(void) {
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_PER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Set in PIO mode */
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_OER = CONFIG_SYS_DATAFLASH_MMC_PIO; /* Configure in output */
 | 
					 | 
				
			||||||
	/* Clear Output */
 | 
					 | 
				
			||||||
	AT91C_BASE_PIOB->PIO_CODR = CONFIG_SYS_DATAFLASH_MMC_PIO;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,40 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * (C) Copyright 2008
 | 
					 | 
				
			||||||
 * Ulf Samuelsson <ulf@atmel.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 <config.h>
 | 
					 | 
				
			||||||
#include <asm/hardware.h>
 | 
					 | 
				
			||||||
#include <dataflash.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
 | 
					 | 
				
			||||||
	{CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0},	/* Logical adress, CS */
 | 
					 | 
				
			||||||
	{CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3, 3}
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*define the area offsets*/
 | 
					 | 
				
			||||||
dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
 | 
					 | 
				
			||||||
	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
 | 
					 | 
				
			||||||
	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
 | 
					 | 
				
			||||||
	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
 | 
					 | 
				
			||||||
	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
 | 
					 | 
				
			||||||
	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
| 
						 | 
					@ -57,7 +57,6 @@ at91rm9200ek_ram             arm         arm920t     at91rm9200ek        atmel
 | 
				
			||||||
eb_cpux9k2                   arm         arm920t     -                   BuS            at91
 | 
					eb_cpux9k2                   arm         arm920t     -                   BuS            at91
 | 
				
			||||||
cpuat91                      arm         arm920t     cpuat91             eukrea         at91        cpuat91
 | 
					cpuat91                      arm         arm920t     cpuat91             eukrea         at91        cpuat91
 | 
				
			||||||
cpuat91_ram                  arm         arm920t     cpuat91             eukrea         at91        cpuat91:RAMBOOT
 | 
					cpuat91_ram                  arm         arm920t     cpuat91             eukrea         at91        cpuat91:RAMBOOT
 | 
				
			||||||
at91rm9200dk                 arm         arm920t     -                   atmel          at91rm9200
 | 
					 | 
				
			||||||
mx1ads                       arm         arm920t     -                   -              imx
 | 
					mx1ads                       arm         arm920t     -                   -              imx
 | 
				
			||||||
scb9328                      arm         arm920t     -                   -              imx
 | 
					scb9328                      arm         arm920t     -                   -              imx
 | 
				
			||||||
cm4008                       arm         arm920t     -                   -              ks8695
 | 
					cm4008                       arm         arm920t     -                   -              ks8695
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ easily if here is something they might want to dig for...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Board	Arch	CPU	removed	    Commit	last known maintainer/contact
 | 
					Board	Arch	CPU	removed	    Commit	last known maintainer/contact
 | 
				
			||||||
=============================================================================
 | 
					=============================================================================
 | 
				
			||||||
 | 
					at91rm9200dk arm arm920t -	  2011-07-17
 | 
				
			||||||
m501sk	arm	arm920t	-	  2011-07-17
 | 
					m501sk	arm	arm920t	-	  2011-07-17
 | 
				
			||||||
kb9202	arm	arm920t	-	  2011-07-17
 | 
					kb9202	arm	arm920t	-	  2011-07-17
 | 
				
			||||||
csb637	arm	arm920t	-	  2011-07-17
 | 
					csb637	arm	arm920t	-	  2011-07-17
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,202 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Rick Bronson <rick@efn.org>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Configuration settings for the AT91RM9200DK 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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_AT91_LEGACY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ARM asynchronous clock */
 | 
					 | 
				
			||||||
#define AT91C_MAIN_CLOCK	179712000	/* from 18.432 MHz crystal (18432000 / 4 * 39) */
 | 
					 | 
				
			||||||
#define AT91C_MASTER_CLOCK	59904000	/* peripheral clock (AT91C_MASTER_CLOCK / 3) */
 | 
					 | 
				
			||||||
/* #define AT91C_MASTER_CLOCK	44928000 */	/* peripheral clock (AT91C_MASTER_CLOCK / 4) */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define AT91_SLOW_CLOCK		32768	/* slow clock */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_ARM920T		1	/* This is an ARM920T Core	*/
 | 
					 | 
				
			||||||
#define CONFIG_AT91RM9200	1	/* It's an Atmel AT91RM9200 SoC	*/
 | 
					 | 
				
			||||||
#define CONFIG_AT91RM9200DK	1	/* on an AT91RM9200DK Board	*/
 | 
					 | 
				
			||||||
#undef  CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff	*/
 | 
					 | 
				
			||||||
#define USE_920T_MMU		1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_CMDLINE_TAG	1	/* enable passing of ATAGs	*/
 | 
					 | 
				
			||||||
#define CONFIG_SETUP_MEMORY_TAGS 1
 | 
					 | 
				
			||||||
#define CONFIG_INITRD_TAG	1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 | 
					 | 
				
			||||||
#define CONFIG_SYS_USE_MAIN_OSCILLATOR		1
 | 
					 | 
				
			||||||
/* flash */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_EBI_CFGR_VAL	0x00000000
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SMC_CSR0_VAL	0x00003284 /* 16bit, 2 TDF, 4 WS */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* clocks */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PLLAR_VAL	0x20263E04 /* 179.712000 MHz for PCK */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PLLBR_VAL	0x10483E0E /* 48.054857 MHz (divider by 2 for USB) */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MCKR_VAL	0x00000202 /* PCK/3 = MCK Master Clock = 59.904000MHz from PLLA */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* sdram */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PIOC_ASR_VAL	0xFFFF0000 /* Configure PIOC as peripheral (D16/D31) */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PIOC_BSR_VAL	0x00000000
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PIOC_PDR_VAL	0xFFFF0000
 | 
					 | 
				
			||||||
#define CONFIG_SYS_EBI_CSA_VAL	0x00000002 /* CS1=CONFIG_SYS_SDRAM */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_CR_VAL	0x2188c155 /* set up the CONFIG_SYS_SDRAM */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRAM	0x20000000 /* address of the CONFIG_SYS_SDRAM */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRAM1	0x20000080 /* address of the CONFIG_SYS_SDRAM */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRAM_VAL	0x00000000 /* value written to CONFIG_SYS_SDRAM */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_MR_VAL	0x00000002 /* Precharge All */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_MR_VAL1	0x00000004 /* refresh */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_MR_VAL2	0x00000003 /* Load Mode Register */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_MR_VAL3	0x00000000 /* Normal Mode */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SDRC_TR_VAL	0x000002E0 /* Write refresh rate */
 | 
					 | 
				
			||||||
#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Size of malloc() pool
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MALLOC_LEN	(CONFIG_ENV_SIZE + 128*1024)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_BAUDRATE 115200
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Hardware drivers
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* define one of these to choose the DBGU, USART0  or USART1 as console */
 | 
					 | 
				
			||||||
#define CONFIG_AT91RM9200_USART
 | 
					 | 
				
			||||||
#define CONFIG_DBGU
 | 
					 | 
				
			||||||
#undef CONFIG_USART0
 | 
					 | 
				
			||||||
#undef CONFIG_USART1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef	CONFIG_HWFLOW			/* don't include RTS/CTS flow control support	*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef	CONFIG_MODEM_SUPPORT		/* disable modem initialization stuff */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_BOOTDELAY      3
 | 
					 | 
				
			||||||
/* #define CONFIG_ENV_OVERWRITE	1 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * BOOTP options
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#define CONFIG_BOOTP_BOOTFILESIZE
 | 
					 | 
				
			||||||
#define CONFIG_BOOTP_BOOTPATH
 | 
					 | 
				
			||||||
#define CONFIG_BOOTP_GATEWAY
 | 
					 | 
				
			||||||
#define CONFIG_BOOTP_HOSTNAME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Command line configuration.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#include <config_cmd_default.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_CMD_DHCP
 | 
					 | 
				
			||||||
#define CONFIG_CMD_MII
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <asm/arch/AT91RM9200.h>	/* needed for port definitions */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_NR_DRAM_BANKS 1
 | 
					 | 
				
			||||||
#define PHYS_SDRAM 0x20000000
 | 
					 | 
				
			||||||
#define PHYS_SDRAM_SIZE 0x2000000  /* 32 megs */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MEMTEST_START		PHYS_SDRAM
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MEMTEST_END			CONFIG_SYS_MEMTEST_START + PHYS_SDRAM_SIZE - 262144
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_NET_MULTI		1
 | 
					 | 
				
			||||||
#ifdef CONFIG_NET_MULTI
 | 
					 | 
				
			||||||
#define CONFIG_DRIVER_AT91EMAC		1
 | 
					 | 
				
			||||||
#define CONFIG_SYS_RX_ETH_BUFFER	8
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define CONFIG_DRIVER_ETHER		1
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_NET_RETRY_COUNT		20
 | 
					 | 
				
			||||||
#define CONFIG_AT91C_USE_RMII
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* AC Characteristics */
 | 
					 | 
				
			||||||
/* DLYBS = tCSS = 250ns min and DLYBCT = tCSH = 250ns */
 | 
					 | 
				
			||||||
#define DATAFLASH_TCSS	(0xC << 16)
 | 
					 | 
				
			||||||
#define DATAFLASH_TCHS	(0x1 << 24)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_HAS_DATAFLASH		1
 | 
					 | 
				
			||||||
#define CONFIG_SYS_SPI_WRITE_TOUT		(5*CONFIG_SYS_HZ)
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MAX_DATAFLASH_BANKS		2
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MAX_DATAFLASH_PAGES		16384
 | 
					 | 
				
			||||||
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0	0xC0000000	/* Logical adress for CS0 */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3	0xD0000000	/* Logical adress for CS3 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define PHYS_FLASH_1			0x10000000
 | 
					 | 
				
			||||||
#define PHYS_FLASH_SIZE			0x200000  /* 2 megs main flash */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_FLASH_BASE			PHYS_FLASH_1
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MAX_FLASH_BANKS		1
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MAX_FLASH_SECT		256
 | 
					 | 
				
			||||||
#define CONFIG_SYS_FLASH_ERASE_TOUT		(2*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_FLASH_WRITE_TOUT		(2*CONFIG_SYS_HZ) /* Timeout for Flash Write */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef	CONFIG_ENV_IS_IN_DATAFLASH
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_ENV_IS_IN_DATAFLASH
 | 
					 | 
				
			||||||
#define CONFIG_ENV_OFFSET			0x20000
 | 
					 | 
				
			||||||
#define CONFIG_ENV_ADDR			(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
 | 
					 | 
				
			||||||
#define CONFIG_ENV_SIZE			0x2000  /* 0x8000 */
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define CONFIG_ENV_IS_IN_FLASH		1
 | 
					 | 
				
			||||||
#ifdef CONFIG_SKIP_LOWLEVEL_INIT
 | 
					 | 
				
			||||||
#define CONFIG_ENV_ADDR			(PHYS_FLASH_1 + 0xe000)  /* between boot.bin and u-boot.bin.gz */
 | 
					 | 
				
			||||||
#define CONFIG_ENV_SIZE			0x2000  /* 0x8000 */
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define CONFIG_ENV_ADDR			(PHYS_FLASH_1 + 0x60000)  /* after u-boot.bin */
 | 
					 | 
				
			||||||
#define CONFIG_ENV_SIZE			0x10000 /* sectors are 64K here */
 | 
					 | 
				
			||||||
#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 | 
					 | 
				
			||||||
#endif	/* CONFIG_ENV_IS_IN_DATAFLASH */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_SYS_LOAD_ADDR		0x21000000  /* default load address */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_SKIP_LOWLEVEL_INIT
 | 
					 | 
				
			||||||
#define CONFIG_SYS_BOOT_SIZE		0x6000 /* 24 KBytes */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_U_BOOT_BASE		(PHYS_FLASH_1 + 0x10000)
 | 
					 | 
				
			||||||
#define CONFIG_SYS_U_BOOT_SIZE		0x10000 /* 64 KBytes */
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define CONFIG_SYS_BOOT_SIZE		0x00 /* 0 KBytes */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_U_BOOT_BASE		PHYS_FLASH_1
 | 
					 | 
				
			||||||
#define CONFIG_SYS_U_BOOT_SIZE		0x60000 /* 384 KBytes */
 | 
					 | 
				
			||||||
#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_SYS_BAUDRATE_TABLE	{ 115200, 19200, 38400, 57600, 9600 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PROMPT		"U-Boot> "	/* Monitor Command Prompt */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_CBSIZE		256		/* Console I/O Buffer Size */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_MAXARGS		16		/* max number of command args */
 | 
					 | 
				
			||||||
#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_SYS_HZ 1000
 | 
					 | 
				
			||||||
#define CONFIG_SYS_HZ_CLOCK AT91C_MASTER_CLOCK/2	/* AT91C_TC0_CMR is implicitly set to */
 | 
					 | 
				
			||||||
						/* AT91C_TC_TIMER_DIV1_CLOCK */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CONFIG_STACKSIZE	(32*1024)	/* regular stack */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_USE_IRQ
 | 
					 | 
				
			||||||
#error CONFIG_USE_IRQ not supported
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue