Skip to contentSkip to conversation

CSB637 - add KB920x support

PATCH RESEND New Anders Larsen 5 participants 16 messages Aug 24, 2005 – Oct 5, 2005

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Hi,

the patch below adds support for the KwikByte KB920x boards. I resend it (refreshed) since it is touched by the next patch in the series.

Cheers
Anders

CHANGELOG:
Patch by Matt <[email protected]>, 2005-04-27
Add support for the KwikByte KB920x boards

---

 MAKEALL                      |    8 +-
 Makefile                     |    3 +
 README                       |    8 +-
 board/kb9202/Makefile        |   49 ++++++++++
 board/kb9202/config.mk       |    1 
 board/kb9202/kb9202.c        |   66 +++++++++++++
 board/kb9202/lxt972.c        |  211 ++++++++++++++++++++++++++++++++++++++++++
 board/kb9202/u-boot.lds      |   56 +++++++++++
 cpu/arm920t/at91rm9200/i2c.c |    4 +
 include/configs/kb9202.h     |  173 ++++++++++++++++++++++++++++++++++
 10 files changed, 571 insertions(+), 8 deletions(-)
MAKEALL +4 -4
@@ -167,10 +167,10 @@ LIST_ARM7="B2 ep7312 evb4510 impa7 modne
 
 LIST_ARM9="	\
 	at91rm9200dk	cmc_pu2		integratorcp	integratorap	\
-	lpd7a400	mx1ads		mx1fs2		omap1510inn	\
-	omap1610h2	omap1610inn	omap730p2	scb9328		\
-	smdk2400	smdk2410	trab		VCMA9		\
-	versatile	voiceblue					\
+	kb9202		lpd7a400	mx1ads		mx1fs2		\
+	omap1510inn	omap1610h2	omap1610inn	omap730p2	\
+	scb9328		smdk2400	smdk2410	trab		\
+	VCMA9		versatile	voiceblue					\
 "
 
 #########################################################################
Makefile +3 -0
@@ -1390,6 +1390,9 @@ integratorap_config :	unconfig
 integratorcp_config :	unconfig
 	@./mkconfig $(@:_config=) arm arm926ejs integratorcp
 
+kb9202_config	:	unconfig
+	@./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200
+
 lpd7a400_config \
 lpd7a404_config:	unconfig
 	@./mkconfig $(@:_config=) arm lh7a40x lpd7a40x
README +4 -4
@@ -305,10 +305,10 @@ The following options need to be configu
 		CONFIG_AT91RM9200DK,	CONFIG_CERF250,		CONFIG_DNP1110,
 		CONFIG_EP7312,		CONFIG_H2_OMAP1610,	CONFIG_HHP_CRADLE,
 		CONFIG_IMPA7,		CONFIG_INNOVATOROMAP1510, CONFIG_INNOVATOROMAP1610,
-		CONFIG_LART,		CONFIG_LPD7A400		CONFIG_LUBBOCK,
-		CONFIG_OSK_OMAP5912,	CONFIG_OMAP2420H4,	CONFIG_SHANNON,
-		CONFIG_P2_OMAP730,	CONFIG_SMDK2400,	CONFIG_SMDK2410,
-		CONFIG_TRAB,		CONFIG_VCMA9
+		CONFIG_KB9202,		CONFIG_LART,		CONFIG_LPD7A400
+		CONFIG_LUBBOCK,		CONFIG_OSK_OMAP5912,	CONFIG_OMAP2420H4,
+		CONFIG_SHANNON,		CONFIG_P2_OMAP730,	CONFIG_SMDK2400,
+		CONFIG_SMDK2410,	CONFIG_TRAB,		CONFIG_VCMA9
 
 		MicroBlaze based boards:
 		------------------------
board/kb9202/Makefile new file +49 -0

49 lines not on this page · raw message

board/kb9202/config.mk new file +1 -0
new file mode 100644
@@ -0,0 +1 @@
+TEXT_BASE = 0x21f00000
board/kb9202/kb9202.c new file +66 -0

66 lines not on this page · raw message

board/kb9202/lxt972.c new file +211 -0

211 lines not on this page · raw message

board/kb9202/u-boot.lds new file +56 -0

56 lines not on this page · raw message

cpu/arm920t/at91rm9200/i2c.c +4 -0
@@ -64,10 +64,14 @@ at91_xfer(unsigned char chip, unsigned i
 	twi->TWI_MMR = (chip << 16) | (alen << 8)
 		| ((rw == 1) ? AT91C_TWI_MREAD : 0);
 
+#ifdef CONFIG_KB920x
+	twi->TWI_IADR = addr;
+#else
 	/* Set TWI Internal Address Register with first messages data field */
 	/* only one address byte is supported  */
 	if (alen > 0)
 		twi->TWI_IADR = addr & 0xff;
+#endif
 
 	length = len;
 	buf = buffer;
include/configs/kb9202.h new file +173 -0

173 lines not on this page · raw message

#1 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Anders,

Quoted 2 lines
board/kb9202/kb9202.c new file +0 -0

...

board/kb9202/kb9202.c line 39

Quoted 3 lines
board/kb9202/kb9202.c new file +3 -0
+void lowlevel_init(void) {
+	/* Required by assembly functions - do nothing	*/
+}

Why is this required?

Quoted 2 lines
cpu/arm920t/at91rm9200/i2c.c +0 -0

...

cpu/arm920t/at91rm9200/i2c.c at91_xfer(unsigned char chip, unsigned i · line 74

Quoted 8 lines
cpu/arm920t/at91rm9200/i2c.c +4 -0
+#ifdef CONFIG_KB920x
+	twi->TWI_IADR = addr;
+#else
 	/* Set TWI Internal Address Register with first messages data field */
 	/* only one address byte is supported  */
 	if (alen > 0)
 		twi->TWI_IADR = addr & 0xff;
+#endif

Why is this required? IMHO we should avoid putting board dependend DEFINES in common code.

--
Steven

#2 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Steven Scholz <[email protected]> schreibt:

Quoted 8 lines
Quoted 2 lines
board/kb9202/kb9202.c new file +0 -0

...

board/kb9202/kb9202.c line 39

Quoted 3 lines
board/kb9202/kb9202.c new file +3 -0
+void lowlevel_init(void) {
+	/* Required by assembly functions - do nothing	*/
+}

Why is this required?

I don't know - I only refreshed and forwarded the patch. Perhaps the original author can answer this?

Quoted 14 lines
Quoted 2 lines
cpu/arm920t/at91rm9200/i2c.c +0 -0

...

cpu/arm920t/at91rm9200/i2c.c at91_xfer(unsigned char chip, unsigned i · line 74

Quoted 8 lines
cpu/arm920t/at91rm9200/i2c.c +4 -0
+#ifdef CONFIG_KB920x
+	twi->TWI_IADR = addr;
+#else
 	/* Set TWI Internal Address Register with first messages data field */
 	/* only one address byte is supported  */
 	if (alen > 0)
 		twi->TWI_IADR = addr & 0xff;
+#endif

Why is this required? IMHO we should avoid putting board dependend DEFINES in common code.

Agree (but see my answer above).

Cheers
Anders

#3 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Anders,

Thank you for your consideration.

We included the function lowlevel_init because it is referenced in a shared, common assembly file (cpu/arm920t/start.S). Please let me know if there is another approach.

We used the conditional because our board supports more than a single byte for the TWI address and we didn't want to break other targets. Please let me the best solution to this goal as we don't want to use target-specific conditionals, if possible.

Also, we have updated two constants in the patch. I'm including the original patch modified with the changes. If possible, please include the updates. If this violates the change process, we can submit the changes in a future update.

Thank you for your help and effort. We are excited to get u-boot support added for our board.

Best regards,

Matt
kb9200_dev at kwikbyte.com
www.kwikbyte.com

-----Original Message-----
From: Anders Larsen [mailto:alarsen at rea.de]
Sent: Wednesday, August 24, 2005 5:32 AM
To: Steven Scholz; Matt
Cc: u-boot-users at lists.sourceforge.net
Subject: Re: [U-Boot-Users] [PATCH 1/5][RESEND] CSB637 - add KB920x support

Steven Scholz <[email protected]> schreibt:

Quoted 8 lines
Quoted 2 lines
board/kb9202/kb9202.c new file +0 -0

...

board/kb9202/kb9202.c line 39

Quoted 3 lines
board/kb9202/kb9202.c new file +3 -0
+void lowlevel_init(void) {
+	/* Required by assembly functions - do nothing	*/
+}

Why is this required?

I don't know - I only refreshed and forwarded the patch. Perhaps the original author can answer this?

Quoted 7 lines
Quoted 2 lines
cpu/arm920t/at91rm9200/i2c.c +0 -0

...

cpu/arm920t/at91rm9200/i2c.c at91_xfer(unsigned char chip, unsigned i

Quoted 4 lines
cpu/arm920t/at91rm9200/i2c.c +3 -0
+#ifdef CONFIG_KB920x
+	twi->TWI_IADR = addr;
+#else
 	/* Set TWI Internal Address Register with first messages data

field */

Quoted 7 lines

cpu/arm920t/at91rm9200/i2c.c at91_xfer(unsigned char chip, unsigned i · line 74

Quoted 4 lines
cpu/arm920t/at91rm9200/i2c.c +1 -0
 	/* only one address byte is supported  */
 	if (alen > 0)
 		twi->TWI_IADR = addr & 0xff;
+#endif

Why is this required? IMHO we should avoid putting board dependend DEFINES in common code.

Agree (but see my answer above).

Cheers
Anders

-------------- next part --------------
A non-text attachment was scrubbed...
Name: KB920x_diffs.gz
Type: application/x-gzip
Size: 5559 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050824/fc9c5bd1/attachment.bin

#4 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Hi,

Quoted 2 lines · kb_admin

We included the function lowlevel_init because it is referenced in a shared, common assembly file (cpu/arm920t/start.S).

Of course it is referenced in cpu/arm920t/start.S. lowlevel_init() is an assembly function. For AT91RM9200 it is implemented in cpu/arm920t/at91rm9200/lowlevel_init.S and does importand initialisation of clocks and memory timing!

--
Steven

#5 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Steven Scholz <[email protected]> schreibt:

Quoted 7 lines
Quoted 2 lines

We included the function lowlevel_init because it is referenced in a shared, common assembly file (cpu/arm920t/start.S).

Of course it is referenced in cpu/arm920t/start.S. lowlevel_init() is an assembly function. For AT91RM9200 it is implemented in cpu/arm920t/at91rm9200/lowlevel_init.S and does importand initialisation of clocks and memory timing!

It seems that lowlevel_init is indeed undefined when CONFIG_SKIP_LOWLEVEL_INIT is defined.

The revised patch below fixes this and also removes the board dependency from cpu/arm920t/at91rm9200/i2c.c - as far as I can tell it is safe to allow two-byte addresses generally.

The following patches in my series are unaffected by this.

Cheers
Anders

Signed-off-by Anders Larsen alarsen at rea.de

CHANGELOG:
Patch by Matt <[email protected]>, 2005-04-27
Add support for the KwikByte KB920x boards

---

 MAKEALL                                |    8 +
 Makefile                               |    3 
 README                                 |    8 +
 board/kb9202/Makefile                  |   49 +++++++
 board/kb9202/config.mk                 |    1 
 board/kb9202/kb9202.c                  |   62 +++++++++
 board/kb9202/lxt972.c                  |  211
++++++++++++++++++++++++++++++++
 board/kb9202/u-boot.lds                |   56 ++++++++
 cpu/arm920t/at91rm9200/i2c.c           |    3 
 cpu/arm920t/at91rm9200/lowlevel_init.S |    7 +
 include/configs/kb9202.h               |  173 ++++++++++++++++++++++++++
 11 files changed, 571 insertions(+), 10 deletions(-)
MAKEALL +4 -4
@@ -167,10 +167,10 @@ LIST_ARM7="B2 ep7312 evb4510 impa7 modne
 
 LIST_ARM9="	\
 	at91rm9200dk	cmc_pu2		integratorcp	integratorap	\
-	lpd7a400	mx1ads		mx1fs2		omap1510inn	\
-	omap1610h2	omap1610inn	omap730p2	scb9328		\
-	smdk2400	smdk2410	trab		VCMA9		\
-	versatile	voiceblue					\
+	kb9202		lpd7a400	mx1ads		mx1fs2		\
+	omap1510inn	omap1610h2	omap1610inn	omap730p2	\
+	scb9328		smdk2400	smdk2410	trab		\
+	VCMA9		versatile	voiceblue					\
 "
 
 #########################################################################
Makefile +3 -0
@@ -1390,6 +1390,9 @@ integratorap_config :	unconfig
 integratorcp_config :	unconfig
 	@./mkconfig $(@:_config=) arm arm926ejs integratorcp
 
+kb9202_config	:	unconfig
+	@./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200
+
 lpd7a400_config \
 lpd7a404_config:	unconfig
 	@./mkconfig $(@:_config=) arm lh7a40x lpd7a40x
README +4 -4
@@ -305,10 +305,10 @@ The following options need to be configu
 		CONFIG_AT91RM9200DK,	CONFIG_CERF250,		CONFIG_DNP1110,
 		CONFIG_EP7312,		CONFIG_H2_OMAP1610,	CONFIG_HHP_CRADLE,
 		CONFIG_IMPA7,		CONFIG_INNOVATOROMAP1510, CONFIG_INNOVATOROMAP1610,
-		CONFIG_LART,		CONFIG_LPD7A400		CONFIG_LUBBOCK,
-		CONFIG_OSK_OMAP5912,	CONFIG_OMAP2420H4,	CONFIG_SHANNON,
-		CONFIG_P2_OMAP730,	CONFIG_SMDK2400,	CONFIG_SMDK2410,
-		CONFIG_TRAB,		CONFIG_VCMA9
+		CONFIG_KB9202,		CONFIG_LART,		CONFIG_LPD7A400
+		CONFIG_LUBBOCK,		CONFIG_OSK_OMAP5912,	CONFIG_OMAP2420H4,
+		CONFIG_SHANNON,		CONFIG_P2_OMAP730,	CONFIG_SMDK2400,
+		CONFIG_SMDK2410,	CONFIG_TRAB,		CONFIG_VCMA9
 
 		MicroBlaze based boards:
 		------------------------
board/kb9202/Makefile new file +49 -0

49 lines not on this page · raw message

board/kb9202/config.mk new file +1 -0
new file mode 100644
@@ -0,0 +1 @@
+TEXT_BASE = 0x21f00000
board/kb9202/kb9202.c new file +32 -0
new file mode 100644
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <[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
+ * 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
+ */
+
+/*
+ * Adapted for KwikByte KB920x board from at91rm9200dk.c: 22APR2005
+ */
+
+#include <common.h>
+#include <asm/arch/AT91RM9200.h>
+
+/*

-------------------------------------------------------------------------
*/
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* Enable Ctrlc */
+ console_init_f ();
+
+ /* memory and cpu-speed are setup before relocation */
+ /* so we do _nothing_ here */
+
+ gd->bd->bi_arch_number = MACH_TYPE_KB9200;
+
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+ return 0;
+}
+
+int dram_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ gd->bd->bi_dram[0].start = PHYS_SDRAM;
+ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
+ return 0;
+}

board/kb9202/lxt972.c new file +211 -0

211 lines not on this page · raw message

board/kb9202/u-boot.lds new file +56 -0

56 lines not on this page · raw message

cpu/arm920t/at91rm9200/i2c.c +1 -2
@@ -65,9 +65,8 @@ at91_xfer(unsigned char chip, unsigned i
 		| ((rw == 1) ? AT91C_TWI_MREAD : 0);
 
 	/* Set TWI Internal Address Register with first messages data field */
-	/* only one address byte is supported  */
 	if (alen > 0)
-		twi->TWI_IADR = addr & 0xff;
+		twi->TWI_IADR = addr;
 
 	length = len;
 	buf = buffer;
(quoted diff) +0 -0

b/cpu/arm920t/at91rm9200/lowlevel_init.S

cpu/arm920t/at91rm9200/lowlevel_init.S +7 -0
@@ -197,4 +197,11 @@ SMRDATA1:
 	.word SDRAM
 	.word SDRAM_VAL
 	/* SMRDATA1 is 176 bytes long */
+
+#else /* CONFIG_SKIP_LOWLEVEL_INIT */
+
+.globl lowlevel_init
+lowlevel_init:
+	mov	pc, lr
+
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
include/configs/kb9202.h new file +34 -0
new file mode 100644
@@ -0,0 +1,173 @@
+/*
+ * Rick Bronson <[email protected]>
+ *
+ * Configuation 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
+ */
+
+/*
+ * Adatped for KwikByte KB920x board from at91rm9200dk.h: 22APR2005
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* ARM asynchronous clock */
+#define AT91C_MAIN_CLOCK	180000000	/* from 10 MHz crystal */
+#define AT91C_MASTER_CLOCK	60000000	/* peripheral clock

(AT91C_MASTER_CLOCK / 3) */
+
+#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 */
+/* Only define one of the following, based on board type */
+/* #define CONFIG_KB9200 1 KwikByte KB9202 board */
+/* #define CONFIG_KB9201 1 KwikByte KB9202 board */
+#define CONFIG_KB9202 1 /* KwikByte KB9202 board */
+
+#define CONFIG_KB920x 1 /* Any KB920x 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
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+
+#define CFG_LONGHELP
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN (256*1024)
+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data
*/
+
+#define CONFIG_BAUDRATE 115200
+
+/*
+ * Hardware drivers
+ */
+
+/* define one of these to choose the DBGU, USART0 or USART1 as console */ +#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
+
+#define CONFIG_COMMANDS \
+ ((CONFIG_CMD_DFL | \
+ CFG_CMD_I2C | \
+ CFG_CMD_PING | \
+ CFG_CMD_DHCP ) & \
+ ~(CFG_CMD_BDI | \
+ CFG_CMD_FPGA | \
+ CFG_CMD_MISC))
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_NR_DRAM_BANKS 1
+#define PHYS_SDRAM 0x20000000
+#define PHYS_SDRAM_SIZE 0x2000000 /* 32 megs */
+
+#define CFG_MEMTEST_START PHYS_SDRAM
+#define CFG_MEMTEST_END CFG_MEMTEST_START + PHYS_SDRAM_SIZE - (512*1024)
+
+#define CONFIG_DRIVER_ETHER
+#define CONFIG_NET_RETRY_COUNT 20
+
+#define CFG_FLASH_BASE 0x10000000
+
+#ifdef CONFIG_KB9202
+#define PHYS_FLASH_SIZE 0x1000000
+#else
+#define PHYS_FLASH_SIZE 0x200000
+#endif
+
+#define CFG_MAX_FLASH_BANKS 1
+#define CFG_MAX_FLASH_SECT 256
+
+#define CONFIG_HARD_I2C
+
+#define CFG_ENV_IS_IN_EEPROM
+
+#ifdef CONFIG_KB9202
+#define CFG_ENV_OFFSET 0x3e00
+#define CFG_ENV_SIZE 0x0200
+#else
+#define CFG_ENV_OFFSET 0x1000
+#define CFG_ENV_SIZE 0x1000
+#endif
+#define CFG_I2C_EEPROM_ADDR 0x50
+#define CFG_EEPROM_PAGE_WRITE_BITS 6
+#define CFG_I2C_EEPROM_ADDR_LEN 2
+#define CFG_I2C_SPEED 50000
+#define CFG_I2C_SLAVE 0 /* not used */
+#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10
+
+#define CFG_LOAD_ADDR 0x21000000 /* default load address */
+
+#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 */
+
+#define CFG_FLASH_CFI_DRIVER
+#define CFG_FLASH_CFI
+
+#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 */
+ /* AT91C_TC_TIMER_DIV1_CLOCK */
+
+#define CONFIG_STACKSIZE (32*1024) /* regular stack */
+
+#ifdef CONFIG_USE_IRQ
+#error CONFIG_USE_IRQ not supported
+#endif
+
+#endif

#6 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Anders,

Quoted 2 lines

It seems that lowlevel_init is indeed undefined when CONFIG_SKIP_LOWLEVEL_INIT is defined.

Why would you do that? Who doe sthe low level init then?

--
Steven

#7 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Steven Scholz <[email protected]> schreibt:

Quoted 4 lines
Quoted 2 lines

It seems that lowlevel_init is indeed undefined when CONFIG_SKIP_LOWLEVEL_INIT is defined.

Why would you do that? Who doe sthe low level init then?

Hi Steven,

I've heard rumours there are at91rm9200 boards out there which contain some sort of pre-boot-loader which loads U-Boot into an initialized environment.
At any rate, I hope we can agree that U-Boot should at least /build/ correctly with that option defined.

Cheers
Anders

#8 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Quoted 4 lines · Anders Larsen

I've heard rumours there are at91rm9200 boards out there which contain some sort of pre-boot-loader which loads U-Boot into an initialized environment.

Yes (its more than a romour),
this is needed, when you store everything on atmel serial dataflash. The pre-boot-loader (romboot) is loaded in internal SRAM by the ROM routines. Then romboot initializes RAM and CPU clocks, copies u-boot from dataflash into RAM and starts it.

Best regards
Peter

#9 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

In reply to Steven Scholz
Quoted 10 lines

Anders,

Quoted 2 lines

It seems that lowlevel_init is indeed undefined when CONFIG_SKIP_LOWLEVEL_INIT is defined.

Why would you do that? Who doe sthe low level init then?

--
Steven

Steven,

In the case of the KB920x, a first-level bootloader does the low-level init. This is required due to an erratum with the chip and an inability to boot from flash - where uboot is stored. So, a tiny bootloader is used to config the hardware before jumping to uboot.

Regards,

Matt

#10 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

In reply to Anders Larsen
Quoted 16 lines

Steven Scholz <[email protected]> schreibt:

Quoted 7 lines
Quoted 2 lines

We included the function lowlevel_init because it is referenced in a shared, common assembly file (cpu/arm920t/start.S).

Of course it is referenced in cpu/arm920t/start.S. lowlevel_init() is an assembly function. For AT91RM9200 it is implemented in cpu/arm920t/at91rm9200/lowlevel_init.S and does importand initialisation of clocks and memory timing!

It seems that lowlevel_init is indeed undefined when CONFIG_SKIP_LOWLEVEL_INIT is defined.

The revised patch below fixes this and also removes the board dependency from cpu/arm920t/at91rm9200/i2c.c - as far as I can tell it is safe to allow two-byte addresses generally.

Quoted 7 lines

The following patches in my series are unaffected by this.

Cheers
Anders

Signed-off-by Anders Larsen alarsen at rea.de

Anders,

I have verified these changes on our board, as well.

Thank you for your help,
Matt

Quoted 4 lines

CHANGELOG:
Patch by Matt <[email protected]>, 2005-04-27
Add support for the KwikByte KB920x boards

... snip

#11 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

In reply to Anders Larsen
Quoted 7 lines · In message <[email protected]> you wrote:

The revised patch below fixes this and also removes the board dependency from cpu/arm920t/at91rm9200/i2c.c - as far as I can tell it is safe to allow two-byte addresses generally.

The following patches in my series are unaffected by this.

Quoted 8 lines

Cheers
Anders

Signed-off-by Anders Larsen alarsen at rea.de

CHANGELOG:
Patch by Matt <[email protected]>, 2005-04-27
Add support for the KwikByte KB920x boards

Sorry, does not apply any more (how many times has this patch been submitted? 5? 6? more? Each a bit different? This is a nightmare.)

Please check current git tree and resubmit what is needed.

Best regards,

Wolfgang Denk

Signature · 3 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Due to lack of disk space, this fortune database has been discontinued.
#12 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

Wolfgang Denk <[email protected]> schreibt:

Quoted 2 lines

Sorry, does not apply any more (how many times has this patch been submitted? 5? 6? more? Each a bit different? This is a nightmare.)

Hi Wolfgang,

I've submitted this particular patch three times - back in april, (at your request) on 2005-08-24, and one day later as part of a discussion of the patch.

I appreciate your efforts and the immense difficulties in handling a pile of interdependent patches; it would make life easier all of us if we could find a way to remove/update/replace pending patches; despite the (requested) resend of updated patches you applied the original versions :-(

Can git help here?

Quoted 1 line

Please check current git tree and resubmit what is needed.

Only a few lines were missing, see below.

Cheers
Anders

CHANGELOG:
Patch by Anders Larsen <[email protected]>, 2005-10-05 Complete support for the KwikByte KB920x boards

---

 cpu/arm920t/at91rm9200/i2c.c |    3 +--
 include/configs/kb9202.h     |    4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)
cpu/arm920t/at91rm9200/i2c.c +1 -2
@@ -65,9 +65,8 @@ at91_xfer(unsigned char chip, unsigned i
 		| ((rw == 1) ? AT91C_TWI_MREAD : 0);
 
 	/* Set TWI Internal Address Register with first messages data field */
-	/* only one address byte is supported  */
 	if (alen > 0)
-		twi->TWI_IADR = addr & 0xff;
+		twi->TWI_IADR = addr;
 
 	length = len;
 	buf = buffer;
include/configs/kb9202.h +2 -2
@@ -116,8 +116,8 @@
 #define	CFG_ENV_IS_IN_EEPROM
 
 #ifdef CONFIG_KB9202
-#define CFG_ENV_OFFSET			0x3000
-#define CFG_ENV_SIZE			0x1000
+#define CFG_ENV_OFFSET			0x3e00
+#define CFG_ENV_SIZE			0x0200
 #else
 #define CFG_ENV_OFFSET			0x1000
 #define CFG_ENV_SIZE			0x1000
#13 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

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

CHANGELOG:
Patch by Anders Larsen <[email protected]>, 2005-10-05 Complete support for the KwikByte KB920x boards

Checked in. Can you please write this as following the next time?

	Complete support for the KwikByte KB920x boards
	Patch by Anders Larsen, 05 Oct 2005

Thanks.

Best regards,

Wolfgang Denk

Signature · 3 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Send lawyers, guns and money..."  - Lyrics from a Warren Zevon song
#14 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

In reply to kb_admin

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

Quoted 16 lines

Steven Scholz <[email protected]> schreibt:

Quoted 4 lines
Quoted 4 lines
cpu/arm920t/at91rm9200/i2c.c +3 -0
+#ifdef CONFIG_KB920x
+	twi->TWI_IADR = addr;
+#else
	/* Set TWI Internal Address Register with first messages data

field */

Quoted 7 lines
Quoted 4 lines
	/* only one address byte is supported  */
	if (alen > 0)
		twi->TWI_IADR = addr & 0xff;

+#endif

Why is this required? IMHO we should avoid putting board dependend DEFINES in common code.

Quoted 4 lines · kb_admin

We used the conditional because our board supports more than a single byte for the TWI address and we didn't want to break other targets. Please let me the best solution to this goal as we don't want to use target-specific conditionals, if possible.

The better way would be the fix the at91-i2c driver to support multio byte addresses!

Quoted 2 lines

Also, we have updated two constants in the patch. I'm including the original patch modified with the changes.

:-(

gzip isn't exactly human readable!
Whcih constants did you change?

--
Steven

#15 lore raw

PATCH RESEND 1/5 CSB637 - add KB920x support

In reply to Anders Larsen
Quoted 5 lines · In message <[email protected]> you wrote:

the patch below adds support for the KwikByte KB920x boards. I resend it (refreshed) since it is touched by the next patch in the series.

Quoted 8 lines

Cheers
Anders

CHANGELOG:
Patch by Matt <[email protected]>, 2005-04-27
Add support for the KwikByte KB920x boards

Previously cheked in, please verify.

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You don't need a weatherman to know which way the wind blows.
                                                          - Bob Dylan