T124: perform ram_repair when CPU rail is powered on in warmboot
This patch is to perform software triggered RAM re-repair in the warm boot path. BUG=chrome-os-partner:30430 BRANCH=nyan TEST=run suspend_stress_test on nyan. Signed-off-by: Yen Lin<yelin@nvidia.com> Change-Id: I540f8afbffa323d1e378cb6ba6a20be4afd08339 Reviewed-on: https://chromium-review.googlesource.com/207422 Tested-by: Yen Lin <yelin@nvidia.com> Reviewed-by: Tom Warren <twarren@nvidia.com> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Andrew Bresticker <abrestic@chromium.org> Commit-Queue: Yen Lin <yelin@nvidia.com>
This commit is contained in:
parent
d999f5ecc3
commit
f06c413c42
1 changed files with 29 additions and 0 deletions
|
|
@ -200,6 +200,14 @@ enum {
|
|||
FLOW_CLUSTER_ACTIVE_LP = 0x1 << 0
|
||||
};
|
||||
|
||||
static uint32_t *flow_ctlr_ram_repair_ptr =
|
||||
(void *)(FLOW_CTLR_BASE + 0x40);
|
||||
static uint32_t *flow_ctlr_ram_repair_cluster1_ptr =
|
||||
(void *)(FLOW_CTLR_BASE + 0x58);
|
||||
enum {
|
||||
RAM_REPAIR_REQ = 0x1 << 0,
|
||||
RAM_REPAIR_STS = 0x1 << 1,
|
||||
};
|
||||
|
||||
|
||||
/* Power management controller registers. */
|
||||
|
|
@ -496,6 +504,24 @@ static void clear_cpu_resets(void)
|
|||
|
||||
|
||||
|
||||
/* RAM repair */
|
||||
|
||||
void ram_repair(void)
|
||||
{
|
||||
// Request Cluster0 RAM repair.
|
||||
setbits32(RAM_REPAIR_REQ, flow_ctlr_ram_repair_ptr);
|
||||
// Poll for Cluster0 RAM repair status.
|
||||
while (!(read32(flow_ctlr_ram_repair_ptr) & RAM_REPAIR_STS))
|
||||
;
|
||||
|
||||
// Request Cluster1 RAM repair.
|
||||
setbits32(RAM_REPAIR_REQ, flow_ctlr_ram_repair_cluster1_ptr);
|
||||
// Poll for Cluster1 RAM repair status.
|
||||
while (!(read32(flow_ctlr_ram_repair_cluster1_ptr) & RAM_REPAIR_STS))
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
/* Power. */
|
||||
|
||||
static void power_on_partition(unsigned id)
|
||||
|
|
@ -605,6 +631,9 @@ void lp0_resume(void)
|
|||
|
||||
power_on_main_cpu();
|
||||
|
||||
// Perform ram repair after cpu is powered on.
|
||||
ram_repair();
|
||||
|
||||
clear_cpu_resets();
|
||||
|
||||
// Halt the AVP.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue