mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
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: 0611c41934
(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: Christoph Fritz <chf.fritz@googlemail.com>
Reviewed-by: Pekon Gupta <pekon@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
23d9cec07c
commit
33753cd2ba
1 changed files with 10 additions and 8 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue