Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33753cd2 authored by Christoph Fritz's avatar Christoph Fritz Committed by Tony Lindgren
Browse files

ARM: OMAP2+: gpmc: fix gpmc_hwecc_bch_capable()



This patch adds bch8 ecc software fallback which is mostly used by
omap3s because they lack hardware elm support.

Fixes: 0611c419 (ARM: OMAP2+: gpmc:
update gpmc_hwecc_bch_capable() for new platforms and ECC schemes)
Cc: <stable@vger.kernel.org> # 3.15.x+
Signed-off-by: default avatarChristoph Fritz <chf.fritz@googlemail.com>
Reviewed-by: default avatarPekon Gupta <pekon@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 23d9cec0
Loading
Loading
Loading
Loading
+10 −8
Original line number Original line Diff line number Diff line
@@ -50,6 +50,16 @@ static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt)
		 soc_is_omap54xx() || soc_is_dra7xx())
		 soc_is_omap54xx() || soc_is_dra7xx())
		return 1;
		return 1;


	if (ecc_opt == OMAP_ECC_BCH4_CODE_HW_DETECTION_SW ||
		 ecc_opt == OMAP_ECC_BCH8_CODE_HW_DETECTION_SW) {
		if (cpu_is_omap24xx())
			return 0;
		else if (cpu_is_omap3630() && (GET_OMAP_REVISION() == 0))
			return 0;
		else
			return 1;
	}

	/* OMAP3xxx do not have ELM engine, so cannot support ECC schemes
	/* OMAP3xxx do not have ELM engine, so cannot support ECC schemes
	 * which require H/W based ECC error detection */
	 * which require H/W based ECC error detection */
	if ((cpu_is_omap34xx() || cpu_is_omap3630()) &&
	if ((cpu_is_omap34xx() || cpu_is_omap3630()) &&
@@ -57,14 +67,6 @@ static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt)
		 (ecc_opt == OMAP_ECC_BCH8_CODE_HW)))
		 (ecc_opt == OMAP_ECC_BCH8_CODE_HW)))
		return 0;
		return 0;


	/*
	 * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1
	 * and AM33xx derivates. Other chips may be added if confirmed to work.
	 */
	if ((ecc_opt == OMAP_ECC_BCH4_CODE_HW_DETECTION_SW) &&
	    (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0)))
		return 0;

	/* legacy platforms support only HAM1 (1-bit Hamming) ECC scheme */
	/* legacy platforms support only HAM1 (1-bit Hamming) ECC scheme */
	if (ecc_opt == OMAP_ECC_HAM1_CODE_HW)
	if (ecc_opt == OMAP_ECC_HAM1_CODE_HW)
		return 1;
		return 1;