mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-12 05:25:11 -04:00
cfi_flash: fix flash on BE machines with CFG_WRITE_SWAPPED_DATA
This got broken by commits 93c56f212c [cfi_flash: support of long cmd in U-boot.] That command needs to be in little endian format on BE machines with CFG_WRITE_SWAPPED_DATA. Without this patch, the command 0xf0 gets saved on stack as 0x00 00 00 f0 and 0x00 gets written into the cmdbuf in case portwidth = chipwidth = 8bit. Cc: Alexey Korolev <akorolev@infradead.org> Cc: Vasiliy Leonenko <vasiliy.leonenko@mail.ru> Signed-off-by: Sebastian Siewior <bigeasy@linutronix.de>
This commit is contained in:
parent
699f051255
commit
340ccb260f
@ -306,6 +306,9 @@ static void flash_make_cmd(flash_info_t *info, u32 cmd, void *cmdbuf)
|
||||
int i;
|
||||
int cword_offset;
|
||||
int cp_offset;
|
||||
#if defined(__LITTLE_ENDIAN) || defined(CFG_WRITE_SWAPPED_DATA)
|
||||
u32 cmd_le = cpu_to_le32(cmd);
|
||||
#endif
|
||||
uchar val;
|
||||
uchar *cp = (uchar *) cmdbuf;
|
||||
|
||||
@ -313,7 +316,7 @@ static void flash_make_cmd(flash_info_t *info, u32 cmd, void *cmdbuf)
|
||||
cword_offset = (info->portwidth-i)%info->chipwidth;
|
||||
#if defined(__LITTLE_ENDIAN) || defined(CFG_WRITE_SWAPPED_DATA)
|
||||
cp_offset = info->portwidth - i;
|
||||
val = *((uchar*)&cmd + cword_offset);
|
||||
val = *((uchar*)&cmd_le + cword_offset);
|
||||
#else
|
||||
cp_offset = i - 1;
|
||||
val = *((uchar*)&cmd + sizeof(u32) - cword_offset - 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user