summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/platsmp.c1
-rw-r--r--arch/arm/mach-tegra/powergate-t11x.c3
-rw-r--r--arch/arm/mach-tegra/powergate-t12x.c3
-rw-r--r--arch/arm/mach-tegra/powergate-t14x.c3
-rw-r--r--arch/arm/mach-tegra/powergate-t30.c4
-rw-r--r--arch/arm/mach-tegra/powergate.c1
6 files changed, 11 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index 50659cab17c4..f755f939ffbf 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -269,6 +269,7 @@ static int tegra11x_power_up_cpu(unsigned int cpu)
reg = PMC_TOGGLE_START | TEGRA_CPU_POWERGATE_ID(cpu);
pmc_writel(reg, PWRGATE_TOGGLE);
+ pmc_readl(PWRGATE_TOGGLE);
}
return 0;
diff --git a/arch/arm/mach-tegra/powergate-t11x.c b/arch/arm/mach-tegra/powergate-t11x.c
index b846660c2a03..954d3a396106 100644
--- a/arch/arm/mach-tegra/powergate-t11x.c
+++ b/arch/arm/mach-tegra/powergate-t11x.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
@@ -505,6 +505,7 @@ int tegra11x_powergate_mc_flush_done(int id)
rst_ctrl = mc_read(MC_CLIENT_HOTRESET_CTRL);
rst_ctrl &= ~(1 << mcClientBit);
mc_write(rst_ctrl, MC_CLIENT_HOTRESET_CTRL);
+ mc_read(MC_CLIENT_HOTRESET_CTRL);
spin_unlock_irqrestore(&tegra11x_powergate_lock, flags);
}
diff --git a/arch/arm/mach-tegra/powergate-t12x.c b/arch/arm/mach-tegra/powergate-t12x.c
index 4998e2cd24a9..05764ccdd45d 100644
--- a/arch/arm/mach-tegra/powergate-t12x.c
+++ b/arch/arm/mach-tegra/powergate-t12x.c
@@ -393,6 +393,7 @@ int tegra12x_powergate_mc_flush_done(int id)
rst_ctrl = mc_read(rst_ctrl_reg);
rst_ctrl &= ~(1 << mcClientBit);
mc_write(rst_ctrl, rst_ctrl_reg);
+ mc_read(rst_ctrl_reg);
spin_unlock_irqrestore(&tegra12x_powergate_lock, flags);
}
@@ -416,6 +417,7 @@ static int tegra12x_gpu_powergate(int id, struct powergate_partition_info *pg_in
/* enable clamp */
pmc_write(0x1, PMC_GPU_RG_CNTRL_0);
+ pmc_read(PMC_GPU_RG_CNTRL_0);
udelay(10);
@@ -488,6 +490,7 @@ static int tegra12x_gpu_unpowergate(int id,
/* disable clamp */
pmc_write(0, PMC_GPU_RG_CNTRL_0);
+ pmc_read(PMC_GPU_RG_CNTRL_0);
udelay(10);
diff --git a/arch/arm/mach-tegra/powergate-t14x.c b/arch/arm/mach-tegra/powergate-t14x.c
index cb1e1e232395..2ee85b593e35 100644
--- a/arch/arm/mach-tegra/powergate-t14x.c
+++ b/arch/arm/mach-tegra/powergate-t14x.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
@@ -459,6 +459,7 @@ int tegra14x_powergate_mc_flush_done(int id)
rst_ctrl = mc_read(MC_CLIENT_HOTRESET_CTRL);
rst_ctrl &= ~(1 << mcClientBit);
mc_write(rst_ctrl, MC_CLIENT_HOTRESET_CTRL);
+ mc_read(MC_CLIENT_HOTRESET_CTRL);
spin_unlock_irqrestore(&tegra14x_powergate_lock, flags);
}
diff --git a/arch/arm/mach-tegra/powergate-t30.c b/arch/arm/mach-tegra/powergate-t30.c
index 14a5f7529ae4..8612873fcd5c 100644
--- a/arch/arm/mach-tegra/powergate-t30.c
+++ b/arch/arm/mach-tegra/powergate-t30.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2012-214, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
@@ -308,7 +308,7 @@ int tegra3_powergate_mc_flush_done(int id)
rst_ctrl = mc_read(MC_CLIENT_HOTRESET_CTRL);
rst_ctrl &= ~(1 << mcClientBit);
mc_write(rst_ctrl, MC_CLIENT_HOTRESET_CTRL);
-
+ mc_read(MC_CLIENT_HOTRESET_CTRL);
spin_unlock_irqrestore(&tegra3_powergate_lock, flags);
}
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c
index cf576fcae96c..1c41ae37ff64 100644
--- a/arch/arm/mach-tegra/powergate.c
+++ b/arch/arm/mach-tegra/powergate.c
@@ -85,6 +85,7 @@ int tegra_powergate_set(int id, bool new_state)
/* CPU ungated in s/w only during boot/resume with outer
waiting loop and no contention from other CPUs */
pmc_write(PWRGATE_TOGGLE_START | id, PWRGATE_TOGGLE);
+ pmc_read(PWRGATE_TOGGLE);
spin_unlock_irqrestore(lock, flags);
return 0;
}