Skip to content
Snippets Groups Projects
Commit 714eec71 authored by Tom Rini's avatar Tom Rini
Browse files
parents 2431492a 622b9527
No related branches found
No related tags found
No related merge requests found
...@@ -335,34 +335,34 @@ void flash_write_cmd (flash_info_t * info, flash_sect_t sect, ...@@ -335,34 +335,34 @@ void flash_write_cmd (flash_info_t * info, flash_sect_t sect,
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
debug ("fwc addr %p cmd %x %x 8bit x %d bit\n", addr, cmd, debug ("fwc addr %p cmd %x %x 8bit x %d bit\n", addr, cmd,
cword.c, info->chipwidth << CFI_FLASH_SHIFT_WIDTH); cword.w8, info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
flash_write8(cword.c, addr); flash_write8(cword.w8, addr);
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
debug ("fwc addr %p cmd %x %4.4x 16bit x %d bit\n", addr, debug ("fwc addr %p cmd %x %4.4x 16bit x %d bit\n", addr,
cmd, cword.w, cmd, cword.w16,
info->chipwidth << CFI_FLASH_SHIFT_WIDTH); info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
flash_write16(cword.w, addr); flash_write16(cword.w16, addr);
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
debug ("fwc addr %p cmd %x %8.8lx 32bit x %d bit\n", addr, debug ("fwc addr %p cmd %x %8.8x 32bit x %d bit\n", addr,
cmd, cword.l, cmd, cword.w32,
info->chipwidth << CFI_FLASH_SHIFT_WIDTH); info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
flash_write32(cword.l, addr); flash_write32(cword.w32, addr);
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
#ifdef DEBUG #ifdef DEBUG
{ {
char str[20]; char str[20];
print_longlong (str, cword.ll); print_longlong (str, cword.w64);
debug ("fwrite addr %p cmd %x %s 64 bit x %d bit\n", debug ("fwrite addr %p cmd %x %s 64 bit x %d bit\n",
addr, cmd, str, addr, cmd, str,
info->chipwidth << CFI_FLASH_SHIFT_WIDTH); info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
} }
#endif #endif
flash_write64(cword.ll, addr); flash_write64(cword.w64, addr);
break; break;
} }
...@@ -393,16 +393,16 @@ static int flash_isequal (flash_info_t * info, flash_sect_t sect, ...@@ -393,16 +393,16 @@ static int flash_isequal (flash_info_t * info, flash_sect_t sect,
debug ("is= cmd %x(%c) addr %p ", cmd, cmd, addr); debug ("is= cmd %x(%c) addr %p ", cmd, cmd, addr);
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
debug ("is= %x %x\n", flash_read8(addr), cword.c); debug ("is= %x %x\n", flash_read8(addr), cword.w8);
retval = (flash_read8(addr) == cword.c); retval = (flash_read8(addr) == cword.w8);
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
debug ("is= %4.4x %4.4x\n", flash_read16(addr), cword.w); debug ("is= %4.4x %4.4x\n", flash_read16(addr), cword.w16);
retval = (flash_read16(addr) == cword.w); retval = (flash_read16(addr) == cword.w16);
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
debug ("is= %8.8x %8.8lx\n", flash_read32(addr), cword.l); debug ("is= %8.8x %8.8x\n", flash_read32(addr), cword.w32);
retval = (flash_read32(addr) == cword.l); retval = (flash_read32(addr) == cword.w32);
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
#ifdef DEBUG #ifdef DEBUG
...@@ -411,11 +411,11 @@ static int flash_isequal (flash_info_t * info, flash_sect_t sect, ...@@ -411,11 +411,11 @@ static int flash_isequal (flash_info_t * info, flash_sect_t sect,
char str2[20]; char str2[20];
print_longlong (str1, flash_read64(addr)); print_longlong (str1, flash_read64(addr));
print_longlong (str2, cword.ll); print_longlong (str2, cword.w64);
debug ("is= %s %s\n", str1, str2); debug ("is= %s %s\n", str1, str2);
} }
#endif #endif
retval = (flash_read64(addr) == cword.ll); retval = (flash_read64(addr) == cword.w64);
break; break;
default: default:
retval = 0; retval = 0;
...@@ -439,16 +439,16 @@ static int flash_isset (flash_info_t * info, flash_sect_t sect, ...@@ -439,16 +439,16 @@ static int flash_isset (flash_info_t * info, flash_sect_t sect,
flash_make_cmd (info, cmd, &cword); flash_make_cmd (info, cmd, &cword);
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
retval = ((flash_read8(addr) & cword.c) == cword.c); retval = ((flash_read8(addr) & cword.w8) == cword.w8);
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
retval = ((flash_read16(addr) & cword.w) == cword.w); retval = ((flash_read16(addr) & cword.w16) == cword.w16);
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
retval = ((flash_read32(addr) & cword.l) == cword.l); retval = ((flash_read32(addr) & cword.w32) == cword.w32);
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
retval = ((flash_read64(addr) & cword.ll) == cword.ll); retval = ((flash_read64(addr) & cword.w64) == cword.w64);
break; break;
default: default:
retval = 0; retval = 0;
...@@ -680,33 +680,33 @@ static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c) ...@@ -680,33 +680,33 @@ static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c)
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
cword->c = c; cword->w8 = c;
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
#if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA) #if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA)
w = c; w = c;
w <<= 8; w <<= 8;
cword->w = (cword->w >> 8) | w; cword->w16 = (cword->w16 >> 8) | w;
#else #else
cword->w = (cword->w << 8) | c; cword->w16 = (cword->w16 << 8) | c;
#endif #endif
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
#if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA) #if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA)
l = c; l = c;
l <<= 24; l <<= 24;
cword->l = (cword->l >> 8) | l; cword->w32 = (cword->w32 >> 8) | l;
#else #else
cword->l = (cword->l << 8) | c; cword->w32 = (cword->w32 << 8) | c;
#endif #endif
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
#if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA) #if defined(__LITTLE_ENDIAN) && !defined(CONFIG_SYS_WRITE_SWAPPED_DATA)
ll = c; ll = c;
ll <<= 56; ll <<= 56;
cword->ll = (cword->ll >> 8) | ll; cword->w64 = (cword->w64 >> 8) | ll;
#else #else
cword->ll = (cword->ll << 8) | c; cword->w64 = (cword->w64 << 8) | c;
#endif #endif
break; break;
} }
...@@ -753,16 +753,16 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest, ...@@ -753,16 +753,16 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
/* Check if Flash is (sufficiently) erased */ /* Check if Flash is (sufficiently) erased */
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
flag = ((flash_read8(dstaddr) & cword.c) == cword.c); flag = ((flash_read8(dstaddr) & cword.w8) == cword.w8);
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
flag = ((flash_read16(dstaddr) & cword.w) == cword.w); flag = ((flash_read16(dstaddr) & cword.w16) == cword.w16);
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
flag = ((flash_read32(dstaddr) & cword.l) == cword.l); flag = ((flash_read32(dstaddr) & cword.w32) == cword.w32);
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
flag = ((flash_read64(dstaddr) & cword.ll) == cword.ll); flag = ((flash_read64(dstaddr) & cword.w64) == cword.w64);
break; break;
default: default:
flag = 0; flag = 0;
...@@ -800,16 +800,16 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest, ...@@ -800,16 +800,16 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
switch (info->portwidth) { switch (info->portwidth) {
case FLASH_CFI_8BIT: case FLASH_CFI_8BIT:
flash_write8(cword.c, dstaddr); flash_write8(cword.w8, dstaddr);
break; break;
case FLASH_CFI_16BIT: case FLASH_CFI_16BIT:
flash_write16(cword.w, dstaddr); flash_write16(cword.w16, dstaddr);
break; break;
case FLASH_CFI_32BIT: case FLASH_CFI_32BIT:
flash_write32(cword.l, dstaddr); flash_write32(cword.w32, dstaddr);
break; break;
case FLASH_CFI_64BIT: case FLASH_CFI_64BIT:
flash_write64(cword.ll, dstaddr); flash_write64(cword.w64, dstaddr);
break; break;
} }
...@@ -1115,7 +1115,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last) ...@@ -1115,7 +1115,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
if (use_flash_status_poll(info)) { if (use_flash_status_poll(info)) {
cfiword_t cword; cfiword_t cword;
void *dest; void *dest;
cword.ll = 0xffffffffffffffffULL; cword.w64 = 0xffffffffffffffffULL;
dest = flash_map(info, sect, 0); dest = flash_map(info, sect, 0);
st = flash_status_poll(info, &cword, dest, st = flash_status_poll(info, &cword, dest,
info->erase_blk_tout, "erase"); info->erase_blk_tout, "erase");
...@@ -1305,7 +1305,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) ...@@ -1305,7 +1305,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
/* handle unaligned start */ /* handle unaligned start */
if ((aln = addr - wp) != 0) { if ((aln = addr - wp) != 0) {
cword.l = 0; cword.w32 = 0;
p = (uchar *)wp; p = (uchar *)wp;
for (i = 0; i < aln; ++i) for (i = 0; i < aln; ++i)
flash_add_byte (info, &cword, flash_read8(p + i)); flash_add_byte (info, &cword, flash_read8(p + i));
...@@ -1332,7 +1332,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) ...@@ -1332,7 +1332,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
while (cnt >= info->portwidth) { while (cnt >= info->portwidth) {
/* prohibit buffer write when buffer_size is 1 */ /* prohibit buffer write when buffer_size is 1 */
if (info->buffer_size == 1) { if (info->buffer_size == 1) {
cword.l = 0; cword.w32 = 0;
for (i = 0; i < info->portwidth; i++) for (i = 0; i < info->portwidth; i++)
flash_add_byte (info, &cword, *src++); flash_add_byte (info, &cword, *src++);
if ((rc = flash_write_cfiword (info, wp, cword)) != 0) if ((rc = flash_write_cfiword (info, wp, cword)) != 0)
...@@ -1359,7 +1359,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) ...@@ -1359,7 +1359,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
} }
#else #else
while (cnt >= info->portwidth) { while (cnt >= info->portwidth) {
cword.l = 0; cword.w32 = 0;
for (i = 0; i < info->portwidth; i++) { for (i = 0; i < info->portwidth; i++) {
flash_add_byte (info, &cword, *src++); flash_add_byte (info, &cword, *src++);
} }
...@@ -1381,7 +1381,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) ...@@ -1381,7 +1381,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
/* /*
* handle unaligned tail bytes * handle unaligned tail bytes
*/ */
cword.l = 0; cword.w32 = 0;
p = (uchar *)wp; p = (uchar *)wp;
for (i = 0; (i < info->portwidth) && (cnt > 0); ++i) { for (i = 0; (i < info->portwidth) && (cnt > 0); ++i) {
flash_add_byte (info, &cword, *src++); flash_add_byte (info, &cword, *src++);
......
...@@ -105,10 +105,10 @@ ...@@ -105,10 +105,10 @@
#define NUM_ERASE_REGIONS 4 /* max. number of erase regions */ #define NUM_ERASE_REGIONS 4 /* max. number of erase regions */
typedef union { typedef union {
unsigned char c; u8 w8;
unsigned short w; u16 w16;
unsigned long l; u32 w32;
unsigned long long ll; u64 w64;
} cfiword_t; } cfiword_t;
/* CFI standard query structure */ /* CFI standard query structure */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment