aboutsummaryrefslogtreecommitdiff
path: root/src/soc/nvidia/tegra124/power.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/nvidia/tegra124/power.c')
-rw-r--r--src/soc/nvidia/tegra124/power.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/soc/nvidia/tegra124/power.c b/src/soc/nvidia/tegra124/power.c
index ec44a0fb02..75f04942b9 100644
--- a/src/soc/nvidia/tegra124/power.c
+++ b/src/soc/nvidia/tegra124/power.c
@@ -25,8 +25,10 @@
#include "pmc.h"
#include "power.h"
+#include "flow.h"
static struct tegra_pmc_regs * const pmc = (void *)TEGRA_PMC_BASE;
+static struct flow_ctlr * const flow = (void *)TEGRA_FLOW_BASE;
static int partition_powered(int id)
{
@@ -92,3 +94,17 @@ int power_reset_status(void)
{
return read32(&pmc->rst_status) & 0x7;
}
+
+void ram_repair(void)
+{
+ // Request RAM repair for cluster 0
+ setbits_le32(&flow->ram_repair, RAM_REPAIR_REQ);
+ // Poll for completion
+ while (!(read32(&flow->ram_repair) & RAM_REPAIR_STS))
+ ;
+ // Request RAM repair for cluster 1
+ setbits_le32(&flow->ram_repair_cluster1, RAM_REPAIR_REQ);
+ // Poll for completion
+ while (!(read32(&flow->ram_repair_cluster1) & RAM_REPAIR_STS))
+ ;
+}