public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Update board NetStar
@ 2009-03-13 13:31 Ladislav Michl
  2009-03-16 22:26 ` Ladislav Michl
  0 siblings, 1 reply; 13+ messages in thread
From: Ladislav Michl @ 2009-03-13 13:31 UTC (permalink / raw)
  To: u-boot

Hi,

following patch brings board NetStar back into shape.

CHANGELOG
* Make NAND work again (broken after new NAND code merge)
* Move conditional compilation to Makefile
* Enable I2C driver and RTC clock

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 8d911b8..7d42227 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -26,15 +26,17 @@
 
 include $(TOPDIR)/config.mk
 
-LIB	= $(obj)lib$(BOARD).a
+LIB := $(obj)lib$(BOARD).a
 
-COBJS	:= netstar.o flash.o nand.o
-SOBJS	:= setup.o crcek.o
+SOBJS-y                   := setup.o crcek.o
+COBJS-y                   := netstar.o
+COBJS-$(CONFIG_CMD_FLASH) += flash.o
+COBJS-$(CONFIG_CMD_NAND)  += nand.o
 
-SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \
+SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) eeprom.c \
 		eeprom_start.S
-OBJS	:= $(addprefix $(obj),$(COBJS))
-SOBJS	:= $(addprefix $(obj),$(SOBJS))
+OBJS	:= $(addprefix $(obj),$(COBJS-y))
+SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
 gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
 
diff --git a/board/netstar/crcit.c b/board/netstar/crcit.c
index ce98e20..e0cea9b 100644
--- a/board/netstar/crcit.c
+++ b/board/netstar/crcit.c
@@ -31,11 +31,11 @@
 #include <sys/stat.h>
 #include "crcek.h"
 
-extern unsigned long crc32(unsigned long, const unsigned char *, unsigned int);
+extern uint32_t crc32(uint32_t, const unsigned char *, uint);
 
-uint32_t data[LOADER_SIZE/4 + 3];
+static uint32_t data[LOADER_SIZE/4 + 3];
 
-int doit(char *path, unsigned version)
+static int do_crc(char *path, unsigned version)
 {
 	uint32_t *p;
 	ssize_t size;
@@ -56,10 +56,10 @@ int doit(char *path, unsigned version)
 		fprintf(stderr, "File too large\n");
 		return EXIT_FAILURE;
 	}
-	size = (((size - 1) >> 2) + 1) << 2;
+	size = (size + 3) & ~3;	/* round up to 4 bytes */
 	data[0] = size + 4;	/* add size of version field */
 	data[1] = version;
-	data[(size >> 2) + 2] = crc32(0, (unsigned char *)(data + 1), data[0]);
+	data[2 + (size >> 2)] = crc32(0, (unsigned char *)(data + 1), data[0]);
 	close(fd);
 
 	if (write(STDOUT_FILENO, data, size + 3*4) == -1) {
@@ -73,12 +73,12 @@ int doit(char *path, unsigned version)
 int main(int argc, char **argv)
 {
 	if (argc == 2) {
-		return doit(argv[1], 0);
+		return do_crc(argv[1], 0);
 	} else if ((argc == 4) && (strcmp(argv[1], "-v") == 0)) {
 		char *endptr, *nptr = argv[2];
 		unsigned ver = strtoul(nptr, &endptr, 0);
 		if (*nptr != '\0' && *endptr == '\0')
-			return doit(argv[3], ver);
+			return do_crc(argv[3], ver);
 	}
 	fprintf(stderr, "Usage: crcit [-v version] <image>\n");
 
diff --git a/board/netstar/flash.c b/board/netstar/flash.c
index e9eca35..e417e29 100644
--- a/board/netstar/flash.c
+++ b/board/netstar/flash.c
@@ -27,10 +27,6 @@
  */
 
 #include <common.h>
-
-/*#if 0 */
-#if (PHYS_SDRAM_1_SIZE != SZ_32M)
-
 #include "crcek.h"
 
 #if (CONFIG_SYS_MAX_FLASH_BANKS > 1)
@@ -339,5 +335,3 @@ int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
 
 	return write_hword(info, wp, data);
 }
-
-#endif
diff --git a/board/netstar/nand.c b/board/netstar/nand.c
index e3ab66f..fb319fa 100644
--- a/board/netstar/nand.c
+++ b/board/netstar/nand.c
@@ -22,33 +22,27 @@
 
 #include <common.h>
 #include <asm/io.h>
-
-#if defined(CONFIG_CMD_NAND)
-
 #include <nand.h>
 
 /*
  *	hardware specific access to control-lines
+ *
+ *	NAND_NCE: bit 0 - don't care
+ *	NAND_CLE: bit 1 -> bit 1  (0x0002)
+ *	NAND_ALE: bit 2 -> bit 2  (0x0004)
  */
-#define	MASK_CLE	0x02
-#define	MASK_ALE	0x04
-
 static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-	struct nand_chip *this = mtd->priv;
-	ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
+	struct nand_chip *chip = mtd->priv;
+	unsigned long mask;
 
-	IO_ADDR_W &= ~(MASK_ALE|MASK_CLE);
-	if (ctrl & NAND_CTRL_CHANGE) {
-		if ( ctrl & NAND_CLE )
-			IO_ADDR_W |= MASK_CLE;
-		if ( ctrl & NAND_ALE )
-			IO_ADDR_W |= MASK_ALE;
-	}
-	this->IO_ADDR_W = (void __iomem *) IO_ADDR_W;
+	if (cmd == NAND_CMD_NONE)
+		return;
 
-	if (cmd != NAND_CMD_NONE)
-		writeb(cmd, this->IO_ADDR_W);
+	mask = (ctrl & NAND_CLE) ? 0x02 : 0;
+	if (ctrl & NAND_ALE)
+		mask |= 0x04;
+	writeb(cmd, (unsigned long)chip->IO_ADDR_W | mask);
 }
 
 int board_nand_init(struct nand_chip *nand)
@@ -59,4 +53,3 @@ int board_nand_init(struct nand_chip *nand)
 	nand->chip_delay = 400;
 	return 0;
 }
-#endif
diff --git a/board/netstar/netstar.c b/board/netstar/netstar.c
index f52afe5..b68959f 100644
--- a/board/netstar/netstar.c
+++ b/board/netstar/netstar.c
@@ -21,6 +21,7 @@
  */
 
 #include <common.h>
+#include <i2c.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -52,6 +53,9 @@ int dram_init(void)
 
 int misc_init_r(void)
 {
+	/* enable trickle charge */
+	i2c_reg_write(CONFIG_SYS_I2C_RTC_ADDR, 0x10, 0xaa);
+
 	return 0;
 }
 
diff --git a/include/configs/netstar.h b/include/configs/netstar.h
index 2c90265..6d35210 100644
--- a/include/configs/netstar.h
+++ b/include/configs/netstar.h
@@ -64,12 +64,11 @@
  */
 #define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MAX_FLASH_BANKS	1
-#define PHYS_FLASH_1_SIZE	(1 * 1024 * 1024)
+#define PHYS_FLASH_1_SIZE		(1 * 1024 * 1024)
 #define CONFIG_SYS_MAX_FLASH_SECT	19
 #define CONFIG_SYS_FLASH_ERASE_TOUT	(5*CONFIG_SYS_HZ) /* in ticks */
 #define CONFIG_SYS_FLASH_WRITE_TOUT	(5*CONFIG_SYS_HZ)
-
-#define CONFIG_SYS_MONITOR_BASE	PHYS_FLASH_1
+#define CONFIG_SYS_MONITOR_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MONITOR_LEN		(256 * 1024)
 
 /*
@@ -100,28 +99,30 @@
 #define CONFIG_DRIVER_SMC91111
 #define CONFIG_SMC91111_BASE	0x04000300
 
-/*
- * NS16550 Configuration
- */
+#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C_SPEED	100000
+#define CONFIG_SYS_I2C_SLAVE	1
+#define CONFIG_DRIVER_OMAP1510_I2C
+
+#define CONFIG_RTC_DS1307
+#define CONFIG_SYS_I2C_RTC_ADDR	0x68
+
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE	(-4)
 #define CONFIG_SYS_NS16550_CLK		(CONFIG_XTAL_FREQ)	/* can be 12M/32Khz or 48Mhz  */
-#define CONFIG_SYS_NS16550_COM1	OMAP1510_UART1_BASE	/* uart1 */
+#define CONFIG_SYS_NS16550_COM1		OMAP1510_UART1_BASE	/* uart1 */
 
-#define CONFIG_CONS_INDEX	1
-#define CONFIG_BAUDRATE		115200
+#define CONFIG_CONS_INDEX		1
+#define CONFIG_BAUDRATE			115200
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
 
 /*#define CONFIG_SKIP_RELOCATE_UBOOT*/
 /*#define CONFIG_SKIP_LOWLEVEL_INIT */
 
-/*
- * NAND flash
- */
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
-#define CONFIG_SYS_NAND_BASE	0x04000000 + (2 << 23)
-#define NAND_ALLOW_ERASE_ALL	1
+#define CONFIG_SYS_NAND_BASE		0x04000000 + (2 << 23)
+#define NAND_ALLOW_ERASE_ALL		1
 
 /*
  * partitions (mtdparts command line support)
@@ -136,9 +137,9 @@
 /*
  * Command line configuration.
  */
-
 #define CONFIG_CMD_BDI
 #define CONFIG_CMD_BOOTD
+#define CONFIG_CMD_DATE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_SAVEENV
 #define CONFIG_CMD_FLASH

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH] Update board NetStar
  2009-03-13 13:31 [U-Boot] [PATCH] Update board NetStar Ladislav Michl
@ 2009-03-16 22:26 ` Ladislav Michl
  2009-03-16 22:27   ` [U-Boot] [PATCH 1/5] NetStar: config reindentation Ladislav Michl
                     ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:26 UTC (permalink / raw)
  To: u-boot

On Fri, Mar 13, 2009 at 02:31:39PM +0100, Ladislav Michl wrote:
> following patch brings board NetStar back into shape.

After some private conversation with Jean-Christophe this patch
splits into following serie. Many thanks to Jean-Christophe
for suggestions.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 1/5] NetStar: config reindentation
  2009-03-16 22:26 ` Ladislav Michl
@ 2009-03-16 22:27   ` Ladislav Michl
  2009-03-18 19:42     ` Wolfgang Denk
  2009-03-16 22:28   ` [U-Boot] [PATCH 2/5] NetStar: Fix NAND Ladislav Michl
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:27 UTC (permalink / raw)
  To: u-boot

Fix indentation broken by symbol renames. "Sort" driver related definitons.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

diff --git a/include/configs/netstar.h b/include/configs/netstar.h
index 2c90265..0b578e8 100644
--- a/include/configs/netstar.h
+++ b/include/configs/netstar.h
@@ -64,12 +64,12 @@
  */
 #define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MAX_FLASH_BANKS	1
-#define PHYS_FLASH_1_SIZE	(1 * 1024 * 1024)
+#define PHYS_FLASH_1_SIZE		(1 * 1024 * 1024)
 #define CONFIG_SYS_MAX_FLASH_SECT	19
 #define CONFIG_SYS_FLASH_ERASE_TOUT	(5*CONFIG_SYS_HZ) /* in ticks */
 #define CONFIG_SYS_FLASH_WRITE_TOUT	(5*CONFIG_SYS_HZ)
 
-#define CONFIG_SYS_MONITOR_BASE	PHYS_FLASH_1
+#define CONFIG_SYS_MONITOR_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MONITOR_LEN		(256 * 1024)
 
 /*
@@ -97,33 +97,28 @@
 /*
  * Hardware drivers
  */
-#define CONFIG_DRIVER_SMC91111
-#define CONFIG_SMC91111_BASE	0x04000300
-
-/*
- * NS16550 Configuration
- */
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE	(-4)
 #define CONFIG_SYS_NS16550_CLK		(CONFIG_XTAL_FREQ)	/* can be 12M/32Khz or 48Mhz  */
-#define CONFIG_SYS_NS16550_COM1	OMAP1510_UART1_BASE	/* uart1 */
+#define CONFIG_SYS_NS16550_COM1		OMAP1510_UART1_BASE	/* uart1 */
+
+#define CONFIG_DRIVER_SMC91111
+#define CONFIG_SMC91111_BASE		0x04000300
 
-#define CONFIG_CONS_INDEX	1
-#define CONFIG_BAUDRATE		115200
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_BASE		0x04000000 + (2 << 23)
+#define NAND_ALLOW_ERASE_ALL		1
+
+
+#define CONFIG_CONS_INDEX		1
+#define CONFIG_BAUDRATE			115200
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
 
 /*#define CONFIG_SKIP_RELOCATE_UBOOT*/
 /*#define CONFIG_SKIP_LOWLEVEL_INIT */
 
 /*
- * NAND flash
- */
-#define CONFIG_SYS_MAX_NAND_DEVICE	1
-#define CONFIG_SYS_NAND_BASE	0x04000000 + (2 << 23)
-#define NAND_ALLOW_ERASE_ALL	1
-
-/*
  * partitions (mtdparts command line support)
  */
 #define CONFIG_JFFS2_CMDLINE
@@ -136,7 +131,6 @@
 /*
  * Command line configuration.
  */
-
 #define CONFIG_CMD_BDI
 #define CONFIG_CMD_BOOTD
 #define CONFIG_CMD_DHCP

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 2/5] NetStar: Fix NAND
  2009-03-16 22:26 ` Ladislav Michl
  2009-03-16 22:27   ` [U-Boot] [PATCH 1/5] NetStar: config reindentation Ladislav Michl
@ 2009-03-16 22:28   ` Ladislav Michl
  2009-03-17 17:17     ` Scott Wood
  2009-03-16 22:29   ` [U-Boot] [PATCH 3/5] NetStar: use generic flash driver Ladislav Michl
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:28 UTC (permalink / raw)
  To: u-boot

