[U-Boot] [PATCH v1 2/6] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16
Gupta, Pekon
pekon at ti.com
Thu Apr 10 13:07:23 CEST 2014
Hi Stefan,
>From: Stefan Roese [mailto:sr at denx.de]
>>On 10.04.2014 11:35, 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 at ti.com>
>> ---
>> 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..5b2172a 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_4_BIT || bch_type == BCH_8_BIT) {
>
>Is this correct? Shouldn't this be:
>
>+ if (bch_type == BCH_8_BIT || bch_type == BCH_16_BIT) {
>
>instead?
>
yes you are correct. Thanks for pointing this out.
Sorry, as BCH_4_BIT and BCH_16_BIT support is still not added to omap_gpmc
driver so this bug wasn't detected. I'll fix this in next version.
with regards, pekon
More information about the U-Boot
mailing list