Skip to contentSkip to conversation

Add support for AT91RM9200EK board

PATCH New Ulf Samuelsson 5 participants 10 messages Apr 12, 2008 – Apr 15, 2008

lore
Share & tools
lore
#1 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Le samedi 12 avril 2008 ? 22:06 +0200, Ulf Samuelsson a ?crit :

Quoted 1 line

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.

Signature · 1 line
Stelian Pop <[email protected]>
#2 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Quoted 17 lines

Le samedi 12 avril 2008 ? 22:06 +0200, Ulf Samuelsson a ?crit :

Quoted 1 line

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.

Quoted 5 lines

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.

Quoted 3 lines

Ah, and it would be much easier to quote and comment on your patches if they were inlined in your mails.

OK

Quoted 5 lines

Thanks,

Stelian.

Signature · 1 line
Stelian Pop <[email protected]>

Best Regards
Ulf Samuelsson

#3 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Le lundi 14 avril 2008 ? 08:01 +0200, Ulf Samuelsson a ?crit :

Quoted 4 lines

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.

Quoted 2 lines

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,

Signature · 1 line
Stelian Pop <[email protected]>
#4 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

In reply to Ulf Samuelsson
Quoted 15 lines
(quoted diff) +15 -0
+
+	/* 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;
+}

Review

Quoted 10 lines
(quoted diff) +10 -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

Quoted 29 lines
(quoted diff) +29 -0
+
+/*
+ * 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);
+

Review

Quoted 10 lines
(quoted diff) +10 -0
+#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
/*
* .......
*/

Quoted 26 lines
(quoted diff) +26 -0
+/*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;

Review

Quoted 10 lines
(quoted diff) +10 -0
+	*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

Quoted 20 lines
(quoted diff) +20 -0
+
+
+/* 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 */

Review

Quoted 10 lines
(quoted diff) +10 -0
+};
+
+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

Quoted 4 lines
(quoted diff) +4 -0
+
+#define CMD_READ_ARRAY		0x00F0
+#define CMD_UNLOCK1		0x00AA
+#define CMD_UNLOCK2		0x0055

Review

Quoted 10 lines
(quoted diff) +10 -0
+#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

Review

Quoted 4 lines
(quoted diff) +4 -0
+
+	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;
Quoted 10 lines
(quoted diff) +10 -0
+
+	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;

Review

Quoted 10 lines
(quoted diff) +10 -0
+}
+
+
+ulong flash_init (void)
+{
+	int i, j, k;
+	unsigned int flash_nb_blocks, sector;
+	unsigned int start_address;
+	OrgDef *pOrgDef;
+

Please remove empty line

Quoted 8 lines
(quoted diff) +8 -0
+	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) ==

Review

Quoted 10 lines
(quoted diff) +10 -0
+			(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

Quoted 16 lines
(quoted diff) +16 -0
+		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;

Review

Quoted 10 lines
(quoted diff) +10 -0
+	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

Quoted 25 lines
(quoted diff) +25 -0
+
+	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)
+{

Review

Quoted 10 lines
(quoted diff) +10 -0
+	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

Quoted 39 lines
(quoted diff) +8 -0
+	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

board/atmel/at91rm9200ek/Makefile +27 -0
@@ -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
+ */

board/atmel/at91rm9200ek/Makefile line 37

Quoted 10 lines
board/atmel/at91rm9200ek/Makefile +10 -0
+
+#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

board/atmel/at91rm9200ek/Makefile line 47

Quoted 10 lines
board/atmel/at91rm9200ek/Makefile +10 -0
+	/* 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

Quoted 11 lines
board/atmel/at91rm9200ek/Makefile +6 -0
+  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

board/atmel/at91rm9200ek/mux.c +1 -0
@@ -0,0 +1,37 @@
+#include <config.h>

board/atmel/at91rm9200ek/mux.c line 11

Quoted 10 lines
board/atmel/at91rm9200ek/mux.c +10 -0
+#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

Quoted 58 lines
board/atmel/at91rm9200ek/mux.c +26 -0
+	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

board/atmel/at91rm9200ek/partition.c +28 -0
@@ -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}

board/atmel/at91rm9200ek/partition.c line 38

Quoted 10 lines
board/atmel/at91rm9200ek/partition.c +10 -0
+};
+
+/*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?

Quoted 19 lines

diff -urN u-boot.cmp/board/atmel/at91rm9200ek/u-boot.lds u-boot/board/atmel/at91rm9200ek/u-boot.lds

board/atmel/at91rm9200ek/u-boot.lds +15 -0
@@ -0,0 +1,57 @@
+/*
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <[email protected]>
+ *
+ * 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

board/atmel/at91rm9200ek/u-boot.lds line 25

Quoted 10 lines
board/atmel/at91rm9200ek/u-boot.lds +10 -0
+ * 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

Quoted 59 lines
board/atmel/at91rm9200ek/u-boot.lds +32 -0
+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

include/configs/at91rm9200ek.h +22 -0
@@ -0,0 +1,267 @@
+/*
+ * Ulf Samuelsson <[email protected]>
+ * Rick Bronson <[email protected]>
+ *
+ * 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,

include/configs/at91rm9200ek.h line 32

Quoted 10 lines
include/configs/at91rm9200ek.h +10 -0
+ * 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

include/configs/at91rm9200ek.h line 39

Quoted 7 lines
include/configs/at91rm9200ek.h +7 -0
+
+#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

Quoted 9 lines
include/configs/at91rm9200ek.h +9 -0
+#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

include/configs/at91rm9200ek.h line 58

Quoted 10 lines
include/configs/at91rm9200ek.h +10 -0
+/* #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

Quoted 14 lines
include/configs/at91rm9200ek.h +14 -0
+
+/*
+ * 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

include/configs/at91rm9200ek.h line 82

Quoted 10 lines
include/configs/at91rm9200ek.h +10 -0
+#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

include/configs/at91rm9200ek.h line 83

Quoted 1 line
include/configs/at91rm9200ek.h +1 -0
+#define CFG_MAX_DATAFLASH_PAGES 	16384

please remove whitespace

Quoted 23 lines
include/configs/at91rm9200ek.h +23 -0
+#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

include/configs/at91rm9200ek.h line 116

Quoted 10 lines
include/configs/at91rm9200ek.h +10 -0
+#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

Quoted 30 lines
include/configs/at91rm9200ek.h +30 -0
+#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
+	 *

include/configs/at91rm9200ek.h line 156

Quoted 10 lines
include/configs/at91rm9200ek.h +10 -0
+	 * 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

include/configs/at91rm9200ek.h line 160

Quoted 4 lines
include/configs/at91rm9200ek.h +4 -0
+					/* AT91C_TC_TIMER_DIV1_CLOCK */
+
+#define CONFIG_STACKSIZE	(32*1024)	/* regular stack */
+#define CONFIG_STACKSIZE_IRQ  	(4*1024)        /* IRQ stack */

please remove whitespace

include/configs/at91rm9200ek.h line 161

Quoted 1 line
include/configs/at91rm9200ek.h +1 -0
+#define CONFIG_STACKSIZE_FIQ  	(4*1024) 

please remove whitespace

include/configs/at91rm9200ek.h line 166

Quoted 5 lines
include/configs/at91rm9200ek.h +5 -0
+/*
+#ifdef CONFIG_USE_IRQ
+#error CONFIG_USE_IRQ not supported
+#endif
+*/

please remove it

include/configs/at91rm9200ek.h line 167

Quoted 1 line
include/configs/at91rm9200ek.h +1 -0
+#endif

Best Regards,
J.

#5 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

In reply to Ulf Samuelsson
Quoted 2 lines · In message <[email protected]> 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...

board/atmel/at91rm9200ek/at91rm9200ek.c line 4

Quoted 8 lines

diff -urN u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c

board/atmel/at91rm9200ek/at91rm9200ek.c +4 -0
@@ -0,0 +1,142 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <[email protected]>

A new file, and these are the only copyright holders? Really? Ditto for the other files.

There are coding style issues: trailing white space,

board/atmel/at91rm9200ek/flash.c line 4

Quoted 8 lines

diff -urN u-boot.cmp/board/atmel/at91rm9200ek/flash.c u-boot/board/atmel/at91rm9200ek/flash.c

board/atmel/at91rm9200ek/flash.c +4 -0
@@ -0,0 +1,509 @@
+/*
+ * (C) Copyright 2002
+ * Lineo, Inc. <www.lineo.com>
+ * Bernhard Kuhn <[email protected]>

I think this is CFI conformant flash, isn't it? So please use the CFI driver instead.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Microsoft Multitasking:
                     several applications can crash at the same time.
#6 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Quoted 7 lines
Quoted 2 lines · In message <[email protected]> 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.

Quoted 12 lines

board/atmel/at91rm9200ek/at91rm9200ek.c 2008-04-12 21:28:59.000000000 +0200 line 4

Quoted 8 lines

diff -urN u-boot.cmp/board/atmel/at91rm9200ek/at91rm9200ek.c u-boot/board/atmel/at91rm9200ek/at91rm9200ek.c

board/atmel/at91rm9200ek/at91rm9200ek.c 2008-04-12 21:28:59.000000000 +0200 renamed from board/atmel/at91rm9200ek/at91rm9200ek.c 1970-01-01 01:00:00.000000000 +0100 +4 -0
@@ -0,0 +1,142 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <[email protected]>

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.

Quoted 1 line

There are coding style issues: trailing white space,

OK.

Quoted 11 lines

board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 line 4

Quoted 8 lines

diff -urN u-boot.cmp/board/atmel/at91rm9200ek/flash.c u-boot/board/atmel/at91rm9200ek/flash.c

board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 renamed from board/atmel/at91rm9200ek/flash.c 1970-01-01 01:00:00.000000000 +0100 +4 -0
@@ -0,0 +1,509 @@
+/*
+ * (C) Copyright 2002
+ * Lineo, Inc. <www.lineo.com>
+ * Bernhard Kuhn <[email protected]>

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.

Quoted 3 lines

Best regards,

Best Regards
Ulf Samuelsson

#7 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Quoted 5 lines · In message <[email protected]> you wrote:
Quoted 3 lines

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.

Quoted 11 lines
Quoted 9 lines

Review line 4

Quoted 5 lines
(quoted diff) +4 -0
@@ -0,0 +1,142 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <[email protected]>

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.

Quoted 11 lines
Quoted 10 lines

board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 line 4

Quoted 7 lines
board/atmel/at91rm9200ek/flash.c 2008-04-12 21:15:08.000000000 +0200 renamed from board/atmel/at91rm9200ek/flash.c 1970-01-01 01:00:00.000000000 +0100 +4 -0
@@ -0,0 +1,509 @@
+/*
+ * (C) Copyright 2002
+ * Lineo, Inc. <www.lineo.com>
+ * Bernhard Kuhn <[email protected]>

I think this is CFI conformant flash, isn't it? So please use the CFI driver instead.

Quoted 2 lines

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.

Quoted 11 lines

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.

6) Submit patches for AT91RM9200EK with CFI support and wait for community feedback.

Quoted 3 lines

The flash driver already exists in the AT91RM9200DK board support package.

Yes, this is on the remove list, too.

Quoted 1 line

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.

Quoted 5 lines

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

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I may be synthetic, but I'm not stupid"  -  the  artificial  person,
from _Aliens_
#8 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Quoted 4 lines

6) Submit patches for AT91RM9200EK with CFI support and wait for community feedback.

Quoted 1 line

No time, so that won't happen (as I told you).

Quoted 5 lines
Quoted 2 lines

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 at 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

#9 lore raw

PATCH 1/1 Add support for AT91RM9200EK board

Le mardi 15 avril 2008 ? 23:35 +0200, Ulf Samuelsson a ?crit :

Quoted 5 lines
Quoted 3 lines

6) Submit patches for AT91RM9200EK with CFI support and wait for community feedback.

Quoted 1 line

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.

Signature · 1 line
Stelian Pop <[email protected]>