Fix NAND support broken during new NAND code merge. Move those few lines of
code to board/netstar/netstar.c

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 8d911b8..0d163fd 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).a
 
-COBJS	:= netstar.o flash.o nand.o
+COBJS	:= netstar.o flash.o
 SOBJS	:= setup.o crcek.o
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \
diff --git a/board/netstar/nand.c b/board/netstar/nand.c
deleted file mode 100644
index e3ab66f..0000000
--- a/board/netstar/nand.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2005 2N TELEKOMUNIKACE, Ladislav Michl
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <asm/io.h>
-
-#if defined(CONFIG_CMD_NAND)
-
-#include <nand.h>
-
-/*
- *	hardware specific access to control-lines
- */
-#define	MASK_CLE	0x02
-#define	MASK_ALE	0x04
-
-static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
-{
-	struct nand_chip *this = mtd->priv;
-	ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
-
-	IO_ADDR_W &= ~(MASK_ALE|MASK_CLE);
-	if (ctrl & NAND_CTRL_CHANGE) {
-		if ( ctrl & NAND_CLE )
-			IO_ADDR_W |= MASK_CLE;
-		if ( ctrl & NAND_ALE )
-			IO_ADDR_W |= MASK_ALE;
-	}
-	this->IO_ADDR_W = (void __iomem *) IO_ADDR_W;
-
-	if (cmd != NAND_CMD_NONE)
-		writeb(cmd, this->IO_ADDR_W);
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-	nand->options = NAND_SAMSUNG_LP_OPTIONS;
-	nand->ecc.mode = NAND_ECC_SOFT;
-	nand->cmd_ctrl = netstar_nand_hwcontrol;
-	nand->chip_delay = 400;
-	return 0;
-}
-#endif
diff --git a/board/netstar/netstar.c b/board/netstar/netstar.c
index f52afe5..c53397a 100644
--- a/board/netstar/netstar.c
+++ b/board/netstar/netstar.c
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2005 2N TELEKOMUNIKACE, Ladislav Michl
+ * (C) Copyright 2005,2009 2N TELEKOMUNIKACE, Ladislav Michl
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -21,6 +21,9 @@
  */
 
 #include <common.h>
+#include <nand.h>
+
+#include <asm/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -59,3 +62,35 @@ int board_late_init(void)
 {
 	return 0;
 }
+
+#if defined(CONFIG_CMD_NAND)
+/*
+ *	hardware specific access to control-lines
+ *
+ *	NAND_NCE: bit 0 - don't care
+ *	NAND_CLE: bit 1 -> bit 1  (0x0002)
+ *	NAND_ALE: bit 2 -> bit 2  (0x0004)
+ */
+static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
+{
+	struct nand_chip *chip = mtd->priv;
+	unsigned long mask;
+
+	if (cmd == NAND_CMD_NONE)
+		return;
+
+	mask = (ctrl & NAND_CLE) ? 0x02 : 0;
+	if (ctrl & NAND_ALE)
+		mask |= 0x04;
+	writeb(cmd, (unsigned long)chip->IO_ADDR_W | mask);
+}
+
+int board_nand_init(struct nand_chip *nand)
+{
+	nand->options = NAND_SAMSUNG_LP_OPTIONS;
+	nand->ecc.mode = NAND_ECC_SOFT;
+	nand->cmd_ctrl = netstar_nand_hwcontrol;
+	nand->chip_delay = 400;
+	return 0;
+}
+#endif

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 3/5] NetStar: use generic flash driver
  2009-03-16 22:26 ` Ladislav Michl
  2009-03-16 22:27   ` [U-Boot] [PATCH 1/5] NetStar: config reindentation Ladislav Michl
  2009-03-16 22:28   ` [U-Boot] [PATCH 2/5] NetStar: Fix NAND Ladislav Michl
@ 2009-03-16 22:29   ` Ladislav Michl
  2009-03-18 19:44     ` Wolfgang Denk
  2009-03-16 22:30   ` [U-Boot] [PATCH 4/5] NetStar: add RTC support Ladislav Michl
  2009-03-16 22:31   ` [U-Boot] [PATCH 5/5] NetStar: update crcit utility Ladislav Michl
  4 siblings, 1 reply; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:29 UTC (permalink / raw)
  To: u-boot

Use generic flash driver.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

--- a/include/configs/netstar.h	2009-03-16 15:27:19.000000000 +0100
+++ b/include/configs/netstar.h	2009-03-16 15:28:18.000000000 +0100
@@ -59,16 +59,6 @@
 #define PHYS_SDRAM_1_SIZE	(64 * 1024 * 1024)
 #define PHYS_FLASH_1		0x00000000	/* Flash Bank #1 */
 
-/*
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_BANKS	1
-#define PHYS_FLASH_1_SIZE		(1 * 1024 * 1024)
-#define CONFIG_SYS_MAX_FLASH_SECT	19
-#define CONFIG_SYS_FLASH_ERASE_TOUT	(5*CONFIG_SYS_HZ) /* in ticks */
-#define CONFIG_SYS_FLASH_WRITE_TOUT	(5*CONFIG_SYS_HZ)
-
 #define CONFIG_SYS_MONITOR_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MONITOR_LEN		(256 * 1024)
 
@@ -106,6 +96,16 @@
 #define CONFIG_DRIVER_SMC91111
 #define CONFIG_SMC91111_BASE	0x04000300
 
+#define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
+#define CONFIG_SYS_MAX_FLASH_BANKS	1
+#define CONFIG_SYS_MAX_FLASH_SECT	19
+
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_16BIT
+#define CONFIG_FLASH_CFI_LEGACY
+#define CONFIG_SYS_FLASH_LEGACY_512Kx16
+
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
 #define CONFIG_SYS_NAND_BASE		0x04000000 + (2 << 23)
 #define NAND_ALLOW_ERASE_ALL		1
--- a/board/netstar/netstar.c	2009-03-16 15:21:50.000000000 +0100
+++ b/board/netstar/netstar.c	2009-03-16 15:22:25.000000000 +0100
@@ -21,6 +21,7 @@
  */
 
 #include <common.h>
+#include <flash.h>
 #include <nand.h>
 
 #include <asm/io.h>
@@ -63,6 +64,19 @@
 	return 0;
 }
 
+#if defined(CONFIG_CMD_FLASH)
+ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t * info)
+{
+	if (banknum == 0) {	/* AM29LV800 boot flash */
+		info->portwidth = FLASH_CFI_16BIT;
+		info->chipwidth = FLASH_CFI_BY16;
+		info->interface = FLASH_CFI_X16;
+		return 1;
+	} else
+		return 0;
+}
+#endif
+
 #if defined(CONFIG_CMD_NAND)
 /*
  *	hardware specific access to control-lines
diff --git a/board/netstar/flash.c b/board/netstar/flash.c
deleted file mode 100644
index e9eca35..0000000
--- a/board/netstar/flash.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- *
- * (C) Copyright 2005
- * 2N Telekomunikace, a.s. <www.2n.cz>
- * Ladislav Michl <michl@2n.cz>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-
-/*#if 0 */
-#if (PHYS_SDRAM_1_SIZE != SZ_32M)
-
-#include "crcek.h"
-
-#if (CONFIG_SYS_MAX_FLASH_BANKS > 1)
-#error There is always only _one_ flash chip
-#endif
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define CMD_READ_ARRAY		0x000000f0
-#define CMD_UNLOCK1		0x000000aa
-#define CMD_UNLOCK2		0x00000055
-#define CMD_ERASE_SETUP		0x00000080
-#define CMD_ERASE_CONFIRM	0x00000030
-#define CMD_PROGRAM		0x000000a0
-#define CMD_UNLOCK_BYPASS	0x00000020
-
-#define MEM_FLASH_ADDR1		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x000002aa << 1)))
-
-#define BIT_ERASE_DONE		0x00000080
-#define BIT_RDY_MASK		0x00000080
-#define BIT_PROGRAM_ERROR	0x00000020
-#define BIT_TIMEOUT		0x80000000	/* our flag */
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
-	int i;
-
-	flash_info[0].flash_id = (AMD_MANUFACT & FLASH_VENDMASK) |
-				 (AMD_ID_LV800B & FLASH_TYPEMASK);
-	flash_info[0].size = PHYS_FLASH_1_SIZE;
-	flash_info[0].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-	memset(flash_info[0].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-
-	for (i = 0; i < flash_info[0].sector_count; i++) {
-		switch (i) {
-		case 0: /* 16kB */
-			flash_info[0].start[0] = CONFIG_SYS_FLASH_BASE;
-			break;
-		case 1: /* 8kB */
-			flash_info[0].start[1] = CONFIG_SYS_FLASH_BASE + 0x4000;
-			break;
-		case 2: /* 8kB */
-			flash_info[0].start[2] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 0x2000;
-			break;
-		case 3: /* 32 KB */
-			flash_info[0].start[3] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 2 * 0x2000;
-			break;
-		case 4:
-			flash_info[0].start[4] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 2 * 0x2000 + 0x8000;
-			break;
-		default: /* 64kB */
-			flash_info[0].start[i] = flash_info[0].start[i-1] +
-						 0x10000;
-			break;
-		}
-	}
-
-	/* U-Boot */
-	flash_protect(FLAG_PROTECT_SET,
-		      LOADER1_OFFSET,
-		      LOADER1_OFFSET + LOADER_SIZE - 1, flash_info);
-	/* Protect crcek, env and r_env as well */
-	flash_protect(FLAG_PROTECT_SET, 0, 0x8000 - 1, flash_info);
-
-	return flash_info[0].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
-	int i;
-
-	switch (info->flash_id & FLASH_VENDMASK) {
-	case (AMD_MANUFACT & FLASH_VENDMASK):
-		puts("AMD: ");
-		break;
-	default:
-		puts("Unknown vendor ");
-		break;
-	}
-
-	switch (info->flash_id & FLASH_TYPEMASK) {
-	case (AMD_ID_LV800B & FLASH_TYPEMASK):
-		puts("AM29LV800BB (8Mb)\n");
-		break;
-	default:
-		puts("Unknown chip type\n");
-		return;
-	}
-
-	printf("  Size: %ld MB in %d sectors\n",
-	       info->size >> 20, info->sector_count);
-
-	puts("  Sector start addresses:");
-	for (i = 0; i < info->sector_count; i++) {
-		if ((i % 5) == 0)
-			puts("\n   ");
-
-		printf(" %08lX%s", info->start[i],
-		       info->protect[i] ? " (RO)" : "     ");
-	}
-	puts("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-	ushort result;
-	int prot, sect;
-	int rc = ERR_OK;
-
-	/* first look for protection bits */
-
-	if (info->flash_id == FLASH_UNKNOWN)
-		return ERR_UNKNOWN_FLASH_TYPE;
-
-	if ((s_first < 0) || (s_first > s_last))
-		return ERR_INVAL;
-
-	if ((info->flash_id & FLASH_VENDMASK) !=
-	    (AMD_MANUFACT & FLASH_VENDMASK))
-		return ERR_UNKNOWN_FLASH_VENDOR;
-
-	prot = 0;
-	for (sect = s_first; sect <= s_last; ++sect)
-		if (info->protect[sect])
-			prot++;
-
-	if (prot)
-		printf("- Warning: %d protected sectors will not be erased!\n",
-		       prot);
-	else
-		putc('\n');
-
-	/* Start erase on unprotected sectors */
-	for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-		if (info->protect[sect] == 0) {	/* not protected */
-			vu_short *addr = (vu_short *) (info->start[sect]);
-
-			/* arm simple, non interrupt dependent timer */
-			reset_timer_masked();
-
-			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-			MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
-			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-			*addr = CMD_ERASE_CONFIRM;
-
-			/* wait until flash is ready */
-			while (1) {
-				result = *addr;
-
-				/* check timeout */
-				if (get_timer_masked() > CONFIG_SYS_FLASH_ERASE_TOUT) {
-					MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-					rc = ERR_TIMOUT;
-					break;
-				}
-
-				if ((result & 0xfff) & BIT_ERASE_DONE)
-					break;
-
-				if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
-					rc = ERR_PROG_ERROR;
-					break;
-				}
-			}
-
-			MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
-			if (rc != ERR_OK)
-				goto out;
-
-			putc('.');
-		}
-	}
-out:
-	/* allow flash to settle - wait 10 ms */
-	udelay_masked(10000);
-
-	return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_hword(flash_info_t *info, ulong dest, ushort data)
-{
-	vu_short *addr = (vu_short *) dest;
-	ushort result;
-	int rc = ERR_OK;
-
-	/* check if flash is (sufficiently) erased */
-	result = *addr;
-	if ((result & data) != data)
-		return ERR_NOT_ERASED;
-
-	MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-	MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-	MEM_FLASH_ADDR1 = CMD_PROGRAM;
-	*addr = data;
-
-	/* arm simple, non interrupt dependent timer */
-	reset_timer_masked();
-
-	/* wait until flash is ready */
-	while (1) {
-		result = *addr;
-
-		/* check timeout */
-		if (get_timer_masked () > CONFIG_SYS_FLASH_ERASE_TOUT) {
-			rc = ERR_TIMOUT;
-			break;
-		}
-
-		if ((result & 0x80) == (data & 0x80))
-			break;
-
-		if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
-			result = *addr;
-
-			if ((result & 0x80) != (data & 0x80))
-				rc = ERR_PROG_ERROR;
-		}
-	}
-
-	*addr = CMD_READ_ARRAY;
-
-	if (*addr != data)
-		rc = ERR_PROG_ERROR;
-
-	return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-	ulong cp, wp;
-	int l;
-	int i, rc;
-	ushort data;
-
-	wp = (addr & ~1);	/* get lower word aligned address */
-
-	/*
-	 * handle unaligned start bytes
-	 */
-	if ((l = addr - wp) != 0) {
-		data = 0;
-		for (i = 0, cp = wp; i < l; ++i, ++cp)
-			data = (data >> 8) | (*(uchar *) cp << 8);
-		for (; i < 2 && cnt > 0; ++i) {
-			data = (data >> 8) | (*src++ << 8);
-			--cnt;
-			++cp;
-		}
-		for (; cnt == 0 && i < 2; ++i, ++cp)
-			data = (data >> 8) | (*(uchar *) cp << 8);
-
-		if ((rc = write_hword(info, wp, data)) != 0)
-			return (rc);
-		wp += 2;
-	}
-
-	/*
-	 * handle word aligned part
-	 */
-	while (cnt >= 2) {
-		data = *((vu_short *) src);
-		if ((rc = write_hword(info, wp, data)) != 0)
-			return (rc);
-		src += 2;
-		wp += 2;
-		cnt -= 2;
-	}
-
-	if (cnt == 0)
-		return ERR_OK;
-
-	/*
-	 * handle unaligned tail bytes
-	 */
-	data = 0;
-	for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
-		data = (data >> 8) | (*src++ << 8);
-		--cnt;
-	}
-	for (; i < 2; ++i, ++cp)
-		data = (data >> 8) | (*(uchar *) cp << 8);
-
-	return write_hword(info, wp, data);
-}
-
-#endif
--- a/board/netstar/Makefile	2009-03-16 15:24:35.000000000 +0100
+++ b/board/netstar/Makefile	2009-03-16 15:24:47.000000000 +0100
@@ -28,7 +28,7 @@
 
 LIB	= $(obj)lib$(BOARD).a
 
-COBJS	:= netstar.o flash.o
+COBJS	:= netstar.o
 SOBJS	:= setup.o crcek.o
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 4/5] NetStar: add RTC support
  2009-03-16 22:26 ` Ladislav Michl
                     ` (2 preceding siblings ...)
  2009-03-16 22:29   ` [U-Boot] [PATCH 3/5] NetStar: use generic flash driver Ladislav Michl
@ 2009-03-16 22:30   ` Ladislav Michl
  2009-03-16 22:31   ` [U-Boot] [PATCH 5/5] NetStar: update crcit utility Ladislav Michl
  4 siblings, 0 replies; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:30 UTC (permalink / raw)
  To: u-boot

Add RTC support.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

--- a/include/configs/netstar.h	2009-03-16 15:42:01.000000000 +0100
+++ b/include/configs/netstar.h	2009-03-16 15:43:33.000000000 +0100
@@ -110,6 +110,14 @@
 #define CONFIG_SYS_NAND_BASE		0x04000000 + (2 << 23)
 #define NAND_ALLOW_ERASE_ALL		1
 
+#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C_SPEED		100000
+#define CONFIG_SYS_I2C_SLAVE		1
+#define CONFIG_DRIVER_OMAP1510_I2C
+
+#define CONFIG_RTC_DS1307
+#define CONFIG_SYS_I2C_RTC_ADDR		0x68
+
 
 #define CONFIG_CONS_INDEX		1
 #define CONFIG_BAUDRATE			115200
@@ -133,6 +141,7 @@
  */
 #define CONFIG_CMD_BDI
 #define CONFIG_CMD_BOOTD
+#define CONFIG_CMD_DATE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_SAVEENV
 #define CONFIG_CMD_FLASH
--- a/board/netstar/netstar.c	2009-03-16 15:43:59.000000000 +0100
+++ b/board/netstar/netstar.c	2009-03-16 15:44:51.000000000 +0100
@@ -22,6 +22,7 @@
 
 #include <common.h>
 #include <flash.h>
+#include <i2c.h>
 #include <nand.h>
 
 #include <asm/io.h>
@@ -56,6 +57,10 @@
 
 int misc_init_r(void)
 {
+#if defined(CONFIG_RTC_DS1307)
+	/* enable trickle charge */
+	i2c_reg_write(CONFIG_SYS_I2C_RTC_ADDR, 0x10, 0xaa);
+#endif
 	return 0;
 }
 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 5/5] NetStar: update crcit utility
  2009-03-16 22:26 ` Ladislav Michl
                     ` (3 preceding siblings ...)
  2009-03-16 22:30   ` [U-Boot] [PATCH 4/5] NetStar: add RTC support Ladislav Michl
@ 2009-03-16 22:31   ` Ladislav Michl
  4 siblings, 0 replies; 13+ messages in thread
From: Ladislav Michl @ 2009-03-16 22:31 UTC (permalink / raw)
  To: u-boot

Make crc32 function to match its prototype. Use more meaningful identifiers.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

diff --git a/board/netstar/crcit.c b/board/netstar/crcit.c
index ce98e20..e0cea9b 100644
--- a/board/netstar/crcit.c
+++ b/board/netstar/crcit.c
@@ -31,11 +31,11 @@
 #include <sys/stat.h>
 #include "crcek.h"
 
-extern unsigned long crc32(unsigned long, const unsigned char *, unsigned int);
+extern uint32_t crc32(uint32_t, const unsigned char *, uint);
 
-uint32_t data[LOADER_SIZE/4 + 3];
+static uint32_t data[LOADER_SIZE/4 + 3];
 
-int doit(char *path, unsigned version)
+static int do_crc(char *path, unsigned version)
 {
 	uint32_t *p;
 	ssize_t size;
@@ -56,10 +56,10 @@ int doit(char *path, unsigned version)
 		fprintf(stderr, "File too large\n");
 		return EXIT_FAILURE;
 	}
-	size = (((size - 1) >> 2) + 1) << 2;
+	size = (size + 3) & ~3;	/* round up to 4 bytes */
 	data[0] = size + 4;	/* add size of version field */
 	data[1] = version;
