[U-Boot-Users] [PATCH] Add support for AT91RM9200EK board

Add support for the AT91RM9200EK Board.
Signed-off-by: Ulf Samuelsson ulf@atmel.com

Le samedi 12 avril 2008 à 22:06 +0200, Ulf Samuelsson a écrit :
Add support for the AT91RM9200EK Board.
Hi Ulf,
I do have a few issues with your patch. As you have seen, I started adapting the Atmel changes for the AT91SAM boards, and in doing so I tried to implement (well, quite a lot was borrowed from Linux) a common infrastructure for the SAM9 and CAP9 CPUs/boards.
I think that the AT91RM9200 could integrate quite well in the existing framework. I haven't done the job myself yet because I have quite limited ressources at the moment (and this is why I chose 'arch-at91sam9' instead of 'arch-at91'...) but since you're contributing a new port it may be the right time to do it.
This means for example: - using at91 gpio macros: at91_set_A_periph(), etc. - using the standard CFI flash driver instead of the custom one - maybe others...
Ah, and it would be much easier to quote and comment on your patches if they were inlined in your mails.
Thanks,
Stelian.

Le samedi 12 avril 2008 à 22:06 +0200, Ulf Samuelsson a écrit :
Add support for the AT91RM9200EK Board.
Hi Ulf,
I do have a few issues with your patch. As you have seen, I started adapting the Atmel changes for the AT91SAM boards, and in doing so I tried to implement (well, quite a lot was borrowed from Linux) a common infrastructure for the SAM9 and CAP9 CPUs/boards.
I think that the AT91RM9200 could integrate quite well in the existing framework. I haven't done the job myself yet because I have quite limited ressources at the moment (and this is why I chose 'arch-at91sam9' instead of 'arch-at91'...) but since you're contributing a new port it may be the right time to do it.
This means for example:
- using at91 gpio macros: at91_set_A_periph(), etc.
- using the standard CFI flash driver instead of the custom one
- maybe others...
The at91rm9200dk board already exists with similar code.
I think the chances that it someone will work on this is higher if the code is inside U-Boot than outside U-Boot though.
BTW: Why not have the AVR32 and AT91 use the same. The PIO peripheral is the same.
Ah, and it would be much easier to quote and comment on your patches if they were inlined in your mails.
OK
Thanks,
Stelian.
Stelian Pop stelian@popies.net
Best Regards Ulf Samuelsson

Le lundi 14 avril 2008 à 08:01 +0200, Ulf Samuelsson a écrit :
The at91rm9200dk board already exists with similar code.
I think the chances that it someone will work on this is higher if the code is inside U-Boot than outside U-Boot though.
Not sure about this. If it's there and it works there will be little incentive to change...
At the same time, you are doing some testing for the new code, and for (almost) the same price you could (implement and) test the cleaned up version instead.
BTW: Why not have the AVR32 and AT91 use the same. The PIO peripheral is the same.
It may be a good idea for the future.
However, this is not how it is done today in Linux, and I've tried to minimize changes (especially in the header files) to ease the porting.
Thanks,

- /* 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@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@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@atmel.com
- Rick Bronson rick@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.

In message 1208030816.23686.13.camel@elrond.atmel.sweden you wrote:
Add support for the AT91RM9200EK Board.
I guess you are aware that the merge window is not open, i. e. you are submitting this only for discussion here...
diff -urN u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c --- u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c 1970-01-01 01:00:00.000000000 +0100 +++ u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c 2008-04-12 21:28:59.000000000 +0200 @@ -0,0 +1,142 @@ +/*
- (C) Copyright 2002
- Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- Marius Groeger mgroeger@sysgo.de
A new file, and these are the only copyright holders? Really? Ditto for the other files.
There are coding style issues: trailing white space,
diff -urN u-boot.cmp/board/atmel/at91rm9200ek/flash.c u-boot/board/atmel/at91rm9200ek/flash.c --- u-boot.cmp/board/atmel/at91rm9200ek/flash.c 1970-01-01 01:00:00.000000000 +0100 +++ u-boot/board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 @@ -0,0 +1,509 @@ +/*
- (C) Copyright 2002
- Lineo, Inc. <www.lineo.com>
- Bernhard Kuhn bkuhn@lineo.com
I think this is CFI conformant flash, isn't it? So please use the CFI driver instead.
Best regards,
Wolfgang Denk

In message 1208030816.23686.13.camel@elrond.atmel.sweden you wrote:
Add support for the AT91RM9200EK Board.
I guess you are aware that the merge window is not open, i. e. you are submitting this only for discussion here...
The goal is to have the board included when the merge window reopens.
diff -urN u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c --- u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c 1970-01-01 01:00:00.000000000 +0100 +++ u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c 2008-04-12 21:28:59.000000000 +0200 @@ -0,0 +1,142 @@ +/*
- (C) Copyright 2002
- Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- Marius Groeger mgroeger@sysgo.de
A new file, and these are the only copyright holders? Really? Ditto for the other files.
Not a new file, a 3+ years old file.
There are coding style issues: trailing white space,
OK.
diff -urN u-boot.cmp/board/atmel/at91rm9200ek/flash.c u-boot/board/atmel/at91rm9200ek/flash.c --- u-boot.cmp/board/atmel/at91rm9200ek/flash.c 1970-01-01 01:00:00.000000000 +0100 +++ u-boot/board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 @@ -0,0 +1,509 @@ +/*
- (C) Copyright 2002
- Lineo, Inc. <www.lineo.com>
- Bernhard Kuhn bkuhn@lineo.com
I think this is CFI conformant flash, isn't it? So please use the CFI driver instead.
This code has been tested on the AT91RM9200EK board (not by me) and CFI code has not been tested on the AT91RM9200EK board.
So I see four possible choices. 1) Do not add AT91RM9200EK support in u-boot. 2) Add current *tested* support for AT91RM9200EK 3) Add AT91RM9200EK with CFI support without more than rudimentary testing 4) Wait until someone else tests CFI support on AT91RM9200EK and submits
---- Option 5) "Add AT91RM9200EK after me thorougly testing CFI support" is not going to happen due to time constraints and/or other priorities.
The flash driver already exists in the AT91RM9200DK board support package. This board is obsolete since 4 years or so. Most people using U-boot for AT91 does not use the main trunk. They use the Atmel specific version for which there exist no good method for non-Atmel people to submit patches.
I think the most practical approach to allow getting rid of the Atmel specific version is to include the legacy stuff (AT91RM9200 related) first. Then move the shared stuff to an board/atmel/common directory to make it easy to clean up for those interested later.
Best regards,
Best Regards Ulf Samuelsson

In message 010601c89ed1$e51c4dd0$070514ac@atmel.com you wrote:
I guess you are aware that the merge window is not open, i. e. you are submitting this only for discussion here...
The goal is to have the board included when the merge window reopens.
OK, so this submission was for review only.
@@ -0,0 +1,142 @@ +/*
- (C) Copyright 2002
- Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- Marius Groeger mgroeger@sysgo.de
A new file, and these are the only copyright holders? Really? Ditto for the other files.
Not a new file, a 3+ years old file.
OK, but the copyright entries are still obviously not up to date. Please fix.
In all similar files, too.
--- u-boot.cmp/board/atmel/at91rm9200ek/flash.c 1970-01-01 01:00:00.000000000 +0100 +++ u-boot/board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 @@ -0,0 +1,509 @@ +/*
- (C) Copyright 2002
- Lineo, Inc. <www.lineo.com>
- Bernhard Kuhn bkuhn@lineo.com
I think this is CFI conformant flash, isn't it? So please use the CFI driver instead.
This code has been tested on the AT91RM9200EK board (not by me) and CFI code has not been tested on the AT91RM9200EK board.
Then please change the implementation to use the CFI driver, and test it. There is enough time to make it for the next merge window.
So I see four possible choices.
- Do not add AT91RM9200EK support in u-boot.
- Add current *tested* support for AT91RM9200EK
- Add AT91RM9200EK with CFI support without more than rudimentary
testing 4) Wait until someone else tests CFI support on AT91RM9200EK and submits
Option 5) "Add AT91RM9200EK after me thorougly testing CFI support" is not going to happen due to time constraints and/or other priorities.
6) Submit patches for AT91RM9200EK with CFI support and wait for community feedback.
The flash driver already exists in the AT91RM9200DK board support package.
Yes, this is on the remove list, too.
This board is obsolete since 4 years or so.
That doesn't really matter. We're talking about adding new code to the public tree, and we have certain rules doing this. One of these rules is not to repeat old mistakes - in this case not to add proprietary flash drivers when the CFI driver can be used.
I think the most practical approach to allow getting rid of the Atmel specific version is to include the legacy stuff (AT91RM9200 related) first. Then move the shared stuff to an board/atmel/common directory to make it easy to clean up for those interested later.
Sorry, we all know how the "clean up later" approach (doesn't) work.
Please change the implementation to use the CFI driver. I will reject the proprietary flash driver unless there are strikt technical reasons why the CFI driver cannot be used.
Best regards,
Wolfgang Denk

- Submit patches for AT91RM9200EK with CFI support and wait for
community feedback.
No time, so that won't happen (as I told you).
The flash driver already exists in the AT91RM9200DK board support package.
Yes, this is on the remove list, too.
Fine, Once someone replaces the flash driver for the DK with CFI driver, and test it... I can use this as the base for an AT91RM9200EK patch.
Best Regards Ulf Samuelsson ulf@atmel.com Atmel Nordic AB Mail: Box 2033, 174 02 Sundbyberg, Sweden Visit: Kavallerivägen 24, 174 58 Sundbyberg, Sweden Phone +46 (8) 441 54 22 Fax +46 (8) 441 54 29 GSM +46 (706) 22 44 57

Le mardi 15 avril 2008 à 23:35 +0200, Ulf Samuelsson a écrit :
- Submit patches for AT91RM9200EK with CFI support and wait for
community feedback.
No time, so that won't happen (as I told you).
Did you look at what we're talking about ? Adding CFI support means: - removing the old driver - adding half a dozen #defines to the config file - some minimal glue to make the thing compile. (and you even have working examples - the AT91CAP9ADK and AT91SAM9260 boards - to look at how it's done).
I'd say this is something that can be done in probably less time that you're spending here arguing about it.
Stelian.
participants (5)
-
Jean-Christophe PLAGNIOL-VILLARD
-
Stelian Pop
-
Ulf Samuelsson
-
Ulf Samuelsson
-
Wolfgang Denk