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
This commit is contained in:
Wolfgang Denk 2005-09-24 23:32:48 +02:00
parent 28cb937584
commit dafbe3790e
2 changed files with 11 additions and 23 deletions

View File

@ -2,6 +2,13 @@
Changes for U-Boot 1.1.4: 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 * Update for TFTP using a fixed UDP port
Use the approved environment variable names. Added "tftpdstp" to Use the approved environment variable names. Added "tftpdstp" to
allow ports other than 69 per Tolunay Orkun's recommendation. allow ports other than 69 per Tolunay Orkun's recommendation.

View File

@ -47,7 +47,6 @@
#include <common.h> #include <common.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <linux/byteorder/swab.h>
#include <environment.h> #include <environment.h>
#ifdef CFG_FLASH_CFI_DRIVER #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) static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf)
{ {
int i; int i;
#if defined(__LITTLE_ENDIAN)
ushort stmpw;
uint stmpi;
#endif
uchar *cp = (uchar *) cmdbuf; uchar *cp = (uchar *) cmdbuf;
for (i = 0; i < info->portwidth; i++)
*cp++ = ((i + 1) & (info->chipwidth - 1)) ? '\0' : cmd;
#if defined(__LITTLE_ENDIAN) #if defined(__LITTLE_ENDIAN)
switch (info->portwidth) { for (i = info->portwidth; i > 0; i--)
case FLASH_CFI_8BIT: #else
break; for (i = 1; i <= info->portwidth; i++)
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;
}
#endif #endif
*cp++ = (i % info->chipwidth) ? '\0' : cmd;
} }
/* /*