]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
* Patch by Travis Sawyer, 26 Feb 2004:
authorwdenk <wdenk>
Fri, 27 Feb 2004 08:21:54 +0000 (08:21 +0000)
committerwdenk <wdenk>
Fri, 27 Feb 2004 08:21:54 +0000 (08:21 +0000)
  Fix broken compile for XPEDITE1K target.

* Patch by Stephan Linz, 26 Feb 2004:
  Bug fix for NFS code on NIOS targets

* Patch by Stephen Williams, 26 Feb 2004:
  Break up SystemACE reads of large block counts

CHANGELOG
common/cmd_ace.c
include/configs/DK1C20.h
include/configs/DK1S10.h
include/configs/XPEDITE1K.h

index e0c5119c09c522aeb05290dfb10d7d80d9907ebd..606e5ee748f494049a5bef2d28aadf04e4980e6c 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,15 @@
 Changes for U-Boot 1.0.2:
 ======================================================================
 
+* Patch by Travis Sawyer, 26 Feb 2004:
+  Fix broken compile for XPEDITE1K target.
+
+* Patch by Stephan Linz, 26 Feb 2004:
+  Bug fix for NFS code on NIOS targets
+  
+* Patch by Stephen Williams, 26 Feb 2004:
+  Break up SystemACE reads of large block counts
+
 * Patch by Pierre Aubert, 26 Feb 2004
   add IDE support for MPC5200
 
index 555fbe398821b833e4d33c56f02f8e536b213bdf..b6f8604780139106f14867843702780639d8c184 100644 (file)
@@ -121,6 +121,7 @@ static unsigned long systemace_read(int dev,
 {
       unsigned val;
       int retry;
+      unsigned blk_countdown;
       unsigned char*dp = (unsigned char*)buffer;
 
       if (get_cf_lock() < 0) {
@@ -136,6 +137,10 @@ static unsigned long systemace_read(int dev,
            return 0;
       }
 
+#ifdef DEBUG_SYSTEMACE
+      printf("... systemace read %lu sectors at %lu\n", blkcnt, start);
+#endif
+
       retry = 2000;
       for (;;) {
            unsigned val = ace_readw(0x04);
@@ -161,34 +166,55 @@ static unsigned long systemace_read(int dev,
            retry -= 1;
       }
 
-       /* Write LBA block address */
-      ace_writew(start & 0xffff, 0x10);
-      start >>= 16;
-      ace_writew(start & 0xff, 0x12);
+       /* The SystemACE can only transfer 256 sectors at a time, so
+          limit the current chunk of sectors. The blk_countdown
+          variable is the number of sectors left to transfer. */
 
-       /* Write sector count | ReadMemCardData. */
-      ace_writew(blkcnt | 0x0300, 0x14);
+      blk_countdown = blkcnt;
+      while (blk_countdown > 0) {
+           unsigned trans = blk_countdown;
 
-       /* CONTROLREG = CFGRESET|LOCKREQ */
-      ace_writew(0x0082, 0x18);
+           if (trans > 256) trans = 256;
 
-      retry = blkcnt * 16;
-      while (retry > 0) {
-           int idx;
+#ifdef DEBUG_SYSTEMACE
+           printf("... transfer %lu sector in a chunk\n", trans);
+#endif
+             /* Write LBA block address */
+           ace_writew((start>> 0) & 0xffff, 0x10);
+           ace_writew((start>>16) & 0x00ff, 0x12);
 
-             /* Wait for buffer to become ready. */
-           while (! (ace_readw(0x04) & 0x0020)) {
-                 udelay(1000);
-           }
+             /* NOTE: in the Write Sector count below, a count of 0
+                causes a transfer of 256, so &0xff gives the right
+                value for whatever transfer count we want. */
+
+             /* Write sector count | ReadMemCardData. */
+           ace_writew((trans&0xff) | 0x0300, 0x14);
 
-             /* Read 16 words of 2bytes from the sector buffer. */
-           for (idx = 0 ;  idx < 16 ;  idx += 1) {
-                 unsigned short val = ace_readw(0x40);
-                 *dp++ = val & 0xff;
-                 *dp++ = (val>>8) & 0xff;
+             /* CONTROLREG = CFGRESET|LOCKREQ */
+           ace_writew(0x0082, 0x18);
+
+           retry = trans * 16;
+           while (retry > 0) {
+                 int idx;
+
+                   /* Wait for buffer to become ready. */
+                 while (! (ace_readw(0x04) & 0x0020)) {
+                       udelay(1000);
+                 }
+
+                   /* Read 16 words of 2bytes from the sector buffer. */
+                 for (idx = 0 ;  idx < 16 ;  idx += 1) {
+                       unsigned short val = ace_readw(0x40);
+                       *dp++ = val & 0xff;
+                       *dp++ = (val>>8) & 0xff;
+                 }
+
+                 retry -= 1;
            }
 
-           retry -= 1;
+             /* Count the blocks we transfer this time. */
+           start += trans;
+           blk_countdown -= trans;
       }
 
       release_cf_lock();
index 9b4f144fd2424980c9ea843d7bf383dac841ff27..71d52e996d523bce1f37f637e3caf93380ce234c 100644 (file)
                                 CFG_CMD_JFFS2  | \
                                 CFG_CMD_KGDB   | \
                                 CFG_CMD_NAND   | \
+                                CFG_CMD_NFS    | \
                                 CFG_CMD_MMC    | \
                                 CFG_CMD_MII    | \
                                 CFG_CMD_PCI    | \
index e5e487c65d20fde9bdf0c2c2f842e241ba820382..db8c05a98f0faa9c4ecc5b29ba5c3564846b3833 100644 (file)
                                 CFG_CMD_JFFS2  | \
                                 CFG_CMD_KGDB   | \
                                 CFG_CMD_NAND   | \
+                                CFG_CMD_NFS    | \
                                 CFG_CMD_MMC    | \
                                 CFG_CMD_MII    | \
                                 CFG_CMD_PCI    | \
index 8bdd293261e2cf062afa01f92ffba416925bd1f0..4a19541b02e630810808c91f74bd47e228f26c1e 100644 (file)
@@ -85,6 +85,8 @@ extern void out32(unsigned int, unsigned long);
 /*-----------------------------------------------------------------------
  * Initial RAM & stack pointer (placed in internal SRAM)
  *----------------------------------------------------------------------*/
+#define CFG_TEMP_STACK_OCM  1
+#define CFG_OCM_DATA_ADDR   CFG_ISRAM_BASE
 #define CFG_INIT_RAM_ADDR   CFG_ISRAM_BASE  /* Initial RAM address     */
 #define CFG_INIT_RAM_END    0x2000         /* End of used area in RAM  */
 #define CFG_GBL_DATA_SIZE   128                    /* num bytes initial data   */
@@ -160,7 +162,7 @@ extern void out32(unsigned int, unsigned long);
 
 #define CONFIG_BOOTARGS                "root=/dev/hda1 "
 #define CONFIG_BOOTCOMMAND     "bootm ffc00000"    /* autoboot command */
-#define CONFIG_BOOTDELAY       -1                  /* disable autoboot */
+#define CONFIG_BOOTDELAY                         /* disable autoboot */
 #define CONFIG_BAUDRATE                9600
 
 #define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */