mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
mtd: nand: omap: fix error-codes returned from omap-elm driver
This patch omap-elm.c: replaces -ve integer value returned during errorneous condition, with proper error-codes. omap-gpmc.c: updates omap-gpmc driver to pass error-codes returned from omap-elm driver to upper layers Signed-off-by: Pekon Gupta <pekon@ti.com> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
a09431da38
commit
3f990dc83b
2 changed files with 9 additions and 6 deletions
|
@ -19,6 +19,7 @@
|
|||
#include <linux/mtd/omap_elm.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
|
||||
#define DRIVER_NAME "omap-elm"
|
||||
#define ELM_DEFAULT_POLY (0)
|
||||
|
||||
struct elm *elm_cfg;
|
||||
|
@ -113,8 +114,10 @@ int elm_check_error(u8 *syndrome, enum bch_level bch_type, u32 *error_count,
|
|||
|
||||
/* check if correctable */
|
||||
location_status = readl(&elm_cfg->error_location[poly].location_status);
|
||||
if (!(location_status & ELM_LOCATION_STATUS_ECC_CORRECTABLE_MASK))
|
||||
return -1;
|
||||
if (!(location_status & ELM_LOCATION_STATUS_ECC_CORRECTABLE_MASK)) {
|
||||
printf("%s: uncorrectable ECC errors\n", DRIVER_NAME);
|
||||
return -EBADMSG;
|
||||
}
|
||||
|
||||
/* get error count */
|
||||
*error_count = readl(&elm_cfg->error_location[poly].location_status) &
|
||||
|
|
|
@ -370,10 +370,10 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
|
|||
}
|
||||
/* use elm module to check for errors */
|
||||
elm_config(bch_type);
|
||||
if (elm_check_error(calc_ecc, bch_type, &error_count, error_loc)) {
|
||||
printf("nand: error: uncorrectable ECC errors\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
err = elm_check_error(calc_ecc, bch_type, &error_count, error_loc);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* correct bch error */
|
||||
for (count = 0; count < error_count; count++) {
|
||||
switch (info->ecc_scheme) {
|
||||
|
|
Loading…
Reference in a new issue