mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-29 14:41:26 +01:00
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>
This commit is contained in:
parent
41cd530d6d
commit
cad38a57d3
@ -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…
x
Reference in New Issue
Block a user