[U-Boot-Users] [PATCH] Add support for AT91RM9200EK board
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Mon Apr 14 15:26:38 CEST 2008
> +
> + /* 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_AT91RM9200EK;
> + /* adress of boot parameters */
> + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
> +
> + return 0;
> +}
> +
> +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)
Could you put it on the same line
> +
> +/*
> + * 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 */
> +
> +/*
> + * 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 */
Please use this style of comment
/*
* .......
*/
> +/*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;
> +ulong myflush(void);
> +
> +
> +/* Flash Organization Structure */
> +typedef struct OrgDef
> +{
> + unsigned int sector_number;
> + unsigned int sector_size;
> +} OrgDef;
Do not start car name with Upercase
> +
> +
> +/* 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[CFG_MAX_FLASH_BANKS];
> +
> +/* AT49BV1614A Codes */
> +#define FLASH_CODE1 0xAA
> +#define FLASH_CODE2 0x55
> +#define ID_IN_CODE 0x90
> +#define ID_OUT_CODE 0xF0
> +
Please remove one empty line
> +
> +#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
> + printf ("AT49BV6416 (64Mbit)\n");
> + }
> +}
> +
> +ushort flash_number_sector(OrgDef *pOrgDef, unsigned int nb_blocks)
> +{
> + int i, nb_sectors = 0;
please split it in 2 lines
> +
> + for (i=0; i<nb_blocks; i++){
> + nb_sectors += pOrgDef[i].sector_number;
> + }
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;
> +
Please remove empty line
> + ulong size = 0;
> +
> + for (i = 0; i < CFG_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) ==
> + for (i = 0; i < info->sector_count; i++) {
> + if ((i % 5) == 0) {
> + printf ("\n ");
> + }
> +
Please remove whitespace
> + if(info->protect[i] != FLAG_PROTECT_INVALID) {
> + 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;
> +
> + /* 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;
> + }
please like this
if ((s_first < 0) || (s_first > s_last))
return ERR_INVAL;
and please the same for the other
> +
> + 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++;
> + }
> +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)
> +{
> + DECLARE_GLOBAL_DATA_PTR;
> + AT91PS_PIO PIOB = AT91C_BASE_PIOB;
> + AT91PS_PMC PMC = AT91C_BASE_PMC;
Please add an empty line
> + 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;
> +}
> diff -urN u-boot.cmp/board/atmel/at91rm9200ek/Makefile u-boot/board/atmel/at91rm9200ek/Makefile
> --- u-boot.cmp/board/atmel/at91rm9200ek/Makefile 1970-01-01 01:00:00.000000000 +0100
> +++ u-boot/board/atmel/at91rm9200ek/Makefile 2008-04-12 21:56:14.000000000 +0200
> @@ -0,0 +1,50 @@
> +#
> +# (C) Copyright 2003
> +# Wolfgang Denk, DENX Software Engineering, wd at 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 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>
> +#include <at91rm9200_net.h>
> +#include <dm9161.h>
> +
> +int board_late_init(void)
> +{
> + DECLARE_GLOBAL_DATA_PTR;
> +
please remove whitespace
> + /* Fix Ethernet Initialization Bug when starting Linux from U-Boot */
> + eth_init(gd->bd);
> + return 0;
> +}
> +
> +
> +/* checks if addr is in RAM */
> +int addr2ram(ulong addr) {
> + int result = 0;
> +
please remove whitespace
> + if((addr >= PHYS_SDRAM) && (addr < (PHYS_SDRAM + PHYS_SDRAM_SIZE)))
> + result = 1;
> +
> + return result;
> +}
> +
> diff -urN u-boot.cmp/board/atmel/at91rm9200ek/mux.c u-boot/board/atmel/at91rm9200ek/mux.c
> --- u-boot.cmp/board/atmel/at91rm9200ek/mux.c 1970-01-01 01:00:00.000000000 +0100
> +++ u-boot/board/atmel/at91rm9200ek/mux.c 2008-04-12 21:15:08.000000000 +0200
> @@ -0,0 +1,37 @@
> +#include <config.h>
> +#include <common.h>
> +#include <asm/hardware.h>
> +#include <dataflash.h>
> +
> +int AT91F_GetMuxStatus(void) {
> +#ifdef DATAFLASH_MMC_SELECT
> + AT91C_BASE_PIOB->PIO_PER = DATAFLASH_MMC_SELECT; /* Set in PIO mode */
> + AT91C_BASE_PIOB->PIO_OER = DATAFLASH_MMC_SELECT; /* Configure in output */
> +
> +
please remothe 1 empty line
> + if(AT91C_BASE_PIOB->PIO_ODSR & DATAFLASH_MMC_SELECT) {
> + return 1;
> + } else {
> + return 0;
> + }
> +#endif
> + return 0;
> +}
> +
> +void AT91F_SelectMMC(void) {
> +#ifdef DATAFLASH_MMC_SELECT
> + AT91C_BASE_PIOB->PIO_PER = DATAFLASH_MMC_SELECT; /* Set in PIO mode */
> + AT91C_BASE_PIOB->PIO_OER = DATAFLASH_MMC_SELECT; /* Configure in output */
> + /* Set Output */
> + AT91C_BASE_PIOB->PIO_SODR = DATAFLASH_MMC_SELECT;
> +#endif
> +}
> +
> +void AT91F_SelectSPI(void) {
> +#ifdef DATAFLASH_MMC_SELECT
> + AT91C_BASE_PIOB->PIO_PER = DATAFLASH_MMC_SELECT; /* Set in PIO mode */
> + AT91C_BASE_PIOB->PIO_OER = DATAFLASH_MMC_SELECT; /* Configure in output */
> + /* Clear Output */
> + AT91C_BASE_PIOB->PIO_CODR = DATAFLASH_MMC_SELECT;
> +#endif
> +}
> diff -urN u-boot.cmp/board/atmel/at91rm9200ek/partition.c u-boot/board/atmel/at91rm9200ek/partition.c
> --- u-boot.cmp/board/atmel/at91rm9200ek/partition.c 1970-01-01 01:00:00.000000000 +0100
> +++ u-boot/board/atmel/at91rm9200ek/partition.c 2008-04-12 20:35:54.000000000 +0200
> @@ -0,0 +1,38 @@
> +/*
> + *
> + * 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[CFG_MAX_DATAFLASH_BANKS];
> +
> +struct dataflash_addr cs[CFG_MAX_DATAFLASH_BANKS] = {
> + {CFG_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */
> + {CFG_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"},
> +};
Coulde create a default one?
> diff -urN u-boot.cmp/board/atmel/at91rm9200ek/u-boot.lds u-boot/board/atmel/at91rm9200ek/u-boot.lds
> --- u-boot.cmp/board/atmel/at91rm9200ek/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
> +++ u-boot/board/atmel/at91rm9200ek/u-boot.lds 2008-04-12 21:15:08.000000000 +0200
> @@ -0,0 +1,57 @@
> +/*
> + * (C) Copyright 2002
> + * Gary Jennejohn, DENX Software Engineering, <gj at 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
> + */
> +
> +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
> +/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
please remove it
> +OUTPUT_ARCH(arm)
> +ENTRY(_start)
> +SECTIONS
> +{
> + . = 0x00000000;
> +
> + . = ALIGN(4);
> + .text :
> + {
> + cpu/arm920t/start.o (.text)
> + *(.text)
> + }
> +
> + . = ALIGN(4);
> + .rodata : { *(.rodata) }
> +
> + . = ALIGN(4);
> + .data : { *(.data) }
> +
> + . = ALIGN(4);
> + .got : { *(.got) }
> +
> + . = .;
> + __u_boot_cmd_start = .;
> + .u_boot_cmd : { *(.u_boot_cmd) }
> + __u_boot_cmd_end = .;
> +
> + . = ALIGN(4);
> + __bss_start = .;
> + .bss : { *(.bss) }
> + _end = .;
> +}
> Filerna u-boot.cmp/.git/index och u-boot/.git/index skiljer
> diff -urN u-boot.cmp/include/configs/at91rm9200ek.h u-boot/include/configs/at91rm9200ek.h
> --- u-boot.cmp/include/configs/at91rm9200ek.h 1970-01-01 01:00:00.000000000 +0100
> +++ u-boot/include/configs/at91rm9200ek.h 2008-04-12 22:01:34.000000000 +0200
> @@ -0,0 +1,267 @@
> +/*
> + * Ulf Samuelsson <ulf at atmel.com>
> + * Rick Bronson <rick at efn.org>
> + *
> + * Configuration settings for the AT91RM9200EK 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
> +
> +/* 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) */
please remove it
> +
> +#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_AT91RM9200EK 1 /* on an AT91RM9200DK Board */
> +#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
Please remove the whitespace
> +#define USE_920T_MMU 1
> +
> +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
> +
> +#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
> +
please remove 1 empty line
> +
> +/*
> + * Command line configuration.
> + */
> +#include <config_cmd_default.h>
> +
> +#define CONFIG_CMD_MII
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_FAT
> +#define CONFIG_CMD_MUX
> +#define CFG_MEMTEST_END CFG_MEMTEST_START + PHYS_SDRAM_SIZE - 262144
> +
> +#define CONFIG_DRIVER_ETHER
> +#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 CFG_SPI_WRITE_TOUT (5*CFG_HZ)
> +#define CFG_MAX_DATAFLASH_BANKS 2
please remove whitespace
> +#define CFG_MAX_DATAFLASH_PAGES 16384
please remove whitespace
> +#define CFG_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* Logical adress for CS0 */
> +#define CFG_DATAFLASH_LOGIC_ADDR_CS3 0xD0000000 /* Logical adress for CS3 */
> +#define CFG_SUPPORT_BLOCK_ERASE 1
> +#define DATAFLASH_MMC_SELECT AT91C_PIO_PB22
> +
> +#define PHYS_FLASH_1 0x10000000
> +#define PHYS_FLASH_SIZE 0x800000 /* 8 megs main flash */
> +#define CFG_FLASH_BASE PHYS_FLASH_1
> +#define CFG_MAX_FLASH_BANKS 1
> +#define CFG_MAX_FLASH_SECT 256
> +#define CFG_FLASH_ERASE_TOUT (2*CFG_HZ) /* Timeout for Flash Erase */
> +#define CFG_FLASH_WRITE_TOUT (2*CFG_HZ) /* Timeout for Flash Write */
> +
> +#define CFG_ENV_IS_IN_DATAFLASH 1
> +
> +#ifdef CFG_ENV_IS_IN_DATAFLASH
> +
> +#define CFG_ENV_OFFSET 0x4200
> +#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
> +#define CFG_ENV_SIZE 0x2000 /* 8 * 1056 really , but start.s is not OK with this*/
> +
> +#else
> +#define CFG_ENV_IS_IN_FLASH 1
> +#ifdef CONFIG_SKIP_LOWLEVEL_INIT
> +#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x60000) /* after u-boot.bin */
> +#define CFG_ENV_SIZE 0x10000 /* sectors are 64K here */
> +#else
> +#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0xe000) /* between boot.bin and u-boot.bin.gz */
> +#define CFG_ENV_SIZE 0x2000 /* 0x8000 */
> +#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
> +#endif /* CFG_ENV_IS_IN_DATAFLASH */
> +
> +
please remove 1 empty line
> +#define CFG_LOAD_ADDR 0x21000000 /* default load address */
> +
> +#ifdef CONFIG_SKIP_LOWLEVEL_INIT
> +#define CFG_BOOT_SIZE 0x00 /* 0 KBytes */
> +#define CFG_U_BOOT_BASE PHYS_FLASH_1
> +#define CFG_U_BOOT_SIZE 0x60000 /* 384 KBytes */
> +#else
> +#define CFG_BOOT_SIZE 0x6000 /* 24 KBytes */
> +#define CFG_U_BOOT_BASE (PHYS_FLASH_1 + 0x10000)
> +#define CFG_U_BOOT_SIZE 0x10000 /* 64 KBytes */
> +#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
> +
> +#define CFG_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 }
> +
> +#define CFG_PROMPT "U-Boot> " /* Monitor Command Prompt */
> +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
> +#define CFG_MAXARGS 16 /* max number of command args */
> +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
> +
> +#ifndef __ASSEMBLY__
> +/*-----------------------------------------------------------------------
> + * Board specific extension for bd_info
> + *
> + * This structure is embedded in the global bd_info (bd_t) structure
> + * and can be used by the board specific code (eg board/...)
> + */
> +
> +struct bd_info_ext {
> + /* helper variable for board environment handling
> + *
> + * env_crc_valid == 0 => uninitialised
> + * env_crc_valid > 0 => environment crc in flash is valid
> + * env_crc_valid < 0 => environment crc in flash is invalid
> + */
> + int env_crc_valid;
> +};
> +#endif
> +
> +#define CFG_HZ 1000
> +#define CFG_HZ_CLOCK AT91C_MASTER_CLOCK/2 /* AT91C_TC0_CMR is implicitly set to */
Please algin them
> + /* AT91C_TC_TIMER_DIV1_CLOCK */
> +
> +#define CONFIG_STACKSIZE (32*1024) /* regular stack */
> +#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
please remove whitespace
> +#define CONFIG_STACKSIZE_FIQ (4*1024)
please remove whitespace
> +/*
> +#ifdef CONFIG_USE_IRQ
> +#error CONFIG_USE_IRQ not supported
> +#endif
> +*/
please remove it
> +#endif
Best Regards,
J.
More information about the U-Boot
mailing list