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"}, |
||||
}; |
@ -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