summaryrefslogtreecommitdiff
path: root/src/flash/cfi.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-04-21 05:31:18 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-04-21 05:31:18 +0000
commit55ebb067d1214b4136343ac6356ad15169a631f2 (patch)
treebf1e2b1fe7afeeaea629d2f7231cd1c6d70ef497 /src/flash/cfi.c
parentd2d75efb3929b0067f7dcb6f9973ec8c47948135 (diff)
downloadopenocd+libswd-55ebb067d1214b4136343ac6356ad15169a631f2.tar.gz
openocd+libswd-55ebb067d1214b4136343ac6356ad15169a631f2.tar.bz2
openocd+libswd-55ebb067d1214b4136343ac6356ad15169a631f2.tar.xz
openocd+libswd-55ebb067d1214b4136343ac6356ad15169a631f2.zip
Michael Schwingen <rincewind@discworld.dascon.de> add non-CFI SST flashs
git-svn-id: svn://svn.berlios.de/openocd/trunk@1480 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/flash/cfi.c')
-rw-r--r--src/flash/cfi.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/flash/cfi.c b/src/flash/cfi.c
index 0426fd2e..b4bb6053 100644
--- a/src/flash/cfi.c
+++ b/src/flash/cfi.c
@@ -296,13 +296,14 @@ u8 cfi_intel_wait_status_busy(flash_bank_t *bank, int timeout)
int cfi_spansion_wait_status_busy(flash_bank_t *bank, int timeout)
{
u8 status, oldstatus;
+ cfi_flash_bank_t *cfi_info = bank->driver_priv;
oldstatus = cfi_get_u8(bank, 0, 0x0);
do {
status = cfi_get_u8(bank, 0, 0x0);
if ((status ^ oldstatus) & 0x40) {
- if (status & 0x20) {
+ if (status & cfi_info->status_poll_mask & 0x20) {
oldstatus = cfi_get_u8(bank, 0, 0x0);
status = cfi_get_u8(bank, 0, 0x0);
if ((status ^ oldstatus) & 0x40) {
@@ -313,7 +314,7 @@ int cfi_spansion_wait_status_busy(flash_bank_t *bank, int timeout)
return(ERROR_OK);
}
}
- } else {
+ } else { /* no toggle: finished, OK */
LOG_DEBUG("status: 0x%x", status);
return(ERROR_OK);
}
@@ -2283,6 +2284,7 @@ static int cfi_probe(struct flash_bank_s *bank)
break;
/* AMD/Spansion, Atmel, ... command set */
case 0x0002:
+ cfi_info->status_poll_mask = CFI_STATUS_POLL_MASK_DQ5_DQ6_DQ7; /* default for all CFI flashs */
cfi_read_0002_pri_ext(bank);
break;
default:
@@ -2303,7 +2305,7 @@ static int cfi_probe(struct flash_bank_s *bank)
{
return retval;
}
- }
+ } /* end CFI case */
/* apply fixups depending on the primary command set */
switch(cfi_info->pri_id)