[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