Пример #1
0
void XPm_ClientWakeup(const struct XPm_Master *const master)
{
    u32 cpuid = pm_get_cpuid(master->node_id);

    if (UNDEFINED_CPUID != cpuid) {
        u32 val = pm_read(MASTER_PWRCTL);
        val &= ~(master->pwrdn_mask);
        pm_write(MASTER_PWRCTL, val);
    }
}
Пример #2
0
/**
 * pm_client_wakeup() - Client-specific wakeup actions
 *
 * This function should contain any PU-specific actions
 * required for waking up another APU core
 */
void pm_client_wakeup(const struct pm_proc *proc)
{
	unsigned int cpuid = pm_get_cpuid(proc->node_id);

	if (cpuid == UNDEFINED_CPUID)
		return;

	bakery_lock_get(&pm_client_secure_lock);

	/* clear powerdown bit for affected cpu */
	uint32_t val = mmio_read_32(APU_PWRCTL);
	val &= ~(proc->pwrdn_mask);
	mmio_write_32(APU_PWRCTL, val);

	bakery_lock_release(&pm_client_secure_lock);
}