[U-Boot] [PATCH v1 2/6] mtd: nand: omap_elm: use bch_type instead of nibble count to differentiate between BCH4/BCH8/BCH16

Stefan Roese sr at denx.de
Thu Apr 10 13:00:04 CEST 2014


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?

Thanks,
Stefan



More information about the U-Boot mailing list