mtd: cfi-flash: return 0 for success
Use zero as success return code and negative standard error codes consistently in the driver. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
0203b33d14
commit
81d8fa83b4
|
@ -110,10 +110,10 @@ static int flash_write_cfiword (struct flash_info *info, ulong dest,
|
|||
else if (bankwidth_is_8(info))
|
||||
flag = ((flash_read64(dstaddr) & cword) == cword);
|
||||
else
|
||||
return 2;
|
||||
return -EIO;
|
||||
|
||||
if (!flag)
|
||||
return 2;
|
||||
return -EIO;
|
||||
|
||||
info->cfi_cmd_set->flash_prepare_write(info);
|
||||
|
||||
|
@ -252,7 +252,7 @@ static int flash_detect_width(struct flash_info *info, struct cfi_qry *qry)
|
|||
|
||||
dev_dbg(info->dev, "no flash found\n");
|
||||
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
|
||||
found:
|
||||
flash_read_cfi(info, qry, FLASH_OFFSET_CFI_RESP,
|
||||
|
@ -266,10 +266,10 @@ found:
|
|||
info->portwidth << CFI_FLASH_SHIFT_WIDTH,
|
||||
info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
|
||||
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int flash_detect_cfi (struct flash_info *info, struct cfi_qry *qry)
|
||||
static int flash_detect_cfi(struct flash_info *info, struct cfi_qry *qry)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -277,19 +277,19 @@ static int flash_detect_cfi (struct flash_info *info, struct cfi_qry *qry)
|
|||
|
||||
info->chip_lsb = 0;
|
||||
ret = flash_detect_width (info, qry);
|
||||
if (!ret) {
|
||||
info->chip_lsb = 1;
|
||||
ret = flash_detect_width (info, qry);
|
||||
}
|
||||
return ret;
|
||||
if (!ret)
|
||||
return 0;
|
||||
|
||||
info->chip_lsb = 1;
|
||||
return flash_detect_width (info, qry);
|
||||
}
|
||||
|
||||
/*
|
||||
* The following code cannot be run from FLASH!
|
||||
*/
|
||||
static ulong flash_get_size (struct flash_info *info)
|
||||
static int flash_detect_size(struct flash_info *info)
|
||||
{
|
||||
int i, j;
|
||||
int i, j, ret;
|
||||
flash_sect_t sect_cnt;
|
||||
unsigned long sector;
|
||||
unsigned long tmp;
|
||||
|
@ -313,8 +313,9 @@ static ulong flash_get_size (struct flash_info *info)
|
|||
info->start[0] = base;
|
||||
info->protect = 0;
|
||||
|
||||
if (!flash_detect_cfi (info, &qry))
|
||||
return 0;
|
||||
ret = flash_detect_cfi(info, &qry);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
info->vendor = le16_to_cpu(qry.p_id);
|
||||
info->ext_addr = le16_to_cpu(qry.p_adr);
|
||||
|
@ -346,7 +347,7 @@ static ulong flash_get_size (struct flash_info *info)
|
|||
|
||||
if (!info->cfi_cmd_set) {
|
||||
dev_err(info->dev, "unsupported vendor 0x%04x\n", info->vendor);
|
||||
return 0;
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
info->cfi_cmd_set->flash_read_jedec_ids (info);
|
||||
|
@ -443,7 +444,7 @@ static ulong flash_get_size (struct flash_info *info)
|
|||
|
||||
flash_write_cmd (info, 0, 0, info->cmd_reset);
|
||||
|
||||
return info->size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* loop through the sectors from the highest address
|
||||
|
@ -486,13 +487,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copy memory to flash, returns:
|
||||
* 0 - OK
|
||||
* 1 - write timeout
|
||||
* 2 - Flash not erased
|
||||
*/
|
||||
static int write_buff (struct flash_info *info, const uchar * src, ulong addr, ulong cnt)
|
||||
static int write_buff(struct flash_info *info, const uchar * src, ulong addr, ulong cnt)
|
||||
{
|
||||
ulong wp;
|
||||
uchar *p;
|
||||
|
@ -548,8 +543,11 @@ static int write_buff (struct flash_info *info, const uchar * src, ulong addr, u
|
|||
i = buffered_size - (wp % buffered_size);
|
||||
if (i > cnt)
|
||||
i = cnt;
|
||||
if ((rc = info->cfi_cmd_set->flash_write_cfibuffer (info, wp, src, i)) != ERR_OK)
|
||||
|
||||
rc = info->cfi_cmd_set->flash_write_cfibuffer(info, wp, src, i);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
i -= i & (info->portwidth - 1);
|
||||
wp += i;
|
||||
src += i;
|
||||
|
@ -797,11 +795,11 @@ int flash_generic_status_check (struct flash_info *info, flash_sect_t sector,
|
|||
prompt, info->start[sector],
|
||||
flash_read_long (info, sector, 0));
|
||||
flash_write_cmd (info, sector, 0, info->cmd_reset);
|
||||
return ERR_TIMOUT;
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
udelay (1); /* also triggers watchdog */
|
||||
}
|
||||
return ERR_OK;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -962,6 +960,7 @@ static void cfi_init_mtd(struct flash_info *info)
|
|||
static int cfi_probe (struct device_d *dev)
|
||||
{
|
||||
struct flash_info *info = xzalloc(sizeof(*info));
|
||||
int ret;
|
||||
|
||||
dev->priv = (void *)info;
|
||||
|
||||
|
@ -973,9 +972,9 @@ static int cfi_probe (struct device_d *dev)
|
|||
return PTR_ERR(info->base);
|
||||
|
||||
info->dev = dev;
|
||||
info->size = flash_get_size(info);
|
||||
|
||||
if (info->flash_id == FLASH_UNKNOWN) {
|
||||
ret = flash_detect_size(info);
|
||||
if (ret) {
|
||||
dev_warn(dev, "## Unknown FLASH on Bank at 0x%08x - Size = 0x%08lx = %ld MB\n",
|
||||
dev->resource[0].start, info->size, info->size << 20);
|
||||
return -ENODEV;
|
||||
|
|
|
@ -363,19 +363,6 @@ extern void flash_read_user_serial(struct flash_info *info, void * buffer, int o
|
|||
extern void flash_read_factory_serial(struct flash_info *info, void * buffer, int offset, int len);
|
||||
#endif /* CFG_FLASH_PROTECTION */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* return codes from flash_write():
|
||||
*/
|
||||
#define ERR_OK 0
|
||||
#define ERR_TIMOUT 1
|
||||
#define ERR_NOT_ERASED 2
|
||||
#define ERR_PROTECTED 4
|
||||
#define ERR_INVAL 8
|
||||
#define ERR_ALIGN 16
|
||||
#define ERR_UNKNOWN_FLASH_VENDOR 32
|
||||
#define ERR_UNKNOWN_FLASH_TYPE 64
|
||||
#define ERR_PROG_ERROR 128
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Protection Flags for flash_protect():
|
||||
*/
|
||||
|
|
|
@ -67,7 +67,7 @@ static int intel_flash_write_cfibuffer (struct flash_info *info, ulong dest, con
|
|||
|
||||
retcode = flash_generic_status_check (info, sector, info->buffer_write_tout,
|
||||
"write to buffer");
|
||||
if (retcode != ERR_OK)
|
||||
if (retcode)
|
||||
return retcode;
|
||||
|
||||
/* reduce the number of loops by the width of the port */
|
||||
|
@ -110,24 +110,22 @@ static int intel_flash_status_check (struct flash_info *info, flash_sect_t secto
|
|||
{
|
||||
int retcode;
|
||||
|
||||
retcode = flash_generic_status_check (info, sector, tout, prompt);
|
||||
|
||||
if ((retcode == ERR_OK)
|
||||
&& !flash_isequal (info, sector, 0, FLASH_STATUS_DONE)) {
|
||||
retcode = ERR_INVAL;
|
||||
retcode = flash_generic_status_check(info, sector, tout, prompt);
|
||||
if (!retcode && !flash_isequal(info, sector, 0, FLASH_STATUS_DONE)) {
|
||||
retcode = -EINVAL;
|
||||
printf ("Flash %s error at address %lx\n", prompt,
|
||||
info->start[sector]);
|
||||
if (flash_isset (info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)) {
|
||||
puts ("Command Sequence Error.\n");
|
||||
} else if (flash_isset (info, sector, 0, FLASH_STATUS_ECLBS)) {
|
||||
puts ("Block Erase Error.\n");
|
||||
retcode = ERR_NOT_ERASED;
|
||||
retcode = -EIO;
|
||||
} else if (flash_isset (info, sector, 0, FLASH_STATUS_PSLBS)) {
|
||||
puts ("Locking Error\n");
|
||||
}
|
||||
if (flash_isset (info, sector, 0, FLASH_STATUS_DPS)) {
|
||||
puts ("Block locked.\n");
|
||||
retcode = ERR_PROTECTED;
|
||||
retcode = -EROFS;
|
||||
}
|
||||
if (flash_isset (info, sector, 0, FLASH_STATUS_VPENS))
|
||||
puts ("Vpp Low Error.\n");
|
||||
|
|
Loading…
Reference in New Issue