summaryrefslogtreecommitdiff
path: root/drivers/mtd
diff options
context:
space:
mode:
authorMarkus Klotzbuecher <mk@denx.de>2008-07-21 12:37:56 +0200
committerMarkus Klotzbuecher <mk@denx.de>2008-07-21 12:37:56 +0200
commitab06bddb04ed4be50a8f9ad5f94fa23953a734e3 (patch)
tree5df2528b42f073dd5bbb34b14f288a1811073729 /drivers/mtd
parent262423955895ba4599fa11d7c49dcffb65af0afd (diff)
parent1953d128fd07f07d1c3810a28c0863ea64dae1b6 (diff)
Merge branch 'master' of git://www.denx.de/git/u-boot
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/cfi_flash.c13
-rw-r--r--drivers/mtd/dataflash.c16
2 files changed, 23 insertions, 6 deletions
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index c0ea97be70..12647ef986 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -301,11 +301,14 @@ static inline void flash_unmap(flash_info_t *info, flash_sect_t sect,
/*-----------------------------------------------------------------------
* make a proper sized command based on the port and chip widths
*/
-static void flash_make_cmd (flash_info_t * info, ulong cmd, void *cmdbuf)
+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,12 +316,12 @@ static void flash_make_cmd (flash_info_t * info, ulong 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(ulong) - cword_offset - 1);
+ val = *((uchar*)&cmd + sizeof(u32) - cword_offset - 1);
#endif
- cp[cp_offset] = (cword_offset >= sizeof(ulong)) ? 0x00 : val;
+ cp[cp_offset] = (cword_offset >= sizeof(u32)) ? 0x00 : val;
}
}
@@ -433,7 +436,7 @@ static ulong flash_read_long (flash_info_t * info, flash_sect_t sect,
* Write a proper sized command to the correct address
*/
static void flash_write_cmd (flash_info_t * info, flash_sect_t sect,
- uint offset, ulong cmd)
+ uint offset, u32 cmd)
{
void *addr;
diff --git a/drivers/mtd/dataflash.c b/drivers/mtd/dataflash.c
index 8247aa03b5..0ad48cdae9 100644
--- a/drivers/mtd/dataflash.c
+++ b/drivers/mtd/dataflash.c
@@ -54,6 +54,17 @@ int AT91F_DataflashInit (void)
&dataflash_info[i].Desc);
switch (dfcode) {
+ case AT45DB021:
+ dataflash_info[i].Device.pages_number = 1024;
+ dataflash_info[i].Device.pages_size = 263;
+ dataflash_info[i].Device.page_offset = 9;
+ dataflash_info[i].Device.byte_mask = 0x300;
+ dataflash_info[i].Device.cs = cs[i].cs;
+ dataflash_info[i].Desc.DataFlash_state = IDLE;
+ dataflash_info[i].logical_address = cs[i].addr;
+ dataflash_info[i].id = dfcode;
+ found[i] += dfcode;;
+ break;
case AT45DB161:
dataflash_info[i].Device.pages_number = 4096;
dataflash_info[i].Device.pages_size = 528;
@@ -162,7 +173,7 @@ void AT91F_DataflashSetEnv (void)
if((env & FLAG_SETENV) == FLAG_SETENV) {
start =
dataflash_info[i].Device.area_list[j].start;
- sprintf((char*) s,"%X",start);
+ sprintf((char*) s,"%lX",start);
setenv((char*) area_list[part].label,(char*) s);
}
part++;
@@ -178,6 +189,9 @@ void dataflash_print_info (void)
if (dataflash_info[i].id != 0) {
printf("DataFlash:");
switch (dataflash_info[i].id) {
+ case AT45DB021:
+ printf("AT45DB021\n");
+ break;
case AT45DB161:
printf("AT45DB161\n");
break;