* [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver
@ 2014-04-11 7:25 Pekon Gupta
2014-04-11 7:25 ` [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h Pekon Gupta
` (7 more replies)
0 siblings, 8 replies; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
*changes v1->v2*
[PATCH 2/7] fix for BCH4 and BCH16 ECC scheme
[PATCH 7/7] <new patch>
- white space-clean up
*original v1*
This patch series
- removes un-wanted & redundant code in omap_elm and omap_gpmc drivers
- refactors some private struct in omap_gpmc to make them generic across ecc-schemes
- minor code fixes and clean-ups
This series can be as-it-is applied on u-boot 'v2014.04-rc3'.
*Testing Procedure*
Boot tested on am335x_evm (MLO -> U-boot -> kernel with filesystem flashed from U-boot)
using OMAP_ECC_BCH8_CODE_HW and OMAP_ECC_BCH8_CODE_HW_DETECTION_SW ecc-schemes
Pekon Gupta (7):
mtd: nand: omap_elm: remove #include omap_gpmc.h
mtd: nand: omap_elm: use bch_type instead of nibble count to
differentiate between BCH4/BCH8/BCH16
mtd: nand: omap_elm: use macros for register definitions
mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv'
mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct
omap_nand_info
mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch
mtd: nand: omap: fix error-codes returned from omap-elm driver
drivers/mtd/nand/omap_elm.c | 28 ++++++------
drivers/mtd/nand/omap_gpmc.c | 101 +++++++++++++++++--------------------------
include/linux/mtd/omap_elm.h | 11 +++--
3 files changed, 59 insertions(+), 81 deletions(-)
--
1.8.5.1.163.gd7aced9
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16 Pekon Gupta
` (6 subsequent siblings)
7 siblings, 1 reply; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
There is no dependency of omap_elm.c on omap_gpmc.h
Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
drivers/mtd/nand/omap_elm.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/mtd/nand/omap_elm.c b/drivers/mtd/nand/omap_elm.c
index 47b1f1b..4c65f3b 100644
--- a/drivers/mtd/nand/omap_elm.c
+++ b/drivers/mtd/nand/omap_elm.c
@@ -16,7 +16,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/errno.h>
-#include <linux/mtd/omap_gpmc.h>
#include <linux/mtd/omap_elm.h>
#include <asm/arch/hardware.h>
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
2014-04-11 7:25 ` [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 3/7] mtd: nand: omap_elm: use macros for register definitions Pekon Gupta
` (5 subsequent siblings)
7 siblings, 1 reply; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
ELM hardware engine support ECC error detection for multiple ECC strengths like
+------+------------------------+
|Type | ECC syndrome length |
+------+------------------------+
|BCH4 | 6.5 bytes = 13 nibbles |
|BCH8 | 13 byte = 26 nibbles |
|BCH16 | 26 bytes = 52 nibbles |
+------+------------------------+
Current implementation of omap_elm driver uses ECC syndrom length (in 'nibbles')
to differentiate between BCH4/BCH8/BCH16. This patch replaces it with 'bch_type'
Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
drivers/mtd/nand/omap_elm.c | 20 ++++++++------------
drivers/mtd/nand/omap_gpmc.c | 10 ++--------
include/linux/mtd/omap_elm.h | 2 +-
3 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/drivers/mtd/nand/omap_elm.c b/drivers/mtd/nand/omap_elm.c
index 4c65f3b..afa629a 100644
--- a/drivers/mtd/nand/omap_elm.c
+++ b/drivers/mtd/nand/omap_elm.c
@@ -24,14 +24,12 @@
struct elm *elm_cfg;
/**
- * elm_load_syndromes - Load BCH syndromes based on nibble selection
+ * elm_load_syndromes - Load BCH syndromes based on bch_type selection
* @syndrome: BCH syndrome
- * @nibbles:
+ * @bch_type: BCH4/BCH8/BCH16
* @poly: Syndrome Polynomial set to use
- *
- * Load BCH syndromes based on nibble selection
*/
-static void elm_load_syndromes(u8 *syndrome, u32 nibbles, u8 poly)
+static void elm_load_syndromes(u8 *syndrome, enum bch_level bch_type, u8 poly)
{
u32 *ptr;
u32 val;
@@ -47,8 +45,7 @@ static void elm_load_syndromes(u8 *syndrome, u32 nibbles, u8 poly)
(syndrome[7] << 24);
writel(val, ptr);
- /* BCH 8-bit with 26 nibbles (4*8=32) */
- if (nibbles > 13) {
+ if (bch_type == BCH_8_BIT || bch_type == BCH_16_BIT) {
/* reg 2 */
ptr = &elm_cfg->syndrome_fragments[poly].syndrome_fragment_x[2];
val = syndrome[8] | (syndrome[9] << 8) | (syndrome[10] << 16) |
@@ -61,8 +58,7 @@ static void elm_load_syndromes(u8 *syndrome, u32 nibbles, u8 poly)
writel(val, ptr);
}
- /* BCH 16-bit with 52 nibbles (7*8=56) */
- if (nibbles > 26) {
+ if (bch_type == BCH_16_BIT) {
/* reg 4 */
ptr = &elm_cfg->syndrome_fragments[poly].syndrome_fragment_x[4];
val = syndrome[16] | (syndrome[17] << 8) |
@@ -86,7 +82,7 @@ static void elm_load_syndromes(u8 *syndrome, u32 nibbles, u8 poly)
/**
* elm_check_errors - Check for BCH errors and return error locations
* @syndrome: BCH syndrome
- * @nibbles:
+ * @bch_type: BCH4/BCH8/BCH16
* @error_count: Returns number of errrors in the syndrome
* @error_locations: Returns error locations (in decimal) in this array
*
@@ -94,14 +90,14 @@ static void elm_load_syndromes(u8 *syndrome, u32 nibbles, u8 poly)
* and locations in the array passed. Returns -1 if error is not correctable,
* else returns 0
*/
-int elm_check_error(u8 *syndrome, u32 nibbles, u32 *error_count,
+int elm_check_error(u8 *syndrome, enum bch_level bch_type, u32 *error_count,
u32 *error_locations)
{
u8 poly = ELM_DEFAULT_POLY;
s8 i;
u32 location_status;
- elm_load_syndromes(syndrome, nibbles, poly);
+ elm_load_syndromes(syndrome, bch_type, poly);
/* start processing */
writel((readl(&elm_cfg->syndrome_fragments[poly].syndrome_fragment_x[6])
diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
index 881a636..af38f00 100644
--- a/drivers/mtd/nand/omap_gpmc.c
+++ b/drivers/mtd/nand/omap_gpmc.c
@@ -153,7 +153,6 @@ static int __maybe_unused omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
struct nand_bch_priv {
uint8_t mode;
uint8_t type;
- uint8_t nibbles;
struct bch_control *control;
enum omap_ecc ecc_scheme;
};
@@ -163,11 +162,6 @@ struct nand_bch_priv {
#define ECC_BCH8 1
#define ECC_BCH16 2
-/* BCH nibbles for diff bch levels */
-#define ECC_BCH4_NIBBLES 13
-#define ECC_BCH8_NIBBLES 26
-#define ECC_BCH16_NIBBLES 52
-
/*
* This can be a single instance cause all current users have only one NAND
* with nearly the same setup (BCH8, some with ELM and others with sw BCH
@@ -176,7 +170,6 @@ struct nand_bch_priv {
*/
static __maybe_unused struct nand_bch_priv bch_priv = {
.type = ECC_BCH8,
- .nibbles = ECC_BCH8_NIBBLES,
.control = NULL
};
@@ -383,7 +376,8 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
}
/* use elm module to check for errors */
elm_config((enum bch_level)(bch->type));
- if (elm_check_error(calc_ecc, bch->nibbles, &error_count, error_loc)) {
+ if (elm_check_error(calc_ecc, (enum bch_level)bch->type,
+ &error_count, error_loc)) {
printf("nand: error: uncorrectable ECC errors\n");
return -EINVAL;
}
diff --git a/include/linux/mtd/omap_elm.h b/include/linux/mtd/omap_elm.h
index 45454ea..a6e9591 100644
--- a/include/linux/mtd/omap_elm.h
+++ b/include/linux/mtd/omap_elm.h
@@ -68,7 +68,7 @@ struct elm {
struct location error_location[8]; /* 0x800 */
};
-int elm_check_error(u8 *syndrome, u32 nibbles, u32 *error_count,
+int elm_check_error(u8 *syndrome, enum bch_level bch_type, u32 *error_count,
u32 *error_locations);
int elm_config(enum bch_level level);
void elm_reset(void);
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 3/7] mtd: nand: omap_elm: use macros for register definitions
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
2014-04-11 7:25 ` [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h Pekon Gupta
2014-04-11 7:25 ` [U-Boot] [PATCH v2 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16 Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
` (4 subsequent siblings)
7 siblings, 1 reply; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
This patch adds macros for following parameters of ELM Hardware engine
- ELM_MAX_CHANNELS: ELM can process 8 data streams simultaneously
- ELM_MAX_ERRORS: ELM can detect upto 16 ECC error when using BCH16 scheme
Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
include/linux/mtd/omap_elm.h | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/linux/mtd/omap_elm.h b/include/linux/mtd/omap_elm.h
index a6e9591..b8096b0 100644
--- a/include/linux/mtd/omap_elm.h
+++ b/include/linux/mtd/omap_elm.h
@@ -24,6 +24,9 @@
#define ELM_LOCATION_STATUS_ECC_CORRECTABLE_MASK (0x100)
#define ELM_LOCATION_STATUS_ECC_NB_ERRORS_MASK (0x1F)
+#define ELM_MAX_CHANNELS 8
+#define ELM_MAX_ERROR_COUNT 16
+
#ifndef __ASSEMBLY__
enum bch_level {
@@ -43,7 +46,7 @@ struct syndrome {
struct location {
u32 location_status; /* 0x800 */
u8 res1[124]; /* 0x804 */
- u32 error_location_x[16]; /* 0x880.... */
+ u32 error_location_x[ELM_MAX_ERROR_COUNT]; /* 0x880, 0x980, .. */
u8 res2[64]; /* 0x8c0 */
};
@@ -63,9 +66,9 @@ struct elm {
u8 res2[92]; /* 0x024 */
u32 page_ctrl; /* 0x080 */
u8 res3[892]; /* 0x084 */
- struct syndrome syndrome_fragments[8]; /* 0x400 */
+ struct syndrome syndrome_fragments[ELM_MAX_CHANNELS]; /* 0x400,0x420 */
u8 res4[512]; /* 0x600 */
- struct location error_location[8]; /* 0x800 */
+ struct location error_location[ELM_MAX_CHANNELS]; /* 0x800,0x900 ... */
};
int elm_check_error(u8 *syndrome, enum bch_level bch_type, u32 *error_count,
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv'
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
` (2 preceding siblings ...)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 3/7] mtd: nand: omap_elm: use macros for register definitions Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
` (2 more replies)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info Pekon Gupta
` (3 subsequent siblings)
7 siblings, 3 replies; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
This patch prepares to refactor 'struct nand_bch_priv' -> 'struct omap_nand_info'
And thus performs following clean-ups:
- remove nand_bch_priv.type: use nand_bch_priv.ecc_scheme instead
- remove nand_bch_priv.mode: <unused>
Signed-off-by: Pekon Gupta <pekon@ti.com>
---
drivers/mtd/nand/omap_gpmc.c | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
index af38f00..4bd296e 100644
--- a/drivers/mtd/nand/omap_gpmc.c
+++ b/drivers/mtd/nand/omap_gpmc.c
@@ -151,17 +151,10 @@ static int __maybe_unused omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
* Generic BCH interface
*/
struct nand_bch_priv {
- uint8_t mode;
- uint8_t type;
struct bch_control *control;
enum omap_ecc ecc_scheme;
};
-/* bch types */
-#define ECC_BCH4 0
-#define ECC_BCH8 1
-#define ECC_BCH16 2
-
/*
* This can be a single instance cause all current users have only one NAND
* with nearly the same setup (BCH8, some with ELM and others with sw BCH
@@ -169,7 +162,6 @@ struct nand_bch_priv {
* When some users with other BCH strength will exists this have to change!
*/
static __maybe_unused struct nand_bch_priv bch_priv = {
- .type = ECC_BCH8,
.control = NULL
};
@@ -342,6 +334,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
uint32_t eccbytes = chip->ecc.bytes;
uint32_t error_count = 0, error_max;
uint32_t error_loc[8];
+ enum bch_level bch_type;
uint32_t i, ecc_flag = 0;
uint8_t count, err = 0;
uint32_t byte_pos, bit_pos;
@@ -369,22 +362,22 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
*/
switch (bch->ecc_scheme) {
case OMAP_ECC_BCH8_CODE_HW:
+ bch_type = BCH_8_BIT;
omap_reverse_list(calc_ecc, eccbytes - 1);
break;
default:
return -EINVAL;
}
/* use elm module to check for errors */
- elm_config((enum bch_level)(bch->type));
- if (elm_check_error(calc_ecc, (enum bch_level)bch->type,
- &error_count, error_loc)) {
+ 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;
}
/* correct bch error */
for (count = 0; count < error_count; count++) {
- switch (bch->type) {
- case ECC_BCH8:
+ switch (bch->ecc_scheme) {
+ case OMAP_ECC_BCH8_CODE_HW:
/* 14th byte in ECC is reserved to match ROM layout */
error_max = SECTOR_BYTES + (eccbytes - 1);
break;
@@ -562,7 +555,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
/* For this ecc-scheme, ecc.bytes, ecc.layout, ... are
* initialized in nand_scan_tail(), so just set ecc.mode */
bch_priv.control = NULL;
- bch_priv.type = 0;
nand->ecc.mode = NAND_ECC_SOFT;
nand->ecc.layout = NULL;
nand->ecc.size = 0;
@@ -578,7 +570,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
return -EINVAL;
}
bch_priv.control = NULL;
- bch_priv.type = 0;
/* populate ecc specific fields */
memset(&nand->ecc, 0, sizeof(struct nand_ecc_ctrl));
nand->ecc.mode = NAND_ECC_HW;
@@ -617,7 +608,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
printf("nand: error: could not init_bch()\n");
return -ENODEV;
}
- bch_priv.type = ECC_BCH8;
/* populate ecc specific fields */
memset(&nand->ecc, 0, sizeof(struct nand_ecc_ctrl));
nand->ecc.mode = NAND_ECC_HW;
@@ -659,7 +649,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
}
/* intialize ELM for ECC error detection */
elm_init();
- bch_priv.type = ECC_BCH8;
/* populate ecc specific fields */
memset(&nand->ecc, 0, sizeof(struct nand_ecc_ctrl));
nand->ecc.mode = NAND_ECC_HW;
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
` (3 preceding siblings ...)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
` (2 subsequent siblings)
7 siblings, 1 reply; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
This patch renames 'struct nand_bch_priv' which currently holds private data only
for BCH ECC schemes, into 'struct omap_nand_info' so that same can be used for
all ECC schemes
Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
drivers/mtd/nand/omap_gpmc.c | 58 ++++++++++++++++++++------------------------
1 file changed, 26 insertions(+), 32 deletions(-)
diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
index 4bd296e..ae8fbb4 100644
--- a/drivers/mtd/nand/omap_gpmc.c
+++ b/drivers/mtd/nand/omap_gpmc.c
@@ -148,9 +148,9 @@ static int __maybe_unused omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
}
/*
- * Generic BCH interface
+ * Driver configurations
*/
-struct nand_bch_priv {
+struct omap_nand_info {
struct bch_control *control;
enum omap_ecc ecc_scheme;
};
@@ -161,7 +161,7 @@ struct nand_bch_priv {
* library).
* When some users with other BCH strength will exists this have to change!
*/
-static __maybe_unused struct nand_bch_priv bch_priv = {
+static __maybe_unused struct omap_nand_info omap_nand_info = {
.control = NULL
};
@@ -191,7 +191,7 @@ __maybe_unused
static void omap_enable_hwecc(struct mtd_info *mtd, int32_t mode)
{
struct nand_chip *nand = mtd->priv;
- struct nand_bch_priv *bch = nand->priv;
+ struct omap_nand_info *info = nand->priv;
unsigned int dev_width = (nand->options & NAND_BUSWIDTH_16) ? 1 : 0;
unsigned int ecc_algo = 0;
unsigned int bch_type = 0;
@@ -200,7 +200,7 @@ static void omap_enable_hwecc(struct mtd_info *mtd, int32_t mode)
u32 ecc_config_val = 0;
/* configure GPMC for specific ecc-scheme */
- switch (bch->ecc_scheme) {
+ switch (info->ecc_scheme) {
case OMAP_ECC_HAM1_CODE_SW:
return;
case OMAP_ECC_HAM1_CODE_HW:
@@ -262,11 +262,11 @@ static int omap_calculate_ecc(struct mtd_info *mtd, const uint8_t *dat,
uint8_t *ecc_code)
{
struct nand_chip *chip = mtd->priv;
- struct nand_bch_priv *bch = chip->priv;
+ struct omap_nand_info *info = chip->priv;
uint32_t *ptr, val = 0;
int8_t i = 0, j;
- switch (bch->ecc_scheme) {
+ switch (info->ecc_scheme) {
case OMAP_ECC_HAM1_CODE_HW:
val = readl(&gpmc_cfg->ecc1_result);
ecc_code[0] = val & 0xFF;
@@ -294,7 +294,7 @@ static int omap_calculate_ecc(struct mtd_info *mtd, const uint8_t *dat,
return -EINVAL;
}
/* ECC scheme specific syndrome customizations */
- switch (bch->ecc_scheme) {
+ switch (info->ecc_scheme) {
case OMAP_ECC_HAM1_CODE_HW:
break;
#ifdef CONFIG_BCH
@@ -330,7 +330,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
uint8_t *read_ecc, uint8_t *calc_ecc)
{
struct nand_chip *chip = mtd->priv;
- struct nand_bch_priv *bch = chip->priv;
+ struct omap_nand_info *info = chip->priv;
uint32_t eccbytes = chip->ecc.bytes;
uint32_t error_count = 0, error_max;
uint32_t error_loc[8];
@@ -360,7 +360,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
* while reading ECC result we read it in big endian.
* Hence while loading to ELM we have rotate to get the right endian.
*/
- switch (bch->ecc_scheme) {
+ switch (info->ecc_scheme) {
case OMAP_ECC_BCH8_CODE_HW:
bch_type = BCH_8_BIT;
omap_reverse_list(calc_ecc, eccbytes - 1);
@@ -376,7 +376,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
}
/* correct bch error */
for (count = 0; count < error_count; count++) {
- switch (bch->ecc_scheme) {
+ switch (info->ecc_scheme) {
case OMAP_ECC_BCH8_CODE_HW:
/* 14th byte in ECC is reserved to match ROM layout */
error_max = SECTOR_BYTES + (eccbytes - 1);
@@ -483,10 +483,10 @@ static int omap_correct_data_bch_sw(struct mtd_info *mtd, u_char *data,
/* cannot correct more than 8 errors */
unsigned int errloc[8];
struct nand_chip *chip = mtd->priv;
- struct nand_bch_priv *chip_priv = chip->priv;
- struct bch_control *bch = chip_priv->control;
+ struct omap_nand_info *info = chip->priv;
- count = decode_bch(bch, NULL, 512, read_ecc, calc_ecc, NULL, errloc);
+ count = decode_bch(info->control, NULL, 512, read_ecc, calc_ecc,
+ NULL, errloc);
if (count > 0) {
/* correct errors */
for (i = 0; i < count; i++) {
@@ -522,15 +522,11 @@ static int omap_correct_data_bch_sw(struct mtd_info *mtd, u_char *data,
static void __maybe_unused omap_free_bch(struct mtd_info *mtd)
{
struct nand_chip *chip = mtd->priv;
- struct nand_bch_priv *chip_priv = chip->priv;
- struct bch_control *bch = NULL;
+ struct omap_nand_info *info = chip->priv;
- if (chip_priv)
- bch = chip_priv->control;
-
- if (bch) {
- free_bch(bch);
- chip_priv->control = NULL;
+ if (info->control) {
+ free_bch(info->control);
+ info->control = NULL;
}
}
#endif /* CONFIG_BCH */
@@ -544,7 +540,7 @@ static void __maybe_unused omap_free_bch(struct mtd_info *mtd)
*/
static int omap_select_ecc_scheme(struct nand_chip *nand,
enum omap_ecc ecc_scheme, unsigned int pagesize, unsigned int oobsize) {
- struct nand_bch_priv *bch = nand->priv;
+ struct omap_nand_info *info = nand->priv;
struct nand_ecclayout *ecclayout = &omap_ecclayout;
int eccsteps = pagesize / SECTOR_BYTES;
int i;
@@ -554,11 +550,10 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
debug("nand: selected OMAP_ECC_HAM1_CODE_SW\n");
/* For this ecc-scheme, ecc.bytes, ecc.layout, ... are
* initialized in nand_scan_tail(), so just set ecc.mode */
- bch_priv.control = NULL;
+ info->control = NULL;
nand->ecc.mode = NAND_ECC_SOFT;
nand->ecc.layout = NULL;
nand->ecc.size = 0;
- bch->ecc_scheme = OMAP_ECC_HAM1_CODE_SW;
break;
case OMAP_ECC_HAM1_CODE_HW:
@@ -569,7 +564,7 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
(3 * eccsteps) + BADBLOCK_MARKER_LENGTH));
return -EINVAL;
}
- bch_priv.control = NULL;
+ info->control = NULL;
/* populate ecc specific fields */
memset(&nand->ecc, 0, sizeof(struct nand_ecc_ctrl));
nand->ecc.mode = NAND_ECC_HW;
@@ -590,7 +585,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
ecclayout->oobfree[0].offset = i + BADBLOCK_MARKER_LENGTH;
ecclayout->oobfree[0].length = oobsize - ecclayout->eccbytes -
BADBLOCK_MARKER_LENGTH;
- bch->ecc_scheme = OMAP_ECC_HAM1_CODE_HW;
break;
case OMAP_ECC_BCH8_CODE_HW_DETECTION_SW:
@@ -603,8 +597,8 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
return -EINVAL;
}
/* check if BCH S/W library can be used for error detection */
- bch_priv.control = init_bch(13, 8, 0x201b);
- if (!bch_priv.control) {
+ info->control = init_bch(13, 8, 0x201b);
+ if (!info->control) {
printf("nand: error: could not init_bch()\n");
return -ENODEV;
}
@@ -631,7 +625,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
ecclayout->oobfree[0].offset = i + BADBLOCK_MARKER_LENGTH;
ecclayout->oobfree[0].length = oobsize - ecclayout->eccbytes -
BADBLOCK_MARKER_LENGTH;
- bch->ecc_scheme = OMAP_ECC_BCH8_CODE_HW_DETECTION_SW;
break;
#else
printf("nand: error: CONFIG_BCH required for ECC\n");
@@ -649,6 +642,7 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
}
/* intialize ELM for ECC error detection */
elm_init();
+ info->control = NULL;
/* populate ecc specific fields */
memset(&nand->ecc, 0, sizeof(struct nand_ecc_ctrl));
nand->ecc.mode = NAND_ECC_HW;
@@ -666,7 +660,6 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
ecclayout->oobfree[0].offset = i + BADBLOCK_MARKER_LENGTH;
ecclayout->oobfree[0].length = oobsize - ecclayout->eccbytes -
BADBLOCK_MARKER_LENGTH;
- bch->ecc_scheme = OMAP_ECC_BCH8_CODE_HW;
break;
#else
printf("nand: error: CONFIG_NAND_OMAP_ELM required for ECC\n");
@@ -682,6 +675,7 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
if (ecc_scheme != OMAP_ECC_HAM1_CODE_SW)
nand->ecc.layout = ecclayout;
+ info->ecc_scheme = ecc_scheme;
return 0;
}
@@ -785,7 +779,7 @@ int board_nand_init(struct nand_chip *nand)
nand->IO_ADDR_R = (void __iomem *)&gpmc_cfg->cs[cs].nand_dat;
nand->IO_ADDR_W = (void __iomem *)&gpmc_cfg->cs[cs].nand_cmd;
- nand->priv = &bch_priv;
+ nand->priv = &omap_nand_info;
nand->cmd_ctrl = omap_nand_hwcontrol;
nand->options |= NAND_NO_PADDING | NAND_CACHEPRG;
/* If we are 16 bit dev, our gpmc config tells us that */
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
` (4 preceding siblings ...)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
` (2 more replies)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
2014-05-14 4:32 ` [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Gupta, Pekon
7 siblings, 3 replies; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
This patch tries to avoid some local pointer dereferences, by using common
local variables in omap_correct_data_bch()
Signed-off-by: Pekon Gupta <pekon@ti.com>
---
drivers/mtd/nand/omap_gpmc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
index ae8fbb4..b1be8eb 100644
--- a/drivers/mtd/nand/omap_gpmc.c
+++ b/drivers/mtd/nand/omap_gpmc.c
@@ -331,7 +331,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
{
struct nand_chip *chip = mtd->priv;
struct omap_nand_info *info = chip->priv;
- uint32_t eccbytes = chip->ecc.bytes;
+ struct nand_ecc_ctrl *ecc = &chip->ecc;
uint32_t error_count = 0, error_max;
uint32_t error_loc[8];
enum bch_level bch_type;
@@ -340,7 +340,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
uint32_t byte_pos, bit_pos;
/* check calculated ecc */
- for (i = 0; i < chip->ecc.bytes && !ecc_flag; i++) {
+ for (i = 0; i < ecc->bytes && !ecc_flag; i++) {
if (calc_ecc[i] != 0x00)
ecc_flag = 1;
}
@@ -349,7 +349,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
/* check for whether its a erased-page */
ecc_flag = 0;
- for (i = 0; i < chip->ecc.bytes && !ecc_flag; i++) {
+ for (i = 0; i < ecc->bytes && !ecc_flag; i++) {
if (read_ecc[i] != 0xff)
ecc_flag = 1;
}
@@ -363,7 +363,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
switch (info->ecc_scheme) {
case OMAP_ECC_BCH8_CODE_HW:
bch_type = BCH_8_BIT;
- omap_reverse_list(calc_ecc, eccbytes - 1);
+ omap_reverse_list(calc_ecc, ecc->bytes - 1);
break;
default:
return -EINVAL;
@@ -379,7 +379,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
switch (info->ecc_scheme) {
case OMAP_ECC_BCH8_CODE_HW:
/* 14th byte in ECC is reserved to match ROM layout */
- error_max = SECTOR_BYTES + (eccbytes - 1);
+ error_max = SECTOR_BYTES + (ecc->bytes - 1);
break;
default:
return -EINVAL;
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
` (5 preceding siblings ...)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
@ 2014-04-11 7:25 ` Pekon Gupta
2014-04-11 7:37 ` Stefan Roese
` (2 more replies)
2014-05-14 4:32 ` [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Gupta, Pekon
7 siblings, 3 replies; 22+ messages in thread
From: Pekon Gupta @ 2014-04-11 7:25 UTC (permalink / raw)
To: u-boot
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>
---
drivers/mtd/nand/omap_elm.c | 7 +++++--
drivers/mtd/nand/omap_gpmc.c | 8 ++++----
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/mtd/nand/omap_elm.c b/drivers/mtd/nand/omap_elm.c
index afa629a..d963e6c 100644
--- a/drivers/mtd/nand/omap_elm.c
+++ b/drivers/mtd/nand/omap_elm.c
@@ -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) &
diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
index b1be8eb..325ebfd 100644
--- a/drivers/mtd/nand/omap_gpmc.c
+++ b/drivers/mtd/nand/omap_gpmc.c
@@ -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) {
--
1.8.5.1.163.gd7aced9
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv'
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
@ 2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:52 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-04-11 7:36 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> This patch prepares to refactor 'struct nand_bch_priv' -> 'struct omap_nand_info'
> And thus performs following clean-ups:
> - remove nand_bch_priv.type: use nand_bch_priv.ecc_scheme instead
> - remove nand_bch_priv.mode: <unused>
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
@ 2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-04-11 7:36 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> This patch tries to avoid some local pointer dereferences, by using common
> local variables in omap_correct_data_bch()
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
@ 2014-04-11 7:37 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-04-11 7:37 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> 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>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
` (6 preceding siblings ...)
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
@ 2014-05-14 4:32 ` Gupta, Pekon
7 siblings, 0 replies; 22+ messages in thread
From: Gupta, Pekon @ 2014-05-14 4:32 UTC (permalink / raw)
To: u-boot
>From: Gupta, Pekon
>
>*changes v1->v2*
>[PATCH 2/7] fix for BCH4 and BCH16 ECC scheme
>[PATCH 7/7] <new patch>
> - white space-clean up
>
>
>*original v1*
>This patch series
> - removes un-wanted & redundant code in omap_elm and omap_gpmc drivers
> - refactors some private struct in omap_gpmc to make them generic across ecc-schemes
> - minor code fixes and clean-ups
>This series can be as-it-is applied on u-boot 'v2014.04-rc3'.
>
>*Testing Procedure*
>Boot tested on am335x_evm (MLO -> U-boot -> kernel with filesystem flashed from U-boot)
>using OMAP_ECC_BCH8_CODE_HW and OMAP_ECC_BCH8_CODE_HW_DETECTION_SW ecc-schemes
>
Ping ..
Please review and accept this. These are simple driver clean-ups.
with regards, pekon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv'
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
@ 2014-05-14 5:52 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-05-14 5:52 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> This patch prepares to refactor 'struct nand_bch_priv' -> 'struct omap_nand_info'
> And thus performs following clean-ups:
> - remove nand_bch_priv.type: use nand_bch_priv.ecc_scheme instead
> - remove nand_bch_priv.mode: <unused>
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
@ 2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-05-14 5:53 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> This patch tries to avoid some local pointer dereferences, by using common
> local variables in omap_correct_data_bch()
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
2014-04-11 7:37 ` Stefan Roese
@ 2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Roese @ 2014-05-14 5:53 UTC (permalink / raw)
To: u-boot
On 11.04.2014 09:25, Pekon Gupta wrote:
> 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>
Thanks,
Stefan
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h
2014-04-11 7:25 ` [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h Pekon Gupta
@ 2014-06-06 21:53 ` Tom Rini
0 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:53 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:29PM +0530, pekon gupta wrote:
> There is no dependency of omap_elm.c on omap_gpmc.h
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/e8672694/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16
2014-04-11 7:25 ` [U-Boot] [PATCH v2 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16 Pekon Gupta
@ 2014-06-06 21:53 ` Tom Rini
0 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:53 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:30PM +0530, pekon gupta wrote:
> ELM hardware engine support ECC error detection for multiple ECC strengths like
> +------+------------------------+
> |Type | ECC syndrome length |
> +------+------------------------+
> |BCH4 | 6.5 bytes = 13 nibbles |
> |BCH8 | 13 byte = 26 nibbles |
> |BCH16 | 26 bytes = 52 nibbles |
> +------+------------------------+
>
> Current implementation of omap_elm driver uses ECC syndrom length (in 'nibbles')
> to differentiate between BCH4/BCH8/BCH16. This patch replaces it with 'bch_type'
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/5bfe8939/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 3/7] mtd: nand: omap_elm: use macros for register definitions
2014-04-11 7:25 ` [U-Boot] [PATCH v2 3/7] mtd: nand: omap_elm: use macros for register definitions Pekon Gupta
@ 2014-06-06 21:53 ` Tom Rini
0 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:53 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:31PM +0530, pekon gupta wrote:
> This patch adds macros for following parameters of ELM Hardware engine
> - ELM_MAX_CHANNELS: ELM can process 8 data streams simultaneously
> - ELM_MAX_ERRORS: ELM can detect upto 16 ECC error when using BCH16 scheme
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/0b182290/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv'
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:52 ` Stefan Roese
@ 2014-06-06 21:54 ` Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:54 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:32PM +0530, pekon gupta wrote:
> This patch prepares to refactor 'struct nand_bch_priv' -> 'struct omap_nand_info'
> And thus performs following clean-ups:
> - remove nand_bch_priv.type: use nand_bch_priv.ecc_scheme instead
> - remove nand_bch_priv.mode: <unused>
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
> Reviewed-by: Stefan Roese <sr@denx.de>
>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/f5a78877/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info
2014-04-11 7:25 ` [U-Boot] [PATCH v2 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info Pekon Gupta
@ 2014-06-06 21:54 ` Tom Rini
0 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:54 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:33PM +0530, pekon gupta wrote:
> This patch renames 'struct nand_bch_priv' which currently holds private data only
> for BCH ECC schemes, into 'struct omap_nand_info' so that same can be used for
> all ECC schemes
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/3e26f51c/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
@ 2014-06-06 21:54 ` Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:54 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:34PM +0530, pekon gupta wrote:
> This patch tries to avoid some local pointer dereferences, by using common
> local variables in omap_correct_data_bch()
>
> Signed-off-by: Pekon Gupta <pekon@ti.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/433e9851/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] [U-Boot, v2, 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
2014-04-11 7:37 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
@ 2014-06-06 21:54 ` Tom Rini
2 siblings, 0 replies; 22+ messages in thread
From: Tom Rini @ 2014-06-06 21:54 UTC (permalink / raw)
To: u-boot
On Fri, Apr 11, 2014 at 12:55:35PM +0530, pekon gupta wrote:
> 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>
> Reviewed-by: Stefan Roese <sr@denx.de>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140606/92a8e35c/attachment.pgp>
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2014-06-06 21:54 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-11 7:25 [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Pekon Gupta
2014-04-11 7:25 ` [U-Boot] [PATCH v2 1/7] mtd: nand: omap_elm: remove #include omap_gpmc.h Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 2/7] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16 Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 3/7] mtd: nand: omap_elm: use macros for register definitions Pekon Gupta
2014-06-06 21:53 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 4/7] mtd: nand: omap_gpmc: remove unused members of 'struct nand_bch_priv' Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:52 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 5/7] mtd: nand: omap_gpmc: rename struct nand_bch_priv to struct omap_nand_info Pekon Gupta
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 6/7] mtd: nand: omap_gpmc: minor cleanup of omap_correct_data_bch Pekon Gupta
2014-04-11 7:36 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-04-11 7:25 ` [U-Boot] [PATCH v2 7/7] mtd: nand: omap: fix error-codes returned from omap-elm driver Pekon Gupta
2014-04-11 7:37 ` Stefan Roese
2014-05-14 5:53 ` Stefan Roese
2014-06-06 21:54 ` [U-Boot] [U-Boot, v2, " Tom Rini
2014-05-14 4:32 ` [U-Boot] [PATCH v2 0/7] mtd: nand: omap: clean up of omap_elm and omap_gpmc driver Gupta, Pekon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox