summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@pollux.(none)>2005-09-24 23:32:48 +0200
committerWolfgang Denk <wd@pollux.(none)>2005-09-24 23:32:48 +0200
commitdafbe3790e1aa06dd479c2e821c48758c18615de (patch)
tree1b8899e7db50b8dc1fe94f4268ad886da3bd7fc4
parent28cb9375846b4f072f80536549713a6bc8fcf298 (diff)
downloadu-boot-imx-dafbe3790e1aa06dd479c2e821c48758c18615de.zip
u-boot-imx-dafbe3790e1aa06dd479c2e821c48758c18615de.tar.gz
u-boot-imx-dafbe3790e1aa06dd479c2e821c48758c18615de.tar.bz2
Optimize flash_make_cmd in drivers/cfi_flash.c for little endian
Fix "WARNING: flash_make_cmd: unsuppported LittleEndian mode" message when probing for nonexistent flash in little endian mode. As a side effect more efficient and smaller code is generated, which is always a Good Thing (TM). Patch by Ladislav Michl, 24 Sep 2005
-rw-r--r--CHANGELOG7
-rw-r--r--drivers/cfi_flash.c27
2 files changed, 11 insertions, 23 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 4994701..ac48bc2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,13 @@
Changes for U-Boot 1.1.4:
======================================================================
+* Optimize flash_make_cmd in drivers/cfi_flash.c for little endian
+ Fix "WARNING: flash_make_cmd: unsuppported LittleEndian mode"
+ message when probing for nonexistent flash in little endian mode.
+ As a side effect more efficient and smaller code is generated,
+ which is always a Good Thing (TM).
+ Patch by Ladislav Michl, 24 Sep 2005
+
* Update for TFTP using a fixed UDP port
Use the approved environment variable names. Added "tftpdstp" to
allow ports other than 69 per Tolunay Orkun's recommendation.
diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
index 3d0f204..7957dd5 100644
--- a/drivers/cfi_flash.c
+++ b/drivers/cfi_flash.c
@@ -47,7 +47,6 @@
#include <common.h>
#include <asm/processor.h>
#include <asm/byteorder.h>
-#include <linux/byteorder/swab.h>
#include <environment.h>
#ifdef CFG_FLASH_CFI_DRIVER
@@ -797,32 +796,14 @@ static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c)
static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf)
{
int i;
-
-#if defined(__LITTLE_ENDIAN)
- ushort stmpw;
- uint stmpi;
-#endif
uchar *cp = (uchar *) cmdbuf;
- for (i = 0; i < info->portwidth; i++)
- *cp++ = ((i + 1) & (info->chipwidth - 1)) ? '\0' : cmd;
#if defined(__LITTLE_ENDIAN)
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- break;
- case FLASH_CFI_16BIT:
- stmpw = *(ushort *) cmdbuf;
- *(ushort *) cmdbuf = __swab16 (stmpw);
- break;
- case FLASH_CFI_32BIT:
- stmpi = *(uint *) cmdbuf;
- *(uint *) cmdbuf = __swab32 (stmpi);
- break;
- default:
- puts ("WARNING: flash_make_cmd: unsuppported LittleEndian mode\n");
- break;
- }
+ for (i = info->portwidth; i > 0; i--)
+#else
+ for (i = 1; i <= info->portwidth; i++)
#endif
+ *cp++ = (i % info->chipwidth) ? '\0' : cmd;
}
/*