From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ladislav Michl Date: Tue, 4 Jan 2005 23:23:53 +0100 Subject: [U-Boot-Users] [PATCH] Optimize flash_make_cmd for LE Message-ID: <20050104222353.GA3969@orphique> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, patch below fixes ""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). CHANGELOG * Optimize flash_make_cmd for little endian Index: drivers/cfi_flash.c =================================================================== RCS file: /cvsroot/u-boot/u-boot/drivers/cfi_flash.c,v retrieving revision 1.15 diff -u -r1.15 cfi_flash.c --- drivers/cfi_flash.c 18 Dec 2004 22:35:45 -0000 1.15 +++ drivers/cfi_flash.c 4 Jan 2005 22:13:45 -0000 @@ -47,7 +47,6 @@ #include #include #include -#include #ifdef CFG_FLASH_CFI_DRIVER /* @@ -327,7 +326,7 @@ int i; /* Init: no FLASHes known */ - for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) { + for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) { flash_info[i].flash_id = FLASH_UNKNOWN; size += flash_info[i].size = flash_get_size (bank_base[i], i); if (flash_info[i].flash_id == FLASH_UNKNOWN) { @@ -778,32 +777,14 @@ 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) ? '\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; } /*