ARM: tegra: pass just partition ID to power_partition()

Pass just the partition ID to power_partition(), rather than also passing
the partition's status register mask too. This makes it simpler to get
call-sites correct, since they don't need to pass two different values
that define the same thing and must match.

Consequently, we can remove the mask definitions from pmc.h.

Suggested-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
master
Stephen Warren 12 years ago committed by Tom Warren
parent 41cd530d6d
commit cad38a57d3
  1. 24
      arch/arm/cpu/arm720t/tegra114/cpu.c
  2. 9
      arch/arm/include/asm/arch-tegra/pmc.h

@ -192,43 +192,43 @@ void t114_init_clocks(void)
debug("t114_init_clocks exit\n"); debug("t114_init_clocks exit\n");
} }
static int is_partition_powered(u32 mask) static bool is_partition_powered(u32 partid)
{ {
struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE; struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
u32 reg; u32 reg;
/* Get power gate status */ /* Get power gate status */
reg = readl(&pmc->pmc_pwrgate_status); reg = readl(&pmc->pmc_pwrgate_status);
return (reg & mask) == mask; return !!(reg & (1 << partid));
} }
static int is_clamp_enabled(u32 mask) static bool is_clamp_enabled(u32 partid)
{ {
struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE; struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
u32 reg; u32 reg;
/* Get clamp status. */ /* Get clamp status. */
reg = readl(&pmc->pmc_clamp_status); reg = readl(&pmc->pmc_clamp_status);
return (reg & mask) == mask; return !!(reg & (1 << partid));
} }
static void power_partition(u32 status, u32 partid) static void power_partition(u32 partid)
{ {
struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE; struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
debug("%s: status = %08X, part ID = %08X\n", __func__, status, partid); debug("%s: part ID = %08X\n", __func__, partid);
/* Is the partition already on? */ /* Is the partition already on? */
if (!is_partition_powered(status)) { if (!is_partition_powered(partid)) {
/* No, toggle the partition power state (OFF -> ON) */ /* No, toggle the partition power state (OFF -> ON) */
debug("power_partition, toggling state\n"); debug("power_partition, toggling state\n");
writel(START_CP | partid, &pmc->pmc_pwrgate_toggle); writel(START_CP | partid, &pmc->pmc_pwrgate_toggle);
/* Wait for the power to come up */ /* Wait for the power to come up */
while (!is_partition_powered(status)) while (!is_partition_powered(partid))
; ;
/* Wait for the clamp status to be cleared */ /* Wait for the clamp status to be cleared */
while (is_clamp_enabled(status)) while (is_clamp_enabled(partid))
; ;
/* Give I/O signals time to stabilize */ /* Give I/O signals time to stabilize */
@ -243,13 +243,13 @@ void powerup_cpus(void)
/* We boot to the fast cluster */ /* We boot to the fast cluster */
debug("powerup_cpus entry: G cluster\n"); debug("powerup_cpus entry: G cluster\n");
/* Power up the fast cluster rail partition */ /* Power up the fast cluster rail partition */
power_partition(CRAIL, CRAILID); power_partition(CRAIL);
/* Power up the fast cluster non-CPU partition */ /* Power up the fast cluster non-CPU partition */
power_partition(C0NC, C0NCID); power_partition(C0NC);
/* Power up the fast cluster CPU0 partition */ /* Power up the fast cluster CPU0 partition */
power_partition(CE0, CE0ID); power_partition(CE0);
} }
void start_cpu(u32 reset_vector) void start_cpu(u32 reset_vector)

@ -118,11 +118,8 @@ struct pmc_ctlr {
#define CPUPWRREQ_OE (1 << 16) #define CPUPWRREQ_OE (1 << 16)
#define CPUPWRREQ_POL (1 << 15) #define CPUPWRREQ_POL (1 << 15)
#define CRAILID (0) #define CRAIL 0
#define CE0ID (14) #define CE0 14
#define C0NCID (15) #define C0NC 15
#define CRAIL (1 << CRAILID)
#define CE0 (1 << CE0ID)
#define C0NC (1 << C0NCID)
#endif /* PMC_H */ #endif /* PMC_H */

Loading…
Cancel
Save