Skip to content

Commit 790bd27

Browse files
marexpaulfertser
authored andcommitted
flash/nor: Factor out cfi_spansion_unlock_seq()
Factor out the spansion unlock sequence to deduplicate the code. Change-Id: Id78522e9a2f0e701870ef816772289d08257476a Signed-off-by: Marek Vasut <[email protected]> Reviewed-on: http://openocd.zylin.com/5144 Tested-by: jenkins Reviewed-by: Paul Fertser <[email protected]>
1 parent 9f1529d commit 790bd27

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

src/flash/nor/cfi.c

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,23 @@ static int cfi_intel_erase(struct flash_bank *bank, int first, int last)
898898
return cfi_send_command(bank, 0xff, flash_address(bank, 0, 0x0));
899899
}
900900

901+
static int cfi_spansion_unlock_seq(struct flash_bank *bank)
902+
{
903+
int retval;
904+
struct cfi_flash_bank *cfi_info = bank->driver_priv;
905+
struct cfi_spansion_pri_ext *pri_ext = cfi_info->pri_ext;
906+
907+
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
908+
if (retval != ERROR_OK)
909+
return retval;
910+
911+
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
912+
if (retval != ERROR_OK)
913+
return retval;
914+
915+
return ERROR_OK;
916+
}
917+
901918
static int cfi_spansion_erase(struct flash_bank *bank, int first, int last)
902919
{
903920
int retval;
@@ -906,23 +923,15 @@ static int cfi_spansion_erase(struct flash_bank *bank, int first, int last)
906923
int i;
907924

908925
for (i = first; i <= last; i++) {
909-
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
910-
if (retval != ERROR_OK)
911-
return retval;
912-
913-
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
926+
retval = cfi_spansion_unlock_seq(bank);
914927
if (retval != ERROR_OK)
915928
return retval;
916929

917930
retval = cfi_send_command(bank, 0x80, flash_address(bank, 0, pri_ext->_unlock1));
918931
if (retval != ERROR_OK)
919932
return retval;
920933

921-
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
922-
if (retval != ERROR_OK)
923-
return retval;
924-
925-
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
934+
retval = cfi_spansion_unlock_seq(bank);
926935
if (retval != ERROR_OK)
927936
return retval;
928937

@@ -2102,11 +2111,7 @@ static int cfi_spansion_write_word(struct flash_bank *bank, uint8_t *word, uint3
21022111
struct cfi_spansion_pri_ext *pri_ext = cfi_info->pri_ext;
21032112
struct target *target = bank->target;
21042113

2105-
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
2106-
if (retval != ERROR_OK)
2107-
return retval;
2108-
2109-
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
2114+
retval = cfi_spansion_unlock_seq(bank);
21102115
if (retval != ERROR_OK)
21112116
return retval;
21122117

@@ -2137,7 +2142,6 @@ static int cfi_spansion_write_words(struct flash_bank *bank, const uint8_t *word
21372142
int retval;
21382143
struct cfi_flash_bank *cfi_info = bank->driver_priv;
21392144
struct target *target = bank->target;
2140-
struct cfi_spansion_pri_ext *pri_ext = cfi_info->pri_ext;
21412145

21422146
/* Calculate buffer size and boundary mask
21432147
* buffersize is (buffer size per chip) * (number of chips)
@@ -2163,11 +2167,7 @@ static int cfi_spansion_write_words(struct flash_bank *bank, const uint8_t *word
21632167
}
21642168

21652169
/* Unlock */
2166-
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
2167-
if (retval != ERROR_OK)
2168-
return retval;
2169-
2170-
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
2170+
retval = cfi_spansion_unlock_seq(bank);
21712171
if (retval != ERROR_OK)
21722172
return retval;
21732173

@@ -2958,11 +2958,7 @@ static int cfi_spansion_protect_check(struct flash_bank *bank)
29582958
struct cfi_spansion_pri_ext *pri_ext = cfi_info->pri_ext;
29592959
int i;
29602960

2961-
retval = cfi_send_command(bank, 0xaa, flash_address(bank, 0, pri_ext->_unlock1));
2962-
if (retval != ERROR_OK)
2963-
return retval;
2964-
2965-
retval = cfi_send_command(bank, 0x55, flash_address(bank, 0, pri_ext->_unlock2));
2961+
retval = cfi_spansion_unlock_seq(bank);
29662962
if (retval != ERROR_OK)
29672963
return retval;
29682964

0 commit comments

Comments
 (0)