mtd: nand: omap: fix error-codes returned from omap-elm driver
authorpekon gupta <pekon@ti.com>
Fri, 11 Apr 2014 07:25:35 +0000 (12:55 +0530)
committerTom Rini <trini@ti.com>
Fri, 6 Jun 2014 21:46:00 +0000 (17:46 -0400)
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>
drivers/mtd/nand/omap_elm.c
drivers/mtd/nand/omap_gpmc.c

index afa629a8135475f01991a28787d4613b85682c2a..d963e6c07c58a938c454ef4509ef267711306904 100644 (file)
@@ -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) &
index 2d893e1c6c93dbbeefa0134bf69fa6bfe2ea0477..d2fedf9faca7ebed52181687e36c89add99cd82f 100644 (file)
@@ -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) {