@ -1220,29 +1220,29 @@ void flash_print_info(flash_info_t *info)
info - > size > > 20 , info - > sector_count ) ;
printf ( " " ) ;
switch ( info - > vendor ) {
case CFI_CMDSET_INTEL_PROG_REGIONS :
printf ( " Intel Prog Regions " ) ;
break ;
case CFI_CMDSET_INTEL_STANDARD :
printf ( " Intel Standard " ) ;
break ;
case CFI_CMDSET_INTEL_EXTENDED :
printf ( " Intel Extended " ) ;
break ;
case CFI_CMDSET_AMD_STANDARD :
printf ( " AMD Standard " ) ;
break ;
case CFI_CMDSET_AMD_EXTENDED :
printf ( " AMD Extended " ) ;
break ;
case CFI_CMDSET_INTEL_PROG_REGIONS :
printf ( " Intel Prog Regions " ) ;
break ;
case CFI_CMDSET_INTEL_STANDARD :
printf ( " Intel Standard " ) ;
break ;
case CFI_CMDSET_INTEL_EXTENDED :
printf ( " Intel Extended " ) ;
break ;
case CFI_CMDSET_AMD_STANDARD :
printf ( " AMD Standard " ) ;
break ;
case CFI_CMDSET_AMD_EXTENDED :
printf ( " AMD Extended " ) ;
break ;
# ifdef CONFIG_FLASH_CFI_LEGACY
case CFI_CMDSET_AMD_LEGACY :
printf ( " AMD Legacy " ) ;
break ;
case CFI_CMDSET_AMD_LEGACY :
printf ( " AMD Legacy " ) ;
break ;
# endif
default :
printf ( " Unknown (%d) " , info - > vendor ) ;
break ;
default :
printf ( " Unknown (%d) " , info - > vendor ) ;
break ;
}
printf ( " command set, Manufacturer ID: 0x%02X, Device ID: 0x " ,
info - > manufacturer_id ) ;
@ -1480,94 +1480,94 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
int retcode = 0 ;
switch ( info - > vendor ) {
case CFI_CMDSET_INTEL_PROG_REGIONS :
case CFI_CMDSET_INTEL_STANDARD :
case CFI_CMDSET_INTEL_EXTENDED :
if ( ! cfi_protect_bugfix ( info , sector , prot ) ) {
case CFI_CMDSET_INTEL_PROG_REGIONS :
case CFI_CMDSET_INTEL_STANDARD :
case CFI_CMDSET_INTEL_EXTENDED :
if ( ! cfi_protect_bugfix ( info , sector , prot ) ) {
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_CLEAR_STATUS ) ;
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_PROTECT ) ;
if ( prot )
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_CLEAR_STATUS ) ;
FLASH_CMD_PROTECT_SET ) ;
else
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_PROTECT ) ;
if ( prot )
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_PROTECT_SET ) ;
else
flash_write_cmd ( info , sector , 0 ,
FLASH_CMD_PROTECT_CLEAR ) ;
FLASH_CMD_PROTECT_CLEAR ) ;
}
break ;
case CFI_CMDSET_AMD_EXTENDED :
case CFI_CMDSET_AMD_STANDARD :
/* U-Boot only checks the first byte */
if ( manufact_match ( info , ATM_MANUFACT ) ) {
if ( prot ) {
flash_unlock_seq ( info , 0 ) ;
flash_write_cmd ( info , 0 ,
info - > addr_unlock1 ,
ATM_CMD_SOFTLOCK_START ) ;
flash_unlock_seq ( info , 0 ) ;
flash_write_cmd ( info , sector , 0 ,
ATM_CMD_LOCK_SECT ) ;
} else {
flash_write_cmd ( info , 0 ,
info - > addr_unlock1 ,
AMD_CMD_UNLOCK_START ) ;
if ( info - > device_id = = ATM_ID_BV6416 )
flash_write_cmd ( info , sector ,
0 , ATM_CMD_UNLOCK_SECT ) ;
}
break ;
case CFI_CMDSET_AMD_EXTENDED :
case CFI_CMDSET_AMD_STANDARD :
/* U-Boot only checks the first byte */
if ( manufact_match ( info , ATM_MANUFACT ) ) {
if ( prot ) {
flash_unlock_seq ( info , 0 ) ;
flash_write_cmd ( info , 0 ,
info - > addr_unlock1 ,
ATM_CMD_SOFTLOCK_START ) ;
flash_unlock_seq ( info , 0 ) ;
}
if ( info - > legacy_unlock ) {
int flag = disable_interrupts ( ) ;
int lock_flag ;
flash_unlock_seq ( info , 0 ) ;
flash_write_cmd ( info , 0 , info - > addr_unlock1 ,
AMD_CMD_SET_PPB_ENTRY ) ;
lock_flag = flash_isset ( info , sector , 0 , 0x01 ) ;
if ( prot ) {
if ( lock_flag ) {
flash_write_cmd ( info , sector , 0 ,
ATM_CMD_LOCK_SECT ) ;
} else {
flash_write_cmd ( info , 0 ,
info - > addr_unlock1 ,
AMD_CMD_UNLOCK_START ) ;
if ( info - > device_id = = ATM_ID_BV6416 )
flash_write_cmd ( info , sector ,
0 , ATM_CMD_UNLOCK_SECT ) ;
AMD_CMD_PPB_LOCK_BC1 ) ;
flash_write_cmd ( info , sector , 0 ,
AMD_CMD_PPB_LOCK_BC2 ) ;
}
}
if ( info - > legacy_unlock ) {
int flag = disable_interrupts ( ) ;
int lock_flag ;
flash_unlock_seq ( info , 0 ) ;
flash_write_cmd ( info , 0 , info - > addr_unlock1 ,
AMD_CMD_SET_PPB_ENTRY ) ;
lock_flag = flash_isset ( info , sector , 0 , 0x01 ) ;
if ( prot ) {
if ( lock_flag ) {
flash_write_cmd ( info , sector , 0 ,
AMD_CMD_PPB_LOCK_BC1 ) ;
flash_write_cmd ( info , sector , 0 ,
AMD_CMD_PPB_LOCK_BC2 ) ;
}
debug ( " sector %ld %slocked \n " , sector ,
lock_flag ? " " : " already " ) ;
} else {
if ( ! lock_flag ) {
debug ( " unlock %ld \n " , sector ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_PPB_UNLOCK_BC1 ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_PPB_UNLOCK_BC2 ) ;
}
debug ( " sector %ld %sunlocked \n " , sector ,
! lock_flag ? " " : " already " ) ;
debug ( " sector %ld %slocked \n " , sector ,
lock_flag ? " " : " already " ) ;
} else {
if ( ! lock_flag ) {
debug ( " unlock %ld \n " , sector ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_PPB_UNLOCK_BC1 ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_PPB_UNLOCK_BC2 ) ;
}
if ( flag )
enable_interrupts ( ) ;
if ( flash_status_check ( info , sector ,
info - > erase_blk_tout ,
prot ? " protect " : " unprotect " ) )
printf ( " status check error \n " ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_SET_PPB_EXIT_BC1 ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_SET_PPB_EXIT_BC2 ) ;
debug ( " sector %ld %sunlocked \n " , sector ,
! lock_flag ? " " : " already " ) ;
}
break ;
if ( flag )
enable_interrupts ( ) ;
if ( flash_status_check ( info , sector ,
info - > erase_blk_tout ,
prot ? " protect " : " unprotect " ) )
printf ( " status check error \n " ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_SET_PPB_EXIT_BC1 ) ;
flash_write_cmd ( info , 0 , 0 ,
AMD_CMD_SET_PPB_EXIT_BC2 ) ;
}
break ;
# ifdef CONFIG_FLASH_CFI_LEGACY
case CFI_CMDSET_AMD_LEGACY :
flash_write_cmd ( info , sector , 0 , FLASH_CMD_CLEAR_STATUS ) ;
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT ) ;
if ( prot )
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT_SET ) ;
else
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT_CLEAR ) ;
case CFI_CMDSET_AMD_LEGACY :
flash_write_cmd ( info , sector , 0 , FLASH_CMD_CLEAR_STATUS ) ;
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT ) ;
if ( prot )
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT_SET ) ;
else
flash_write_cmd ( info , sector , 0 , FLASH_CMD_PROTECT_CLEAR ) ;
# endif
} ;