diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 9a441095ff8074b21dd688aa7c9d09b17aa6a804..2ca73f9623d1ccd509a8c1ee9270a5f57862e345 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -2183,6 +2183,27 @@ ulong flash_get_size (phys_addr_t base, int banknum)
 							     FLASH_OFFSET_PROTECT,
 							     FLASH_STATUS_PROTECT);
 					break;
+				case CFI_CMDSET_AMD_EXTENDED:
+				case CFI_CMDSET_AMD_STANDARD:
+					if (!manufact_match(info, AMD_MANUFACT)) {
+						/* default: not protected */
+						info->protect[sect_cnt] = 0;
+						break;
+					}
+
+					/* Read protection (PPB) from sector */
+					flash_write_cmd(info, 0, 0,
+							info->cmd_reset);
+					flash_unlock_seq(info, 0);
+					flash_write_cmd(info, 0,
+							info->addr_unlock1,
+							FLASH_CMD_READ_ID);
+					info->protect[sect_cnt] =
+						flash_isset(
+							info, sect_cnt,
+							FLASH_OFFSET_PROTECT,
+							FLASH_STATUS_PROTECT);
+					break;
 				default:
 					/* default: not protected */
 					info->protect[sect_cnt] = 0;