summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRoger Quadros <rogerq@kernel.org>2024-02-06 15:54:38 +0200
committerFrancesco Dolcini <francesco.dolcini@toradex.com>2024-03-21 14:26:33 +0000
commitff47d2cddbe5c1d33af6adf229e1858e826ecbab (patch)
tree2be6b2f2e1feeb1aa1cd8d0d4b3571f14a8a9952 /drivers
parent77e6dc06650ad391170274936348048970af0a5a (diff)
memory: ti-gpmc: Fix lock up at A53 SPL during NAND boot on AM64-EVM
AM64 ES2.0 bootrom seems to enable WAIT0EDGEDETECTION interrupt. This causes a lockup at A53 SPL when accessing NAND controller or ELM registers. A good option would be to softrest GPMC block at probe but this cannot be done for AM64 as SOFTRESET bit is marked as reserved in SYSCONFIG register. Fix the issue by disabling all IRQs at probe. Signed-off-by: Roger Quadros <rogerq@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/memory/ti-gpmc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/memory/ti-gpmc.c b/drivers/memory/ti-gpmc.c
index 220e58bab2..76d80a2317 100644
--- a/drivers/memory/ti-gpmc.c
+++ b/drivers/memory/ti-gpmc.c
@@ -1197,6 +1197,12 @@ static int gpmc_probe(struct udevice *dev)
gpmc_cfg = (struct gpmc *)priv->base;
gpmc_base = priv->base;
+ /*
+ * Disable all IRQs as some bootroms might leave them enabled
+ * and that will cause a lock-up later
+ */
+ gpmc_write_reg(GPMC_IRQENABLE, 0);
+
priv->l3_clk = devm_clk_get(dev, "fck");
if (IS_ERR(priv->l3_clk))
return PTR_ERR(priv->l3_clk);