-	data[(size >> 2) + 2] = crc32(0, (unsigned char *)(data + 1), data[0]);
+	data[2 + (size >> 2)] = crc32(0, (unsigned char *)(data + 1), data[0]);
 	close(fd);
 
 	if (write(STDOUT_FILENO, data, size + 3*4) == -1) {
@@ -73,12 +73,12 @@ int doit(char *path, unsigned version)
 int main(int argc, char **argv)
 {
 	if (argc == 2) {
-		return doit(argv[1], 0);
+		return do_crc(argv[1], 0);
 	} else if ((argc == 4) && (strcmp(argv[1], "-v") == 0)) {
 		char *endptr, *nptr = argv[2];
 		unsigned ver = strtoul(nptr, &endptr, 0);
 		if (*nptr != '\0' && *endptr == '\0')
-			return doit(argv[3], ver);
+			return do_crc(argv[3], ver);
 	}
 	fprintf(stderr, "Usage: crcit [-v version] <image>\n");
 

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 2/5] NetStar: Fix NAND
  2009-03-16 22:28   ` [U-Boot] [PATCH 2/5] NetStar: Fix NAND Ladislav Michl
@ 2009-03-17 17:17     ` Scott Wood
  2009-03-17 19:50       ` Ladislav Michl
  0 siblings, 1 reply; 13+ messages in thread
From: Scott Wood @ 2009-03-17 17:17 UTC (permalink / raw)
  To: u-boot

On Mon, Mar 16, 2009 at 11:28:24PM +0100, Ladislav Michl wrote:
> Fix NAND support broken during new NAND code merge. Move those few lines of
> code to board/netstar/netstar.c

What was the breakage?

> -/*
> - *	hardware specific access to control-lines
> - */
> -#define	MASK_CLE	0x02
> -#define	MASK_ALE	0x04
> -
> -static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
> -{
> -	struct nand_chip *this = mtd->priv;
> -	ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
> -
> -	IO_ADDR_W &= ~(MASK_ALE|MASK_CLE);
> -	if (ctrl & NAND_CTRL_CHANGE) {
> -		if ( ctrl & NAND_CLE )
> -			IO_ADDR_W |= MASK_CLE;
> -		if ( ctrl & NAND_ALE )
> -			IO_ADDR_W |= MASK_ALE;
> -	}
> -	this->IO_ADDR_W = (void __iomem *) IO_ADDR_W;
> -
> -	if (cmd != NAND_CMD_NONE)
> -		writeb(cmd, this->IO_ADDR_W);
> -}
[snip]
> +#if defined(CONFIG_CMD_NAND)
> +/*
> + *	hardware specific access to control-lines
> + *
> + *	NAND_NCE: bit 0 - don't care
> + *	NAND_CLE: bit 1 -> bit 1  (0x0002)
> + *	NAND_ALE: bit 2 -> bit 2  (0x0004)
> + */
> +static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
> +{
> +	struct nand_chip *chip = mtd->priv;
> +	unsigned long mask;
> +
> +	if (cmd == NAND_CMD_NONE)
> +		return;
> +
> +	mask = (ctrl & NAND_CLE) ? 0x02 : 0;
> +	if (ctrl & NAND_ALE)
> +		mask |= 0x04;
> +	writeb(cmd, (unsigned long)chip->IO_ADDR_W | mask);
> +}

Do not pass integers as addresses.

The new function looks functionally identical to the old one (except that
it ignores the interface in a couple of ways that it didn't before, but
which don't really matter).  Why the change?  Why the difference between
CLE using ?: and ALE using an if-statement?

-Scott

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 2/5] NetStar: Fix NAND
  2009-03-17 19:50       ` Ladislav Michl
@ 2009-03-17 19:10         ` Scott Wood
  0 siblings, 0 replies; 13+ messages in thread
From: Scott Wood @ 2009-03-17 19:10 UTC (permalink / raw)
  To: u-boot

Ladislav Michl wrote:
> On Tue, Mar 17, 2009 at 12:17:30PM -0500, Scott Wood wrote:
>> On Mon, Mar 16, 2009 at 11:28:24PM +0100, Ladislav Michl wrote:
>>> Fix NAND support broken during new NAND code merge. Move those few lines of
>>> code to board/netstar/netstar.c
>> What was the breakage?
> 
> Blocks being considered bad during read. I did not make any deeper analysis,
> just copied proven code.

I think I see the issue -- if NAND_CTRL_CHANGE is not set, it will reset 
IO_ADDR_W rather than leaving it alone.  There's also a bug for 64-bit 
platforms if I/O is over 4GiB, but that's not applicable here.

> The code above is identical to that found in linux driver. I'm considering
> useful to keep it in sync for sake of easier future upgrades.
> Sure it could be written as
> if (ctrl & NAND_CLE)
> 	mask = 0x02;
> else
> 	mask = 0;
> if (ctrl & NAND_ALE)
> 	mask |= 0x04;
> but the former is a bit shorter.

I was thinking more along the lines of:

unsigned long mask = 0;

if (ctrl & NAND_CLE)
	mask |= 2;
if (ctrl & NAND_ALE)
	mask |= 4;

...simple and symmetric.  But it doesn't matter overly much; keeping in 
sync with the Linux driver is more important.

ACK, though I would like to see the argument to writeb cast to a pointer 
before passing it (or else you'll get warnings if the accessor ever 
changes from a macro to an inline function).

-Scott

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 2/5] NetStar: Fix NAND
  2009-03-17 17:17     ` Scott Wood
@ 2009-03-17 19:50       ` Ladislav Michl
  2009-03-17 19:10         ` Scott Wood
  0 siblings, 1 reply; 13+ messages in thread
From: Ladislav Michl @ 2009-03-17 19:50 UTC (permalink / raw)
  To: u-boot

On Tue, Mar 17, 2009 at 12:17:30PM -0500, Scott Wood wrote:
> On Mon, Mar 16, 2009 at 11:28:24PM +0100, Ladislav Michl wrote:
> > Fix NAND support broken during new NAND code merge. Move those few lines of
> > code to board/netstar/netstar.c
> 
> What was the breakage?

Blocks being considered bad during read. I did not make any deeper analysis,
just copied proven code.

> > +static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
> > +{
> > +	struct nand_chip *chip = mtd->priv;
> > +	unsigned long mask;
> > +
> > +	if (cmd == NAND_CMD_NONE)
> > +		return;
> > +
> > +	mask = (ctrl & NAND_CLE) ? 0x02 : 0;
> > +	if (ctrl & NAND_ALE)
> > +		mask |= 0x04;
> > +	writeb(cmd, (unsigned long)chip->IO_ADDR_W | mask);
> > +}
> 
> Do not pass integers as addresses.
> 
> The new function looks functionally identical to the old one (except that
> it ignores the interface in a couple of ways that it didn't before, but
> which don't really matter).  Why the change?  Why the difference between
> CLE using ?: and ALE using an if-statement?

The code above is identical to that found in linux driver. I'm considering
useful to keep it in sync for sake of easier future upgrades.
Sure it could be written as
if (ctrl & NAND_CLE)
	mask = 0x02;
else
	mask = 0;
if (ctrl & NAND_ALE)
	mask |= 0x04;
but the former is a bit shorter.

Best regards,
	ladis

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 1/5] NetStar: config reindentation
  2009-03-16 22:27   ` [U-Boot] [PATCH 1/5] NetStar: config reindentation Ladislav Michl
@ 2009-03-18 19:42     ` Wolfgang Denk
  0 siblings, 0 replies; 13+ messages in thread
From: Wolfgang Denk @ 2009-03-18 19:42 UTC (permalink / raw)
  To: u-boot

Dear Ladislav Michl,

In message <20090316222731.GB1879@localhost.localdomain> you wrote:
> Fix indentation broken by symbol renames. "Sort" driver related definitons.
> 
> Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
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
Hokey religions and ancient weapons are  no  substitute  for  a  good
blaster at your side.                                      - Han Solo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 3/5] NetStar: use generic flash driver
  2009-03-16 22:29   ` [U-Boot] [PATCH 3/5] NetStar: use generic flash driver Ladislav Michl
@ 2009-03-18 19:44     ` Wolfgang Denk
  2009-03-25  0:14       ` Ladislav Michl
  0 siblings, 1 reply; 13+ messages in thread
From: Wolfgang Denk @ 2009-03-18 19:44 UTC (permalink / raw)
  To: u-boot

Dear Ladislav Michl,

In message <20090316222932.GD1879@localhost.localdomain> you wrote:
> Use generic flash driver.
> 
> Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

Does not apply to me:

Applying: NetStar: use generic flash driver
error: patch failed: include/configs/netstar.h:106
error: include/configs/netstar.h: patch does not apply
error: patch failed: board/netstar/netstar.c:21
error: board/netstar/netstar.c: patch does not apply
error: patch failed: board/netstar/Makefile:28
error: board/netstar/Makefile: patch does not apply
fatal: sha1 information is lacking or useless
(include/configs/netstar.h).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0001.


Best regards,

Wolfgang Denk

-- 
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
"The  release  of  emotion  is  what  keeps  us  health.  Emotionally
healthy."
"That may be, Doctor. However, I have noted that the healthy  release
of emotion is frequently unhealthy for those closest to you."
	-- McCoy and Spock, "Plato's Stepchildren", stardate 5784.3

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [PATCH 3/5] NetStar: use generic flash driver
  2009-03-18 19:44     ` Wolfgang Denk
