Sfoglia il codice sorgente

* Update PK1C20 board for Nios-II 5.0
Patch from Scott McNutt, 11 Aug 2005
-Update base addresses for standard configuration
-Eliminate use of CACHE_BYPASS in board code

Heiko Schocher 19 anni fa
parent
commit
a83531bb62

+ 7 - 2
CHANGELOG

@@ -2,14 +2,19 @@
 Changes since U-Boot 1.1.4:
 Changes since U-Boot 1.1.4:
 ======================================================================
 ======================================================================
 
 
+* Update PK1C20 board for Nios-II 5.0 
+  Patch from Scott McNutt, 11 Aug 2005
+  -Update base addresses for standard configuration
+  -Eliminate use of CACHE_BYPASS in board code
+
 * Add EPCS Controller bootrom work-around for Nios-II
 * Add EPCS Controller bootrom work-around for Nios-II
-   Patch from Scott McNutt 11, Aug 2005
+   Patch from Scott McNutt, 11 Aug 2005
    -When booting from an epcs controller, the epcs bootrom may leave the
    -When booting from an epcs controller, the epcs bootrom may leave the
     slave select in an asserted state causing soft reset hang. This
     slave select in an asserted state causing soft reset hang. This
     patch ensures slave select is negated at reset.
     patch ensures slave select is negated at reset.
 
 
 * Fix I/O Macros and mini-app stubs for Nios-II
 * Fix I/O Macros and mini-app stubs for Nios-II
-  Patch from Scott McNutt 11, Aug 2005
+  Patch from Scott McNutt, 11 Aug 2005
   -Fix asm/io.h macros
   -Fix asm/io.h macros
   -Eliminate use of CACHE_BYPASS in cpu code
   -Eliminate use of CACHE_BYPASS in cpu code
   -Eliminate assembler warnings
   -Eliminate assembler warnings

+ 25 - 32
board/psyent/common/AMDLV065D.c

@@ -26,7 +26,7 @@
 #if defined(CONFIG_NIOS)
 #if defined(CONFIG_NIOS)
 #include <nios.h>
 #include <nios.h>
 #else
 #else
-#include <nios2.h>
+#include <asm/io.h>
 #endif
 #endif
 
 
 #define SECTSZ		(64 * 1024)
 #define SECTSZ		(64 * 1024)
@@ -56,9 +56,8 @@ unsigned long flash_init (void)
 void flash_print_info (flash_info_t * info)
 void flash_print_info (flash_info_t * info)
 {
 {
 	int i, k;
 	int i, k;
-	unsigned long size;
 	int erased;
 	int erased;
-	volatile unsigned char *flash;
+	unsigned long *addr;
 
 
 	printf ("  Size: %ld KB in %d Sectors\n",
 	printf ("  Size: %ld KB in %d Sectors\n",
 		info->size >> 10, info->sector_count);
 		info->size >> 10, info->sector_count);
@@ -66,14 +65,10 @@ void flash_print_info (flash_info_t * info)
 	for (i = 0; i < info->sector_count; ++i) {
 	for (i = 0; i < info->sector_count; ++i) {
 
 
 		/* Check if whole sector is erased */
 		/* Check if whole sector is erased */
-		if (i != (info->sector_count - 1))
-			size = info->start[i + 1] - info->start[i];
-		else
-			size = info->start[0] + info->size - info->start[i];
 		erased = 1;
 		erased = 1;
-		flash = (volatile unsigned char *) CACHE_BYPASS(info->start[i]);
-		for (k = 0; k < size; k++) {
-			if (*flash++ != 0xff) {
+		addr = (unsigned long *) info->start[i];
+		for (k = 0; k < SECTSZ/sizeof(unsigned long); k++) {
+			if ( readl(addr++) != (unsigned long)-1) {
 				erased = 0;
 				erased = 0;
 				break;
 				break;
 			}
 			}
@@ -83,7 +78,7 @@ void flash_print_info (flash_info_t * info)
 		if ((i % 5) == 0)
 		if ((i % 5) == 0)
 			printf ("\n   ");
 			printf ("\n   ");
 		printf (" %08lX%s%s",
 		printf (" %08lX%s%s",
-			CACHE_NO_BYPASS(info->start[i]),
+			info->start[i],
 			erased ? " E" : "  ",
 			erased ? " E" : "  ",
 			info->protect[i] ? "RO " : "   ");
 			info->protect[i] ? "RO " : "   ");
 	}
 	}
@@ -95,9 +90,8 @@ void flash_print_info (flash_info_t * info)
 
 
 int flash_erase (flash_info_t * info, int s_first, int s_last)
 int flash_erase (flash_info_t * info, int s_first, int s_last)
 {
 {
-	volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)
-		CACHE_BYPASS(info->start[0]);
-	volatile CFG_FLASH_WORD_SIZE *addr2;
+	unsigned char *addr = (unsigned char *) info->start[0];
+	unsigned char *addr2;
 	int prot, sect;
 	int prot, sect;
 	ulong start;
 	ulong start;
 
 
@@ -127,19 +121,18 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
 	 */
 	 */
 	for (sect = s_first; sect <= s_last; sect++) {
 	for (sect = s_first; sect <= s_last; sect++) {
 		if (info->protect[sect] == 0) {	/* not protected */
 		if (info->protect[sect] == 0) {	/* not protected */
-			addr2 = (CFG_FLASH_WORD_SIZE *)
-				CACHE_BYPASS((info->start[sect]));
-			*addr = 0xaa;
-			*addr = 0x55;
-			*addr = 0x80;
-			*addr = 0xaa;
-			*addr = 0x55;
-			*addr2 = 0x30;
+			addr2 = (unsigned char *) info->start[sect];
+			writeb (addr, 0xaa);
+			writeb (addr,  0x55);
+			writeb (addr,  0x80);
+			writeb (addr,  0xaa);
+			writeb (addr,  0x55);
+			writeb (addr2, 0x30);
 			/* Now just wait for 0xff & provide some user
 			/* Now just wait for 0xff & provide some user
 			 * feedback while we wait.
 			 * feedback while we wait.
 			 */
 			 */
 			start = get_timer (0);
 			start = get_timer (0);
-			while (*addr2 != 0xff) {
+			while ( readb (addr2) != 0xff) {
 				udelay (1000 * 1000);
 				udelay (1000 * 1000);
 				putc ('.');
 				putc ('.');
 				if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
 				if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
@@ -163,27 +156,27 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
 int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 {
 {
 
 
-	vu_char *cmd = (vu_char *) CACHE_BYPASS(info->start[0]);
-	vu_char *dst = (vu_char *) CACHE_BYPASS(addr);
+	vu_char *cmd = (vu_char *) info->start[0];
+	vu_char *dst = (vu_char *) addr;
 	unsigned char b;
 	unsigned char b;
 	ulong start;
 	ulong start;
 
 
 	while (cnt) {
 	while (cnt) {
 		/* Check for sufficient erase */
 		/* Check for sufficient erase */
 		b = *src;
 		b = *src;
-		if ((*dst & b) != b) {
-			printf ("%02x : %02x\n", *dst, b);
+		if ((readb (dst) & b) != b) {
+			printf ("%02x : %02x\n", readb (dst), b);
 			return (2);
 			return (2);
 		}
 		}
 
 
-		*cmd = 0xaa;
-		*cmd = 0x55;
-		*cmd = 0xa0;
-		*dst = b;
+		writeb (cmd,  0xaa);
+		writeb (cmd,  0x55);
+		writeb (cmd,  0xa0);
+		writeb (dst, b);
 
 
 		/* Verify write */
 		/* Verify write */
 		start = get_timer (0);
 		start = get_timer (0);
-		while (*dst != b) {
+		while (readb (dst) != b) {
 			if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
 			if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
 				return 1;
 				return 1;
 			}
 			}

+ 1 - 1
board/psyent/pk1c20/config.mk

@@ -21,7 +21,7 @@
 # MA 02111-1307 USA
 # MA 02111-1307 USA
 #
 #
 
 
-TEXT_BASE = 0x018e0000
+TEXT_BASE = 0x01fc0000
 
 
 PLATFORM_CPPFLAGS += -mno-hw-div -mno-hw-mul
 PLATFORM_CPPFLAGS += -mno-hw-div -mno-hw-mul
 PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/$(VENDOR)/include
 PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/$(VENDOR)/include

+ 7 - 7
board/psyent/pk1c20/led.c

@@ -22,7 +22,7 @@
  */
  */
 
 
 #include <common.h>
 #include <common.h>
-#include <nios2.h>
+#include <asm/io.h>
 #include <nios2-io.h>
 #include <nios2-io.h>
 #include <status_led.h>
 #include <status_led.h>
 
 
@@ -33,30 +33,30 @@ static led_id_t val = 0;
 
 
 void __led_init (led_id_t mask, int state)
 void __led_init (led_id_t mask, int state)
 {
 {
-	nios_pio_t *pio = (nios_pio_t *)CACHE_BYPASS(CFG_LEDPIO_ADDR);
+	nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
 
 
 	if (state == STATUS_LED_ON)
 	if (state == STATUS_LED_ON)
 		val &= ~mask;
 		val &= ~mask;
 	else
 	else
 		val |= mask;
 		val |= mask;
-	pio->data = val;
+	writel (&pio->data, val);
 }
 }
 
 
 void __led_set (led_id_t mask, int state)
 void __led_set (led_id_t mask, int state)
 {
 {
-	nios_pio_t *pio = (nios_pio_t *)CACHE_BYPASS(CFG_LEDPIO_ADDR);
+	nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
 
 
 	if (state == STATUS_LED_ON)
 	if (state == STATUS_LED_ON)
 		val &= ~mask;
 		val &= ~mask;
 	else
 	else
 		val |= mask;
 		val |= mask;
-	pio->data = val;
+	writel (&pio->data, val);
 }
 }
 
 
 void __led_toggle (led_id_t mask)
 void __led_toggle (led_id_t mask)
 {
 {
-	nios_pio_t *pio = (nios_pio_t *)CACHE_BYPASS(CFG_LEDPIO_ADDR);
+	nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
 
 
 	val ^= mask;
 	val ^= mask;
-	pio->data = val;
+	writel (&pio->data, val);
 }
 }

+ 10 - 10
include/configs/PK1C20.h

@@ -32,7 +32,7 @@
 
 
 #define CFG_RESET_ADDR		0x00000000	/* Hard-reset address	*/
 #define CFG_RESET_ADDR		0x00000000	/* Hard-reset address	*/
 #define CFG_EXCEPTION_ADDR	0x01000020	/* Exception entry point*/
 #define CFG_EXCEPTION_ADDR	0x01000020	/* Exception entry point*/
-#define CFG_NIOS_SYSID_BASE	0x00920828	/* System id address	*/
+#define CFG_NIOS_SYSID_BASE	0x021208b8	/* System id address	*/
 #define CONFIG_BOARD_EARLY_INIT_F 1	/* enable early board-spec. init*/
 #define CONFIG_BOARD_EARLY_INIT_F 1	/* enable early board-spec. init*/
 
 
 /*------------------------------------------------------------------------
 /*------------------------------------------------------------------------
@@ -51,7 +51,7 @@
 #define CFG_FLASH_SIZE		0x00800000	/* 8 MByte		*/
 #define CFG_FLASH_SIZE		0x00800000	/* 8 MByte		*/
 #define CFG_SDRAM_BASE		0x01000000	/* SDRAM base addr	*/
 #define CFG_SDRAM_BASE		0x01000000	/* SDRAM base addr	*/
 #define CFG_SDRAM_SIZE		0x01000000	/* 16 MByte		*/
 #define CFG_SDRAM_SIZE		0x01000000	/* 16 MByte		*/
-#define CFG_SRAM_BASE		0x00800000	/* SRAM base addr	*/
+#define CFG_SRAM_BASE		0x02000000	/* SRAM base addr	*/
 #define CFG_SRAM_SIZE		0x00100000	/* 1 MB (only 1M mapped)*/
 #define CFG_SRAM_SIZE		0x00100000	/* 1 MB (only 1M mapped)*/
 
 
 /*------------------------------------------------------------------------
 /*------------------------------------------------------------------------
@@ -61,7 +61,7 @@
  *	-Global data is placed below the heap.
  *	-Global data is placed below the heap.
  *	-The stack is placed below global data (&grows down).
  *	-The stack is placed below global data (&grows down).
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
-#define CFG_MONITOR_LEN		(128 * 1024)	/* Reserve 128k		*/
+#define CFG_MONITOR_LEN		(256 * 1024)	/* Reserve 128k		*/
 #define CFG_GBL_DATA_SIZE	128		/* Global data size rsvd*/
 #define CFG_GBL_DATA_SIZE	128		/* Global data size rsvd*/
 #define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
 #define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
 
 
@@ -95,9 +95,9 @@
  * CONSOLE
  * CONSOLE
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
 #if defined(CONFIG_CONSOLE_JTAG)
 #if defined(CONFIG_CONSOLE_JTAG)
-#define CFG_NIOS_CONSOLE	0x00920820	/* JTAG UART base addr	*/
+#define CFG_NIOS_CONSOLE	0x021208b0	/* JTAG UART base addr	*/
 #else
 #else
-#define CFG_NIOS_CONSOLE	0x009208a0	/* UART base addr	*/
+#define CFG_NIOS_CONSOLE	0x02120840	/* UART base addr	*/
 #endif
 #endif
 
 
 #define CFG_NIOS_FIXEDBAUD	1		/* Baudrate is fixed	*/
 #define CFG_NIOS_FIXEDBAUD	1		/* Baudrate is fixed	*/
@@ -110,9 +110,9 @@
  * EPCS Device -- wne CFG_NIOS_EPCSBASE is defined code/commands for
  * EPCS Device -- wne CFG_NIOS_EPCSBASE is defined code/commands for
  * epcs device access is enabled. The base address is the epcs
  * epcs device access is enabled. The base address is the epcs
  * _register_ base address, NOT THE ADDRESS OF THE MEMORY BLOCK.
  * _register_ base address, NOT THE ADDRESS OF THE MEMORY BLOCK.
- * The register base is currently at offset 0x400 from the memory base.
+ * The register base is currently at offset 0x600 from the memory base.
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
-#define CFG_NIOS_EPCSBASE	0x00900400	/* EPCS register base	*/
+#define CFG_NIOS_EPCSBASE	0x02100200	/* EPCS register base	*/
 
 
 /*------------------------------------------------------------------------
 /*------------------------------------------------------------------------
  * DEBUG
  * DEBUG
@@ -126,7 +126,7 @@
  * registers, we can slow it down to 10 msec using TMRCNT. If the default
  * registers, we can slow it down to 10 msec using TMRCNT. If the default
  * period is acceptable, TMRCNT can be left undefined.
  * period is acceptable, TMRCNT can be left undefined.
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
-#define CFG_NIOS_TMRBASE	0x00920860	/* Tick timer base addr */
+#define CFG_NIOS_TMRBASE	0x02120820	/* Tick timer base addr */
 #define CFG_NIOS_TMRIRQ		3		/* Timer IRQ num	*/
 #define CFG_NIOS_TMRIRQ		3		/* Timer IRQ num	*/
 #define CFG_NIOS_TMRMS		10		/* 10 msec per tick	*/
 #define CFG_NIOS_TMRMS		10		/* 10 msec per tick	*/
 #define CFG_NIOS_TMRCNT (CFG_NIOS_TMRMS * (CONFIG_SYS_CLK_FREQ/1000))
 #define CFG_NIOS_TMRCNT (CFG_NIOS_TMRMS * (CONFIG_SYS_CLK_FREQ/1000))
@@ -137,7 +137,7 @@
  * must implement its own led routines -- leds are, after all,
  * must implement its own led routines -- leds are, after all,
  * board-specific, no?
  * board-specific, no?
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
-#define CFG_LEDPIO_ADDR		0x00920840	/* LED PIO base addr	*/
+#define CFG_LEDPIO_ADDR		0x02120870	/* LED PIO base addr	*/
 #define CONFIG_STATUS_LED			/* Enable status driver */
 #define CONFIG_STATUS_LED			/* Enable status driver */
 
 
 #define STATUS_LED_BIT		1		/* Bit-0 on PIO		*/
 #define STATUS_LED_BIT		1		/* Bit-0 on PIO		*/
@@ -150,7 +150,7 @@
  * way out to avoid changes there -- define the base address to ensure
  * way out to avoid changes there -- define the base address to ensure
  * cache bypass so there's no need to monkey with inx/outx macros.
  * cache bypass so there's no need to monkey with inx/outx macros.
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
-#define CONFIG_SMC91111_BASE	0x80910300	/* Base addr (bypass)	*/
+#define CONFIG_SMC91111_BASE	0x82110300	/* Base addr (bypass)	*/
 #define CONFIG_DRIVER_SMC91111			/* Using SMC91c111	*/
 #define CONFIG_DRIVER_SMC91111			/* Using SMC91c111	*/
 #undef	CONFIG_SMC91111_EXT_PHY			/* Internal PHY		*/
 #undef	CONFIG_SMC91111_EXT_PHY			/* Internal PHY		*/
 #define CONFIG_SMC_USE_32_BIT			/* 32-bit interface	*/
 #define CONFIG_SMC_USE_32_BIT			/* 32-bit interface	*/