diff options
author | Wolfgang Denk <wd@pollux.(none)> | 2005-09-24 23:32:48 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@pollux.(none)> | 2005-09-24 23:32:48 +0200 |
commit | dafbe3790e1aa06dd479c2e821c48758c18615de (patch) | |
tree | 1b8899e7db50b8dc1fe94f4268ad886da3bd7fc4 /drivers/cfi_flash.c | |
parent | 28cb9375846b4f072f80536549713a6bc8fcf298 (diff) | |
download | u-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
Diffstat (limited to 'drivers/cfi_flash.c')
-rw-r--r-- | drivers/cfi_flash.c | 27 |
1 files changed, 4 insertions, 23 deletions
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; } /* |