cfi: allow optional buffer write support

Some flash's do not support buffer writes, so we now check
they are supported before trying to use them.

Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
This commit is contained in:
Spencer Oliver 2010-12-08 17:07:08 +00:00
parent fe4fe623d5
commit 26ba6ea511
2 changed files with 12 additions and 2 deletions

View File

@ -44,5 +44,6 @@ bool flash_driver_name_matches(const char *name, const char *expected);
#define ERROR_FLASH_BUSY (-905) #define ERROR_FLASH_BUSY (-905)
#define ERROR_FLASH_SECTOR_NOT_ERASED (-906) #define ERROR_FLASH_SECTOR_NOT_ERASED (-906)
#define ERROR_FLASH_BANK_NOT_PROBED (-907) #define ERROR_FLASH_BANK_NOT_PROBED (-907)
#define ERROR_FLASH_OPER_UNSUPPORTED (-908)
#endif // FLASH_COMMON_H #endif // FLASH_COMMON_H

View File

@ -2051,6 +2051,13 @@ static int cfi_write_words(struct flash_bank *bank, uint8_t *word,
{ {
struct cfi_flash_bank *cfi_info = bank->driver_priv; struct cfi_flash_bank *cfi_info = bank->driver_priv;
if (cfi_info->buf_write_timeout_typ == 0)
{
/* buffer writes are not supported */
LOG_DEBUG("Buffer Writes Not Supported");
return ERROR_FLASH_OPER_UNSUPPORTED;
}
switch (cfi_info->pri_id) switch (cfi_info->pri_id)
{ {
case 1: case 1:
@ -2241,6 +2248,8 @@ static int cfi_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset,
count -= buffersize; count -= buffersize;
fallback = 0; fallback = 0;
} }
else if (retval != ERROR_FLASH_OPER_UNSUPPORTED)
return retval;
} }
/* try the slow way? */ /* try the slow way? */
if (fallback) if (fallback)