CFI: avoid redundant function call in single word programming mode
authorJens Gehrlein <sew_s@tqs.de>
Tue, 16 Dec 2008 16:25:54 +0000 (17:25 +0100)
committerStefan Roese <sr@denx.de>
Mon, 26 Jan 2009 09:49:59 +0000 (10:49 +0100)
The function find_sector() doesn't need to be called twice in
the case of AMD command set.
Tested on TQM5200S-BD with Samsung K8P2815UQB.

Signed-off-by: Jens Gehrlein <sew_s@tqs.de>
Signed-off-by: Stefan Roese <sr@denx.de>
drivers/mtd/cfi_flash.c

index e8afe99..1bd0e2b 100644 (file)
@@ -795,7 +795,8 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
 {
        void *dstaddr;
        int flag;
-       flash_sect_t sect;
+       flash_sect_t sect = 0;
+       char sect_found = 0;
 
        dstaddr = map_physmem(dest, info->portwidth, MAP_NOCACHE);
 
@@ -840,6 +841,7 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
                sect = find_sector(info, dest);
                flash_unlock_seq (info, sect);
                flash_write_cmd (info, sect, info->addr_unlock1, AMD_CMD_WRITE);
+               sect_found = 1;
                break;
        }
 
@@ -864,8 +866,10 @@ static int flash_write_cfiword (flash_info_t * info, ulong dest,
 
        unmap_physmem(dstaddr, info->portwidth);
 
-       return flash_full_status_check (info, find_sector (info, dest),
-                                       info->write_tout, "write");
+       if (!sect_found)
+               sect = find_sector (info, dest);
+
+       return flash_full_status_check (info, sect, info->write_tout, "write");
 }
 
 #ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE