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:
parent
fe4fe623d5
commit
26ba6ea511
|
@ -25,9 +25,9 @@
|
||||||
* Parses the optional '.index' portion of a flash bank identifier.
|
* Parses the optional '.index' portion of a flash bank identifier.
|
||||||
* @param name The desired driver name, passed by the user.
|
* @param name The desired driver name, passed by the user.
|
||||||
* @returns The parsed index request, or 0 if not present. If the
|
* @returns The parsed index request, or 0 if not present. If the
|
||||||
* name provides a suffix but it does not parse as an unsigned integer,
|
* name provides a suffix but it does not parse as an unsigned integer,
|
||||||
* the routine returns ~0U. This will prevent further matching.
|
* the routine returns ~0U. This will prevent further matching.
|
||||||
*/
|
*/
|
||||||
unsigned get_flash_name_index(const char *name);
|
unsigned get_flash_name_index(const char *name);
|
||||||
/**
|
/**
|
||||||
* Attempt to match the @c expected name with the @c name of a driver.
|
* Attempt to match the @c expected name with the @c name of a driver.
|
||||||
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue