]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/cfi_flash.c
Merge tag 'signed-efi-next' of git://github.com/agraf/u-boot
[u-boot] / drivers / mtd / cfi_flash.c
index df04a425e2078e715b42b792c7a7d00411674a5d..8a5babea7b3593efc64717cdbf40a8f3be816e08 100644 (file)
@@ -544,7 +544,16 @@ static int flash_is_busy (flash_info_t * info, flash_sect_t sect)
 #ifdef CONFIG_FLASH_CFI_LEGACY
        case CFI_CMDSET_AMD_LEGACY:
 #endif
-               retval = flash_toggle (info, sect, 0, AMD_STATUS_TOGGLE);
+               if (info->sr_supported) {
+                       flash_write_cmd (info, sect, info->addr_unlock1,
+                                        FLASH_CMD_READ_STATUS);
+                       retval = !flash_isset (info, sect, 0,
+                                              FLASH_STATUS_DONE);
+               } else {
+                       retval = flash_toggle (info, sect, 0,
+                                              AMD_STATUS_TOGGLE);
+               }
+
                break;
        default:
                retval = 0;
@@ -1685,6 +1694,7 @@ static void cmdset_amd_read_jedec_ids(flash_info_t *info)
 {
        ushort bankId = 0;
        uchar  manuId;
+       uchar  lsbits;
 
        flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
        flash_unlock_seq(info, 0);
@@ -1700,6 +1710,9 @@ static void cmdset_amd_read_jedec_ids(flash_info_t *info)
        }
        info->manufacturer_id = manuId;
 
+       lsbits = flash_read_uchar(info, FLASH_OFFSET_LOWER_SW_BITS);
+       info->sr_supported = lsbits & BIT(0);
+
        switch (info->chipwidth){
        case FLASH_CFI_8BIT:
                info->device_id = flash_read_uchar (info,