plat/marvell/a8k/common/plat_pm.c
/*
 * Power down CPUs 1-3 at early boot stage,
 * to reduce power consumption and SoC temperature.
 * This is triggered by BLE prior to DDR initialization.
 *
 * Note:
 * All CPUs will be powered up by plat_marvell_cpu_powerup on Linux boot stage,
 * which is triggered by PSCI ops (pwr_domain_on).
 */
Power down CPUs 1-3 at early boot stage,
to reduce power consumption and SoC temperature.
This is triggered by BLE prior to DDR initialization.

All CPUs will be powered up by plat_marvell_cpu_powerup on Linux boot stage,
which is triggered by PSCI ops (pwr_domain_on).
Power down CPUs 1 - 3 at early boot stage to reduce power consumption and SoC temperature . This is triggered by BLE prior to DDR initialization . All CPUs will be powered up by plat_marvell_cpu_powerup on Linux boot stage which is triggered by PSCI ops ( pwr_domain_on ) .
int plat_marvell_early_cpu_powerdown(void)
{
	uint32_t cpu_cluster_status = mmio_read_32(FEATURE_DISABLE_STATUS_REG)
						& FEATURE_DISABLE_STATUS_CPU_CLUSTER_MASK;
	int cluster_count = cpu_cluster_status ? 1 : 2;
	INFO("Powering off unused CPUs\n");
	if (plat_marvell_cpu_powerdown(CPU1) == -1)
		return -1;
	if (cluster_count == 2) {
		if (plat_marvell_cpu_powerdown(CPU2) == -1)
			return -1;
		if (plat_marvell_cpu_powerdown(CPU3) == -1)
			return -1;
	}
	return 0;
}
int plat_marvell_early_cpu_powerdown ( void ) { uint32_t cpu_cluster_status = mmio_read_32 ( FEATURE_DISABLE_STATUS_REG ) & FEATURE_DISABLE_STATUS_CPU_CLUSTER_MASK ; int cluster_count = cpu_cluster_status ? 1 : 2 ; INFO ( " \n " ) ; if ( plat_marvell_cpu_powerdown ( CPU1 ) == -1 ) return -1 ; if ( cluster_count == 2 ) { if ( plat_marvell_cpu_powerdown ( CPU2 ) == -1 ) return -1 ; if ( plat_marvell_cpu_powerdown ( CPU3 ) == -1 ) return -1 ; } return 0 ; }
Power down CPUs 1-3 at early boot stage,
 to reduce power consumption and SoC temperature.
Power down CPUs 1 - 3 at early boot stage to reduce power consumption and SoC temperature .
/* if cpu_cluster_status bit is set, that means we have only single cluster */ /* CPU1 is in AP806 cluster-0, which always exists - so power it down */ /*
	 * CPU2-3 are in AP806 2nd cluster (cluster-1), which doesn't exists in dual-core systems.
	 * so need to check if we have dual-core (single cluster) or quad-code (2 clusters)
	 */ /* CPU2-3 are part of 2nd cluster */