@ 2009-03-25  0:14       ` Ladislav Michl
  0 siblings, 0 replies; 13+ messages in thread
From: Ladislav Michl @ 2009-03-25  0:14 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang,

On Wed, Mar 18, 2009 at 08:44:20PM +0100, Wolfgang Denk wrote:
> In message <20090316222932.GD1879@localhost.localdomain> you wrote:
> > Use generic flash driver.
> > 
> > Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
> 
> Does not apply to me:

I'm sorry for that. Updated version follows.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

diff --git a/board/netstar/Makefile b/board/netstar/Makefile
index 0d163fd..11a952b 100644
--- a/board/netstar/Makefile
+++ b/board/netstar/Makefile
@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).a
 
-COBJS	:= netstar.o flash.o
+COBJS	:= netstar.o
 SOBJS	:= setup.o crcek.o
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \
diff --git a/board/netstar/flash.c b/board/netstar/flash.c
deleted file mode 100644
index e9eca35..0000000
--- a/board/netstar/flash.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- *
- * (C) Copyright 2005
- * 2N Telekomunikace, a.s. <www.2n.cz>
- * Ladislav Michl <michl@2n.cz>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-
-/*#if 0 */
-#if (PHYS_SDRAM_1_SIZE != SZ_32M)
-
-#include "crcek.h"
-
-#if (CONFIG_SYS_MAX_FLASH_BANKS > 1)
-#error There is always only _one_ flash chip
-#endif
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define CMD_READ_ARRAY		0x000000f0
-#define CMD_UNLOCK1		0x000000aa
-#define CMD_UNLOCK2		0x00000055
-#define CMD_ERASE_SETUP		0x00000080
-#define CMD_ERASE_CONFIRM	0x00000030
-#define CMD_PROGRAM		0x000000a0
-#define CMD_UNLOCK_BYPASS	0x00000020
-
-#define MEM_FLASH_ADDR1		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2		(*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x000002aa << 1)))
-
-#define BIT_ERASE_DONE		0x00000080
-#define BIT_RDY_MASK		0x00000080
-#define BIT_PROGRAM_ERROR	0x00000020
-#define BIT_TIMEOUT		0x80000000	/* our flag */
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
-	int i;
-
-	flash_info[0].flash_id = (AMD_MANUFACT & FLASH_VENDMASK) |
-				 (AMD_ID_LV800B & FLASH_TYPEMASK);
-	flash_info[0].size = PHYS_FLASH_1_SIZE;
-	flash_info[0].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-	memset(flash_info[0].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-
-	for (i = 0; i < flash_info[0].sector_count; i++) {
-		switch (i) {
-		case 0: /* 16kB */
-			flash_info[0].start[0] = CONFIG_SYS_FLASH_BASE;
-			break;
-		case 1: /* 8kB */
-			flash_info[0].start[1] = CONFIG_SYS_FLASH_BASE + 0x4000;
-			break;
-		case 2: /* 8kB */
-			flash_info[0].start[2] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 0x2000;
-			break;
-		case 3: /* 32 KB */
-			flash_info[0].start[3] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 2 * 0x2000;
-			break;
-		case 4:
-			flash_info[0].start[4] = CONFIG_SYS_FLASH_BASE + 0x4000 +
-						 2 * 0x2000 + 0x8000;
-			break;
-		default: /* 64kB */
-			flash_info[0].start[i] = flash_info[0].start[i-1] +
-						 0x10000;
-			break;
-		}
-	}
-
-	/* U-Boot */
-	flash_protect(FLAG_PROTECT_SET,
-		      LOADER1_OFFSET,
-		      LOADER1_OFFSET + LOADER_SIZE - 1, flash_info);
-	/* Protect crcek, env and r_env as well */
-	flash_protect(FLAG_PROTECT_SET, 0, 0x8000 - 1, flash_info);
-
-	return flash_info[0].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
-	int i;
-
-	switch (info->flash_id & FLASH_VENDMASK) {
-	case (AMD_MANUFACT & FLASH_VENDMASK):
-		puts("AMD: ");
-		break;
-	default:
-		puts("Unknown vendor ");
-		break;
-	}
-
-	switch (info->flash_id & FLASH_TYPEMASK) {
-	case (AMD_ID_LV800B & FLASH_TYPEMASK):
-		puts("AM29LV800BB (8Mb)\n");
-		break;
-	default:
-		puts("Unknown chip type\n");
-		return;
-	}
-
-	printf("  Size: %ld MB in %d sectors\n",
-	       info->size >> 20, info->sector_count);
-
-	puts("  Sector start addresses:");
-	for (i = 0; i < info->sector_count; i++) {
-		if ((i % 5) == 0)
-			puts("\n   ");
-
-		printf(" %08lX%s", info->start[i],
-		       info->protect[i] ? " (RO)" : "     ");
-	}
-	puts("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-	ushort result;
-	int prot, sect;
-	int rc = ERR_OK;
-
-	/* first look for protection bits */
-
-	if (info->flash_id == FLASH_UNKNOWN)
-		return ERR_UNKNOWN_FLASH_TYPE;
-
-	if ((s_first < 0) || (s_first > s_last))
-		return ERR_INVAL;
-
-	if ((info->flash_id & FLASH_VENDMASK) !=
-	    (AMD_MANUFACT & FLASH_VENDMASK))
-		return ERR_UNKNOWN_FLASH_VENDOR;
-
-	prot = 0;
-	for (sect = s_first; sect <= s_last; ++sect)
-		if (info->protect[sect])
-			prot++;
-
-	if (prot)
-		printf("- Warning: %d protected sectors will not be erased!\n",
-		       prot);
-	else
-		putc('\n');
-
-	/* Start erase on unprotected sectors */
-	for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-		if (info->protect[sect] == 0) {	/* not protected */
-			vu_short *addr = (vu_short *) (info->start[sect]);
-
-			/* arm simple, non interrupt dependent timer */
-			reset_timer_masked();
-
-			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-			MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
-			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-			*addr = CMD_ERASE_CONFIRM;
-
-			/* wait until flash is ready */
-			while (1) {
-				result = *addr;
-
-				/* check timeout */
-				if (get_timer_masked() > CONFIG_SYS_FLASH_ERASE_TOUT) {
-					MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-					rc = ERR_TIMOUT;
-					break;
-				}
-
-				if ((result & 0xfff) & BIT_ERASE_DONE)
-					break;
-
-				if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
-					rc = ERR_PROG_ERROR;
-					break;
-				}
-			}
-
-			MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
-			if (rc != ERR_OK)
-				goto out;
-
-			putc('.');
-		}
-	}
-out:
-	/* allow flash to settle - wait 10 ms */
-	udelay_masked(10000);
-
-	return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_hword(flash_info_t *info, ulong dest, ushort data)
-{
-	vu_short *addr = (vu_short *) dest;
-	ushort result;
-	int rc = ERR_OK;
-
-	/* check if flash is (sufficiently) erased */
-	result = *addr;
-	if ((result & data) != data)
-		return ERR_NOT_ERASED;
-
-	MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-	MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-	MEM_FLASH_ADDR1 = CMD_PROGRAM;
-	*addr = data;
-
-	/* arm simple, non interrupt dependent timer */
-	reset_timer_masked();
-
-	/* wait until flash is ready */
-	while (1) {
-		result = *addr;
-
-		/* check timeout */
-		if (get_timer_masked () > CONFIG_SYS_FLASH_ERASE_TOUT) {
-			rc = ERR_TIMOUT;
-			break;
-		}
-
-		if ((result & 0x80) == (data & 0x80))
-			break;
-
-		if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
-			result = *addr;
-
-			if ((result & 0x80) != (data & 0x80))
-				rc = ERR_PROG_ERROR;
-		}
-	}
-
-	*addr = CMD_READ_ARRAY;
-
-	if (*addr != data)
-		rc = ERR_PROG_ERROR;
-
-	return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-	ulong cp, wp;
-	int l;
-	int i, rc;
-	ushort data;
-
-	wp = (addr & ~1);	/* get lower word aligned address */
-
-	/*
-	 * handle unaligned start bytes
-	 */
-	if ((l = addr - wp) != 0) {
-		data = 0;
-		for (i = 0, cp = wp; i < l; ++i, ++cp)
-			data = (data >> 8) | (*(uchar *) cp << 8);
-		for (; i < 2 && cnt > 0; ++i) {
-			data = (data >> 8) | (*src++ << 8);
-			--cnt;
-			++cp;
-		}
-		for (; cnt == 0 && i < 2; ++i, ++cp)
-			data = (data >> 8) | (*(uchar *) cp << 8);
-
-		if ((rc = write_hword(info, wp, data)) != 0)
-			return (rc);
-		wp += 2;
-	}
-
-	/*
-	 * handle word aligned part
-	 */
-	while (cnt >= 2) {
-		data = *((vu_short *) src);
-		if ((rc = write_hword(info, wp, data)) != 0)
-			return (rc);
-		src += 2;
-		wp += 2;
-		cnt -= 2;
-	}
-
-	if (cnt == 0)
-		return ERR_OK;
-
-	/*
-	 * handle unaligned tail bytes
-	 */
-	data = 0;
-	for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
-		data = (data >> 8) | (*src++ << 8);
-		--cnt;
-	}
-	for (; i < 2; ++i, ++cp)
-		data = (data >> 8) | (*(uchar *) cp << 8);
-
-	return write_hword(info, wp, data);
-}
-
-#endif
diff --git a/board/netstar/netstar.c b/board/netstar/netstar.c
index c53397a..f6e858f 100644
--- a/board/netstar/netstar.c
+++ b/board/netstar/netstar.c
@@ -21,6 +21,7 @@
  */
 
 #include <common.h>
+#include <flash.h>
 #include <nand.h>
 
 #include <asm/io.h>
@@ -63,6 +64,19 @@ int board_late_init(void)
 	return 0;
 }
 
+#if defined(CONFIG_CMD_FLASH)
+ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t * info)
+{
+	if (banknum == 0) {	/* AM29LV800 boot flash */
+		info->portwidth = FLASH_CFI_16BIT;
+		info->chipwidth = FLASH_CFI_BY16;
+		info->interface = FLASH_CFI_X16;
+		return 1;
+	} else
+		return 0;
+}
+#endif
+
 #if defined(CONFIG_CMD_NAND)
 /*
  *	hardware specific access to control-lines
diff --git a/include/configs/netstar.h b/include/configs/netstar.h
index 2fa0366..7085cb0 100644
--- a/include/configs/netstar.h
+++ b/include/configs/netstar.h
@@ -59,16 +59,6 @@
 #define PHYS_SDRAM_1_SIZE	(64 * 1024 * 1024)
 #define PHYS_FLASH_1		0x00000000	/* Flash Bank #1 */
 
-/*
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_BANKS	1
-#define PHYS_FLASH_1_SIZE		(1 * 1024 * 1024)
-#define CONFIG_SYS_MAX_FLASH_SECT	19
-#define CONFIG_SYS_FLASH_ERASE_TOUT	(5*CONFIG_SYS_HZ) /* in ticks */
-#define CONFIG_SYS_FLASH_WRITE_TOUT	(5*CONFIG_SYS_HZ)
-
 #define CONFIG_SYS_MONITOR_BASE		PHYS_FLASH_1
 #define CONFIG_SYS_MONITOR_LEN		(256 * 1024)
 
@@ -106,6 +96,16 @@
 #define CONFIG_DRIVER_SMC91111
 #define CONFIG_SMC91111_BASE		0x04000300
 
+#define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1
+#define CONFIG_SYS_MAX_FLASH_BANKS	1
+#define CONFIG_SYS_MAX_FLASH_SECT	19
+
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_16BIT
+#define CONFIG_FLASH_CFI_LEGACY
+#define CONFIG_SYS_FLASH_LEGACY_512Kx16
+
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
 #define CONFIG_SYS_NAND_BASE		0x04000000 + (2 << 23)
 #define NAND_ALLOW_ERASE_ALL		1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-03-25  0:14 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-13 13:31 [U-Boot] [PATCH] Update board NetStar Ladislav Michl
2009-03-16 22:26 ` Ladislav Michl
2009-03-16 22:27   ` [U-Boot] [PATCH 1/5] NetStar: config reindentation Ladislav Michl
2009-03-18 19:42     ` Wolfgang Denk
2009-03-16 22:28   ` [U-Boot] [PATCH 2/5] NetStar: Fix NAND Ladislav Michl
2009-03-17 17:17     ` Scott Wood
2009-03-17 19:50       ` Ladislav Michl
2009-03-17 19:10         ` Scott Wood
2009-03-16 22:29   ` [U-Boot] [PATCH 3/5] NetStar: use generic flash driver Ladislav Michl
2009-03-18 19:44     ` Wolfgang Denk
2009-03-25  0:14       ` Ladislav Michl
2009-03-16 22:30   ` [U-Boot] [PATCH 4/5] NetStar: add RTC support Ladislav Michl
2009-03-16 22:31   ` [U-Boot] [PATCH 5/5] NetStar: update crcit utility Ladislav Michl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox