[U-Boot] [PATCH 3/4] cfi_flash: Enable PPB protection for all AMD cmdset flash chips

Stefan Roese sr at denx.de
Thu Dec 6 15:44:11 CET 2012


Not only Spansion supports the Persistent Protection Bits (PPB) locking.
Other devices like the Micron JS28F512M29EWx also support this type
of locking/unlocking. Detection of support is done in the same way as
done for the Spansion chips - via the 0x49 CFI word.

This patch enables this PPB protection mechanism for all AMD type
(AMD commandset) chips.

Signed-off-by: Stefan Roese <sr at denx.de>
Cc: Anatolij Gustschin <agust at denx.de>
Cc: Holger Brunck <holger.brunck at keymile.com>
---
 drivers/mtd/cfi_flash.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 045cf4a..5176d62 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -1511,7 +1511,7 @@ int flash_real_protect (flash_info_t * info, long sector, int prot)
 							0, ATM_CMD_UNLOCK_SECT);
 				}
 			}
-			if (manufact_match(info, AMD_MANUFACT)) {
+			if (info->legacy_unlock) {
 				int flag = disable_interrupts();
 				int lock_flag;
 
@@ -1741,12 +1741,9 @@ static int cmdset_amd_init(flash_info_t *info, struct cfi_qry *qry)
 	flash_write_cmd(info, 0, info->cfi_offset, FLASH_CMD_CFI);
 
 #ifdef CONFIG_SYS_FLASH_PROTECTION
-	if (info->ext_addr && manufact_match(info, AMD_MANUFACT)) {
-		ushort spus;
-
-		/* read sector protect/unprotect scheme */
-		spus = flash_read_uchar(info, info->ext_addr + 9);
-		if (spus == 0x8)
+	if (info->ext_addr) {
+		/* read sector protect/unprotect scheme (at 0x49) */
+		if (flash_read_uchar(info, info->ext_addr + 9) == 0x8)
 			info->legacy_unlock = 1;
 	}
 #endif
@@ -2162,7 +2159,7 @@ ulong flash_get_size (phys_addr_t base, int banknum)
 					break;
 				case CFI_CMDSET_AMD_EXTENDED:
 				case CFI_CMDSET_AMD_STANDARD:
-					if (!manufact_match(info, AMD_MANUFACT)) {
+					if (!info->legacy_unlock) {
 						/* default: not protected */
 						info->protect[sect_cnt] = 0;
 						break;
-- 
1.8.0.1



More information about the U-Boot mailing list